This project is a collection of configuration files and scripts that I use on my machine. They have been open-sourced for my own convenience, so you may use anything you see here at your own risk. Some settings are tailored to meet my personal needs, so running these scripts might not work for you out of the box.
As a successor to
confiles,
this repository has been meticulously designed with cross-platform compatibility
in mind.
This repository has not been ported to a Linux-based platform yet. But in theory, it can be extended to support multiple operating systems.
Install pwsh and allow local scripts
to run:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy UnrestrictedThe bootstrap scripts expect cargo, pipx, and a platform package manager
(winget on Windows, brew on MacOS; Linux is not implemented) on your PATH.
The setting files use the classic Code Page 437 character set; the matching DOS VGA font is available at https://cp437.github.io/. Optionally, follow https://github.com/StefanGreve/profile to import the PowerShell profile.
Run the following scripts to bootstrap your system, preferably in order.
Symlink config files from the appSettings directory by force:
./bootstrap/configure.ps1 -AllAs a result of running this scripts, a new assets directory will be created in
$HOME/Pictures/configuration/assets.
Install all required programs:
./bootstrap/install.ps1 -AllThe installer script also accepts individual flags for user-customized installations
and reads its definitions from the settings folder. You may need to restart your
terminal session for the changes to take effect fully.
MacOS only. -All also writes zsh completion functions to ~/.local/share/zsh/site-functions for the
tools that ship a generator instead of a ready-made function; Homebrew formulae install their own. Re-run
this after upgrading a toolchain, or when a tool was not yet on PATH during the initial run:
./bootstrap/install.ps1 -CompletionUse this Cmdlet to maintain the system.
Update-System -AllMacOS only. Firefox is configured through settings/firefox.mobileconfig, which mirrors the
Microsoft Edge policies in settings/edge.reg wherever Firefox has an equivalent. Configuration
profiles cannot be installed from the command line without an MDM, so this step is manual and only
needs to be done once:
open ./settings/firefox.mobileconfigThen open System Settings > General > Device Management (older releases list it under
Privacy & Security > Profiles), select the downloaded Firefox Policies profile and confirm the
installation. Restart Firefox and verify the result under about:policies.
The profile is stored in the org.mozilla.firefox preference domain rather than inside the
application bundle, so it survives a cask upgrade. Re-run the command above after editing the file;
macOS replaces the profile when the payload identifier matches.
MacOS only. iTerm2 keeps its settings in appSettings/iterm2 through Load settings from a custom
folder or URL, so the application writes the repository copy itself and nothing needs to be symlinked;
cfprefsd refuses to write through a symlink under ~/Library/Preferences. configure.ps1 points a new
machine at the folder, but only while iTerm2 is closed, because iTerm2 overwrites these keys from memory
when it quits. To enable it by hand instead, use Settings > General > Settings and also turn on Save
changes to folder when iTerm2 quits.
Only settings iTerm2 considers portable are exported: window positions, the Sparkle updater state and
everything prefixed with NoSync stay in ~/Library/Preferences.
- The
hostsfile on Windows can not be replaced by a symbolic link - Prior to the Windows 10 Creator Update, creating symbolic links required elevated
permissions. Enabling the
Developer Modein the settings app lifts this restriction. Creating symbolic links doesn't require elevated rights on MacOS (or Linux?). - The SSH config file is configured to look for two separate SSH keys
- Import the GPG key for signing commits with the following command:
gpg --import .\gpg-private-key.asc- In order to use the Work profile of
Set-DevelopmentProfilescript, you need to define the environment variablesGitWorkUserNameandGitWorkUserEmailfirst. - Configure a usage window anchor routine that starts the 5-hour usage windows
at 04:00, 09:00, 14:00, 19:00 and 00:00 CET/CEST by using the
/schedulecommand