Compare commits

256 Commits

Author SHA1 Message Date
b2e78c43d1 wip4 2026-02-16 17:28:48 +08:00
d13a8a44d1 change-amd-driver added 2026-02-16 17:26:38 +08:00
edac0e49c4 ddns scripts updated 2026-02-16 17:25:18 +08:00
642522a01d frkn removed 2026-02-16 17:24:42 +08:00
daa8df5c77 fix postman icon in desktop file 2026-02-16 17:22:49 +08:00
c7449f4acb tools -> scripts 2025-11-14 10:44:57 +08:00
0493f18b18 Dotfiles moved to another repo: https://git.axenov.dev/anthony/dotfiles 2025-11-14 10:43:47 +08:00
b8ca9a8dad zshrc and xcompose 2025-11-03 21:21:31 +08:00
549b420df2 Добавлен vacuum 2025-10-30 06:00:39 +00:00
edf76874fc misc 2025-10-12 18:25:13 +08:00
95ad6b0c6a rustdesk 1.4.2 2025-10-12 18:24:30 +08:00
ff36975eb7 frkn deprecated 2025-07-10 23:46:19 +08:00
5ae19346d6 wine misc, albert removed 2025-07-09 00:15:25 +08:00
53ee621747 duckdns improved 2025-07-08 23:50:53 +08:00
dd339f2939 duckdns misc 2025-07-05 10:23:59 +08:00
e0fbdf852e duckdns 2025-07-02 13:29:40 +08:00
b5983ed308 sublime text 4200 2025-06-21 22:48:29 +08:00
f39af6d446 makefile 2025-06-18 19:51:07 +08:00
8fe3d112ba Merge branch 'master' of git.axenov.dev:anthony/shell 2025-06-18 19:50:45 +08:00
4c81bcea73 rustdesk flatpak + kde permission 2025-06-18 19:50:28 +08:00
5623d08d85 suld 2025-05-23 00:19:28 +08:00
0a369efe1b Merge branch 'master' of git.axenov.dev:anthony/shell 2025-05-21 20:26:41 +08:00
1640ebfb45 neovim + lazyvim 2025-05-21 20:26:23 +08:00
d2c561fc28 upgraded lite-xl 2025-05-19 00:30:08 +08:00
a920e48422 Revert "telebit misc"
This reverts commit abad965e9a.
2025-05-18 23:54:02 +08:00
0ed07de2d2 php misc 2025-05-18 23:27:42 +08:00
abad965e9a telebit misc 2025-05-18 23:27:19 +08:00
b5b0140e34 vscode repo 2025-05-14 23:42:02 +08:00
5d75b6f79e vivaldi repo + install 2025-05-14 23:41:50 +08:00
87fd722509 albert draft 2025-05-14 19:58:43 +08:00
eaacecd87a ulauncher update 2025-05-14 18:51:18 +08:00
4c57a180ac sublimetext update 2025-05-14 18:49:44 +08:00
96bd945ef2 disable-ipv6 2025-03-29 18:58:45 +08:00
49fd27d3be display-rotate 2025-03-29 18:56:46 +08:00
3c9f1d71cb flameshot build form src 2025-03-24 19:48:25 +08:00
3a226ed5bb git helpers misc 2025-03-24 19:47:30 +08:00
fe83b3eb25 readme update 2025-03-24 19:46:01 +08:00
a34dda20c7 uninstall wine 2025-03-24 17:21:08 +08:00
021db1064e ubuntu tools misc 2025-03-19 19:08:19 +08:00
b70b89433b Merge branch 'master' of git.axenov.dev:anthony/shell 2025-03-18 13:45:33 +08:00
8531543982 make-swapfile 2025-03-18 13:45:29 +08:00
e05b47ae52 ubuntu server scripts misc 2025-02-20 10:22:39 +08:00
e9a6f4ddda docker-volume-snapshot 2025-02-20 10:22:25 +08:00
cbb493b5c4 ClamAV (WIP) 2025-02-10 21:32:52 +08:00
31ddf3a6d2 notification helpers 2025-02-10 21:30:36 +08:00
47827282a9 free-space misc 2025-02-10 21:30:24 +08:00
16075cdd61 new links in readme 2025-02-08 13:25:52 +08:00
29e5c960de docker, network and others 2025-02-08 13:25:41 +08:00
526dade1f8 new help examples 2025-02-08 13:24:30 +08:00
66126167c8 io misc 2025-02-08 13:23:48 +08:00
3696cc06af new traps example 2025-02-08 13:23:32 +08:00
8da2059d1e basic.sh new functions 2025-02-08 13:19:16 +08:00
9da84a69f2 free-space misc 2025-02-08 12:10:23 +08:00
50bd28abe4 io misc 2025-02-05 18:58:42 +08:00
bbbc0de694 arg() снова исправлен вызов tr 2025-01-29 19:50:52 +08:00
9258398be4 Merge branch 'master' of git.axenov.dev:anthony/shell 2025-01-27 15:10:30 +08:00
a60374033c arg() исправлен вызов tr 2025-01-27 15:10:18 +08:00
bcae2fb4cf dotfiles misc 2025-01-21 00:06:37 +08:00
c808cce9cd sublime text dotfiles 2025-01-21 00:05:57 +08:00
bacd71304a Merge branch 'master' of git.axenov.dev:anthony/shell 2025-01-20 16:11:56 +08:00
6fee688968 arg-parser -- fix utf8 2025-01-20 16:11:46 +08:00
ebd30c8a50 youtube-dl misc 2025-01-18 00:46:27 +08:00
c4b2af8073 new shebangs 2025-01-17 19:07:28 +08:00
45499ca5df args-parser refactor 2025-01-17 19:07:08 +08:00
53d5a31a30 many io misc useful updates 2025-01-16 14:23:46 +08:00
1e0d54f5d6 some basic helpers 2025-01-16 14:23:19 +08:00
5d3004c87b docker helpers 2025-01-16 13:39:16 +08:00
14f3f2caf2 arg-parser fixes 2025-01-16 13:39:02 +08:00
dc03b5f577 sublime merge 2102 + misc 2025-01-09 15:38:31 +08:00
2af5282e64 st4 4189 2024-12-26 00:49:56 +08:00
e2c0d1de87 wip 2024-12-02 16:12:18 +08:00
7bb8a8c839 Merge branch 'master' of git.axenov.dev:anthony/my-env 2024-11-24 14:47:02 +08:00
bc139e5cc5 st4 upgrade 2024-11-24 14:46:56 +08:00
beeb59b1aa vscode fix 2024-11-22 14:43:22 +08:00
3249c32cb2 Merge branch 'master' of git.axenov.dev:anthony/my-env 2024-11-22 14:38:43 +08:00
c18f014119 golang 1.23.0 2024-11-22 14:38:38 +08:00
d41f6505b9 todo list 2024-11-22 09:41:16 +08:00
c4c7d298e0 vscode deb 2024-11-22 09:41:05 +08:00
e95ccf042b lazynvim WIP 2024-11-22 09:32:36 +08:00
1a912bf645 frkn tool -- toggle ipv6 on (dis)connect 2024-11-22 09:32:22 +08:00
1c2abec8a7 Helpers fixes 2024-11-22 09:31:53 +08:00
a71b682f49 free-space tool 2024-09-08 11:33:09 +08:00
df826ba9c9 Update command for FRKN tool 2024-09-06 01:12:49 +08:00
737da43522 Updated frkn tool 2024-08-27 14:40:29 +08:00
890f09b82b frkn tool script for quick connection control 2024-08-26 16:22:03 +08:00
4b1bd30170 frkn 2024-08-02 00:03:57 +08:00
5842b954e3 sublime text 4169 2024-08-01 00:05:38 +08:00
a52ce34748 makefile 2024-07-31 23:40:56 +08:00
024b3311e0 uninstall scripts 2024-07-31 23:40:43 +08:00
22d12fd902 tools/ignore-veth.sh 2024-07-31 23:37:57 +08:00
def4f6761a dotfiles misc 2024-07-31 23:37:18 +08:00
ed10ab05d4 misc 2024-07-31 23:36:46 +08:00
b6817506e0 telegram misc 2024-07-31 23:36:15 +08:00
479ac2064f postman rework 2024-07-31 23:36:02 +08:00
4014f83402 php tools misc 2024-07-31 23:35:38 +08:00
bf970f58cd pgsql rework 2024-07-31 23:32:46 +08:00
7159850e83 papirus rework 2024-07-31 23:31:16 +08:00
3ef8692684 openvpn rework 2024-07-31 23:29:58 +08:00
efa60f5231 kde-backports misc 2024-07-31 23:29:37 +08:00
ee8cbd0fe4 jbmono misc 2024-07-31 23:27:06 +08:00
3c87f837eb grubc rename 2024-07-31 23:26:44 +08:00
6d7719d568 golang rework 2024-07-31 23:26:27 +08:00
e9638e845c git rework 2024-07-31 23:26:12 +08:00
b2cf7c154e flameshot 2024-07-31 23:25:51 +08:00
b988524c2d droidcam rework 2024-07-31 23:25:11 +08:00
a73a442f07 docker rework 2024-07-31 23:24:10 +08:00
f9f8f5b2dc composer reworked 2024-07-31 23:23:55 +08:00
79db21f336 chrome misc 2024-07-31 23:23:33 +08:00
bb78d67565 canon-mg2500 misc 2024-07-31 23:23:19 +08:00
8b9aecc754 apt misc 2024-07-31 23:18:15 +08:00
f3f6e8fd31 apache misc 2024-07-31 23:15:48 +08:00
5bf67b1c8e helpers misc 2024-07-31 23:14:53 +08:00
9baedd438f Обновить dotfiles/etc/docker/daemon.json 2024-06-03 10:51:58 +00:00
49595c7df5 docker mirrors 2024-05-31 00:13:37 +08:00
8ad20ca7fd apache2 + helpers 2023-04-12 22:11:17 +08:00
7cc6888cca Merge branch 'master' of git.axenov.dev:anthony/my-env 2023-04-12 21:50:46 +08:00
19d9f17f77 testing new helper functions in jbmono 2023-04-12 19:06:42 +08:00
86c7c92ae0 fixes in makefile generation 2023-04-12 19:05:12 +08:00
4670ee9b57 makefile updated 2023-04-12 17:03:00 +08:00
c261d62b36 new jetbrains mono fonts installer 2023-04-12 17:00:41 +08:00
acc7907a72 fix-obs-vcam revamped 2023-04-12 16:47:46 +08:00
ba9c1bf28d git_aliases 2023-04-12 08:57:04 +08:00
7fcf9ad9e6 corrected kde-backports 2023-04-11 23:49:00 +08:00
84822bd7fa papirus speedup 2023-04-11 23:48:36 +08:00
99ffbf68f8 minus sqlitebrowser from apt 2023-04-11 23:48:24 +08:00
a5388f5127 telegram from official website 2023-04-11 23:47:43 +08:00
3339928940 youtube-dl from sources 2023-04-11 23:45:41 +08:00
bc0a2e4426 some finish messages 2023-04-11 23:43:14 +08:00
805716e9b4 youtube-dl wget without sudo 2023-04-11 14:51:36 +00:00
be8d9ab4a6 rustdesk fix 2023-03-10 13:55:26 +08:00
3bb7ec3564 php fixes 2023-03-10 13:55:10 +08:00
01896666f2 Merge branch 'master' of git.axenov.dev:anthony/my-env 2023-02-01 22:30:10 +08:00
aaec3096f9 vivaldi uninstall 2023-02-01 22:29:23 +08:00
46ca617c1a docker misc 2023-02-01 22:29:02 +08:00
90dc1b4d8b Revert "Descriptions parsing improved" (c1150af9) + php tools fixes 2022-12-28 15:20:25 +08:00
f89b2d946d nodejs (nvm/npm) rework 2022-12-21 22:07:05 +08:00
0aac460d63 makefile misc + generator 2022-12-11 14:48:52 +08:00
aab50b0401 php refactored and new tools 2022-12-11 14:48:30 +08:00
28692bfcf5 unzip -oq 2022-12-11 14:32:18 +08:00
2d2380fd62 open sans 2022-12-10 22:13:09 +08:00
f20a161373 Merge branch 'master' of git.axenov.dev:anthony/my-env 2022-12-10 21:59:53 +08:00
3a853564c1 phptools 2022-12-10 21:59:01 +08:00
5abc1c9434 papirus misc 2022-12-10 21:58:53 +08:00
7136fac018 dots misc 2022-12-10 21:58:38 +08:00
7554e57ea4 Merge branch 'master' of git.axenov.dev:anthony/my-env 2022-11-30 17:51:34 +08:00
e6411438c5 openvpn 2022-11-30 17:51:28 +08:00
e86281c967 git_aliases misc 2022-11-30 17:51:21 +08:00
04c74e1d00 dotfiles misc 2022-11-20 21:38:49 +08:00
5f2d2e2011 apt misc 2022-11-20 21:38:40 +08:00
8f2b1fa137 lite-xl misc 2022-11-20 21:37:11 +08:00
14e841cc80 rustdesk updated 2022-11-03 22:49:31 +08:00
6d7460c5b0 lite-xl 2.1.0 2022-11-03 22:49:09 +08:00
d262e8f202 Canon -y 2022-10-12 15:55:45 +08:00
27659f8ad5 xclip 2022-10-10 23:01:10 +08:00
0aec6382bd ytdlcue fixes 2022-10-09 13:23:20 +08:00
4223f7845d tools a+x 2022-10-09 13:16:23 +08:00
accce0dddb ytdlcue + ytm misc 2022-10-09 12:58:49 +08:00
292e15199c ytm misc 2022-10-08 22:40:39 +08:00
acacd1657c +apt ffmpeg 2022-10-08 22:15:33 +08:00
3c527a8dee ytm misc 2022-10-08 22:14:59 +08:00
0e90625d7c Fix for Rutracker's blocked trackers in RF 2022-10-08 21:50:39 +08:00
afbb634566 Some new bash aliases 2022-10-08 21:49:43 +08:00
bc9eb794a8 Dotfiles installer 2022-10-08 12:37:00 +08:00
4637b069f9 youtube-dl 2022-10-05 11:30:31 +08:00
05e6b8195b vivaldi 2022-10-04 13:11:37 +08:00
8c6a191d61 kde-portal 2022-10-04 13:11:25 +08:00
b7856f6529 inotifywait-cp.sh improved 2022-10-01 13:17:59 +08:00
3e3c03a2e1 Fixes 'ln -s' 2022-10-01 12:09:57 +08:00
155352f8ad snap misc 2022-10-01 12:09:45 +08:00
14362f6165 gen-makefile is back 2022-09-30 15:48:27 +08:00
8b809bafca Dockerfile removed, README fixes 2022-09-30 15:46:34 +08:00
40d214e99b Merge branch 'master' of git.axenov.dev:anthony/my-env 2022-09-30 14:06:23 +08:00
e4e64a8ab1 obs pack and fixes 2022-09-30 14:06:16 +08:00
8de641fd68 Big update of git aliases (may be a lot of useless trash) 2022-09-30 12:42:52 +08:00
32bdf4b44d inotify-tools 2022-09-29 13:33:57 +08:00
d7d27849a1 fix-obs-vcam 2022-09-29 13:31:34 +08:00
3f08b3ed06 KDE file templates: rename goal + new templates 2022-09-29 13:29:54 +08:00
fc7ff9613a papirus fixes 2022-09-29 13:22:04 +08:00
41180043ae droidcam-obs fixes & misc 2022-09-29 13:21:35 +08:00
a68074cb01 Postman misc 2022-09-29 13:21:18 +08:00
91be1a194b git fixes 2022-09-29 13:20:30 +08:00
322239ec1f docker misc 2022-09-29 13:20:14 +08:00
7ddcc73454 KDE Backports 2022-09-28 22:16:12 +08:00
a60d66a84d Dotfiles examples 2022-09-28 22:11:55 +08:00
0f118e015e inotifywait-cp 2022-09-28 07:41:07 +08:00
af93865525 add-apt-repository -y 2022-09-28 07:40:55 +08:00
8ffc2dfe32 Makefile generation improved 2022-08-26 08:25:55 +08:00
c1150af922 Descriptions parsing improved 2022-08-25 22:33:02 +08:00
7185a3cf7f Small generator improvements, 'make test' as an alias for ./gen-makefile 2022-08-25 12:40:36 +08:00
c48971a858 Docker (un)install scripts 2022-08-25 12:40:21 +08:00
aaf88521b3 Default make target 2022-08-19 21:32:23 +08:00
355953dc35 File templates (KDE) 2022-08-19 21:25:46 +08:00
43f6c8c9e9 New types of make rules + omz refactorings 2022-08-19 20:58:15 +08:00
2c9af9b1c5 editorconfig 2022-08-19 20:57:45 +08:00
4b677a9ab8 ntfy 2022-07-21 22:04:08 +08:00
af2a7f3c80 php + canon ppa 2022-07-15 22:59:45 +08:00
d3263e6da5 php + composer pack and fixes 2022-07-12 23:20:11 +08:00
bdcd8e6bec Scripts -> tools + fresh backup script 2022-07-10 14:42:40 +08:00
a6e0696e31 Fixed postman 2022-07-05 20:50:48 +08:00
f61f09b83f Git updated 2022-07-05 17:05:34 +08:00
6bb9442c43 Small updates 2022-07-05 10:53:41 +08:00
c54e71d28c Rustdesk updated 2022-07-05 10:52:27 +08:00
8d64efba39 Postman fixed and updated 2022-07-05 10:51:43 +08:00
cc2ab13310 Lamp pack updated 2022-07-05 10:51:32 +08:00
113c1df71b New qt5, flameshot pack draft 2022-07-05 10:51:17 +08:00
24f30e8eff New papirus 2022-07-05 10:50:54 +08:00
bcb1111a0a Zsh and omz as pack (updated) 2022-07-05 10:50:35 +08:00
3fa1a4d09d New libreoffice script 2022-07-05 10:50:07 +08:00
6c11b5d76d Removed libreoffice and shit from apt 2022-07-05 10:49:39 +08:00
82559869fc Small fixes + WTFPLv2 2022-07-04 23:53:39 +08:00
4677b84a29 Initial docker sandbox 2022-07-04 23:25:31 +08:00
7008ec36b7 Apache fix 2022-07-04 23:24:43 +08:00
f2d41885af Composer cleanup 2022-07-04 23:24:27 +08:00
9972fc6d9d Updated chrome 2022-07-04 22:23:44 +08:00
f7ef85aad9 Updated apache2 2022-07-04 22:22:57 +08:00
3043a41365 Sort in apt 2022-07-04 22:22:37 +08:00
47c1e6d40b Fixed gen-makefile 2022-07-04 22:22:05 +08:00
317f635b91 Updated docker, apt, wine, snap; removed todo 2022-07-04 22:13:00 +08:00
e9cd7ee2ae Removed .sh from names, packs support 2022-07-04 19:34:00 +08:00
4a71dd0ae8 Better ##makedesc parsing 2022-07-04 19:08:37 +08:00
ad34d5c64a Makefile instead of start.sh + generator 2022-07-04 17:56:45 +08:00
2c37621542 Makefile + Droidcam 2022-07-04 15:51:04 +08:00
fed75142f1 Removed dotfiles and theme 2022-07-04 15:50:44 +08:00
8a87e84cac Latest golang 2022-07-04 15:23:57 +08:00
1da0453ff4 Lite-XL draft 2022-07-04 15:23:49 +08:00
2a0fbc25c5 golang fix 2022-04-14 13:44:06 +00:00
8e1157afc5 Refactored aliases 2022-02-16 12:48:48 +08:00
baeb784264 rustdesk 2022-02-01 15:17:17 +08:00
790dc6143b anydesk remove 2022-02-01 15:05:16 +08:00
ee1417f8b0 anydesk fix 2022-02-01 14:56:03 +08:00
118a4da535 anydesk 2022-02-01 14:43:09 +08:00
d175b6ee3b fix git.sh 2 2022-01-09 17:32:11 +08:00
7f8f9ddc27 fix git.sh 2022-01-09 17:23:19 +08:00
7102cb38dc fix snap.sh 2022-01-09 17:20:40 +08:00
cd0dc9d988 Фиксы $HOME, $USER + dotfiles 2022-01-09 17:14:25 +08:00
3f4a7b0504 Остатки: удалён common.sh и пр мелочи 2022-01-09 17:07:16 +08:00
89086689c8 Корректировка установщика темы для mate 2022-01-09 17:05:31 +08:00
d6344eb7bd Удалён io.sh 2022-01-09 17:02:54 +08:00
42aba252cd Корректировка git 2 2022-01-09 17:02:45 +08:00
9e9dfc7174 Корректировка phpstorm-url-handler 2022-01-09 16:59:08 +08:00
d84e756e07 Корректировка wkhtmltopdf 2022-01-09 16:57:18 +08:00
a8f06130ef Корректировка composer 2022-01-09 16:56:25 +08:00
551f80ef29 Корректировка golang 2022-01-09 16:53:34 +08:00
d025934894 Корректировка telebit 2022-01-09 16:50:40 +08:00
3b0311d8e7 Корректировка postman 2022-01-09 16:49:08 +08:00
28cf415a22 Корректировка chrome 2022-01-09 16:44:33 +08:00
b05640fc00 Корректировка nvm 2022-01-08 14:40:30 +08:00
a5bf6bac4c Корректировка zint 2022-01-08 14:35:10 +08:00
c4f4452312 Корректировка pgsql 2022-01-08 14:34:20 +08:00
2356787f31 Корректировка mariadb 2022-01-08 14:32:57 +08:00
2039df23f6 Корректировка oci8 (просто чтобы было) 2022-01-08 14:31:10 +08:00
095689194f Корректировка php 2022-01-08 14:29:07 +08:00
53681a2e66 Корректировка apache2 2022-01-08 14:27:24 +08:00
924e02d9d9 Корректировка Window AppMenu Applet 2022-01-08 14:25:47 +08:00
d7af364574 Корректировка wine 2022-01-08 14:24:16 +08:00
0cbc526452 Корректировка grub-customizer 2022-01-08 14:23:20 +08:00
1000 changed files with 6373 additions and 46154 deletions

13
.editorconfig Normal file
View File

@@ -0,0 +1,13 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
[{install/*, uninstall/*, upgrade/*}]
indent_style = space
indent_size = 4
[{packs/*, Makefile*}]
indent_style = tab
indent_size = 4

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*.bak
*.log

13
LICENSE Normal file
View File

@@ -0,0 +1,13 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2022 Антон Аксенов <anthonyaxenov@gmail.com>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

347
Makefile Normal file
View File

@@ -0,0 +1,347 @@
# Autogenerated at 10.07.2025 23:45 using ./gen-makefile
.DEFAULT_GOAL := help
#===============================================
# Scripts listed in ./install
#===============================================
##apache2: Install apache2 (latest)
apache2:
@./install/apache2
##apt: Install software from apt
apt:
@./install/apt
##canon-mg2500: Install Canon Pixma MG2500 + ppa
canon-mg2500:
@./install/canon-mg2500
##chrome: Install google chrome (latest)
chrome:
@./install/chrome
##clamav: ClamAV (WIP)
clamav:
@./install/clamav
##composer: Install composer (latest)
composer:
@./install/composer
##docker: Install docker (latest) + ppa
docker:
@./install/docker
##dots: Install dotfiles
dots:
@./install/dots
##droidcam: Install droidcam v1.9.0
droidcam:
@./install/droidcam
##droidcam-obs: Install droidcam-obs plugin v1.5.1
droidcam-obs:
@./install/droidcam-obs
##flameshot: Install flameshot (latest)
flameshot:
@./install/flameshot
##frkn.deprecated: Install Wireguard + FRKN
frkn.deprecated:
@./install/frkn.deprecated
##git: Install git (latest)
git:
@./install/git
##golang: Install golang v1.21.0
golang:
@./install/golang
##grub-customizer: Install grub-customizer (latest + ppa)
grub-customizer:
@./install/grub-customizer
##jbmono: Install JetBrains Mono fonts
jbmono:
@./install/jbmono
##kde-appmenu: Install KDE Window AppMenu Applet
kde-appmenu:
@./install/kde-appmenu
##kde-backports: Install KDE Backports
kde-backports:
@./install/kde-backports
##kde-file-templates: Install file templates (KDE)
kde-file-templates:
@./install/kde-file-templates
##kde-portal: Install KDE portal
kde-portal:
@./install/kde-portal
##libreoffice: Install libreoffice
libreoffice:
@./install/libreoffice
##lite-xl: Install lite-xl v2.1.7
lite-xl:
@./install/lite-xl
##mariadb: Install mariadb (latest) and php-mysql + phpMyAdmin (if php is installed)
mariadb:
@./install/mariadb
##nodejs: Install nodejs + npm via nvm
nodejs:
@./install/nodejs
##ntfy: Install ntfy (latest) + ppa
ntfy:
@./install/ntfy
##nvim: Install nvim + lazyvim
nvim:
@./install/nvim
##obs-studio: Install obs-studio (latest snap)
obs-studio:
@./install/obs-studio
##omz-clean: Install omz (latest)
omz-clean:
@./install/omz-clean
##omz-fancy: Install omz fancy (powerline10k + MesloLGS font)
omz-fancy:
@./install/omz-fancy
##openvpn: Install openvpn v2.6.3 (src)
openvpn:
@./install/openvpn
##papirus: Install papirus-icon-theme (latest)
papirus:
@./install/papirus
##pgsql: Install postgresql (latest) and php-pgsql (if php is installed)
pgsql:
@./install/pgsql
##php: Install php v8.4
php:
@./install/php
##phpcs: Install phpcs + php-cs-fixer
phpcs:
@./install/phpcs
##phpmd: Install phpmd
phpmd:
@./install/phpmd
##php-psalm: Install psalm
php-psalm:
@./install/php-psalm
##php-spx: Install php-spx
php-spx:
@./install/php-spx
##phpstan: Install phpstan
phpstan:
@./install/phpstan
##phpunit: Install phpunit
phpunit:
@./install/phpunit
##postman: Install postman (latest)
postman:
@./install/postman
##qt5: Install qt5
qt5:
@./install/qt5
##rustdesk: Install rustdesk client (flatpak)
rustdesk:
@./install/rustdesk
##rustdesk-deb: Install rustdesk client v1.4.0 (deb)
rustdesk-deb:
@./install/rustdesk-deb
##snap: Install bunch of software from snap
snap:
@./install/snap
##sublimemerge: Install Sublime Merge
sublimemerge:
@./install/sublimemerge
##sublimetext: Install Sublime Text
sublimetext:
@./install/sublimetext
##suld: Samsung Unified Linux Driver repo
suld:
@./install/suld
##syncthing: Install syncthing (latest) + ppa
syncthing:
@./install/syncthing
##telebit: Install telebit (latest)
telebit:
@./install/telebit
##telegram: Install telegram (latest)
telegram:
@./install/telegram
##ulauncher: Install ulauncher (latest) + ppa
ulauncher:
@./install/ulauncher
##vivaldi: Install Vivaldi + ppa
vivaldi:
@./install/vivaldi
##vscode: VSCode deb-package
vscode:
@./install/vscode
##wine: Install wine (latest) + ppa
wine:
@./install/wine
##youtube-dl: Install youtube-dl (src)
youtube-dl:
@./install/youtube-dl
##ytdlcue: Install ytdlcue
ytdlcue:
@./install/ytdlcue
##zint: Install zint (latest)
zint:
@./install/zint
##zsh: Install vanilla zsh
zsh:
@./install/zsh
#===============================================
# Scripts listed in ./packs
#===============================================
##lamp: [PACK] Apache + php + mariadb
lamp: apache phpstack mariadb
##obs: [PACK] Install OBS Studio + droidcam-obs
obs: obs-studio droidcam-obs
##omz: [PACK] zsh + omz + powerline10k + MesloLGS font
omz: zsh omz-clean omz-fancy
chsh -s /usr/bin/zsh
@exec zsh
##phptools: [PACK] Install only php tooling (composer, phpunit, psalm, phpcs, php-cs-fixer, phpmd)
phptools: composer php-psalm phpcs phpmd phpstan phpunit
##phpstack: [PACK] Install full php stack with tooling
phpstack: php phptools
#===============================================
# Scripts listed in ./upgrade
#===============================================
##^omz: Upgrade omz
^omz:
@./upgrade/omz
#===============================================
# Scripts listed in ./uninstall
#===============================================
##/apache2: Uninstall apache2
/apache2:
@./uninstall/apache2
##/canon-mg2500: Uninstall Canon Pixma MG2500 + ppa
/canon-mg2500:
@./uninstall/canon-mg2500
##/chrome: Uninstall google chrome
/chrome:
@./uninstall/chrome
##/composer: Uninstall composer
/composer:
@./uninstall/composer
##/docker: Uninstall docker + ppa
/docker:
@./uninstall/docker
##/grub-customizer: Uninstall grub-customizer with ppa
/grub-customizer:
@./uninstall/grub-customizer
##/lazynvim: <no description>
/lazynvim:
@./uninstall/lazynvim
##/lite-xl: Uninstall lite-xl
/lite-xl:
@./uninstall/lite-xl
##/omz: Uninstall omz
/omz:
@./uninstall/omz
##/sublimemerge: Uninstall Sublime Merge
/sublimemerge:
@./uninstall/sublimemerge
##/sublimetext: Uninstall Sublime Text
/sublimetext:
@./uninstall/sublimetext
##/vivaldi: Uninstall vivaldi + ppa
/vivaldi:
@./uninstall/vivaldi
##/wine: Uninstall wine
/wine:
@./uninstall/wine
#===============================================
# Service goals
#===============================================
self:
@./gen-makefile
help: Makefile
@echo "Ubuntu software installator"
@echo
@echo "Usage:"
@echo "\tmake help\t - show this help"
@echo "\tmake self\t - regenerate Makefile (alias of ./gen-makefile)"
@echo "\tmake GOAL\t - install software"
@echo "\tmake ^GOAL\t - upgrade software"
@echo "\tmake /GOAL\t - uninstall software"
@echo "\nYou can combine GOALs, here are some examples:"
@echo "\tmake /docker docker"
@echo "\tmake php /docker ^omz"
@echo "\nAvailable GOALs:"
@sed -n 's/^##//p' $< | column -ts ':' | sed -e "s/^/\t/"
+%:
@make

115
README.md
View File

@@ -1,49 +1,94 @@
# Окружение рабочего стола
# My shell environment
Набор скриптов для развёртывания привычной рабочей среды на Ubuntu.
`make`-ready bunch of scripts for easily (de)installation of different software and bunch of useful handy functions for custom scripting.
## Полная установка
## Requirements
Если установлен `git`
* Ubuntu >= 20.04 (not tested with version < 20)
* `bash`, `zsh` or other `sh`-compatible shell
* `make` (optional but recommended)
* `wget` (required for some scripts)
* `git` (required for some scripts)
If some dependecies are missed for some of these scripts it is enougth to run `./install/apt` in most cases, otherwise script will suggest (or even install) them.
## Usage
```shell
git clone git@git.anthonyaxenov.ru:anthony/my-env.git --depth=1
cd my-env
sudo ./start.sh
# with git
git clone git@git.axenov.dev:anthony/shell.git --depth=1 --single-branch
# without git
wget -qO - https://git.axenov.dev/anthony/shell/archive/master.tar.gz | tar -zxf -
# get full list of `make` goals
cd shell && make
```
Если не установлен `git`
## How to add my script?
```shell
wget -qO - http://git.anthonyaxenov.ru/anthony/my-env/archive/master.tar.gz | tar -zxf -
cd my-env
sudo ./start.sh
1. Create a new shell script in `./install`, `./upgrade` or `./uninstall` directory.
At the beggining of a file you must write these two lines:
```shell
#!/usr/bin/env bash
##makedesc: Your description for Makefile
```
2. Make this script executable, e.g.:
```shell
sudo chmod a+x ./install/myscript
```
3. Test your script
4. Run `make self` to generate new `./Makefile`
## How to create a pack?
You can create new file inside `./packs` dir.
Syntax is same as classic makefile.
It is important to add a comment with short description:
```makefile
##mypack1: Pack description
mypack1: goal1 goal2 goalX ...
...
##mypackX: Pack description
mypackX: goalA goalB
@cp file1 file2
...
...
```
Скрипт `start.sh` обработает все `*.sh`-скрипты из [`/install`](/install) по порядку.
where:
* `mypack*` is the pack name of your choice
* `goal*` are script names in `./install`
## Частичная установка
## Useful links and sources used
Без полного развёртывания репозитория
* https://gist.github.com/anthonyaxenov/d53c4385b7d1466e0affeb56388b1005
* https://gist.github.com/anthonyaxenov/89c99e09ddb195985707e2b24a57257d
* ...and other my [gists](https://gist.github.com/anthonyaxenov/) with [SHELL] prefix
* https://github.com/nvie/gitflow/blob/develop/gitflow-common (BSD License)
* https://github.com/petervanderdoes/gitflow-avh/blob/develop/gitflow-common (FreeBSD License)
* https://github.com/vaniacer/bash_color/blob/master/color
* https://misc.flogisoft.com/bash/tip_colors_and_formatting
* https://www-users.york.ac.uk/~mijp1/teaching/2nd_year_Comp_Lab/guides/grep_awk_sed.pdf
* https://www.galago-project.org/specs/notification/
* https://laurvas.ru/bash-trap/
* https://stackoverflow.com/a/52674277
* https://rtfm.co.ua/bash-funkciya-getopts-ispolzuem-opcii-v-skriptax/
* https://gist.github.com/jacknlliu/7c51e0ee8b51881dc8fb2183c481992e
* https://gist.github.com/anthonyaxenov/d53c4385b7d1466e0affeb56388b1005
* https://github.com/nvie/gitflow/blob/develop/gitflow-common
* https://github.com/petervanderdoes/gitflow-avh/blob/develop/gitflow-common
* https://gitlab.com/kyb/autorsync/-/blob/master/
* https://lug.fh-swf.de/vim/vim-bash/StyleGuideShell.en.pdf
* https://www.thegeekstuff.com/2010/06/bash-array-tutorial/
* https://www.distributednetworks.com/linux-network-admin/module4/ephemeral-reserved-portNumbers.php
* https://github.com/community-scripts/ProxmoxVE/tree/main/install
* https://github.com/community-scripts/ProxmoxVE/tree/main/misc
* https://faculty.cs.niu.edu/~hutchins/csci480/signals.htm
```shell
wget -qO - http://git.anthonyaxenov.ru/anthony/my-env/raw/branch/master/install/000-apt.sh | bash
```
## License
После полного развёртывания репозитория (см. полную установку):
```shell
cd my-env
sudo ./install/000-apt.sh
```
## Тема оформления (только MATE)
Также можно установить визуальное оформление:
* тема: [Budgie Desktop Dark Theme](https://www.pling.com/p/1276879)
* икoнки: [Papirus](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/)
* курсоры: [Bridge](https://www.mate-look.org/s/Mate/p/999983/), [Capitaine Cursors](https://www.gnome-look.org/p/1148692/)
```shell
sudo ./theme/install.sh
```
[WTFPLv2](LICENSE) but other licences are also possible.

11
TODO.md Normal file
View File

@@ -0,0 +1,11 @@
# Todo list
* tdesktop (https://desktop.telegram.org)
* spoofdpi (https://git.axenov.dev/mirrors/SpoofDPI/tags)
* lazynvim (https://www.lazyvim.org)
* build: [flameshot](https://github.com/flameshot-org/flameshot#compilation)
* build: [rustdesk](https://github.com/rustdesk/rustdesk#build)
* update scripts (when possible)
* uninstall scripts (when possible)
* ...

View File

@@ -1,51 +0,0 @@
# Common
own() {
sudo chmod 0664 -R --preserve-root $@
sudo chown $USER. -R --preserve-root $@
}
#alias aliases='source ~/install/aliases && cat ~/install/aliases'
alias aliases='source ~/install/aliases'
alias zshrc='source ~/.zshrc'
alias wine='LANG=ru_RU.utf8 wine'
alias upgrade='sudo apt update && sudo apt upgrade -y'
alias duh='du -ha --max-depth=1'
alias sduh='sudo du -ha --max-depth=1'
alias ports='netstat -tulanp'
# Navigation
alias projects='cd ~/projects'
alias Downloads='cd ~/Downloads'
# apache2
alias a2ls='ls -al /etc/apache2/sites-available/'
alias a2slen='ls -al /etc/apache2/sites-enabled/'
alias a2err='sudo tail /var/log/apache2/error_log'
#alias a2errclr='sudo truncate -s0 "/var/log/apache2/error_log"'
alias a2restart='sudo systemctl restart apache2'
alias a2reload='sudo systemctl reload apache2'
# nginx
#alias nxls='ls -al /etc/nginx/sites-available/'
#alias nxlsen='ls -al /etc/nginx/sites-enabled/'
#alias nxerr='sudo tail /var/log/nginx/error.log'
#alias nxerrclr='sudo truncate -s0 "/var/log/nginx/error.log"'
#alias nxrest='sudo systemctl restart nginx'
#alias nxreload='sudo systemctl reload nginx'
#alias nxensite='~/Scripts/web/nxensite.sh'
# mysql
alias mysqlstart='sudo systemctl start mysql'
alias mysqlstop='sudo systemctl stop mysql'
alias mysqlrestart='sudo systemctl restart mysql'
alias mysqlstatus='sudo systemctl status mysql'
# pgsql
#alias psql='sudo -u postgres psql'
# php
alias phprestart='sudo systemctl restart php-fpm'
# Docker
alias dockerstart='sudo systemctl start docker'
alias dockerrestart='sudo systemctl restart docker'
alias dockerstop='sudo systemctl stop docker'

View File

@@ -1,119 +0,0 @@
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
if [ $TILIX_ID ] || [ $VTE_VERSION ] ; then source /etc/profile.d/vte.sh; fi # Ubuntu Budgie END

View File

@@ -1,86 +0,0 @@
[user]
name = AnthonyAxenov
email = anthonyaxenov@gmail.com
[push]
default = current
[pull]
default = current
rebase = false
[core]
editor = nano
autocrlf = input
[alias]
# общее -----------------------------------------------------------------
st = status #
aliases = config --get-regexp '^alias' # показать список доступных алиасов
diffc = diff --cached # показать дельту staged-файла
co = checkout #
cob = checkout -b # создание новое ветки
cp = cherry-pick # применить коммит поверх текущего HEAD
bheads = branch -vv # показать список веток с последними коммитами
heads = log --graph --decorate --simplify-by-decoration --oneline # лог только по последним коммитам веток
# управление ветками ----------------------------------------------------
br = status -sb # показать название текущей ветки
branch = branch --list # показать текущую ветку в общем списке локальных веток
brd = branch -d # удалить слитую ветку локально
brD = branch -D # удалить НЕслитую ветку локально
brod = "!f(){ git branch -d "${1}"; git push origin :"${1}"; };f" # удалить слитую ветку локально и на origin
broD = "!f(){ git branch -D "${1}"; git push origin :"${1}"; };f" # удалить НЕслитую ветку локально и на origin
merged = branch --merged # показать список слитых веток
# удалить все слитые ветки
#bclean = "!f() { DEFAULT=master; git branch --merged ${1-$DEFAULT} | grep -v " ${1-$DEFAULT}$" | xargs git branch -d; }; f"
mn = merge --no-ff # слить ветку с принудительным коммитом слияния
# переключение между ветками ----------------------------------------------
master = "!git checkout master && git pull" # переключиться на ветку master и обновление
dev = "!git checkout dev && git pull" # переключиться на ветку dev и обновление
develop = "!git checkout develop && git pull" # переключиться на ветку develop и обновление
# фиксация изменений ------------------------------------------------------
c = commit # коммит
ca = commit -a # коммит всех файлов
cm = commit -m # коммит с заданным сообщением
cam = commit -am # коммит всех файлов с заданным сообщением
amend = commit --amend --no-edit # по-тихому прикрепляет все индексированные файлы к последнему коммиту, используя уже существующее сообщение
amendm = commit --amend -m # прикрепляет все индексированные файлы к последнему коммиту, спрашивает новое сообщение к коммиту
# управление изменениями, сброс состояний, откат --------------------------
rh = reset --hard # откат коммита с удалением всех изменений на указанный коммит
rhh = reset --hard HEAD # откат коммита с удалением всех изменений на последний коммит
rs = reset --soft # откат коммита с сохранением всех изменений на указанный коммит
rsh = reset --soft HEAD # откат коммита с сохранением всех изменений
unstage = reset HEAD # удаляет файл из staged перед коммитом
clear = checkout -- # удаляет изменения в unstaged-файле
# штучка чтобы не терять наработки, которые ещё в процессе
# на самом деле, надо исопользовать стеш для таких дел
# save = !git add -A && git commit -m 'SAVEPOINT'
# wip = commit -am "WIP"
# undo = reset HEAD~1 --mixed
# работа с remote-репами --------------------------------------------------
p = push # отправить ветку
po = push origin # отправить ветку в origin
pt = push --tags # отправить теги
pl = pull # получить ветку
plo = pull origin # получить ветку из origin
ploh = pull origin HEAD # получить текущую ветку из origin
remotes = remote -v # показать список удалённых репозиториев
#sy = remote update origin --prune #
rso = remote show origin # показать состояние локальных веток относительно удалённых на origin bare
rpo = remote prune origin # удалить все мёртвые ссылки на bare-ветки origin
# просмотр логов ----------------------------------------------------------
head = log -1 HEAD # показать последний коммит в текущей ветке
hist = log --pretty=format:\"%h | %an (%ad) %s%d\" --graph --date=relative
logfull = log --graph --decorate --all
grog = log --graph --decorate --all --pretty=format:'%C(bold red)%h%C(reset) %C(bold blue)%an%C(reset) %C(green)%cr%C(reset) [%aD]%d%n%B'
# подмодули ---------------------------------------------------------------
si = submodule init # инициализация сабмодулей
sdi = submodule deinit -f # удаление сабмодуля
sa = submodule add # добавление сабмодуля
sup = submodule update # обновление сабмодуля
sst = submodule status # статус сабмодулей
ss = submodule summary # список сабмодулей

View File

@@ -1,106 +0,0 @@
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="/home/anthony/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="powerlevel9k/powerlevel9k"
#POWERLEVEL9K_MODE='nerdfont-complete'
#POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon dir vcs)
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time)
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"
# Uncomment the following line to automatically update without prompting.
# DISABLE_UPDATE_PROMPT="true"
# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='mvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
source ~/.aliases

Binary file not shown.

View File

@@ -1,4 +0,0 @@
<?php
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

View File

@@ -1 +0,0 @@
#!/bin/bash

95
gen-makefile Executable file
View File

@@ -0,0 +1,95 @@
#!/usr/bin/env bash
[ -f Makefile ] && mv Makefile Makefile.bak
CHR_UPGRADE='^'
CHR_UNINSTALL='/'
cat << EOF > Makefile
# Autogenerated at $(date +'%d.%m.%Y %H:%M') using ${BASH_SOURCE[0]}
.DEFAULT_GOAL := help
#===============================================
# Scripts listed in ./install
#===============================================
EOF
for file in ./install/*; do
name=${file##*/}
name=${name%.sh}
desc=$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${file})
[ -z "$desc" ] && desc='<no description>'
echo -e "##${name}: ${desc}\n${name}:\n\t@${file} install\n" >> Makefile
done;
cat << EOF >> Makefile
#===============================================
# Scripts listed in ./packs
#===============================================
EOF
for file in ./packs/*; do
cat "$file" >> Makefile
echo >> Makefile
done;
cat << EOF >> Makefile
#===============================================
# Scripts listed in ./upgrade
#===============================================
EOF
for file in ./upgrade/*; do
name=${file##*/}
name=${name%.sh}
desc=$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${file})
[ -z "$desc" ] && desc='<no description>'
echo -e "##${CHR_UPGRADE}${name}: ${desc}\n${CHR_UPGRADE}${name}:\n\t@${file} upgrade\n" >> Makefile
done;
cat << EOF >> Makefile
#===============================================
# Scripts listed in ./uninstall
#===============================================
EOF
for file in ./uninstall/*; do
name=${file##*/}
name=${name%.sh}
desc=$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${file})
[ -z "$desc" ] && desc='<no description>'
echo -e "##${CHR_UNINSTALL}${name}: ${desc}\n${CHR_UNINSTALL}${name}:\n\t@${file} remove\n" >> Makefile
done;
cat << EOF >> Makefile
#===============================================
# Service goals
#===============================================
self:
@./gen-makefile
help: Makefile
@echo "Ubuntu software installator"
@echo
@echo "Usage:"
@echo "\tmake help\t - show this help"
@echo "\tmake self\t - regenerate Makefile (alias of ./gen-makefile)"
@echo "\tmake GOAL\t - install software"
@echo "\tmake ${CHR_UPGRADE}GOAL\t - upgrade software"
@echo "\tmake ${CHR_UNINSTALL}GOAL\t - uninstall software"
@echo "\nYou can combine GOALs, here are some examples:"
@echo "\tmake ${CHR_UNINSTALL}docker docker"
@echo "\tmake php ${CHR_UNINSTALL}docker ${CHR_UPGRADE}omz"
@echo "\nAvailable GOALs:"
@sed -n 's/^##//p' $< | column -ts ':' | sed -e "s/^/\t/"
+%:
@make $*
EOF
echo "New ./Makefile has been generated!"
echo "Old one has been saved as ./Makefile.bak"
echo "Now run 'make' to get help"

20
helpers.sh Normal file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -oe pipefail
__root__=$( dirname $(readlink -e -- "${BASH_SOURCE}"))
source $__root__/helpers/io.sh || exit 255
source $__root__/helpers/git.sh || exit 255
source $__root__/helpers/basic.sh || exit 255
source $__root__/helpers/debug.sh || exit 255
source $__root__/helpers/packages.sh || exit 255
title() {
[[ $__AAA_NO_TITLE = 1 ]] || {
[ "$1" ] && title="$1" || title="$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${BASH_SOURCE[1]})"
info
info "==============================================="
info "$title"
info "==============================================="
info
}
}

View File

@@ -1,58 +0,0 @@
#!/bin/bash
echo
echo "==============================================="
echo "Installing software from apt..."
echo "==============================================="
echo
sudo apt update && sudo apt upgrade -y --autoremove
sudo apt install -y --autoremove \
apt-transport-https \
ca-certificates \
curl \
make \
cmake \
dialog \
build-essential \
software-properties-common \
libaio1 \
libssl-dev \
libghc-zlib-dev \
libcurl4-gnutls-dev \
libexpat1-dev \
gettext \
gnupg \
ubuntu-restricted-extras \
gnome-software \
unzip \
mc \
htop \
nano \
neofetch \
default-jdk \
terminator \
dconf-editor \
alien \
meld \
vlc \
gparted \
hardinfo \
libreoffice \
pulseeffects \
lsp-plugins \
lsb-release \
net-tools \
nmap \
p7zip-full \
sqlitebrowser \
# minder \
# redshift \
# redshift-gtk \
# nodejs \
# compiz \
# compizconfig-settings-manager \
# earlyoom \
# etckeeper \
# deepin-screenshot \
# geoclue-2.0 \
at

View File

@@ -1,42 +0,0 @@
#!/bin/bash
echo
echo "==============================================="
echo "Installing flatpak and its software..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
snapi() {
snap install $1 2>/dev/null
[[ $? -ne 0 ]] && snap install $1 --classic
}
if !installed snapd; then
sudo apt update
sudo apt install -y --autoremove snapd gnome-software-plugin-snap
fi
snapi snap-store
snapi telegram-desktop
snapi code
snapi phpstorm
snapi skype
snapi audacity
snapi flameshot
snapi gtk-common-themes
snapi gtk2-common-themes
snapi kde-frameworks-5-core18
snapi zoom-client
snapi peek
# https://certbot.eff.org/
snapi certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# snapi mysql-workbench-community
# snapi dbeaver-ce
# snapi discord
# snapi obs-studio

View File

@@ -1,12 +0,0 @@
#!/bin/bash
echo
echo "==============================================="
echo "Installing flatpak and its software..."
echo "==============================================="
echo
sudo apt install -y --autoremove \
flatpak \
gnome-software-plugin-flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

View File

@@ -1,54 +0,0 @@
#!/bin/bash
echo
echo "==============================================="
echo "Installing zsh + oh-my-zsh"
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
if ! installed git || ! installed curl; then
echo "ERROR: you need git and curl to be installed!"
exit 1
fi
sudo apt install -y --autoremove zsh
# sudo chsh -s $(which zsh)
# Based on:
# https://github.com/Powerlevel9k/powerlevel9k/wiki/Install-Instructions
# https://github.com/ohmyzsh/ohmyzsh
# https://powerline.readthedocs.io/en/latest/installation/linux.html#fonts-installation
# https://gist.github.com/dogrocker/1efb8fd9427779c827058f873b94df95
# https://linuxhint.com/install_zsh_shell_ubuntu_1804/
echo
echo "1. Installing oh-my-zsh..."
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
echo
echo "2. Installing powerlevel9k theme (legacy)..."
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
sed -i 's@^ZSH_THEME=.*$@ZSH_THEME="powerlevel9k/powerlevel9k"@g' ~/.zshrc
echo
echo "3. Installing powerline fonts..."
wget https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
wget https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf
mkdir -p ~/.local/share/fonts/
mv PowerlineSymbols.otf ~/.local/share/fonts/
fc-cache -vf ~/.local/share/fonts/
mkdir -p ~/.config/fontconfig/conf.d/
mv 10-powerline-symbols.conf ~/.config/fontconfig/conf.d/
echo
echo "4. Installing autosuggestions and syntax highlighting..."
git clone https://github.com/zsh-users/zsh-autosuggestions.git .oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git .oh-my-zsh/custom/plugins/zsh-syntax-highlighting
sed -i 's@plugins=(git)@plugins=(git zsh-autosuggestions zsh-syntax-highlighting)@g' ~/.zshrc
echo
echo "Finish! Log out of your session and login again."
echo

View File

@@ -1,26 +0,0 @@
#!/bin/bash
echo
echo "==============================================="
echo "Installing git..."
echo "==============================================="
echo
if installed git; then
[ ! -d "/usr/src/git" ] && sudo git clone https://github.com/git/git.git --depth=1 /usr/src/git
sudo chown -R anthony: /usr/src/git
cd /usr/src/git/
sudo make prefix=/usr/local all
sudo make prefix=/usr/local install
else
sudo wget https://github.com/git/git/archive/master.zip -O /usr/src/git.zip
sudo unzip /usr/src/git.zip -d /usr/src/git
sudo rm -f /usr/src/git.zip
cd /usr/src/git/git-master
sudo make prefix=/usr/local all
sudo make prefix=/usr/local install
cd /usr/src
sudo rm -rf git
sudo git clone https://github.com/git/git.git --depth=1 /usr/src/git
sudo chown -R anthony: /usr/src/git
fi
git --version

View File

@@ -1,24 +0,0 @@
#!/bin/bash
echo
echo "==============================================="
echo "Installing docker..."
echo "==============================================="
echo
# https://docs.docker.com/engine/install/ubuntu/
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
# sudo apt update
# sudo apt install -y --autoremove docker-ce docker-compose
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y --autoremove docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker anthony
echo "You need to logout and log in again to apply docker group"

View File

@@ -1,9 +0,0 @@
#!/bin/bash
echo
echo "==============================================="
echo "Installing ulauncher..."
echo "==============================================="
echo
sudo add-apt-repository ppa:agornostal/ulauncher
sudo apt install -y --autoremove ulauncher

View File

@@ -1,6 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing grub-customizer..."
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
apti grub-customizer

View File

@@ -1,9 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing wine"
sudo dpkg --add-architecture i386
wget -qO- https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'
apti winehq-stable
installed "wine" && success "wine installed!"

View File

@@ -1,10 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing google chrome (latest)..."
# https://t.me/axenov_blog/251
# snapi chromium
wget "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" -O /tmp/google-chrome-stable_current_amd64.deb
sudo dpkg -i /tmp/google-chrome-stable_current_amd64.deb
rm /tmp/google-chrome-stable_current_amd64.deb

View File

@@ -1,24 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing postman (latest)..."
wget "https://dl.pstmn.io/download/latest/linux64" -O /tmp/postman.tar.gz
# sudo tar -xvzf /tmp/postman.tar.gz -C /usr/local/bin
sudo tar -xzf /tmp/postman.tar.gz -C /usr/local/bin
rm /tmp/postman.tar.gz
sudo ln -s /usr/local/bin/Postman/Postman /usr/local/bin/postman
echo "#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Postman
Exec=/usr/local/bin/postman
Icon=/usr/local/bin/Postman/app/icons/icon_128x128.png
Categories=Utility,Network
Terminal=false
Type=Application
Encoding=UTF-8
" > /home/anthony/.local/share/applications/Postman.desktop
sudo update-desktop-database
installed "postman" && success "Postman installed!" || warning "Something wrong, Postman was not installed"

View File

@@ -1,27 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing golang"
# https://golang.org/doc/install
# https://www.vultr.com/docs/install-the-latest-version-of-golang-on-ubuntu
# if [ "$EUID" -ne 0 ]
# then echo "*** root permissions required ***"
# exit
# fi
[ $1 ] && VERSION="$1" || VERSION="1.17.5"
FILE="go$VERSION.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
wget "https://golang.org/dl/$FILE" -O /tmp/$FILE
sudo tar -xzf $FILE -C /usr/local
rm -rf /tmp/$FILE
sudo chown $USER: -R /usr/local/go
echo "export PATH=$PATH:/usr/local/go/bin" >> /home/anthony/.profile
echo "export GOPATH=~/.go" >> /home/anthony/.profile
# source ~/.profile
success "$(go version)"
info "NOTE: now run \`source ~/.profile\` to apply new env vars"

View File

@@ -1,7 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing apache2..."
apti apache2
sudo service apache2 restart
success "$(apache2 -v)"

View File

@@ -1,28 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
PHPVER="8.1"
title "Installing php${PHPVER}..."
sudo LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
apti php${PHPVER} \
php${PHPVER}-xdebug \
php${PHPVER}-bcmath \
php${PHPVER}-bz2 \
php${PHPVER}-curl \
php${PHPVER}-gd \
php${PHPVER}-json \
php${PHPVER}-mbstring \
php${PHPVER}-mysql \
php${PHPVER}-opcache \
php${PHPVER}-pgsql \
php${PHPVER}-soap \
php${PHPVER}-xml \
php${PHPVER}-xmlrpc \
php${PHPVER}-xsl \
php${PHPVER}-zip
# php${PHPVER}-common
# php${PHPVER}-cli
# php${PHPVER}-dba
# php${PHPVER}-ldap
# php${PHPVER}-sqlite3
php -v

View File

@@ -1,47 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing composer..."
if installed "php"; then
if installed "composer"; then
warning "You already have composer installed - removing to install actual version"
sudo apt remove -y --autoremove composer
sudo rm -f /bin/composer
sudo rm -f /usr/bin/composer
sudo rm -f /usr/local/bin/composer
sudo rm -rf /usr/src/composer
fi
sudo mkdir -m 0777 -p /usr/src/composer
cd /usr/src/composer
# https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then
>&2 echo 'ERROR: Invalid installer checksum'
rm composer-setup.php
exit 1
fi
php composer-setup.php --quiet
sudo cp /usr/src/composer/composer.phar /usr/local/bin/composer
cd - >/dev/null
sudo rm -rf /usr/src/composer/
installed "composer" && success "composer installed!"
else
warning "*** You need to have php installed"
fi
# title "Installing composer.phar in home dir..."
# cd ~
# EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)"
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
# if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]
# then
# >&2 echo 'ERROR: Invalid installer signature'
# rm composer-setup.php
# exit 1
# fi
# php composer-setup.php --quiet
# RESULT=$?
# rm composer-setup.php

View File

@@ -1,39 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing oci8..."
#check for
# wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basic-linuxx64.zip
# wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip -- only libociicus.so
# wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-sqlplus-linuxx64.zip
# wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-tools-linuxx64.zip
# wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-sdk-linuxx64.zip
#unzip
sudo mkdir /opt/oracle/
sudo mv ~/Downloads/instant_client/ /opt/oracle/
sudo sh -c "echo /opt/oracle/instant_client > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
apti php-dev php-pear build-essential libaio1 default-jdk
sudo pecl channel-update pecl.php.net
#sudo pecl install oci8 # php8
sudo pecl install oci8-2.2.0 # php7
#sh -c "echo '; priority=10' > /etc/php/7.4/mods-available/oci8.ini"
sudo sh -c "echo 'extension=oci8.so' >> /etc/php/7.4/mods-available/oci8.ini"
sudo chmod 0644 /etc/php/7.4/mods-available/oci8.ini
sudo phpenmod oci8
php -i | grep oci8
# instantclient,/opt/oracle/instant_client
# https://pecl.php.net/package/oci8
sudo pecl install oci8-2.2.0

View File

@@ -1,8 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing mariadb..."
apti mariadb-server mariadb-client
sudo mysql_secure_installation
installed "php" && apti php-mysql phpmyadmin
installed "mysql" && success "mariadb installed!"

View File

@@ -1,7 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing pgsql..."
apti postgresql postgresql-contrib
sudo service postgresql restart
installed php && apti php-pgsql

View File

@@ -1,9 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing wkhtmltopdf..."
# не тестировалось
wget "https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb" -O /tmp/wkhtmltopdf.deb
sudo dpkg -i /tmp/wkhtmltopdf.deb
rm -rf /tmp/wkhtmltopdf.deb

View File

@@ -1,20 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing nodejs..."
# apti nodejs npm
if !installed "nvm"; then
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
fi
if [ $(nvm current) == 'system' ]; then
warning "You already have node installed - removing to install actual version"
sudo apt remove -y --autoremove nodejs npm
else
nvm install-latest-npm
fi
nvm install node
nvm use node
installed "node" && success "nodejs installed! $(nvm current)"
installed "npm" && success "npm installed! $(nvm current)"
nvm ls

View File

@@ -1,35 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing phpstorm-url-handler..."
# https://github.com/rozwell/phpstorm-url-handler/
# https://askubuntu.com/a/1023143
# https://askubuntu.com/a/919825
# https://medium.com/swlh/custom-protocol-handling-how-to-8ac41ff651eb
# https://www.linuxquestions.org/questions/linux-desktop-74/xdg-open-doesn%27t-recognize-custom-protocol-4175433062/#post4809984
sudo rm -rf /usr/bin/phpstorm-url-handler >/dev/null
sudo rm -rf ~/.local/share/applications/phpstorm-url-handler.desktop >/dev/null
sudo rm -rf /usr/share/applications/phpstorm-url-handler.desktop >/dev/null
if installed "git"; then
sudo git clone https://github.com/rozwell/phpstorm-url-handler.git /usr/src/phpstorm-url-handler
else
sudo wget https://github.com/rozwell/phpstorm-url-handler/archive/master.zip -O /usr/src/phpstorm-url-handler.zip
sudo unzip /usr/src/phpstorm-url-handler.zip -d /usr/src/phpstorm-url-handler
sudo rm -f /usr/src/phpstorm-url-handler.zip
fi
info "Copy .desktop"
sudo cp /usr/src/phpstorm-url-handler/phpstorm-url-handler.desktop /usr/share/local/applications/phpstorm-url-handler.desktop
info "Symlink bin"
sudo cp /usr/src/phpstorm-url-handler/phpstorm-url-handler /usr/bin/phpstorm-url-handler
info "desktop-file-install"
sudo desktop-file-install phpstorm-url-handler.desktop
info "update-desktop-database"
sudo update-desktop-database -v 2>&1 | grep -E "^(.+)\/phpstorm-url-handler.desktop(.+)$"
info "xdg-mime"
xdg-mime default phpstorm-url-handler.desktop x-scheme-handler/phpstorm

View File

@@ -1,10 +0,0 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Copying dotfiles..."
require_start
cp $DOTFILESDIR/.aliases $HOME/.aliases
cp $DOTFILESDIR/.bashrc $HOME/.bashrc
cp $DOTFILESDIR/.zshrc $HOME/.zshrc
cp $DOTFILESDIR/.gitconfig $HOME/.gitconfig
cp -R $DOTFILESDIR/Шаблоны $HOME/Шаблоны

46
install/_example Normal file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
##makedesc: Example script
set -eo pipefail
install() {
echo
echo "==============================================="
echo "Installing example"
echo "==============================================="
echo
sleep 3
echo
echo "Finish! example v1.2.3"
echo
}
upgrade() {
echo
echo "==============================================="
echo "Upgrading example"
echo "==============================================="
echo
sleep 3
echo
echo "Finish! example v1.2.3"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing example"
echo "==============================================="
echo
sleep 3
echo
echo "Finish!"
echo
}
case "$1" in
u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

46
install/anytype Executable file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
##makedesc: Manage anytype (deb)
set -eo pipefail
installDir="$HOME/install/anytype"
install() {
release="$(curl -s 'https://api.github.com/repos/anyproto/anytype-ts/releases/latest')"
tag="$(echo "$release" | jq -r '.tag_name')"
asset="$(echo "$release" | jq -r '.assets.[] | select(.name | test("amd64.deb$"))')"
url="$(echo "$asset" | jq -r '.browser_download_url')"
echo -e "$tag $url"
echo
echo "==============================================="
echo "Installing anytype $tag"
echo "==============================================="
echo
mkdir -p "$installDir"
filepath="$installDir/anytype_${tag}_amd46.deb"
wget "$url" -O "$filepath"
sudo dpkg -i "$filepath"
echo
echo "Finish! $tag"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing anytype"
echo "==============================================="
echo
sudo apt purge -y anytype*
echo
echo "Finish!"
echo
}
case "$1" in
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

46
install/apache2 Executable file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
##makedesc: Manage apache2 (apt)
install() {
echo
echo "==============================================="
echo "Installing apache2"
echo "==============================================="
echo
sudo apt install -y apache2
sudo systemctl restart apache2
echo
echo "Finish! $(apache2 -v)"
echo
}
upgrade() {
echo
echo "==============================================="
echo "Upgrading apache2"
echo "==============================================="
echo
sudo apt upgrade -y apache2 apache2-data apache2-utils
sudo systemctl restart apache2
echo
echo "Finish! $(apache2 -v)"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing apache2"
echo "==============================================="
echo
sudo apt purge -y apache2*
echo
echo "Finish!"
echo
}
case "$1" in
u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

50
install/apt Executable file
View File

@@ -0,0 +1,50 @@
#!/usr/bin/env bash
##makedesc: Install basic software from apt
sudo apt update && \
sudo apt upgrade -y --autoremove && \
sudo apt install -y \
alien \
apt-transport-https \
build-essential \
ca-certificates \
cmake \
curl \
dconf-editor \
default-jdk \
dialog \
gettext \
gnupg \
gparted \
hardinfo \
htop \
libaio1 \
libcurl4-gnutls-dev \
libexpat1-dev \
libghc-zlib-dev \
libssl-dev \
lsb-release \
make \
mc \
meld \
nano \
neofetch \
net-tools \
nmap \
p7zip-full \
easyeffects \
software-properties-common \
ubuntu-restricted-extras \
unzip \
vlc \
ffmpeg \
inotify-tools \
notify-osd \
fonts-open-sans \
libnotify-bin \
tree \
earlyoom
# terminator
# xclip
# sqlitebrowser
# etckeeper

52
install/canon-mg2500 Executable file
View File

@@ -0,0 +1,52 @@
#!/usr/bin/env bash
##makedesc: Canon Pixma MG2500 + ppa
install() {
echo
echo "==============================================="
echo "Installing Canon Pixma MG2500 + ppa"
echo "==============================================="
echo
sudo add-apt-repository -y ppa:thierry-f/fork-michael-gruz
sudo apt install -y cnijfilter-mg2500series scangearmp-mg2500series
echo
echo "Finish!"
echo "Drivers for Canon Pixma MG2500 installed!"
echo "Now you must reboot PC and connect your printer."
echo
}
upgrade() {
echo
echo "==============================================="
echo "Upgrading Canon Pixma MG2500 + ppa"
echo "==============================================="
echo
sudo apt upgrade -y cnijfilter-mg2500series scangearmp-mg2500series
echo
echo "Finish! Canon Pixma MG2500 + ppa"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing Canon Pixma MG2500 + ppa"
echo "==============================================="
echo
# sudo apt purge -y cnijfilter-mg2500series scangearmp-mg2500series
sudp dpkg -r cnijfilter-mg2500series
sudp dpkg -r cnijfilter-common
sudp dpkg -r scangearmp-mg2500series
sudp dpkg -r scangearmp-common
sudo add-apt-repository -ry ppa:thierry-f/fork-michael-gruz
echo
echo "Finish!"
echo
}
case "$1" in
u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

56
install/chrome Executable file
View File

@@ -0,0 +1,56 @@
#!/usr/bin/env bash
##makedesc: Google Chrome (latest)
set -eo pipefail
# https://t.me/axenov_blog/251
dest="$HOME/install/deb"
deb="$dest/google-chrome.deb"
url="https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb"
install() {
echo
echo "==============================================="
echo "Installing Google Chrome"
echo "==============================================="
echo
mkdir -p "$dest"
wget "$url" -O "$deb"
sudo dpkg -i "$deb"
echo
echo "Finish! $(google-chrome --version)"
echo
}
upgrade() {
echo
echo "==============================================="
echo "Upgrading Google Chrome"
echo "==============================================="
echo
mkdir -p "$dest"
wget "$url" -O "$deb"
sudo dpkg -i "$deb"
echo
echo "Finish! $(google-chrome --version)"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing Google Chrome"
echo "==============================================="
echo
sudo dpkg -r google-chrome
echo
echo "Finish!"
echo
}
case "$1" in
u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

56
install/clamav Executable file
View File

@@ -0,0 +1,56 @@
#!/usr/bin/env bash
##makedesc: ClamAV
set -eo pipefail
install() {
echo
echo "==============================================="
echo "Installing clamav"
echo "==============================================="
echo
sudo apt install -y clamav
echo "DatabaseMirror packages.microsoft.com/clamav" \
| sudo tee -a /etc/clamav/freshclam.conf
sudo freshclam
echo
echo "Finish!"
echo
}
upgrade() {
echo
echo "==============================================="
echo "Upgrading clamav"
echo "==============================================="
echo
sudo apt upgrade -y clamav
sudo freshclam
echo
echo "Finish!"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing clamav"
echo "==============================================="
echo
sudo apt purge -y clamav*
echo
echo "Finish!"
echo
}
case "$1" in
u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

38
install/composer Executable file
View File

@@ -0,0 +1,38 @@
#!/usr/bin/env bash
##makedesc: Install composer (latest)
here=$( dirname $(readlink -e -- "${BASH_SOURCE}"))
source "$here/../helpers.sh" || exit 255
# https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md
title
require php
if installed composer; then
warn "WARNING: Removing current composer to install latest one"
composer --version
__AAA_NO_TITLE=1 source $here/../uninstall/composer
fi
mkdir -p "$HOME/install/other" "$HOME/.local/bin"
download "https://getcomposer.org/installer" \
"$HOME/install/other/composer-setup.php"
php "$HOME/install/other/composer-setup.php" \
--install-dir="$HOME/.local/bin/" \
--filename="composer"
COMPOSER_GLOBAL_HOME="$($HOME/.local/bin/composer config -g home)"
NEWPATH="PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\""
cat "$HOME/.profile" | grep -qoh "$NEWPATH" || {
export "$NEWPATH"
echo "export $NEWPATH" >> "$HOME/.profile"
}
source "$HOME/.profile"
success "composer installed!"
composer --version

78
install/docker Executable file
View File

@@ -0,0 +1,78 @@
#!/usr/bin/env bash
##makedesc: Docker + ppa
# https://docs.docker.com/engine/install/ubuntu/
# https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user
set -eo pipefail
doRemove() {
sudo apt purge -y docker* podman-docker containerd runc
}
install_() {
echo
echo "==============================================="
echo "Installing Docker"
echo "==============================================="
echo
doRemove
sudo apt install -y ca-certificates lsb-release
source /etc/os-release
codename="$VERSION_CODENAME"
key="/etc/apt/keyrings/docker.asc"
arch=$(dpkg --print-architecture)
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" -o "$key"
sudo chmod a+r $key
echo "deb [arch=$arch signed-by=$key] https://download.docker.com/linux/ubuntu $codename stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
sudo usermod -aG docker "$(whoami)"
newgrp docker
echo
echo "Finish! $(docker --version)"
echo "Probably, you need to relogin to apply 'docker' group permanently."
echo
}
upgrade() {
echo
echo "==============================================="
echo "Upgrading Docker"
echo "==============================================="
echo
sudo apt upgrade -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
echo
echo "Finish!"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing Docker"
echo "==============================================="
echo
doRemove
echo
echo "Finish!"
echo
}
case "$1" in
u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

22
install/dots Executable file
View File

@@ -0,0 +1,22 @@
#!/usr/bin/env bash
##makedesc: Install dotfiles
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title
install_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
dotfiles_src_dir="`dirname $install_dir`/dotfiles"
postfix=".bak-`date '+%Y%m%d%H%M'`"
install_dotfile() {
mv "$HOME/$1" "$HOME/$1$postfix"
cp "$dotfiles_src_dir/$1" "$HOME/$1"
success "- $1"
}
install_dotfile ".bash_aliases" && \
install_dotfile ".profile" && \
install_dotfile ".bashrc" && \
install_dotfile ".gitconfig" && \
install_dotfile ".gitignore" && \
install_dotfile ".git_aliases"

21
install/droidcam Executable file
View File

@@ -0,0 +1,21 @@
#!/usr/bin/env bash
##makedesc: Install droidcam v1.9.0
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
#TODO
exit
# https://droidcam.app/linux/
title
mkdir -p "$HOME/install/deb/"
download "https://beta.droidcam.app/go/droidCam.client.setup.deb" "$HOME/install/deb/droidcam_client_amd64.deb"
dpkg_install "$HOME/install/deb/droidcam_client_amd64.deb"
apt_install v4l2loopback-dkms
success "droidcam installed!"
info "Don't forget to install the android app:"
info "https://play.google.com/store/apps/developer?id=Dev47Apps"

43
install/droidcam-obs Executable file
View File

@@ -0,0 +1,43 @@
#!/usr/bin/env bash
##makedesc: Install droidcam-obs plugin v1.5.1
#TODO
# ffmpeg -version | head -n 1 | awk '{print $3}'
# https://github.com/dev47apps/droidcam-obs-plugin/releases
exit
# https://www.dev47apps.com/droidcam/linux/
# https://www.dev47apps.com/obs/
# https://www.dev47apps.com/obs/usage.html
# https://obsproject.com/forum/threads/how-to-start-virtual-camera-without-sudo-privileges.139783/
echo
echo "==============================================="
echo "Installing droidcam-obs..."
echo "==============================================="
echo
# command -v "obs" >/dev/null 2>&1 || echo 'You need to install obs first!'
command -v "obs-studio" >/dev/null 2>&1 || echo 'You need to install obs-studio first!'
mkdir -p $HOMEinstall/droidcam-obs
wget -O /tmp/droidcam-obs.zip https://files.dev47apps.net/obs/droidcam_obs_1.5.1_linux.zip
unzip -oq /tmp/droidcam-obs.zip -d $HOMEinstall/droidcam-obs
rm -rf /tmp/droidcam-obs.zip
cd $HOMEinstall/droidcam-obs && ./install.sh
sudo modprobe v4l2loopback video_nr=2 card_label="OBS Virtual Camera"
echo
echo "Finish!"
echo "Don't forget to:"
echo "1) restart OBS if it is running right now OR install (if not) and start it"
echo "2) install android app: https://play.google.com/store/apps/developer?id=Dev47Apps"
echo "3) if virtual camera not starting then execute:"
echo -e "\tsudo modprobe v4l2loopback video_nr=2 card_label=\"OBS Virtual Camera\""
echo

54
install/flameshot Executable file
View File

@@ -0,0 +1,54 @@
#!/usr/bin/env bash
##makedesc: Install flameshot (latest)
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title
# https://github.com/flameshot-org/flameshot?tab=readme-ov-file#compilation
# sudo apt install -y --autoremove flameshot && \
# sudo systemctl restart flameshot
dir="$HOME/install"
clone_dir="$dir/flameshot"
mkdir -p "$dir"
sudo apt install -y \
g++ \
cmake \
build-essential \
qtbase5-dev \
qttools5-dev-tools \
libqt5svg5-dev \
qttools5-dev \
libqt5dbus5 \
libqt5network5 \
libqt5core5a \
libqt5widgets5 \
libqt5gui5 \
libqt5svg5
if [ ! -d "$clone_dir" ]; then
git clone --depth=1 --single-branch https://github.com/flameshot-org/flameshot.git "$clone_dir"
fi
# Directory where build files will be placed, may be relative
export BUILD_DIR=build
# Directory prefix where flameshot will be installed. If you are just building and don't want to
# install, comment this environment variable.
# This excludes the bin/flameshot part of the install,
# e.g. in /opt/flameshot/bin/flameshot, the CMAKE_INSTALL_PREFIX is /opt/flameshot
# This must be an absolute path. Requires CMAKE 3.29.
export CMAKE_INSTALL_PREFIX=/opt/flameshot
cd "$clone_dir" && \
git pull && \
cmake -S . -B "$BUILD_DIR" && \
cmake --build "$BUILD_DIR"
[ $? = 0 ] && {
echo
success "flameshot installed!"
# /opt/flameshot/flameshot -v
echo
}

38
install/git Executable file
View File

@@ -0,0 +1,38 @@
#!/usr/bin/env bash
##makedesc: Install git (latest)
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title
require make
if installed git; then
if [ -d "$HOME/install/git" ]; then
cd "$HOME/install/git" && \
git pull
else
clone "https://github.com/git/git.git" "$HOME/install/git" --depth=1 --single-branch && \
cd "$HOME/install/git"
fi
sudo make prefix=/usr/local all && \
sudo make prefix=/usr/local install
else
require wget
mkdir -p "$HOME/install/git"
download "https://github.com/git/git/archive/master.zip" "/tmp/git.zip" && \
unzip -oq "/tmp/git.zip" -d "$HOME/install/git" && \
rm /tmp/git.zip && \
cd "$HOME/install/git/git-master" && \
sudo make prefix=/usr/local all && \
sudo make prefix=/usr/local install && \
cd - && \
rm -rf git && \
clone "https://github.com/git/git.git" "$HOME/install/git" --depth=1 --single-branch
fi
[ $? = 0 ] && {
echo
success "git installed!"
git --version
echo
}

57
install/golang Executable file
View File

@@ -0,0 +1,57 @@
#!/usr/bin/env bash
##makedesc: Install golang
# https://go.dev/dl/
# https://golang.org/doc/install
# https://github.com/udhos/update-golang/blob/master/update-golang.sh
set -eo pipefail
doRemove() {
[ -d "/usr/local/go" ] && sudo rm -rf "/usr/local/go"
}
install() {
dlUrl="https://go.dev/dl"
json=$(curl -sSL "$dlUrl/?mode=json")
version=$(echo "$json" | jq -r '.[0].version')
echo
echo "==============================================="
echo "Installing golang v$version"
echo "==============================================="
echo
latestJson=$(echo "$json" | jq -r '.[0].files.[] | select (.kind == "archive" and .os == "linux" and .arch == "amd64")')
fileName=$(echo "$latestJson" | jq -r '.filename')
fileUrl="$dlUrl/$fileName"
downloadPath="$HOME/install"
archivePath="$downloadPath/$fileName"
doRemove
[ -f "$archivePath" ] || wget "$fileUrl" -O "$archivePath"
[ -f "$archivePath" ] && sudo tar -xzf "$archivePath" -C /usr/local
sudo chown "$USER": -R /usr/local/go
echo 'export PATH="/usr/local/go/bin:$PATH"' >> "$HOME/.profile"
echo "export GOPATH=\"\$HOME/.go\"" >> "$HOME/.profile"
echo
go version
go install github.com/go-delve/delve/cmd/dlv@latest
go install
echo "Finish!"
}
remove() {
echo
echo "==============================================="
echo "Removing golang"
echo "==============================================="
echo
doRemove
echo
echo "Finish!"
echo
}
case "$1" in
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

15
install/grub-customizer Executable file
View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
##makedesc: Install grub-customizer (latest + ppa)
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title
sudo add-apt-repository -y ppa:danielrichter2007/grub-customizer && \
sudo apt install -y --autoremove grub-customizer
[ $? = 0 ] && {
echo
success "grub-customizer installed!"
grub-customizer -v
echo
}

View File

@@ -1,10 +1,16 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing Window AppMenu Applet..."
#!/usr/bin/env bash (latest)
##makedesc: Install KDE Window AppMenu Applet
echo
echo "==============================================="
echo "Installing KDE Window AppMenu Applet..."
echo "==============================================="
echo
# https://github.com/psifidotos/applet-window-appmenu/blob/master/INSTALLATION.md
apti make \
sudo apt install -y --autoremove \
make \
cmake \
extra-cmake-modules \
qtdeclarative5-dev \
@@ -23,13 +29,15 @@ if installed 'git'; then
sudo git clone https://github.com/psifidotos/applet-window-appmenu.git --depth=1 /usr/src/appmenu-applet
else
sudo wget https://github.com/psifidotos/applet-window-appmenu/archive/master.zip -O /tmp/appmenu-applet.zip
sudo unzip /tmp/appmenu-applet.zip -d /usr/src/appmenu-applet
sudo unzip -oq /tmp/appmenu-applet.zip -d /usr/src/appmenu-applet
sudo mv /usr/src/appmenu-applet/applet-window-appmenu-master/* /usr/src/appmenu-applet/
sudo mv /usr/src/appmenu-applet/applet-window-appmenu-master/.* /usr/src/appmenu-applet/
sudo rm -rf /usr/src/appmenu-applet/applet-window-appmenu-master
sudo rm -f /usr/src/appmenu-applet.zip
fi
sudo chown -R anthony: /usr/src/appmenu-applet
sudo chown -R $USER: /usr/src/appmenu-applet
cd /usr/src/appmenu-applet/
sh ./install.sh
success 'Successful! Now you can add "Window AppMenu Applet" on desktop or panel'
echo
echo 'Success! Now you can add "Window AppMenu Applet" on desktop or panel'
echo

9
install/kde-backports Executable file
View File

@@ -0,0 +1,9 @@
#!/usr/bin/env bash
##makedesc: Install KDE Backports
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title
sudo add-apt-repository -y ppa:kubuntu-ppa/backports && \
sudo apt update && \
sudo apt full-upgrade

118
install/kde-file-templates Executable file
View File

@@ -0,0 +1,118 @@
#!/usr/bin/env bash
##makedesc: Install file templates (KDE)
echo
echo "==============================================="
echo "Installing file templates (KDE)..."
echo "==============================================="
echo
TPL_DIR="$HOME/.local/share/templates"
TPL_SRC="$TPL_DIR/.source"
[ ! -d "$TPL_SRC" ] && mkdir -p "$TPL_SRC"
echo "- Markdown" ####################################################
cat <<EOF > "$TPL_SRC/template.md"
# Title
EOF
cat << EOF > "$TPL_DIR/md.desktop"
[Desktop Entry]
Name=Документ Markdown
Icon=text-markdown
Type=Link
URL=.source/template.md
EOF
echo "- PHP" ####################################################
cat <<EOF > "$TPL_SRC/template.php"
<?php
declare(strict_types=1);
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('log_errors', 1);
EOF
cat << EOF > "$TPL_DIR/php.desktop"
[Desktop Entry]
Name=PHP-скрипт
Icon=application-x-php
Type=Link
URL=.source/template.php
EOF
echo "- Shell" ####################################################
cat <<EOF > "$TPL_SRC/template.sh"
#!/usr/bin/env bash
EOF
cat << EOF > "$TPL_DIR/sh.desktop"
[Desktop Entry]
Name=Bash-скрипт
Icon=terminal
Type=Link
URL=.source/template.sh
EOF
echo "- Go" ####################################################
cat <<EOF > "$TPL_SRC/template.go"
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
EOF
cat << EOF > "$TPL_DIR/go.desktop"
[Desktop Entry]
Name=Golang файл
Type=Link
URL=.source/template.go
EOF
echo "- Dockerfile" ####################################################
cat <<EOF > "$TPL_SRC/Dockerfile"
# https://habr.com/ru/company/ruvds/blog/439980/
# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
FROM ubuntu:latest
EOF
cat << EOF > "$TPL_DIR/dockerfile.desktop"
[Desktop Entry]
Name=Dockerfile
Type=Link
URL=.source/Dockerfile.go
EOF
echo "- docker-compose" ####################################################
cat <<EOF > "$TPL_SRC/docker-compose.yml"
# https://docs.docker.com/compose/gettingstarted/
# https://docs.docker.com/compose/compose-file/compose-file-v3/
version: "3.9"
services:
EOF
cat << EOF > "$TPL_DIR/docker-compose.desktop"
[Desktop Entry]
Name=docker-compose
Type=Link
URL=.source/docker-compose.yml
EOF
echo
echo "Finish! You can find them here:"
echo -e "\t$TPL_DIR"
echo

19
install/kde-portal Executable file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/env bash
##makedesc: Install KDE portal
echo
echo "==============================================="
echo "Installing KDE portal..."
echo "==============================================="
echo
sudo apt install -y \
xdg-desktop-portal \
xdg-desktop-portal-kde \
xdg-desktop-portal-gtk && \
echo "GTK_USE_PORTAL=1" | sudo tee -a /etc/environment && \
echo "XDG_CURRENT_DESKTOP=KDE" | sudo tee -a /etc/environment
echo
echo "Finish! Now you need to relogin"
echo

11
install/libreoffice Executable file
View File

@@ -0,0 +1,11 @@
#!/usr/bin/env bash
##makedesc: Install libreoffice
echo
echo "==============================================="
echo "Installing libreoffice..."
echo "==============================================="
echo
sudo apt update && \
sudo apt install -y --autoremove libreoffice

55
install/lite-xl Executable file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env bash
##makedesc: Install lite-xl v2.1.7
# https://github.com/lite-xl/lite-xl/releases
# https://lite-xl.com/setup/getting-started/
echo
echo "==============================================="
echo "Installing lite-xl v2.1.7..."
echo "==============================================="
echo
tar_url="https://github.com/lite-xl/lite-xl/releases/download/v2.1.7/lite-xl-v2.1.7-addons-linux-x86_64-portable.tar.gz"
lpm_url="https://github.com/lite-xl/lite-xl-plugin-manager/releases/download/latest/lpm.x86_64-linux"
tar_filepath="$HOME/install/lite-xl-v2.1.7.tar.gz"
untar_dir="$HOME/install"
rm -rf \
"$HOME/.local/bin/lpm" \
"$HOME/install/lite-xl" \
"$HOME/.local/bin/lite-xl" \
"$HOME/.local/share/lite-xl"
mkdir -vp \
"$untar_dir" \
"$HOME/.local/bin" \
"$HOME/.local/share/lite-xl"
wget "$tar_url" -O "$tar_filepath" && \
wget "$lpm_url" -O "$HOME/.local/bin/lpm" && \
chmod +x "$HOME/.local/bin/lpm" && \
tar -xzf "$tar_filepath" -C "$untar_dir" && \
cp -vf "$untar_dir/lite-xl/lite-xl" "$HOME/.local/bin/" && \
cp -vfr "$untar_dir"/lite-xl/data/* "$HOME/.local/share/lite-xl/"
# echo -e "\nexport LITE_SCALE=1 # https://github.com/lite-xl/lite-xl/issues/1173\n" >> $HOME/.profile
cat << EOF > "$HOME/.local/share/applications/org.lite_xl.lite_xl.desktop"
[Desktop Entry]
Type=Application
Name=Lite XL
Comment=A lightweight text editor written in Lua
Exec=$HOME/.local/bin/lite-xl %F
Icon=lite-xl
Terminal=false
StartupWMClass=lite-xl
Categories=Development;IDE;
MimeType=text/plain;
EOF
sudo update-desktop-database && \
xdg-desktop-menu forceupdate
echo
echo "Finish!"
echo

16
install/mariadb Executable file
View File

@@ -0,0 +1,16 @@
#!/usr/bin/env bash
##makedesc: Install mariadb (latest) and php-mysql + phpMyAdmin (if php is installed)
echo
echo "==============================================="
echo "Installing mariadb (latest)..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
sudo apt install -y --autoremove mariadb-server mariadb-client
sudo mysql_secure_installation
installed "php" && sudo apt install -y --autoremove php-mysql phpmyadmin

66
install/nerd-fonts Executable file
View File

@@ -0,0 +1,66 @@
#!/usr/bin/env bash
##makedesc: Install nerd-fonts
set -eo pipefail
#TODO nokia-sans
downloadPath="$HOME/install/nerd-fonts"
installPath="$HOME/.local/share/fonts/"
url="https://github.com/ryanoasis/nerd-fonts/releases/latest/download"
fonts=(
FiraCode
FiraMono
JetBrainsMono
Meslo
Noto
RobotoMono
Ubuntu
UbuntuMono
UbuntuSans
)
install() {
echo
echo "==============================================="
echo "Installing nerd-fonts"
echo "==============================================="
echo
[[ -d "$downloadPath" ]] || mkdir -p "$downloadPath"
for fontname in "${fonts[@]}"; do
fontdir="$installPath/Nerd-$fontname"
wget "$url/$fontname.tar.xz" -O "$downloadPath/$fontname.tar.xz"
[[ -d "$installPath/$fontname" ]] || mkdir -p "$fontdir"
tar -xJf "$downloadPath/$fontname.tar.xz" -C "$fontdir"
done
fc-cache -vf "$installPath"
echo
echo "Finish!"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing nerd-fonts"
echo "==============================================="
echo
find "$installPath" -type d -name "Nerd-*" -exec rm -rf {} +
fc-cache -vf "$installPath"
echo
echo "Finish!"
echo
}
case "$1" in
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

27
install/nodejs Executable file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
##makedesc: Install nodejs + npm via nvm
echo
echo "==============================================="
echo "Installing nodejs..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
installed "nvm" && sudo apt install -y --autoremove nodejs npm nvm
! installed "nvm" && wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
nvm install-latest-npm
nvm install node
nvm use node
echo "Finish!"
nvm current
nvm ls

25
install/ntfy Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
##makedesc: Install ntfy (latest) + ppa
echo
echo "==============================================="
echo "Installing ntfy (latest) + ppa..."
echo "==============================================="
echo
# https://ntfy.sh/docs/install/#general-steps
installed() {
command -v "$1" >/dev/null 2>&1
}
! installed curl && sudo apt install -y curl
curl -sSL https://archive.heckel.io/apt/pubkey.txt | sudo apt-key add - && \
sudo apt install apt-transport-https && \
sudo sh -c "echo 'deb [arch=amd64] https://archive.heckel.io/apt debian main' \
> /etc/apt/sources.list.d/archive.heckel.io.list" && \
sudo apt update && \
sudo apt install ntfy -y && \
sudo systemctl enable ntfy && \
sudo systemctl start ntfy

80
install/nvim Executable file
View File

@@ -0,0 +1,80 @@
#!/usr/bin/env bash
##makedesc: Install nvim + lazyvim
set -eo pipefail
# https://www.lazyvim.org/installation
# https://www.devas.life/effective-neovim-setup-for-web-development-towards-2024/
# TODO https://github.com/rockerBOO/awesome-neovim
# TODO https://docs.astronvim.com
url="https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz"
downloadPath="$HOME/install"
downloadTarGz="$downloadPath/nvim.tar.gz"
installPath="/opt/nvim"
cfgPath="$HOME/.config/nvim"
nvimDataPaths=(
"$cfgPath"
"$HOME"/.local/share/nvim
"$HOME"/.local/state/nvim
"$HOME"/.cache/nvim
)
backup() {
echo "Backup configuration files..."
t=$(date +'%s')
for path in "${nvimDataPaths[@]}"; do
[[ -d "$path" ]] && cp -v "$path" "$path-$t.bak"
done
echo "Done"
}
install() {
echo
echo "==============================================="
echo "Installing neovim"
echo "==============================================="
echo
backup
wget "$url" -O "$downloadTarGz"
tar -xzf "$downloadTarGz" -C "$downloadPath"
sudo rm -rf "$installPath"
sudo mv "$downloadPath/nvim-linux-x86_64" "$installPath"
git clone --depth=1 --single-branch https://github.com/LazyVim/starter "$cfgPath"
rm -rf "$cfgPath/.git"
sudo update-desktop-database
xdg-desktop-menu forceupdate
echo
echo "Finish!"
nvim -v
echo
}
remove() {
echo
echo "==============================================="
echo "Removing nerd-fonts"
echo "==============================================="
echo
find "$downloadPath" -type d -name "Nerd-*" -exec rm -rf {} +
fc-cache -vf "$downloadPath"
echo
echo "Finish!"
echo
}
case "$1" in
b|backup) backup ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac
# export PATH="$PATH:/opt/nvim-linux-x86_64/bin"

10
install/obs-studio Executable file
View File

@@ -0,0 +1,10 @@
#!/usr/bin/env bash
##makedesc: Install obs-studio (latest snap)
echo
echo "==============================================="
echo "Installing obs-studio (latest snap)..."
echo "==============================================="
echo
sudo snap install obs-studio

19
install/omz-clean Executable file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/env bash
##makedesc: Install omz (latest)
echo
echo "==============================================="
echo "Installing omz (latest)..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
if ! installed zsh || ! installed git || ! installed curl; then
echo "ERROR: you need git, zsh and curl to be installed!"
exit 1
fi
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

60
install/omz-fancy Executable file
View File

@@ -0,0 +1,60 @@
#!/usr/bin/env bash
##makedesc: Install omz fancy (powerline10k + MesloLGS font)
# https://gist.github.com/anthonyaxenov/b8460935d06b9f0da72def03d0f26515
# Based on:
# https://github.com/Powerlevel9k/powerlevel9k/wiki/Install-Instructions
# https://github.com/ohmyzsh/ohmyzsh
# https://powerline.readthedocs.io/en/latest/installation/linux.html#fonts-installation
# https://gist.github.com/dogrocker/1efb8fd9427779c827058f873b94df95
# https://linuxhint.com/install_zsh_shell_ubuntu_1804/
echo
echo "==============================================="
echo "Installing omz fancy: powerline10k + MesloLGS font..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
if ! installed zsh || ! installed git || ! installed wget; then
echo "ERROR: you need git, zsh and wget to be installed!"
exit 1
fi
if [[ ! -d "$HOME/.oh-my-zsh" ]]; then
echo "ERROR: you need omz to be installed!"
exit 1
fi
echo
echo "1/3 Installing MesloLGS fonts..."
mkdir -p "$HOME/.local/share/fonts/"
FONTS_URL="https://github.com/romkatv/powerlevel10k-media/raw/master"
wget "$FONTS_URL/MesloLGS%20NF%20Regular.ttf" -O "$HOME/.local/share/fonts/MesloLGS NF Regular.ttf"
wget "$FONTS_URL/MesloLGS%20NF%20Bold.ttf" -O "$HOME/.local/share/fonts/MesloLGS NF Bold.ttf"
wget "$FONTS_URL/MesloLGS%20NF%20Italic.ttf" -O "$HOME/.local/share/fonts/MesloLGS NF Italic.ttf"
wget "$FONTS_URL/MesloLGS%20NF%20Bold%20Italic.ttf" -O "$HOME/.local/share/fonts/MesloLGS NF Bold Italic.ttf"
fc-cache -vf "$HOME/.local/share/fonts/"
echo
echo "2/3 Installing powerlevel10k theme..."
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
sed -i 's#^ZSH_THEME=.*$#ZSH_THEME="powerlevel10k/powerlevel10k"#g' "$HOME/.zshrc"
echo
echo "3/3 Installing plugins..."
git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
sed -i 's/^plugins=/plugins=(git laravel docker docker-compose composer zsh-autosuggestions zsh-syntax-highlighting)/g' $HOME/.zshrc
p10k configure
echo
echo "Finish! You need to:"
echo "- review your plugins in $HOME/.zshrc"
echo "- restart terminal windows to reload fonts and set 'MesloLGS NF Regular' as default font"
echo "- log out of your session and login again"
echo

31
install/openvpn Executable file
View File

@@ -0,0 +1,31 @@
#!/usr/bin/env bash
##makedesc: Install openvpn v2.6.3 (src)
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
# https://openvpn.net/community-downloads/
# https://openvpn.net/community-resources/installing-openvpn/
[ "$1" ] && OVPNVER="$1" || OVPNVER='2.6.3'
title "Installing openvpn v${OVPNVER} (src)..."
require libssl-dev \
liblzo2-dev \
libpam0g-dev
mkdir -p "$HOME/install/"
download "https://swupdate.openvpn.org/community/releases/openvpn-${OVPNVER}.tar.gz" "$HOME/install/openvpn-${OVPNVER}.tar.gz" && \
unpack_targz "$HOME/install/openvpn-${OVPNVER}.tar.gz" "$HOME/install/" && \
cd "$HOME/install/openvpn-${OVPNVER}" && \
sudo ./configure && \
sudo make && \
sudo make install &&
apt_install network-manager-openvpn \
network-manager-openvpn-gnome
[ $? = 0 ] && {
echo
success "openvpn installed!"
openvpn --version
echo
}

27
install/papirus Executable file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
##makedesc: Install papirus-icon-theme (latest)
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title
mkdir -p "$HOME/install/papirus-icon-theme" "$HOME/.local/share/icons/"
if installed git; then
clone_quick https://github.com/PapirusDevelopmentTeam/papirus-icon-theme.git "$HOME/install/"
else
download https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/archive/refs/heads/master.zip -O "$HOME/install/papirus-icon-theme.zip" && \
unzip -oq "$HOME/install/papirus-icon-theme.zip" -d "$HOME/install/papirus-icon-theme" && \
rm -f "$HOME/install/papirus-icon-theme.zip"
fi
symlink "$HOME/install/papirus-icon-theme/Papirus" "$HOME/.local/share/icons/Papirus" && \
symlink "$HOME/install/papirus-icon-theme/Papirus-Dark" "$HOME/.local/share/icons/Papirus-Dark" && \
symlink "$HOME/install/papirus-icon-theme/Papirus-Light" "$HOME/.local/share/icons/Papirus-Light"
[ $? = 0 ] && {
echo
success "Papirus icons installed!"
info "You can find them in $HOME/.local/share/icons/"
echo
}

14
install/pgsql Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env bash
##makedesc: Install postgresql (latest) and php-pgsql (if php is installed)
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title
require postgresql postgresql-contrib && \
sudo service postgresql restart && \
{
echo
success "openvpn installed!"
postgres --version
echo
}

42
install/php Executable file
View File

@@ -0,0 +1,42 @@
#!/usr/bin/env bash
##makedesc: Install php v8.4
[ "$1" ] && PHPVER="$1" || PHPVER="8.4"
echo
echo "==============================================="
echo "Installing php${PHPVER}..."
echo "==============================================="
echo
sudo apt install -y --autoremove \
php${PHPVER}-fpm \
php${PHPVER}-dev \
php${PHPVER}-apcu \
php${PHPVER}-bcmath \
php${PHPVER}-cli \
php${PHPVER}-common \
php${PHPVER}-curl \
php${PHPVER}-dev \
php${PHPVER}-dom \
php${PHPVER}-gd \
php${PHPVER}-intl \
php${PHPVER}-mbstring \
php${PHPVER}-mysql \
php${PHPVER}-opcache \
php${PHPVER}-pgsql \
php${PHPVER}-simplexml \
php${PHPVER}-soap \
php${PHPVER}-sqlite3 \
php${PHPVER}-xdebug \
php${PHPVER}-xml \
php${PHPVER}-xmlrpc \
php${PHPVER}-zip
# php${PHPVER}-ldap \
# php${PHPVER}-dba \
# php${PHPVER}-xsl \
echo
echo "Finish!"
php -v
echo

30
install/php-psalm Executable file
View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
##makedesc: Install psalm
echo
echo "==============================================="
echo "Installing psalm..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
! installed 'php' && echo 'ERROR: You need php to be installed' && exit 1
! installed "composer" && echo "ERROR: You need composer to be installed" && exit 2
COMPOSER_GLOBAL_HOME="$(composer config -g home)"
NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\""
cat "$HOME/.profile" | grep -qoh "$NEWPATH" || {
$NEWPATH
echo "$NEWPATH" >> "$HOME/.profile"
}
source "$HOME/.profile"
composer global require vimeo/psalm --dev
echo
echo "Finish!"
psalm --version
echo

46
install/php-spx Executable file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
##makedesc: Install php-spx
echo
echo "==============================================="
echo "Installing php-spx..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
! installed 'php' && echo 'ERROR: You need php to be installed' && exit 1
! installed 'phpize' && echo 'ERROR: You need php-dev to be installed' && exit 2
! installed 'make' && sudo apt install -y make
! installed 'wget' && sudo apt install -y wget
[ -d "$HOME/install/php-spx" ] || mkdir -p "$HOME/install/php-spx"
wget https://github.com/NoiseByNorthwest/php-spx/archive/refs/heads/release/latest.zip -O /tmp/php-spx.zip \
&& unzip -oq /tmp/php-spx.zip -d "$HOME/install/php-spx" \
&& rm /tmp/php-spx.zip \
&& cd "$HOME/install/php-spx/php-spx-release-latest" \
&& phpize \
&& ./configure \
&& make \
&& sudo make install
PHPVER=`php -r 'echo ($v=explode(".",PHP_VERSION))[0].".".$v[1];'`
cat << EOF | sudo tee -a "/etc/php/${PHPVER}/mods-available/spx.ini"
; https://github.com/NoiseByNorthwest/php-spx/tree/release/latest#configuration
; https://habr.com/ru/post/505192/
; extension=spx.so
; spx.data_dir = '/tmp/spx'
spx.http_enabled = 0
spx.http_key = 'spx'
; spx.http_ip_whitelist = "127.0.0.1"
EOF
sudo ln -sf "/etc/php/${PHPVER}/mods-available/spx.ini" "/etc/php/${PHPVER}/cli/conf.d/99-spx.ini"
echo
echo "Finish!"
echo

32
install/phpcs Executable file
View File

@@ -0,0 +1,32 @@
#!/usr/bin/env bash
##makedesc: Install phpcs + php-cs-fixer
echo
echo "==============================================="
echo "Installing phpcs + php-cs-fixer..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
! installed 'php' && echo 'ERROR: You need php to be installed' && exit 1
! installed "composer" && echo "ERROR: You need composer to be installed" && exit 2
COMPOSER_GLOBAL_HOME="$(composer config -g home)"
NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\""
cat "$HOME/.profile" | grep -qoh "$NEWPATH" || {
$NEWPATH
echo "$NEWPATH" >> "$HOME/.profile"
}
source "$HOME/.profile"
composer global require squizlabs/php_codesniffer --dev
composer global require friendsofphp/php-cs-fixer --dev
echo
echo "Finish!"
phpcs --version # phpcbf --version
php-cs-fixer --version
echo

30
install/phpmd Executable file
View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
##makedesc: Install phpmd
echo
echo "==============================================="
echo "Installing phpmd..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
! installed 'php' && echo 'ERROR: You need php to be installed' && exit 1
! installed "composer" && echo "ERROR: You need composer to be installed" && exit 2
COMPOSER_GLOBAL_HOME="$(composer config -g home)"
NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\""
cat "$HOME/.profile" | grep -qoh "$NEWPATH" || {
$NEWPATH
echo "$NEWPATH" >> "$HOME/.profile"
}
source "$HOME/.profile"
composer global require phpmd/phpmd --dev
echo
echo "Finish!"
phpmd --version
echo

31
install/phpstan Executable file
View File

@@ -0,0 +1,31 @@
#!/usr/bin/env bash
##makedesc: Install phpstan
echo
echo "==============================================="
echo "Installing phpstan..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
! installed 'php' && echo 'ERROR: You need php to be installed' && exit 1
! installed "composer" && echo "ERROR: You need composer to be installed" && exit 2
COMPOSER_GLOBAL_HOME="$(composer config -g home)"
NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\""
cat "$HOME/.profile" | grep -qoh "$NEWPATH" || {
$NEWPATH
echo "$NEWPATH" >> "$HOME/.profile"
}
source "$HOME/.profile"
composer global require phpstan/phpstan --dev
echo
echo "Finish!"
phpstan --version
echo

31
install/phpunit Executable file
View File

@@ -0,0 +1,31 @@
#!/usr/bin/env bash
##makedesc: Install phpunit
echo
echo "==============================================="
echo "Installing phpunit..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
! installed 'php' && echo 'ERROR: You need php to be installed' && exit 1
! installed "composer" && echo "ERROR: You need composer to be installed" && exit 2
COMPOSER_GLOBAL_HOME="$(composer config -g home)"
NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\""
cat "$HOME/.profile" | grep -qoh "$NEWPATH" || {
$NEWPATH
echo "$NEWPATH" >> "$HOME/.profile"
}
source "$HOME/.profile"
composer global require phpunit/phpunit --dev
echo
echo "Finish!"
phpunit --version
echo

33
install/postman Executable file
View File

@@ -0,0 +1,33 @@
#!/usr/bin/env bash
##makedesc: Install postman (latest)
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
# https://learning.postman.com/docs/getting-started/installation-and-updates/#installing-postman-on-linux
# set -ex
title
mkdir -p "$HOME/install" && \
"$HOME/.local/bin" && \
"$HOME/.local/share/applications"
download "https://dl.pstmn.io/download/latest/linux64" "$HOME/install/postman.tar.gz" && \
unpack_targz "$HOME/install/postman.tar.gz" "$HOME/install" && \
symlink "$HOME/install/Postman/Postman" "$HOME/.local/bin/postman" && \
cat << EOF > "$HOME/.local/share/applications/Postman.desktop" && sudo update-desktop-database
[Desktop Entry]
Name=Postman
Exec=$HOME/.local/bin/postman %U
Icon=$HOME/install/Postman/app/resources/app/assets/icon.png
Categories=Development,Network
Terminal=false
Type=Application
Encoding=UTF-8
EOF
[ $? = 0 ] && {
echo
success "Postman installed!"
echo
}

25
install/qt5 Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
##makedesc: Install qt5
echo
echo "==============================================="
echo "Installing qt5..."
echo "==============================================="
echo
sudo apt install -y --autoremove \
build-essential \
ca-certificates \
cmake \
g++ \
libqt5core5a \
libqt5dbus5 \
libqt5gui5 \
libqt5network5 \
libqt5svg5 \
libqt5svg5-dev \
libqt5widgets5 \
openssl \
qtbase5-dev \
qttools5-dev \
qttools5-dev-tools

24
install/rustdesk Executable file
View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
##makedesc: Install rustdesk client v1.4.2 (deb)
[ "$1" ] && RDVER="$1" || RDVER="1.4.2"
echo
echo "==============================================="
echo "Installing rustdesk v$RDVER..."
echo "==============================================="
echo
# https://github.com/rustdesk/rustdesk
deb_path="$HOME/install"
deb_name="rustdesk-$RDVER.deb"
mkdir -p "$deb_path"
deb="$deb_path/$deb_name"
sudo apt install -y libxdo3 python3-pip
wget "https://github.com/rustdesk/rustdesk/releases/download/$RDVER/$deb_name" -O "$deb"
sudo dpkg -i "$deb"
# flatpak install -y com.rustdesk.RustDesk
# https://develop.kde.org/docs/administration/portal-permissions/
# flatpak permission-set kde-authorized remote-desktop com.rustdesk.RustDesk yes

43
install/snap Executable file
View File

@@ -0,0 +1,43 @@
#!/usr/bin/env bash
##makedesc: Install bunch of software from snap
echo
echo "==============================================="
echo "Installing software from snap..."
echo "==============================================="
echo
installed() {
command -v "$1" >/dev/null 2>&1
}
snapi() {
snap install $1 2>/dev/null
[[ $? -ne 0 ]] && snap install $1 --classic
}
if ! installed snapd; then
sudo apt update
sudo apt install -y --autoremove snapd #gnome-software-plugin-snap
fi
# snapi snap-store
# snapi gtk-common-themes
# snapi gtk2-common-themes
snapi peek
# snapi telegram-desktop #todo
# snapi code # deb https://github.com/microsoft/vscode/issues/221836
snapi skype
snapi dbeaver-ce
# snapi mysql-workbench-community
# snapi discord
# snapi phpstorm
# snapi audacity
# snapi flameshot # deb
# snapi zoom-client # deb
# https://certbot.eff.org/
# snapi certbot
# sudo ln -sf /snap/bin/certbot /usr/bin/certbot

45
install/sublimemerge Executable file
View File

@@ -0,0 +1,45 @@
#!/usr/bin/env bash
##makedesc: Install Sublime Merge
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
# https://www.sublimemerge.com/download
# https://gist.github.com/lugrus2000/1fc55158b87f94d799392a6dd1ac0ce2
# https://gist.github.com/maboloshi/feaa63c35f4c2baab24c9aaf9b3f4e47
[ "$1" ] && SMVER="$1" || SMVER='2102'
title
mkdir -p "$HOME/install"
DEB_PATH="$HOME/install/sublime-merge_build-${SMVER}_amd64.deb"
BIN_PATH="/opt/sublime_merge/sublime_merge"
if [[ ! -f "$DEB_PATH" ]]; then
download https://download.sublimetext.com/sublime-merge_build-${SMVER}_amd64.deb "$DEB_PATH"
fi
sudo dpkg -i "$DEB_PATH"
# sudo cp -f $BIN_PATH $BIN_PATH.old
# if [[ $SMVER = 2102 ]]; then
#TODO not working
# printf '\x48\xC7\xC0\x19\x01\x00\x00\xC3' | sudo dd of=$BIN_PATH bs=1 seek=$((0x003A5400)) conv=notrunc
# printf '\x90\x90\x90\x90\x90' | sudo dd of=$BIN_PATH bs=1 seek=$((0x003A7EC9)) conv=notrunc
# printf '\x90\x90\x90\x90\x90' | sudo dd of=$BIN_PATH bs=1 seek=$((0x003A7EE4)) conv=notrunc
# printf '\x48\x31\xC0\x48\xFF\xC0\xC3' | sudo dd of=$BIN_PATH bs=1 seek=$((0x003A67FE)) conv=notrunc
# printf '\xC3' | sudo dd of=$BIN_PATH bs=1 seek=$((0x003A514E)) conv=notrunc
# printf '\xC3' | sudo dd of=$BIN_PATH bs=1 seek=$((0x003A40D2)) conv=notrunc
#TODO segfault
# echo 0045a360: 48 C7 C0 19 01 00 00 C3 | sudo xxd -r - $BIN_PATH
# echo 0045d21d: 90 90 90 90 90 | sudo xxd -r - $BIN_PATH
# echo 0045d23a: 90 90 90 90 90 | sudo xxd -r - $BIN_PATH
# echo 0045b990: C3 | sudo xxd -r - $BIN_PATH
# echo 0045a05a: C3 | sudo xxd -r - $BIN_PATH
# echo 00459aba: C3 | sudo xxd -r - $BIN_PATH
# fi
echo
success "Sublime Merge installed!"
$BIN_PATH --version
echo

37
install/sublimetext Executable file
View File

@@ -0,0 +1,37 @@
#!/usr/bin/env bash
##makedesc: Install Sublime Text
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
# https://www.sublimetext.com/download
# https://gist.axenov.dev/anthony/sublime
# https://gist.axenov.dev/anthony/sublime2
# https://gist.github.com/lugrus2000/1fc55158b87f94d799392a6dd1ac0ce2
# https://gist.github.com/maboloshi/feaa63c35f4c2baab24c9aaf9b3f4e47
[ "$1" ] && STVER="$1" || STVER='4200'
title
mkdir -p "$HOME/install"
DEB_PATH="$HOME/install/sublime-text_build-${STVER}_amd64.deb"
BIN_PATH="/opt/sublime_text/sublime_text"
if [[ ! -f "$DEB_PATH" ]]; then
download "https://download.sublimetext.com/sublime-text_build-${STVER}_amd64.deb" "$DEB_PATH"
fi
sudo dpkg -i "$DEB_PATH"
sudo cp -f "$BIN_PATH" "$BIN_PATH.old"
if [[ $STVER = 4169 ]]; then
echo "00489f39: c640 0501 4885 c9" | sudo xxd -r - "$BIN_PATH"
elif [[ $STVER = 4200 ]]; then
sudo sed -i 's#\x0F\xB6\x51\x05\x83\xF2\x01#\xC6\x41\x05\x01\xB2\x00\x90#' "$BIN_PATH"
else
sudo sed -i 's#\x80\x79\x05\x00\x0F\x94\xC2#\xC6\x41\x05\x01\xB2\x00\x90#' "$BIN_PATH"
fi
echo
success "Sublime Text installed!"
$BIN_PATH --version
echo

20
install/suld Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
##makedesc: Samsung Unified Linux Driver repo
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
# https://www.bchemnet.com/suldr/
# https://www.bchemnet.com/suldr/supported.html
title
mkdir -vp "$HOME/install"
sudo bash -c 'echo "deb https://www.bchemnet.com/suldr/ debian extra" >> /etc/apt/sources.list.d/samsung.list'
download \
https://www.bchemnet.com/suldr/pool/debian/extra/su/suldr-keyring_3_all.deb \
"$HOME/install/suldr-keyring_3_all.deb"
sudo dpkg -i "$HOME/install/suldr-keyring_3_all.deb"
apt_install suld-driver2-1.00.39
success "Samsung Unified Linux Driver installed!"
info "Don't forget to connect your Samsung printer"
info "See more info here: https://www.bchemnet.com/suldr/"

View File

@@ -1,7 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
##makedesc: Install syncthing (latest) + ppa
echo
echo "==============================================="
echo "Installing syncthing..."
echo "Installing syncthing (latest) + ppa..."
echo "==============================================="
echo
@@ -20,7 +22,7 @@ echo "deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://
sudo apt update
sudo apt install -y --autoremove syncthing
wget "https://raw.githubusercontent.com/syncthing/syncthing/main/etc/linux-desktop/syncthing-start.desktop" -O /home/anthony/.local/share/applications/syncthing-start.desktop
wget "https://raw.githubusercontent.com/syncthing/syncthing/main/etc/linux-desktop/syncthing-ui.desktop" -O /home/anthony/.local/share/applications/syncthing-ui.desktop
ln -s /home/anthony/.local/share/applications/syncthing-start.desktop /home/anthony/.config/autostart/syncthing-start.desktop
wget "https://raw.githubusercontent.com/syncthing/syncthing/main/etc/linux-desktop/syncthing-start.desktop" -O $HOME/.local/share/applications/syncthing-start.desktop
wget "https://raw.githubusercontent.com/syncthing/syncthing/main/etc/linux-desktop/syncthing-ui.desktop" -O $HOME/.local/share/applications/syncthing-ui.desktop
ln -sf $HOME/.local/share/applications/syncthing-start.desktop $HOME/.config/autostart/syncthing-start.desktop
# или демоном: https://habr.com/ru/post/350892/

View File

@@ -1,6 +1,13 @@
#!/bin/bash
. "../src/01-common.sh" || exit 5
title "Installing telebit..."
#!/usr/bin/env bash
##makedesc: Install telebit (latest)
echo
echo "==============================================="
echo "Installing telebit (latest)..."
echo "==============================================="
echo
# https://git.coolaj86.com/coolaj86/telebit.js#install
# export NODEJS_VER=v10.2 # v10.2 is tested working, but we can test other versions
# export TELEBIT_VERSION=master # git tag or branch to install from

13
install/telegram Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
##makedesc: Install telegram (latest)
echo
echo "==============================================="
echo "Installing telegram (latest)..."
echo "==============================================="
echo
mkdir -p "$HOME/install" "$HOME/.local/bin"
wget "https://telegram.org/dl/desktop/linux" -O $HOME/install/telegram.tar.gz && \
tar -xJf $HOME/install/telegram.tar.gz -C $HOME/.local/bin
$HOME/.local/bin/Telegram/Telegram & disown > /dev/null

33
install/tilt Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/bash
mkdir -p ~/install/tilt ~/.local/bin
cd ~/install/tilt
KUBECTL_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt)
curl -LO "https://dl.k8s.io/release/$KUBECTL_VERSION/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$KUBECTL_VERSION/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
chmod +x kubectl
cp ./kubectl ~/.local/bin/kubectl
################################################################################
CTLPTL_URL=$(curl -s "https://api.github.com/repos/tilt-dev/ctlptl/releases/latest" \
| jq -r '.assets.[] | select(.name | test("linux.x86_64.tar.gz")).browser_download_url')
curl -fsSL "$CTLPTL_URL" | tar -xz -C ~/.local/bin ctlptl
# chmod +x ~/.local/bin/ctlptl
################################################################################
TILT_URL=$(curl -s "https://api.github.com/repos/tilt-dev/tilt/releases/latest" \
| jq -r '.assets.[] | select(.name | test("linux.x86_64.tar.gz")).browser_download_url')
curl -fsSL "$TILT_URL" | tar -xz -C ~/.local/bin tilt
# chmod +x ~/.local/bin/tilt
cd -
echo "Version of ctlptl = $(ctlptl version)"
echo "Version of tilt = $(tilt version)"
echo "Version of kubectl:"
kubectl version

13
install/ulauncher Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
##makedesc: Install ulauncher (latest) + ppa
echo
echo "==============================================="
echo "Installing ulauncher (latest) + ppa..."
echo "==============================================="
echo
sudo add-apt-repository universe -y
sudo add-apt-repository ppa:agornostal/ulauncher -y
sudo apt update
sudo apt install ulauncher

19
install/vivaldi Executable file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/env bash
##makedesc: Install Vivaldi + ppa
# https://repo.vivaldi.com
# https://help.vivaldi.com/desktop/#install-update
# https://help.vivaldi.com/desktop/install-update/manual-setup-vivaldi-linux-repositories/
echo
echo "==============================================="
echo "Installing Vivaldi + ppa..."
echo "==============================================="
echo
wget -qO- https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor > packages.vivaldi.gpg
sudo install -o root -g root -m 644 packages.vivaldi.gpg /etc/apt/trusted.gpg.d
sudo sh -c 'echo "deb [arch=amd64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.vivaldi.gpg] https://repo.vivaldi.com/archive/deb stable main" > /etc/apt/sources.list.d/vivaldi.list'
rm -f packages.vivaldi.gpg
sudo apt update && sudo apt install vivaldi-stable

18
install/vscode Executable file
View File

@@ -0,0 +1,18 @@
#!/usr/bin/env bash
##makedesc: VSCode deb-package
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title
mkdir -p "$HOME/install"
download "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" \
"$HOME/install/vscode.deb" && \
sudo dpkg -i "$HOME/install/vscode.deb"
[ $? = 0 ] && {
echo
success "VSCode installed"
code --version
echo
}

14
install/wine Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env bash
##makedesc: Install wine (latest) + ppa
echo
echo "==============================================="
echo "Installing wine (latest)..."
echo "==============================================="
echo
sudo dpkg --add-architecture i386
wget -qO- https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
sudo add-apt-repository -y "deb https://dl.winehq.org/wine-builds/ubuntu/ $(lsb_release -cs 2>/dev/null) main"
sudo apt install -y --autoremove winehq-stable
wine --version

Some files were not shown because too many files have changed in this diff Show More