A basic get-up-and-running Fedora install script.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

install.sh 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. #!/bin/bash
  2. if [ $(id -u) = 0 ]; then
  3. echo "This script changes your users gsettings and should thus not be run as root!"
  4. echo "You may need to enter your password multiple times!"
  5. exit 1
  6. fi
  7. while test $# -gt 0
  8. do
  9. case "$1" in
  10. --nonfree)
  11. echo "Nonfree Additions will be added"
  12. NONFREE=true
  13. ;;
  14. --steam)
  15. echo "Adding Steam as flatpak to avoid fedora lib misaligment issues for games"
  16. STEAMFLAT=true
  17. ;;
  18. esac
  19. shift
  20. done
  21. ###
  22. # Optionally clean all dnf temporary files
  23. ###
  24. sudo dnf clean all
  25. ###
  26. # RpmFusion Free Repo
  27. # This is holding only open source, vetted applications - fedora just cant legally distribute them themselves thanks to
  28. # Software patents
  29. ###
  30. sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
  31. ###
  32. # RpmFusion NonFree Repo
  33. # This includes Nvidia Drivers and more
  34. ###
  35. if [ ! -z "$NONFREE" ]; then
  36. sudo dnf install -y https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
  37. fi
  38. ###
  39. # Disable the Modular Repos
  40. # So far they are pretty empty, and sadly can muck with --best updates
  41. # Reenabling them at the end for future use
  42. ###
  43. sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/fedora-updates-modular.repo
  44. sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/fedora-modular.repo
  45. ###
  46. # Force update the whole system to the latest and greatest
  47. ###
  48. sudo dnf upgrade --best --allowerasing --refresh -y
  49. # And also remove any packages without a source backing them
  50. # If you come from the Fedora 31 Future i'll check if this is still optimal before F31 comes out.
  51. sudo dnf distro-sync -y
  52. ###
  53. # Install base packages and applications
  54. ###
  55. sudo dnf install \
  56. -y \
  57. arc-theme `#A more comfortable GTK/Gnome-Shell Theme` \
  58. blender `#3D Software Powerhouse` \
  59. breeze-cursor-theme `#A more comfortable Cursor Theme from KDE` \
  60. calibre `#Ebook management` \
  61. chrome-gnome-shell `#Gnome <> Browser Integration for the gnome plugins website` \
  62. chromium-vaapi `#Comes with hardware acceleration and all Codecs` \
  63. darktable `#Easy RAW Editor` \
  64. evolution-spamassassin `#Helps you deal with spam in Evolution` \
  65. exfat-utils `#Allows managing exfat (android sd cards and co)` \
  66. ffmpeg `#Adds Codec Support to Firefox, and in general` \
  67. file-roller-nautilus `#More Archives supported in nautilus` \
  68. filezilla `#S/FTP Access` \
  69. fuse-exfat `#Allows mounting exfat` \
  70. fuse-sshfs `#Allows mounting servers via sshfs` \
  71. gimp `#The Image Editing Powerhouse - and its plugins` \
  72. gimp-data-extras \
  73. gimp-dbp \
  74. gimp-dds-plugin \
  75. gimp-elsamuko \
  76. gimp-focusblur-plugin \
  77. gimp-fourier-plugin \
  78. gimpfx-foundry.noarch \
  79. gimp-gap \
  80. gimp-high-pass-filter \
  81. gimp-layer-via-copy-cut \
  82. gimp-lensfun \
  83. gimp-lqr-plugin \
  84. gimp-luminosity-masks \
  85. gimp-paint-studio \
  86. gimp-resynthesizer \
  87. gimp-save-for-web \
  88. gimp-wavelet-decompose \
  89. gimp-wavelet-denoise-plugin \
  90. git `#VCS done right` \
  91. gmic-gimp \
  92. gnome-shell-extension-dash-to-dock `#dash for gnome` \
  93. gnome-shell-extension-topicons-plus `#Notification Icons for gnome` \
  94. gnome-shell-extension-user-theme `#Enables theming the gnome shell` \
  95. gnome-tweak-tool `#Your central place to make gnome like you want` \
  96. GREYCstoration-gimp \
  97. gtkhash-nautilus `#To get a file has via gui` \
  98. gvfs-fuse `#gnome<>fuse` \
  99. gvfs-mtp `#gnome<>android` \
  100. gvfs-nfs `#gnome<>ntfs` \
  101. gvfs-smb `#gnome<>samba` \
  102. htop `#Cli process monitor` \
  103. inkscape `#Working with .svg files` \
  104. kdenlive `#Advanced Video Editor` \
  105. keepassxc `#Password Manager` \
  106. krita `#Painting done right keep in mind mypaint and gimp cant work together in current upstream versions - yet` \
  107. libreoffice-gallery-vrt-network-equipment `#Network Icon Preset for LibreOffice` \
  108. lm_sensors `#Show your systems Temparature` \
  109. 'mozilla-fira-*' `#A nice font family` \
  110. mpv `#The best media player (with simple gui)` \
  111. mumble `#Talk with your friends` \
  112. nautilus-extensions `#What it says on the tin` \
  113. nautilus-image-converter \
  114. nautilus-search-tool \
  115. NetworkManager-openvpn-gnome `#To enforce that its possible to import .ovpn files in the settings` \
  116. openshot `#Simple Video Editor` \
  117. openssh-askpass `#Base Lib to let applications request ssh pass via gui` \
  118. p7zip `#Archives` \
  119. p7zip-plugins `#Even more of them` \
  120. papirus-icon-theme `#A quite nice icon theme` \
  121. pv `#pipe viewer - see what happens between the | with output | pv | receiver ` \
  122. python3-devel `#Python Development Gear` \
  123. python3-neovim `#Python Neovim Libs` \
  124. rawtherapee `#Professional RAW Editor` \
  125. spamassassin `#Dep to make sure it is locally installed for Evolution` \
  126. telegram-desktop `#Chatting, with newer openssl and qt base!` \
  127. tilix `#The best terminal manager i know of` \
  128. tilix-nautilus `#Adds right click open in tilix to nautilus` \
  129. transmission `#Torrent Client` \
  130. tuned `#Tuned can optimize your performance according to metrics. tuned-adm profile powersave can help you on laptops, alot` \
  131. unar `#free rar decompression` \
  132. vagrant `#Virtual Machine management and autodeployment` \
  133. vagrant-libvirt `#integration with libvirt` \
  134. virt-manager `#A gui to manage virtual machines` \
  135. wavemon `#a cli wifi status tool` \
  136. youtube-dl `#Allows you to download and save youtube videos but also to open their links by dragging them into mpv!` \
  137. ansible `#Awesome to manage multiple machines or define states for systems` \
  138. adobe-source-code-pro-fonts `#The most beautiful monospace font around` \
  139. borgbackup `#If you need backups, this is your tool for it` \
  140. gitg `#a gui for git, a little slow on larger repos sadly` \
  141. iotop `#disk usage cli monitor` \
  142. meld `#Quick Diff Tool` \
  143. nano `#Because pressing i is too hard sometimes` \
  144. neovim `#the better vim` \
  145. nethogs `#Whats using all your traffic? Now you know!` \
  146. nload `#Network Load Monitor` \
  147. tig `#cli git tool` \
  148. vim-enhanced `#full vim` \
  149. zsh `#Best shell` \
  150. zsh-syntax-highlighting `#Now with syntax highlighting` \
  151. cantata `#A beautiful mpd control` \
  152. caddy `#A quick webserver that can be used to share a directory with others in <10 seconds` \
  153. cockpit `#A An awesome local and remote management tool` \
  154. cockpit-bridge \
  155. fortune-mod `#Inspiring Quotes` \
  156. hexchat `#Irc Client` \
  157. libguestfs-tools `#Resize Vm Images and convert them` \
  158. ncdu `#Directory listing CLI tool. For a gui version take a look at "baobab"` \
  159. nextcloud-client `#Nextcloud Integration for Fedora` \
  160. nextcloud-client-nautilus `#Also for the File Manager, shows you file status` \
  161. sqlite-analyzer `#If you work with sqlite databases` \
  162. sqlitebrowser `#These two help alot` \
  163. syncthing-gtk `#Syncing evolved - to use the local only mode open up the ports with firewall-cmd --add-port=port/tcp --permanent && firewall-cmd --reload`
  164. ###
  165. # Remove some un-needed stuff
  166. ###
  167. sudo dnf remove \
  168. -y \
  169. gnome-shell-extension-background-logo `#Tasteful but nah` \
  170. totem `#With mpv installed totem became a little useless` \
  171. chromium `#Using Chromium resets chromium-vaapi so remove it if installed, userprofiles will be kept and can be used in -vaapi` \
  172. flowblade `#Sadly has really outdated mlt dependencies`
  173. ###
  174. # Enable some of the goodies, but not all
  175. # Its the users responsibility to choose and enable zsh, with oh-my-zsh for example
  176. # or set a more specific tuned profile
  177. ###
  178. sudo systemctl enable --now tuned
  179. sudo tuned-adm profile balanced
  180. #Performance:
  181. #sudo tuned-adm profile desktop
  182. #Virtual Machine Host:
  183. #sudo tuned-adm profile virtual-host
  184. #Virtual Machine Guest:
  185. #sudo tuned-adm profile virtual-guest
  186. #Battery Saving:
  187. #sudo tuned-adm profile powersave
  188. # Virtual Machines
  189. sudo systemctl enable --now libvirtd
  190. # Management of local/remote system(s) - available via http://localhost:9090
  191. sudo systemctl enable --now cockpit.socket
  192. ###
  193. # Theming and GNOME Options
  194. ###
  195. # Tilix Dark Theme
  196. gsettings set com.gexperts.Tilix.Settings theme-variant 'dark'
  197. #Gnome Shell Theming
  198. gsettings set org.gnome.desktop.interface gtk-theme 'Arc-Dark'
  199. gsettings set org.gnome.desktop.interface cursor-theme 'Breeze_Snow'
  200. gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark'
  201. gsettings set org.gnome.shell.extensions.user-theme name 'Arc-Dark-solid'
  202. #Set SCP as Monospace (Code) Font
  203. gsettings set org.gnome.desktop.interface monospace-font-name 'Source Code Pro Semi-Bold 12'
  204. #Set Extensions for gnome
  205. gsettings set org.gnome.shell enabled-extensions "['user-theme@gnome-shell-extensions.gcampax.github.com', 'TopIcons@phocean.net', 'dash-to-dock@micxgx.gmail.com']"
  206. #Better Font Smoothing
  207. gsettings set org.gnome.settings-daemon.plugins.xsettings antialiasing 'rgba'
  208. #Usability Improvements
  209. gsettings set org.gnome.desktop.peripherals.mouse accel-profile 'adaptive'
  210. gsettings set org.gnome.desktop.sound allow-volume-above-100-percent true
  211. gsettings set org.gnome.desktop.calendar show-weekdate true
  212. gsettings set org.gnome.desktop.wm.preferences resize-with-right-button true
  213. gsettings set org.gnome.desktop.wm.preferences button-layout 'appmenu:minimize,maximize,close'
  214. gsettings set org.gnome.shell.overrides workspaces-only-on-primary false
  215. #Dash to Dock Theme
  216. gsettings set org.gnome.shell.extensions.dash-to-dock apply-custom-theme false
  217. gsettings set org.gnome.shell.extensions.dash-to-dock custom-background-color false
  218. gsettings set org.gnome.shell.extensions.dash-to-dock custom-theme-customize-running-dots true
  219. gsettings set org.gnome.shell.extensions.dash-to-dock custom-theme-running-dots-color '#729fcf'
  220. gsettings set org.gnome.shell.extensions.dash-to-dock custom-theme-shrink true
  221. gsettings set org.gnome.shell.extensions.dash-to-dock dock-fixed false
  222. gsettings set org.gnome.shell.extensions.dash-to-dock extend-height true
  223. gsettings set org.gnome.shell.extensions.dash-to-dock force-straight-corner false
  224. gsettings set org.gnome.shell.extensions.dash-to-dock icon-size-fixed true
  225. gsettings set org.gnome.shell.extensions.dash-to-dock intellihide-mode 'ALL_WINDOWS'
  226. gsettings set org.gnome.shell.extensions.dash-to-dock isolate-workspaces true
  227. gsettings set org.gnome.shell.extensions.dash-to-dock show-apps-at-top true
  228. gsettings set org.gnome.shell.extensions.dash-to-dock unity-backlit-items false
  229. gsettings set org.gnome.shell.extensions.dash-to-dock transparency-mode 'FIXED'
  230. gsettings set org.gnome.shell.extensions.dash-to-dock running-indicator-style 'SEGMENTED'
  231. gsettings set org.gnome.shell.extensions.dash-to-dock background-opacity 0.70000000000000000
  232. #This indexer is nice, but can be detrimental for laptop users battery life
  233. gsettings set org.freedesktop.Tracker.Miner.Files index-on-battery false
  234. gsettings set org.freedesktop.Tracker.Miner.Files index-on-battery-first-time false
  235. gsettings set org.freedesktop.Tracker.Miner.Files throttle 15
  236. #Nautilus (File Manager) Usability
  237. gsettings set org.gnome.nautilus.icon-view default-zoom-level 'standard'
  238. gsettings set org.gnome.nautilus.preferences executable-text-activation 'ask'
  239. gsettings set org.gtk.Settings.FileChooser sort-directories-first true
  240. gsettings set org.gnome.nautilus.list-view use-tree-view true
  241. # Steam games (32bit) have issues with the too new 32bit compat libs in fedora
  242. # Flatpak is the better option here
  243. if [ ! -z "$STEAMFLAT" ]; then
  244. sudo dnf install -y flatpak
  245. sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
  246. flatpak -y install flathub com.valvesoftware.Steam
  247. # Installed but not displayed? Check with: flatpak run com.valvesoftware.Steam
  248. fi
  249. ###
  250. # These will be more used in the future by some maintainers
  251. # Reenabling them just to make sure.
  252. ###
  253. sudo sed -i '0,/enabled=0/s/enabled=0/enabled=1/g' /etc/yum.repos.d/fedora-updates-modular.repo
  254. sudo sed -i '0,/enabled=0/s/enabled=0/enabled=1/g' /etc/yum.repos.d/fedora-modular.repo
  255. #The user needs to reboot to apply all changes.
  256. echo "Please Reboot" && exit 0