My framework for my configuration/dot files.
| Name | Default | Description |
|---|---|---|
install_data |
$DATA or /data |
|
install_home |
$HOME |
|
install_xdg_config_home |
$XDG_CONFIG_HOME or else $install_home/.config |
|
install_xdg_data_home |
$XDG_DATA_HOME or else $install_home/.local/share |
|
install_user_dirs |
true |
Create and link replacements for common home directories in $install_data |
set_ssh_origin |
true |
Set SSH origin for git repo |
MSYS |
N/A | See below |
These are saved to install_saved_vars.sh.
- Install Flox
- Make sure these programs are installed:
- Zsh
- GnuPG
- git
- Ex:
sudo apt install zsh gnupg git - Optionally:
- xclip
- ptpython
- ipython
- Ex:
sudo apt install xclip ptpython ipython
- Create a
/datadirectory (or whatever$install_datais)sudo mkdir /datasudo chown $USER:$USER /data
- Place/clone this repository at
/data/configuration.cd /datagit clone --recurse-submodules https://github.com/iguessthislldo/configurationcd configuration
bash install_data.shto do the initial setup, clearing existing default stuff in the home directory and repeating the command as necessary until it's able to finish.- Set Zsh as the default shell, for example:
chsh -s /usr/bin/zsh - At this point now or later we can either run
zshmanually or relogin to have it take its place as the default shell. - If copying from an existing
/dataon a source system:- To copy files using SSH:
- Make sure an SSH server is installed and running on the source system.
- Run
bash install_data.sh import HOSTwhereHOSTon the destination system.
- To copy files manually:
- Run
bash install_data.sh exporton the source system. - Copy
/data/configuration/export.txzto/data/export.txzon the destination system. - Run
bash install_data.sh importon destination system.
- Run
bash install_data.shone final time to have it take up the imported files.
- To copy files using SSH:
- Set terminal font if desired.
- Run
(cd ~/cfg/git && bash setup.sh)to setup Git.
Run scripts in misc-setup as needed.
- If the destination system is running a SSH server you're using to do this, it
could make new logins impossible: (
Permission denied (publickey)) because the.sshdirectory was replaced with a symlink..sshhas to stay a normal directory: Run$CONFIG/misc-setup/copy-ssh.shto copy everything and make sure the permissions are good. - Run
$CONFIG/misc-setup/exclusive-perms.sh $CONFIG/gnupgif gnupg has problems signing git commits.
-
NEEDS MORE WORK
- Neovim:
- Does not work with shortcut-based links
- Git
- Git id after import isn't correct
- Line endings
- Something to check if
msys2-packages.txtchanged and offer to install or remove them automatically would be nice.
- Neovim:
-
Open MSYS2 UCRT64 Shell
-
Decide on symlink kind (MSYS2 default is deep copy!):
- Native-based:
- Windows needs to be put into "developer mode" (requires admin) to enable native links.
export MSYS=winsymlinks:nativestrict
- Shortcut-based:
- Works in explorer, but kinda a kludge, and doesn't work sometimes (neovim).
export MSYS=winsymlinks:lnk
- Native-based:
-
Update and install essentials:
pacman -Syu pacman -S --needed git zsh
Might need to export a certificate for MSYS2 to use on cooperate network. Might need to rename the certificate after exporting.
-
Create a
datadirectory:mkdir data cd data export install_data=$(realpath .)
-
Place/clone this repository at
data/configuration:git clone --recurse-submodules https://github.com/iguessthislldo/configuration cd configuration -
Install list of packages:
pacman -S --needed - < msys2-packages.txt -
Set remaining values and run
install_data.shuntil it succeeds.export install_xdg_config_home=$(cygpath --unix "$LOCALAPPDATA") export install_xdg_data_home=$(cygpath --unix "$LOCALAPPDATA") export install_user_dirs=false bash install_data.sh
-
Decide on terminal:
- Bundled Mintty:
- Works, but it doesn't have the nerd font unless installed and selected, so fonts are broken.
- Windows Terminal:
- Also no nerd font out of the box.
- Run
misc-setup/set-msys2-win-term-profile.sh
- WezTerm:
- Has nerd font builtin.
- Download WezTerm.
- Bundled Mintty:
Run isolated.py --create --clone isoenv true and
isolated.py isoenv --graph to regenerate from committed. Requires Graphviz.
This doesn't include sh/rc.d/50_aliases.sh or aliases added by oh-my-zsh.
Usage: u [COUNT]
Move up COUNT number of directories, like cd (../)*COUNT. COUNT is 1 by
default.
Usage: e [ARGS...]
Python script that passes arguments through to $EDITOR.
If the $EDITOR has vi in the name, then it assumes it's vi-compatible and
will change arguments of the form FILENAME:NUMBER to FILENAME +NUMBER.
Set predefined git commit identity information for a repository.
See gitid -h for usage.
TODO: Info on how to setup identities
Usage: makej [ARGS...]
Run make with ARGS, but also pass -j and the number of CPU cores plus 1.
Command checks the current directory and all of its parents for setenv.sh,
and starts an instance of the current shell with that setenv.sh sourced.
Command checks the current directory and all of its parents for a Python virtualenv, and starts an instance of the current shell with that virtualenv activated.
Usage: args [ARGS...]
Simple python script that lists the arguments it was passed. Use to see how the shell is passing arguments to a program.
Usage: h DAYS
Print the shell history for the given number of days ago, which can be 0 for today.