/MyCrossPlatformDotfiles

Set of program configurations and powershell profiles

Primary LanguageLuaGNU General Public License v3.0GPL-3.0

Dereks Cross-Platform Configuration Files

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 💖!

Quick Installation Guide

Prerequisites before installing:

  • git
  • Powershell 7 or higher
# Download the script
Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/derekthecool/MyCrossPlatformDotfiles/master/Scripts/Dots/DotfileManagement.ps1' -OutFile ~/dot.ps1

# Dot source the script
. ~/dot.ps1

# Run the function to setup dotfiles
Initialize-Dotfiles && rm ~/dot.ps1

Cross Platform Support

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.

Why Powershell?

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.

Powershell Module [Dots](./Scripts/Dots/Dots.psd1]

Run Pester Tests on Linux Run Pester Tests Windows

This repo comes with a powershell module included. This module is loaded with functions to help with managing this repo as a git bare repo. Many more functions are included as well.

For a fresh install run the script to get dependency modules installed

./Scripts/Bootstrap-RequiredModules.ps1

Now the module can be loaded in two different ways.

  1. Explicit load with Import-Module -Force Dots. After running this every function from the module will be availble for use.

  2. Calling any of the lazy loaded functions from Dots.psd1 As of July 2024, this list is pretty short containing only these functions:

    • 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

Powershell Profile

You can find where your profile is from the built in variable $PROFILE. It is important to not load more than necessary in your powershell profile.

Functions that are not essential to be in the profile, should be moved into the powershell module ./Scripts/Dots/

Included Programs

Window Managers

Test my awesome window manager lua configuration

AwesomeWM is a dynamic widow manager for Linux systems. Files located ./.config/awesome/ and the config root file is ./.config/awesome/rc.lua.

General Purpose Tools

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

Separate Repositories Referenced