Hi there! This whole repository contains all the resources I'm using in order to install and configure my development environment.
There's basically nothing too fancy, but I'm glad it helps in case you're searching to do something a bit similar. Otherwise, it'll help me at least ;)
I'm using Manjaro, a Linux distribution based on Arch.
It's fairly easy to install, and you'll get all the information from their Download Page.
In case you don't have git
installed already, you can simply install it quickly from pacman
through sudo pacman -S git
, but it should be present by default I believe.
Then, the only thing you want to do is to clone that project in your HOME
folder (basically ~/
, which means something like /home/<your username>
).
You can do that with git clone git@github.com:aneveux/dotfiles.git
From the dotfiles directory, you can execute the following script: ./install_software.sh
which will rely on pacman
and yaourt
in order to install all the software I'm using on my Linux installation (or most of it at least).
Among lots of others, it'll take care of installing i3, the Window Manager I'm using. It'll also change the shell to Fish Shell.
Do not hesitate to have a look at the script to see all the things which will be installed.
There are a few things you can customize easily from this repository:
- Update the
me
file to match with your user id, it's used only forzsh
though, which I'm not using that much. - Create a
local
folder in the dotfiles repository, it's ignored by git, and will allow you to store some local configuration values. - Create a
gitconfig_user
file in thatlocal
folder, in which you can store theuser
section of your~/.gitconfig
file. It allows you to keep that local. (thegitconfig
file will be generated later on). - Create a
monitor_configuration
file in thelocal
folder, in which you can specifyxrandr
commands to be executed byi3
while starting up to configure your monitors. - Create a
sshconfig
file in thelocal
folder, in which you can add any personal SSH configuration you'd have.
As an example, here's how the gitconfig_user
could look:
[user]
name = <Your Name Here>
email = <Your Mail Here>
I'm relying on dotbot for that. You can have a look at install.conf.yaml
for more information on what's done.
It'll basically install some stuff (a few fonts, zsh, vim plugins, sdkman, etc.), and then create symlinks to all the dotfiles which are required to configure those tools.
The gitconfig
file will be generated during that step as well.
In order to actually perform this step, simply run ./install.sh
from the dotfiles folder.
In order to load automatically my SSH keys in a running agent, and to share those with all the software I'm using, you'll need a small additional SSH configuration. Some files will be populated by dotbot, and then you'll need to execute:
$ systemctl --user enable ssh-agent.service
$ systemctl --user start ssh-agent.service
You can verify that it's working properly by executing:
$ systemctl --user status ssh-agent.service
Your ~/.ssh/config
file will be generated by the provisioning, and will contain some configuration allowing to remember the keys you're using. You can complete your SSH config with a local file, see information above for more information.
All of this will allow to start an SSH agent while your environment is starting up, and then store the keys which are loaded in that agent when they're used for the first time.
I'm relying on SDKMan for installing all the SDKs I need. It'll be installed directly by dotbot, so now you only need to use it for installing what you need.
On my side, I'm using it for:
$ sdk install java
$ sdk install kotlin
$ sdk install groovy
$ sdk install maven
$ sdk install gradle
Note that it'll also take care of managing all the required environment variables such as JAVA_HOME
and so on.
I'm using Oh My Fish! for some fish themes and plugins. The installation is managed by the dotfiles provisioning, but you'll have to run omf install
in order to download all the plugins and themes. All the configuration is already set up by the dotfiles.
My main text editor is Sublime (even if I'm using Atom or vim sometimes). Here are the steps to follow to install and configure it:
- Download it from here: Sublime Text 3
- Extract the archive content in
~/tools
:tar jxf sublime_text_3_....tar.bz2 -C ~/tools/sublime_text_3
- Install Package Control for Sublime Text 3 from here: Package Control
- Packages I install from Package Control:
A File Icon
AceJump
Ansible
Ansible Vault
Ayu
Color Highlighter
ColorPicker
fish-shell
Git
Git Config
i3 wm
JavaScript Ultimate
MarkDown Preview
Origami
Pretty YAML
Shell Exec
Then the whole configuration is made by the dotfiles.
I'm using IntelliJ IDEA as my IDE. Download it directly from the JetBrains website.
I'm not using the version available in AUR cause I like to update it as soon as possible and always use the latest version possible, which is delayed a bit by the AUR packaging.
Here's a list of all the IDEA plugins I'm installing:
AceJump
BashSupport
CheckMate
Docker Integration
Error-Prone compiler integration
FindBugs-IDEA
GitToolBox
.ignore
GitLab Projects
Ansible Support
Java8 Generators
Kotlin
Scala
Lombok
Markdown Support
Maven Helper
Presentation Assistant
Upsource Integration
All my configuration is available in a separate github repository though: https://github.com/aneveux/idea-settings. Which is used directly by IntelliJ settings manager in order to synchronize my configuration across all the installation I have.
From the ~/dotfiles/local
directory, you can create a fish
folder containing as much functions as you'd like, and those we'll be loaded while your shell is starting. This means you can have some local functions that you're not sharing on the repository.
An example would be something like: ~/dotfiles/local/fish/validate.fish
which would let you run validate
from your shell without sharing the actual file. Useful when writing some pretty personal commands :)
For updating the submodules, use this command: git submodule update --remote dotbot
. You can replace dotbot by the name of the submodule you want to update.
If you modify the files which are already symlinked, you have nothing to do for updating your environment.
If you add more files, simply run again that ./install.sh
script and it'll set up the links for you.
Here are links towards really interesting tools/resources I'm using:
- Manjaro - my favourite Linux distro,
- Fish Shell - friendliest shell I met,
- Oh My Fish! - like fish wasn't easy enough,
- ZSH - my former shell... Keeping it for memories,
- Oh My ZSH! - making zsh easier,
- Powerlevel9k - prompt I was using in ZSH,
- SDKMan - easiest way to manage SDKs,
- Nerd Fonts - biggest fancy fonts collection I found,
- Vim Bundles by spf13 - simply all the things I want in vim,
- IntelliJ IDEA - my favourite IDE,
- Sublime Text - my favourite text editor,
- Terminal Sexy - for generating color themes,
- Idea Color Themes - color themes for IntelliJ,
- Boxy Theme - favourite theme for sublime,
- i3 - the Window Manager I was searching for,
- Rofi - a powerful window switcher,
- i3-gaps - a fork of i3 I'm using for advanced features,
- i3blocks-gaps - a fork of i3blocks for i3gaps,
And some useless, but absolutely necessary resources:
- Table flipping emoticons - cause commit messages,
- Shields - cause opensource projects are all doing it,
- Commit Message - when you lack inspiration,
I really wanted to thank all those really nice projects/people for the great help/inspiration:
As well as all the really nice tools I already mentionned before :)