All Projects → lytedev → dotfiles

lytedev / dotfiles

Licence: other
My personal app/env configs and dotfiles.

Programming Languages

shell
77523 projects
lua
6591 projects
Nix
1067 projects
KakouneScript
24 projects
Vim Script
2826 projects
CSS
56736 projects

Projects that are alternatives of or similar to dotfiles

Appconfiguration
Questions, feedback and samples for Azure App Configuration service
Stars: ✭ 116 (+329.63%)
Mutual labels:  config, configuration, configuration-management
Simple Settings
A simple way to manage your project settings.
Stars: ✭ 165 (+511.11%)
Mutual labels:  config, configuration, configuration-management
Node Convict
Featureful configuration management library for Node.js
Stars: ✭ 1,855 (+6770.37%)
Mutual labels:  config, configuration, configuration-management
salak.rs
A multi layered configuration loader and zero-boilerplate configuration parser.
Stars: ✭ 27 (+0%)
Mutual labels:  config, environment, configuration
libconfini
Yet another INI parser
Stars: ✭ 106 (+292.59%)
Mutual labels:  config, configuration, configuration-management
Node No Config
Config and resource loader
Stars: ✭ 45 (+66.67%)
Mutual labels:  config, configuration, configuration-management
parse it
A python library for parsing multiple types of config files, envvars & command line arguments that takes the headache out of setting app configurations.
Stars: ✭ 86 (+218.52%)
Mutual labels:  config, configuration, configuration-management
Ini Parser
Read/Write an INI file the easy way!
Stars: ✭ 643 (+2281.48%)
Mutual labels:  config, configuration, configuration-management
sitri
Sitri - powerful settings & configs for python
Stars: ✭ 20 (-25.93%)
Mutual labels:  config, configuration, configuration-management
ini
📝 Go INI config management. support multi file load, data override merge. parse ENV variable, parse variable reference. Dotenv file parse and loader. INI配置读取管理,支持多文件加载,数据覆盖合并, 解析ENV变量, 解析变量引用。DotEnv 解析加载
Stars: ✭ 72 (+166.67%)
Mutual labels:  config, environment, configuration-management
Configuration
Library for setting values to structs' fields from env, flags, files or default tag
Stars: ✭ 37 (+37.04%)
Mutual labels:  config, configuration, configuration-management
cfg-rs
A Configuration Library for Rust Applications
Stars: ✭ 18 (-33.33%)
Mutual labels:  config, environment, configuration
Config Rs
⚙️ Layered configuration system for Rust applications (with strong support for 12-factor applications).
Stars: ✭ 915 (+3288.89%)
Mutual labels:  config, configuration, configuration-management
Dynaconf
Configuration Management for Python ⚙
Stars: ✭ 2,082 (+7611.11%)
Mutual labels:  config, configuration, configuration-management
Strictyaml
Type-safe YAML parser and validator.
Stars: ✭ 836 (+2996.3%)
Mutual labels:  config, configuration, configuration-management
Config
Easiest way to add multi-environment yaml settings to Rails, Sinatra, Pandrino and other Ruby projects.
Stars: ✭ 1,821 (+6644.44%)
Mutual labels:  config, configuration, configuration-management
Centraldogma
Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2
Stars: ✭ 378 (+1300%)
Mutual labels:  config, configuration, configuration-management
Koanf
Light weight, extensible configuration management library for Go. Built in support for JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper.
Stars: ✭ 450 (+1566.67%)
Mutual labels:  config, configuration, configuration-management
Environ Config
Python Application Configuration With Environment Variables
Stars: ✭ 210 (+677.78%)
Mutual labels:  config, environment, configuration
superconfig
Access environment variables. Also includes presence validation, type coercion and default values.
Stars: ✭ 33 (+22.22%)
Mutual labels:  config, configuration, configuration-management

lytedev's dotfiles

My various configuration files. I can't recommend using them directly, just take what you like.

Links

🖥️ Upstream🐙 GitHub Mirror

Basic Setup

curl -LO lyte.dev/df.sh && sh -i df.sh

Manual Setup

git clone https://git.lyte.dev/lytedev/dotfiles.git "$HOME/.config/lytedev-dotfiles"
"$HOME/.config/lytedev-dotfiles/common/bin/dotfiles-setup"

Repo Structure

My dotfiles are composed together by layering "environments" since I want my dotfiles to be flexible across servers, laptops, desktops, and even my phone (via Termux).

lytedev-dotfiles
|- common --- common to all hosts and operating systems
| |- bin ------- programs or scripts useful to all hosts/OSs
| |- data ------ shared storage for certain scripts
| `- {app...} -- configuration related to {app}
|- host ----- specific to specific hosts or types of hosts
| |- desktop --- for desktop-class machines
| |- headless -- for server-class machines with no display/GUI
| `- laptop ---- for portable, battery-having machines
`- os ------- specific to operating systems
  |- linux ----- you alread know <3
  |  |- desktop ------ for desktop-class machines
  |  |- headless ----- for server-class machines with no display/GUI
  |  |- bin ---------- programs/scripts useful to linux machines
  |  |- {distro...} -- configuration related to {distro}
  |  `- {app...} ----- linux-specific configuration related to {app}
  `- macos ----- for those stupid macbooks work tries to make you use

Any environment should be able to extend the configuration of any application in some unique way. This isn't possible with all applications, of course, since some programs do not make it easy (or possible) to include multiple configuration files or to extend a single file by having it include others via globs or some other mechanism.

One example of doing this well is with fish:

for s in $ENV_PATH/*/config.d.fish; source $s (dirname $s); end

This way, if any environment (a dir in $ENV_PATH) has a config.f.fish script inside, it will be sourced by the main configuration file.

Likewise, some setup only happens in certain environments via the dotfiles-setup.d.fish script.

One important note on environments is that even though they are laid out like a tree (directories), you do NOT automatically get the parent-environment's configuration, so if you are setting up a Arch Linux desktop machine, you cannot only link the os/linux/arch and host/desktop environments but will also need to include os/linux if you want the Linux-generic configuration.

Post-Setup

You will want to symlink relevant environment layers into the $ENV_PATH in order to have your OS-specific applications be configured and common applications configured for the host OS.

There's a handy fzf-based script that makes this super easy (note that you can select multiple environments with TAB):

dotfiles-link-environments

You can also list the possible environments:

cat $DOTFILES_PATH/common/envs

And then link them yourself (note that environments must be in $ENV_PATH and cannot be nested, so replacing slashes with dashes is a nice way to show what's going on):

ln -s (pwd)/os/linux $ENV_PATH/os-linux
ln -s (pwd)/os/linux/arch $ENV_PATH/os-linux-arch
ln -s (pwd)/host/laptop $ENV_PATH/host-laptop
ln -s (pwd)/host/laptop/third $ENV_PATH/os-laptop-third
# etc...

And run setup again once you've finished linking all related environments:

dotfiles-setup

Updating

Fork this repo, update your origin to point to your fork, and commit changes:

git remote origin set-url $YOUR_REPO

Then you can just pull your changes down from wherever.

No I want your updates

You don't. I rip and tear my dotfiles all the time and will break your entire machine. Remember about not using other people's dotfiles directly?

But if you must, you can add an upstream remote to point to my repo:

git remote add upstream https://git.lyte.dev/lytedev/dotfiles.git

Then you can fetch and merge in my changes whenever you want:

git fetch upstream
git merge upstream/master

Screenshots

Arch Linux Desktop

Battlestation Desktop Screenshot

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].