Nicola Massarenti's dotfiles
Here you can find my dotfiles, which I use to configure my development environment.
Quick setup
If you want to quickly update the configurations, you can run the following command:
# Copy fish config
cp -r fish ~/.config/fish
# Copy starship config
cp starship.toml ~/.config/starship.toml
# Load ubuntu dconf settings
dconf load / < ubuntu.dconf
# Setup systemctl custom services
./service-systemctl.sh
Shell
- fish - The user-friendly command line shell
- fisher - A plugin manager for fish
- starship - The minimal, blazing-fast, and infinitely customizable prompt for any shell! -
curl -sS https://starship.rs/install.sh | sh && starship init fish | source
- nerdfonts - Iconic font aggregator, collection, and patcher. I use Hack -
git clone --depth 1 https://github.com/ryanoasis/nerd-fonts && cd nerd-fonts && ./install.sh Hack
- exa - A modern replacement for ls -
sudo apt install exa
- z - A new cd command that learns -
fisher install jethrokuan/z
Software
- Chrome: The web browser
- Insync: Google Drive client
- Obsidian: The second brain - Markdown-based note-taking and knowledge base -
sudo snap install obsidian
- Bitwarden: Password manager -
sudo snap install bitwarden
- Bitwarden CLI: Command line interface for Bitwarden -
sudo snap install bw
- GitHub CLI: GitHub on the command line -
sudo snap install gh
- Terminator: Terminal emulator -
sudo apt install terminator
- flameshot: Powerful yet simple to use screenshot software -
sudo apt install flameshot
- caffeine: Prevents the screen from going to sleep -
sudo apt install caffeine
Command line
- vim: Vi IMproved - enhanced vi editor -
sudo apt install vim
- unzip -
sudo apt install unzip
- git: The fast distributed version control system -
sudo apt install git
- curl: Command line tool for transferring data with URL syntax -
sudo apt install curl
- tmux: Terminal multiplexer -
sudo apt install tmux
- libfuse2: Filesystem in Userspace (library), required by Obsidian -
sudo apt install libfuse2
- bat: a
cat
clone with wings -sudo apt install bat
- jq: a command-line JSON processor -
sudo apt install jq
Operations
- kubectl: The Kubernetes command-line tool
- helm: The package manager for Kubernetes
- Docker: The container platform
- Docker Compose: The container orchestration tool
- krew: The plugin manager for kubectl
- fish-kubectl-prompt: A kubectl prompt for fish shell
- kubeseal: A Kubernetes controller and tool for one-way encrypted Secrets
- travis-ci: The command line client for Travis CI
Development tools
- Python: The programming language
- Rust: The programming language -
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Hugo: The static site generator -
sudo snap install hugo
- ruby: The programming language -
sudo apt install ruby ruby-dev
Terminator profile
- Font: Hack Nerd Font Regular 10 (installed with
nerdfonts
) - No titlebar nor titlebar icon
- Background transparency: 0.83
Gnome extensions
- Caffeine - Prevents the screen from going to sleep
- Sound Input & Output Device choose - Allows you to choose the sound output device
- Vitals - Shows CPU, memory, and disk usage in the top bar
Systemctl services
You can inspect the setup of the systemctl obsidian
service in file service-systemctl.sh
. The service is used to start Obsidian as a daemon and to automatically mount the Obsidian vault.
Why as a systemctl service?
The main reason is that I wanted to run Obsidian as a daemon, without having to care about the terminal.
I tried creating detached fish
functions but the process was tied to the terminal, so I had to keep the terminal open. Other options
included running a container with a mounted volume, but I wanted to avoid the overhead of Docker. The solution of configuring the process
as a systemctl
service was the best option for me. This way, I can start the service with systemctl start obsidian
and stop it with
systemctl stop obsidian
, furthermore the way it's configured, the services is automatically started at boot and is restarted if it crashes while being logged in.