Skip to content

fercomunello/dotfiles

Repository files navigation

Dotfiles

  • Files and folders that start with a dot (.) belong to the user’s home directory.
  • The dotfiles are mapped via symlinks.

My workstation

Setup

Install some Linux distro and install the required packages.

Install essential packages

The following commands are for Fedora and RHEL (Red Hat Enterprise Linux), may also work on Oracle Linux and Rocky Linux.

sudo dnf install -y git gh && \
git config --global credential.helper store
  • Vim: A text editor built to make creating and changing any kind of text very efficient.
sudo dnf install -y vim
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  • Alacritty: A fast, cross-platform, OpenGL terminal emulator.
sudo dnf -y install alacritty

For GNOME desktop environment running on Wayland display server, you may want to reset WAYLAND_DISPLAY variable if you prefer to disable client-side window decorations.

sudo cp /usr/share/applications/Alacritty.desktop ~/.local/share/applications
sed -i 's/^Exec=alacritty/Exec=env -u WAYLAND_DISPLAY alacritty/g' ~/.local/share/applications/Alacritty.desktop

Also, you may want to replace the default GNOME terminal with Alacritty's name and icon and then hide the old terminal app. Note: You must log out to apply these changes.

sed -i 's/^Name=Alacritty/Name=Terminal/g' ~/.local/share/applications/Alacritty.desktop; \
sed -i 's/^Icon=Alacritty/Icon=org.gnome.Terminal/g' ~/.local/share/applications/Alacritty.desktop; \
sed -i '2i NoDisplay=true' org.gnome.Terminal.desktop
  • Node.js / NPM: Front-end tooling.
sudo dnf install -y nodejs
npm install --save-dev webpack
npm install --save-dev webpack-cli
npm install -g @angular/cli
  • ZSH: A shell designed for interactive use, although it is also a powerful scripting language.
sudo dnf install -y zsh
sudo lchsh $USER

Note: You must log out to apply these changes.

This command should display something like: zsh 5.9 (x86_64-redhat-linux-gnu)

$SHELL --version

If something goes wrong, there is a trick to recover the shell dotfiles, also works for .bash files:

ls /etc/skel
cp /etc/skel/.zshrc ~
  • Oh My ZSH: A zsh framework to unleash your terminal like never before. Open a new terminal after running this command.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Add ZSH plugins

git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search && \
source ~/.zshrc && source ~/.oh-my-zsh/custom/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh

Tmux multiplexer

sudo dnf install tmux xsel -y && \
  git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Clone the repository

git clone https://github.com/fercomunello/dotfiles.git ~/.dotfiles

Create the symbolic links

Now whenever you change some dotfile the system will recognize the changes on $HOME folder and subfolders.

touch ~/.aliases-user ; \
ln -svf ~/.dotfiles/.profile ~/.profile ; \
ln -svf ~/.dotfiles/.zshrc ~/.zshrc ; \
ln -svf ~/.dotfiles/.gitconfig ~/.gitconfig ; \
mkdir -p ~/.config/alacritty && ln -svf ~/.dotfiles/.config/alacritty/alacritty.toml ~/.config/alacritty/alacritty.toml ; \
ln -svf ~/.dotfiles/.aliases ~/.aliases ; \
ln -svf ~/.dotfiles/.oh-my-zsh/custom/shortcuts.zsh ~/.oh-my-zsh/custom/shortcuts.zsh ; \
ln -svf ~/.dotfiles/.oh-my-zsh/custom/autocomplete.zsh ~/.oh-my-zsh/custom/autocomplete.zsh ; \
ln -svf ~/.dotfiles/.tmux.conf ~/.tmux.conf ; \
ln -svf ~/.dotfiles/.vimrc ~/.vimrc ; \
mkdir -p ~/.vim/UltiSnips && ln -svf ~/.dotfiles/.vim/UltiSnips/all.snippets ~/.vim/UltiSnips/all.snippets ; \
mkdir -p ~/.vim/colors && ln -svf ~/.dotfiles/.vim/colors/hemisu.vim ~/.vim/colors/hemisu.vim && vim +PluginInstall +qall ; \
sudo mkdir -p /usr/share/applications/visualvm && sudo ln -svf ~/.dotfiles/java/applications/visualvm/visualvm.desktop /usr/share/applications/visualvm.desktop ; \
ln -svf ~/.dotfiles/.ideavimrc ~/.ideavimrc

Some dotfiles was created based on Sebastian Daschner's files:

  • as well as the effective developer approach, must watch this presentation! =)

Why Fedora?

  • The Fedora project is the upstream, community distro of RHEL. Red Hat is the project’s primary sponsor, but thousands of independent developers also contribute to the Fedora project.
  • Fedora comes with a latest kernel version and well tested recent packages.
  • Fedora is the perfect combination of bleeding edge, stability and ease of use - it's as easy to use as Ubuntu, bleeding edge as Arch while being as free and stable (or close to) as Debian.
  • The community is fantastic, always trying to push the Linux desktop forwards, and with RedHat, it has the money to do this.
  • Technically, I feel Fedora is the most innovative and progressive force for desktop linux users.
  • Fedora comes with Podman engine built-in, a very good implementation of containers, no need to install Docker manually - but it also works well with the traditional Docker Engine.
  • As RHEL, Oracle Linux and CentOS are heavily used on enterprise, you can avoid context switching as will be more familiarized with this kind of environment.
  • If you prefer an alternative vanilla DE other than GNOME you can download a Fedora Spin.