I primarily live in the terminal for everything. Coding, journaling, email, web browsing... the list goes on. To be comfortable on your computer you need to cherish your dot file configuration 💖!
Prerequisites before installing:
git
Powershell 7 or higher
# Download the script: long version
Invoke-RestMethod 'https://raw.githubusercontent.com/derekthecool/MyCrossPlatformDotfiles/refs/heads/master/Atelier/pwsh/MyModules/Dot/Source/Dot.Functions.ps1' | Invoke-Expression
# Download the script: short version using https://free-url-shortener.rb.gy/
irm 'https://rb.gy/49hpz2' | iex
# Download the git bare repository
Initialize-Dotfiles
# Clone all other important configuration repositories
Get-AllConfigurations
# Then open new shell to launch profile and install packages
pwsh
Install-DotPackages
This configuration contains everything for my windows and Linux dot files. While many of the programs are specific to either windows or Linux the management and configuration setup of this repo is cross platform.
I'm using pwsh - the cross platform powershell for all of the repo management scripts. Fresh installs, bare repo commit helpers, etc.
Powershell is often seen as a Windows only tool.
My experience with it started with just trying to use the terminal for everything. Using a Windows computer for work I've had to choose between legacy CMD, powershell. There is WSL, and that can be great for getting a virtual Linux setup it is still a bit sandboxed. So powershell was the clear choice.
Powershell is FOSS using the MIT license.
While I adore bash, zsh, fish, and other Linux only shells powershell is a clear choice for a cross platform setup. Starting with powershell version 6 it is cross platform. At the time of creating this configuration I'm using powershell version 7.4.2.
Also Powershell is amazing because it uses an object pipeline and not just a text pipeline. This provides so much power and makes basic tasks easier.
TODO: Update details on latest lazy mini module setup
dot
: function for running any git commands but for the bare repo setup that I use for this repository.dots
: similar to dot but runs on all of my most important other missio critical repositories including:Initialize-Dotfiles
: clone any missing repos of mine such as my-wezterm-repo, or my-neovim-repo
Profile File | Used In This Repo | Repository File |
---|---|---|
Machine-Wide, All Hosts: $profile.AllUsersAllHosts |
no | |
Machine-Wide, Host-Specific: $profile.AllUsersCurrentHost |
no | |
User-Specific, All Hosts: $profile.CurrentUserAllHosts |
yes | profile.ps1 |
User-Specific, Host-Specific: $profile.CurrentUserCurrentHost |
no |
My preference is to avoid system-wide profiles because:
- They require root/admin access to write
- I'm the only one using my computer
And preferring CurrentUserAllHosts profile allows me to have a profile that can apply to all of my various computers. At work I use Windows 11, at home I use Arch Linux. If necessary I can have any machine specific config in the CurrentUserCurrentHost profile.
- Login Shells:
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
- Interactive Non-Login Shells:
/etc/bash.bashrc
~/.bashrc
- Always Loaded:
/etc/zshenv
→~/.zshenv
- Login Shells:
/etc/zprofile
→~/.zprofile
- Interactive Shells:
/etc/zshrc
→~/.zshrc
- Logout:
/etc/zlogout
→~/.zlogout
AwesomeWM is a dynamic widow manager for Linux systems.
Files located ./.config/awesome/
and the config root file is
./.config/awesome/rc.lua
.
Application | Configured With | My Config | Emoji Rating | Description |
---|---|---|---|---|
asciinema | conf | ./.config/asciinema/config | | Awesome tool to record and play back terminal sessions |
neomutt | conf | ./.config/neomutt/neomuttrc | Terminal email clinet | |
vifm | vimscript like | ./.config/vifm/vifmrc | Terminal file manager with vim like mappings | |
starship | toml | ./.config/starship.toml | | Beautiful and functional terminal prompt. Highly configurable. |
zathura | vimscript like | ./.config/zathura/zathurarc | Vim-like PDF viewer (NOTE this is a graphical application) | |
rofi | ./.config/rofi/config.rasi | Linux application launcher |
- My Neovim configuration: Stimpack
- My Wezterm configuration: WeztermStimpack
- My Plover configuration: PloverStenoDictionaries