88 lines
3.3 KiB
Clojure
Executable File
88 lines
3.3 KiB
Clojure
Executable File
#!/usr/bin/env bb
|
|
|
|
(require
|
|
'[babashka.fs :as fs])
|
|
|
|
;;todo: import from base.clj
|
|
(defn- safe-sh [& commands]
|
|
(as-> (apply shell/sh commands) $
|
|
(if (= (:exit $) 0) $ (throw (Exception. (:err $))))))
|
|
|
|
(def user (System/getenv "SUDO_USER"))
|
|
(def home (str "/home/" user))
|
|
|
|
(safe-sh "xbps-install" "-Sy" "void-repo-nonfree")
|
|
(safe-sh "xbps-install" "-Sy" "void-repo-multilib")
|
|
(safe-sh "xbps-install" "-Sy" "void-repo-multilib-nonfree")
|
|
(safe-sh "xbps-install" "-S")
|
|
|
|
(def packages {
|
|
:base ["bluez" "chromium" "curl" "emacs-gtk3" "engrampa" "feh" "fish-shell" "firefox" "flameshot" "flatpak" "font-firacode" "gimp" "git" "htop" "intel-ucode" "i3" "i3status" "libgcc-32bit" "libstdc++-32bit" "libdrm-32bit" "libglvnd-32bit" "mate" "mate-power-manager" "mate-terminal" "mate-utils" "pass" "ranger" "Signal-Desktop" "steam" "thunar-archive-plugin" "unzip" "wget" "xbindkeys" "xclip" "xz"]
|
|
:work ["git-lfs" "kotlin-bin" "scrcpy"]
|
|
})
|
|
|
|
(def flatpak-packages {
|
|
:work ["com.getpostman.Postman" "com.slack.Slack"]
|
|
:game ["com.discordapp.Discord"]
|
|
})
|
|
|
|
;;todo: allow to pick specific package sets later
|
|
|
|
;;installing normal xbps packages
|
|
(println "installing packages..")
|
|
(let [packages-to-install (flatten (vals packages))]
|
|
(apply safe-sh (concat ["xbps-install" "-y"] packages-to-install)))
|
|
(println "packages installed")
|
|
|
|
;;installing flatpak packages
|
|
(println "installing flatpak packages..")
|
|
(safe-sh "flatpak" "remote-add" "--if-not-exists" "flathub" "https://dl.flathub.org/repo/flathub.flatpakrepo")
|
|
(let [packages-to-install (flatten (vals flatpak-packages))]
|
|
(apply safe-sh (concat ["flatpak" "install" "flathub" "--noninteractive"] packages-to-install)))
|
|
(println "flatpak packages installed")
|
|
|
|
|
|
(def toolbox-link "https://download.jetbrains.com/toolbox/jetbrains-toolbox-2.1.1.18388.tar.gz")
|
|
|
|
(def http-toolkit-version "1.14.8")
|
|
(def http-toolkit-link (str "https://github.com/httptoolkit/httptoolkit-desktop/releases/download/v" http-toolkit-version "/HttpToolkit-linux-x64-" http-toolkit-version ".zip"))
|
|
|
|
(defn- install-application [link filename target-directory extract-command]
|
|
(let [download-file-path (str home "/Downloads/" filename)
|
|
download-file (fs/file download-file-path)]
|
|
(safe-sh "wget" "-O" download-file-path link)
|
|
(fs/delete-tree target-directory)
|
|
(fs/create-dirs target-directory)
|
|
(extract-command download-file-path target-directory)
|
|
(fs/delete download-file)
|
|
(safe-sh "chown" (str user ":" user) "-R" target-directory)))
|
|
|
|
;;installing jetbrains toolbox
|
|
(defn- install-jetbrains-toolbox []
|
|
(println "installing jetbrains toolbox..")
|
|
(let [target-directory (str home "/Applications/JetbrainsToolbox")]
|
|
(install-application
|
|
toolbox-link
|
|
"toolbox.tar.gz"
|
|
target-directory
|
|
#(safe-sh "tar" "-xzf" %1 "-C" %2)))
|
|
(println "jetbrains toolbox installed"))
|
|
|
|
;;installing http toolkit
|
|
(defn- install-http-toolkit []
|
|
(println "installing http toolkit..")
|
|
(let [target-directory (str home "/Applications/HttpToolkit")]
|
|
(install-application
|
|
http-toolkit-link
|
|
"httptoolkit.zip"
|
|
target-directory
|
|
#(safe-sh "unzip" %1 "-d" %2)))
|
|
(println "http toolkit installed"))
|
|
|
|
(let [applications-dir (str home "/Applications")]
|
|
(fs/create-dirs applications-dir)
|
|
(safe-sh "chown" (str user ":" user) "-R" applications-dir))
|
|
|
|
(install-jetbrains-toolbox)
|
|
(install-http-toolkit)
|