/dotfiles

My dotfiles

Primary LanguageShellMIT LicenseMIT

Nicola Massarenti's dotfiles

Here you can find my dotfiles, which I use to configure my development environment.

terminal

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

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.