Custom ConfigΒΆ

LayoutΒΆ

.
β”œβ”€β”€ emacs
β”‚   └── ...
β”œβ”€β”€ gcp-ssh-script.sh
β”œβ”€β”€ starship.toml
β”œβ”€β”€ vscode
β”‚   └── ...
└── wezterm.lua

VSCode ConfigΒΆ

VSCode - LayoutΒΆ

.
β”œβ”€β”€ extensions.txt
β”œβ”€β”€ install-extensions.sh
β”œβ”€β”€ keybindings.json
β”œβ”€β”€ settings.json
└── snippets
    └── python.json

VSCode - DetailsΒΆ

The core of your pre-defined VSCode configuration is defined here.

  • In extensions.txt, you can define any extension you may need. Extensions will be downloaded from source using the code CLI (VSCode CLI).

  • In keybindings.json, you define any keybindings for your VSCode configuration. These are only applied in your Darwin config (this makes sense because you will usually SSH to your server, not run VSCode directly there).

  • In settings.json, you define any settings for your VSCode configuration.

  • In snippets, you define any settings for your VSCode snippet configuration.

Note:

Since keybindings and settings are made mutable for seamless editing directly through VSCode, they will not be automatically updated in this folder. This means perfect reproducibility is lost. If you define new extensions, keybindings, or settings, you should periodically copy them back here.

To keep your configuration up to date:

  • Copy your current extensions into extensions.txt. For example, from your home directory:

    code --list-extensions > nixos-config/modules/shared/config/vscode/extensions.txt
    
  • Copy the files from /Users/${user}/Library/Application Support/Code/User/ to nixos-config/modules/shared/config/vscode/. For example:

    cp "Library/Application Support/Code/User/keybindings.json" nixos-config/modules/shared/config/vscode/keybindings.json
    cp "Library/Application Support/Code/User/settings.json" nixos-config/modules/shared/config/vscode/settings.json
    

Starship ConfigΒΆ

I use Starship as a cross shell customizable prompt. It allows the same design wether you are on zsh, bash or others.

WezTerm ConfigΒΆ

A very basic WezTerm configuration (almost the default). This is provided as an example of how to set up your WezTerm config. For more details, please visit the official documentation.

Some blogs or GitHub repositories you might find useful for customizing your WezTerm config:

GCP SSH ScriptΒΆ

Script to automate the ProxyCommand in an SSH Host Config. Please refer to the Remote SSH section in gcp-installation.md.

Emacs ConfigΒΆ

Emacs - LayoutΒΆ

.
β”œβ”€β”€ config.org
β”œβ”€β”€ init.el
└── README.md

Emacs - DetailsΒΆ

This is where the core of the Emacs configuration is defined.

Disclaimer:

  • Currently, I have paused using Emacs in favor of VSCode. Additionally, Emacs builds slowly on GCP, and I prefer this configuration to be general-purpose (and, admittedly, Emacs has a smaller user base).

    • However, enabling Emacs is straightforward: simply uncomment any code under # EMACS UTILITIES.

  • The current configuration is adapted from dustinlyons. I may switch to a different configuration, such as the moby server or AlΓ‘n’s.

  • I may also enable my simple Doom config or even the original doom.

  • I may eventually move away from Emacs to try Vim. A simple Vim config is already present in programs, adapted from dustinlyons. I may also take inspiration from neovim, AstroNvim, or NixVim from Ank.