Well, yes, but hear me out: This project was driven by the personal need of having to manage several dotfiles for different machines/targets. You want the same experience everywhere: On your Windows workstation along with an Ubuntu WSL instance, your Debian server and your private Arch installation. This tool fixes that problem while being cross-platform and blazingly fast. You won't need multiple sets of dotfile configurations ever again!
Features:
Install punktf using Homebrew on Linux:
sh
brew tap michidk/tools
brew install punktf
Install punktf from AUR on Arch Linux. To install it use your favorite AUR capable package manager (e.g. yay, pikaur):
sh
yay punktf
or
sh
pikaur -S punktf
Install punktf using Chocolatey on Windows:
sh
choco install punktf
To deploy a profile, use the deploy
subcommand:
```sh
punktf deploy windows
punktf --source /home/demo/mydotfiles deploy windows ```
Adding the -h
/--help
flag to a given subcommand, will print usage instructions.
The punktf source folder, is the folder containing the dotfiles and punktf profiles. We recommend setting the PUNKTF_SOURCE
environment variable, so that the dotfiles can be compiled using punktf deploy <profile>
.
punktf searches for the source folder in the following order:
-s
/--source
PUNKTF_SOURCE
The source folder should contain two sub-folders:
profiles\
: Contains the punktf profile definitions (.yaml
or .json
)dotfiles\
: Contains folders and the actual dotfilesExample punktf source folder structure:
ls
+ profiles
+ windows.yaml
+ base.yaml
+ arch.json
+ dotfiles
+ .gitconfig
+ init.vim.win
+ base
+ demo.txt
+ linux
+ .bashrc
+ windows
+ alacritty.yml
Determines where punktf
will deploy files too.
It can be set with:
target
in the punktf profile filePUNKTF_TARGET
Profiles define which dotfiles should be used. They can be a .json
or .yaml
file.
Example punktf profile:
```yaml variables: OS: "windows"
target: "C:\Users\Demo"
dotfiles: - path: "base" - path: "windows/alacritty.yml" target: Path: "C:\Users\Demo\AppData\Local\alacritty.yml" merge: Ask ```
All properties are explained in the wiki.
Please refer to the wiki for the templating syntax.