Compare commits

...

12 Commits

Author SHA1 Message Date
Ismo Vuorinen
7921e079da Documentation, show pid in x-open-ports, tweaks 2022-12-15 16:08:06 +02:00
Ismo Vuorinen
2369eae0ef foreach 2022-12-15 14:38:32 +02:00
Ismo Vuorinen
6dc5849f9c GitLab cli, glab 2022-12-14 15:40:03 +02:00
Ismo Vuorinen
5cc0018f1d Add svn, postman and fonts! 2022-12-14 15:38:02 +02:00
8fbeca17a4 Tweaks 2022-12-14 15:00:30 +02:00
1d1a95fad2 Updated README.md 2022-12-14 14:16:23 +02:00
3acc948c23 Tweaked defaults 2022-12-13 08:13:57 +02:00
0f94386231 Add slack to brewfile 2022-12-13 08:02:52 +02:00
5e06a735cc Add linters (#1)
* Add linters and ignore antigen.zsh
2022-12-12 13:50:31 +02:00
Ismo Vuorinen
9471a63475 Better defaults, removed old .gitignore lines 2022-12-12 11:16:20 +02:00
Ismo Vuorinen
01328498b6 Moved antigen.zsh to .local/bin, updated links 2022-12-12 10:44:59 +02:00
Ismo Vuorinen
bab6f7daab Add antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv 2022-12-12 10:38:33 +02:00
13 changed files with 179 additions and 75 deletions

View File

@@ -17,10 +17,13 @@ indent_size = 2
indent_size = 2
tab_width = 2
shell_variant = posix # like -ln=posix
binary_next_line = true # like -bn
switch_case_indent = true # like -ci
space_redirects = true # like -sr
keep_padding = false # like -kp
function_next_line = true # like -fn
never_split = true # like -ns
shell_variant = bash # like -ln=posix
binary_next_line = true # like -bn
switch_case_indent = true # like -ci
space_redirects = true # like -sr
keep_padding = false # like -kp
function_next_line = true # like -fn
never_split = false # like -ns
[local/bin/antigen.zsh]
ignore = true

43
.github/workflows/linters.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: reviewdog
on: [ push ]
jobs:
linters:
name: Linters
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: GitHub Actions
uses: reviewdog/action-actionlint@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
- name: detect-secrets
uses: reviewdog/action-detect-secrets@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
- name: markdownlint
uses: reviewdog/action-markdownlint@v0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
- name: shfmt
uses: reviewdog/action-shfmt@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
shfmt_flags: |
--find
--list
--write
--diff
--simplify
--language-dialect bash
--indent 2
--binary-next-line
--case-indent
--space-redirects
--func-next-line

View File

@@ -7,6 +7,7 @@ tap "github/gh"
tap "homebrew/autoupdate"
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/cask-fonts"
tap "homebrew/core"
tap "homebrew/services"
tap "shivammathur/extensions"
@@ -68,6 +69,8 @@ brew "git-extras"
brew "git-flow-avh"
# See your latest local git branches, formatted real fancy
brew "git-recent"
# Open-source GitLab command-line tool
brew "glab"
# GNU implementation of the famous stream editor
brew "gnu-sed"
# Validating, recursive, caching DNS resolver
@@ -128,6 +131,8 @@ brew "ruby"
brew "shellcheck"
# Autoformat shell script source code
brew "shfmt"
# Version control system designed to be a better CVS
brew "subversion"
# Send macOS User Notifications from the command-line
brew "terminal-notifier", link: false
# Tool to build, change, and version infrastructure
@@ -186,6 +191,18 @@ cask "docker"
cask "fig"
# Unofficial overcast.fm podcast app
cask "fog"
# Typeface made for developers
cask "font-jetbrains-mono"
# Developer targeted fonts with a high number of glyphs
cask "font-jetbrains-mono-nerd-font"
cask "font-lato"
cask "font-open-sans"
# Font with a mechanical skeleton and the forms are largely geometric
cask "font-roboto"
cask "font-source-code-pro"
cask "font-source-code-pro-for-powerline"
cask "font-source-sans-pro"
cask "font-source-serif-pro"
# Open Source Webfont Converter
cask "fontplop"
# GIT client
@@ -200,6 +217,8 @@ cask "jetbrains-toolbox"
cask "lens"
# Reverse proxy, secure introspectable tunnels to localhost
cask "ngrok"
# Collaboration platform for API development
cask "postman"
# Display image info and preview unsupported formats in QuickLook
cask "qlimagesize"
# QuickLook generator for Markdown files
@@ -216,6 +235,8 @@ cask "rectangle"
cask "sequel-ace"
# Collection of apps available by subscription
cask "setapp"
# Team communication and collaboration software
cask "slack"
# Sound and audio controller
cask "soundsource"
# Application for inspecting installer packages

View File

@@ -1,39 +1,58 @@
# .dotfiles
The folder structure follows [XDG Base Directory Specification][xdg] where possible.
Welcome to [ivuorinen](https://github.com/ivuorinen)'s .dotfiles repository. It's a hodgepodge of scripts
and configurations, tests and mistakes I'm not aware of yet. As I find more interesting tools, configs and
other stuff, this repository will live accordingly.
Please for the love of everything good do not use these 1:1 as your own dotfiles,
fork or download the repo as a zip and go from there with your own configs.
## Setup
## rcrc
### First time setup
Update install script
1. Clone this repository to `$HOME/.dotfiles`
2. `bash $HOME/.dotfiles/scripts/settler.sh`
3. ???
4. Profit
```bash
rcup -B 0 -g > ~/.dotfiles/install.sh | shfmt -w -l ~/.dotfiles/install.sh
```
Note: there's a bit chicken/egg situation, because settler assumes you don't have git,
and you need git to clone the repo. This will change soon™.
## brew
## Interesting files and locations
Install everything described in `Brewfile`
### Special folders
```bash
brew bundle install --force --file=~/.dotfiles/Brewfile
```
| Path | Description |
|--------------------|-------------------------------------------------------------------------------------|
| `.github` | GitHub Repository configuration files. Not part of the dotfiles per se. |
| `host-{hostname}/` | Host specific dotfiles. Configurations that should apply to that host only. |
| `local/bin` | Helper scripts that I've collected or wrote to make life easier. |
| `scripts` | Setup scripts. Some can be run many times, some are meant only for the first round. |
### dotfile folders
Update `Brewfile`
| Repo | Destination | Description |
|-----------|-------------|------------------------------------------------------------------|
| `config/` | `.config/` | Configurations for applications. |
| `local/` | `.local/` | XDG Base folder, contains `bin`, `share` and `state` for example |
| `ssh/` | `.ssh/` | SSH Configurations. |
```bash
brew bundle dump --force --file=~/.dotfiles/Brewfile --describe
```
### dfm - the dotfiles manager
Enable automatic brew updates and upgrades.
`.local/bin/dfm` is a shell script that has some tools that help with dotfiles management.
```bash
brew autoupdate start 43200 --upgrade --cleanup --immediate
```
### `scripts/install.sh` - dotfiles linker
## XDG Variables
The `scripts/install.sh` is a `rcm` generated shell script that does all the necessary linking.
To refresh the file, you can run `dfm dotfiles update`
## Configuration
The folder structure follows [XDG Base Directory Specification][xdg] where possible.
### XDG Variables
| Var | Default |
|--------------------|----------------------|
@@ -42,8 +61,7 @@ brew autoupdate start 43200 --upgrade --cleanup --immediate
| `$XDG_STATE_HOME` | `$HOME/.local/state` |
| `$XDG_CONFIG_HOME` | `$HOME/.config` |
- `$XDG_DATA_HOME` defines the base directory relative to which user-specific data files should be stored. If `$XDG_DATA_HOME` is either not set or empty, a default equal to ` $HOME/.local/share` should be used.
- `$XDG_DATA_HOME` defines the base directory relative to which user-specific data files should be stored. If `$XDG_DATA_HOME` is either not set or empty, a default equal to `$HOME/.local/share` should be used.
- `$XDG_CONFIG_HOME` defines the base directory relative to which user-specific configuration files should be stored. If `$XDG_CONFIG_HOME` is either not set or empty, a default equal to `$HOME/.config` should be used.
- `$XDG_STATE_HOME` defines the base directory relative to which user-specific state files should be stored. If `$XDG_STATE_HOME` is either not set or empty, a default equal to `$HOME/.local/state` should be used.
- The `$XDG_STATE_HOME` contains state data that should persist between (application) restarts, but that is not important or portable enough to the user that it should be stored in `$XDG_DATA_HOME`. It may contain:
@@ -52,5 +70,4 @@ brew autoupdate start 43200 --upgrade --cleanup --immediate
- User-specific executable files may be stored in `$HOME/.local/bin`. Distributions should ensure this directory shows up in the UNIX `$PATH` environment variable, at an appropriate place.
- `$XDG_DATA_DIRS` defines the preference-ordered set of base directories to search for data files in addition to the `$XDG_DATA_HOME` base directory. The directories in `$XDG_DATA_DIRS` should be seperated with a colon ':'.
[xdg]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html

View File

@@ -13,15 +13,6 @@ _theme
*.sql.gz
*.WordPress.*.xml
cachegrind.out.*
client-*.json
composer.phar
devops/.infra_ip_cache
wp_*.sh
redirectRules.csv
results_redirectRules.csv
testRedirect.sh
uploads-webpc
webpc-passthru.php
auth.json

View File

@@ -23,7 +23,7 @@ function section_install
bash "$DOTFILES/scripts/settler.sh" && echo "🎉 Done!"
;;
antigen)
curl -L git.io/antigen > "$DOTFILES/config/antigen.zsh" && echo "🎉 Done!"
curl -L git.io/antigen > "$DOTFILES/local/bin/antigen.zsh" && echo "🎉 Done!"
;;
defaults)
bash "$DOTFILES/scripts/set-defaults.sh" && echo "🎉 Done!"
@@ -81,19 +81,20 @@ function section_dotfiles
case "$1" in
link)
rcup -B "$HOSTNAME" -v && echo "🎉 Done!"
rcup -B "$HOSTNAME" -f -v && echo "🎉 Done!"
;;
update)
# Updates .dotfiles/scripts/install.sh and formats it
rcup -B 0 -g \
| tee "$INSTALL_SCRIPT" 1> /dev/null \
&& shfmt -w -l "$INSTALL_SCRIPT" \
&& sed -i '' "s|$HOME|\$HOME|g" "$INSTALL_SCRIPT" \
&& echo "🎉 Done!"
&& sed -i '' "s|$HOME|\$HOME|g" "$INSTALL_SCRIPT"
$0 dotfiles shfmt
echo "🎉 Done!"
;;
shfmt)
# Format shell scripts according to following rules.
shfmt \
--find \
--list \
--write \
--diff \
@@ -104,13 +105,7 @@ function section_dotfiles
--case-indent \
--space-redirects \
--func-next-line \
"$DOTFILES" \
"$DOTFILES/local/bin/dotfiles" \
"$DOTFILES/local/bin/x-check-git-attributes" \
"$DOTFILES/local/bin/x-open-ports" \
"$DOTFILES/config/alias" \
"$DOTFILES/config/exports" \
"$DOTFILES/config/functions"
"$DOTFILES"
;;
*)
echo "$USAGE_PREFIX [link | update | shfmt]"

16
local/bin/foreach Normal file
View File

@@ -0,0 +1,16 @@
#!/usr/bin/env bash
#
# foreach <folder> <commands that should be run to each file>
#
# Source: https://github.com/mvdan/dotfiles/blob/master/.bin/foreach
cmd=$1
shift
for dir in $($cmd); do
(
echo "$dir"
cd "$dir" || exit 1
eval "$@" # allow multiple commands like "foo && bar"
)
done

View File

@@ -6,14 +6,15 @@
# Originally from: https://www.commandlinefu.com/commands/view/8951
# Original author: https://www.commandlinefu.com/commands/by/wickedcpj
#
echo 'User: Command: Port:'
echo '====================================================='
echo 'User: Command: PID: Port:'
echo '========================================================='
lsof -i 4 -P -n +c 0 \
| grep -i 'listen' \
| awk '{print $3, $1, $9}' \
| awk '{print $3, $1, $2, $9}' \
| sed 's/ [a-z0-9\.\*]*:/ /' \
| sort -k 3 -n \
| xargs printf '%-20s %-25s %-5s\n' | uniq
| xargs printf '%-15s %-25s %-8s %-5s\n' \
| uniq
echo ""

View File

@@ -69,7 +69,6 @@ handle_file_ln()
handle_file_ln "$HOME/.dotfiles/bash_profile" "$HOME/.bash_profile"
handle_file_ln "$HOME/.dotfiles/bashrc" "$HOME/.bashrc"
handle_file_ln "$HOME/.dotfiles/config/alias" "$HOME/.config/alias"
handle_file_ln "$HOME/.dotfiles/config/antigen.zsh" "$HOME/.config/antigen.zsh"
handle_file_ln "$HOME/.dotfiles/config/exports" "$HOME/.config/exports"
handle_file_ln "$HOME/.dotfiles/config/functions" "$HOME/.config/functions"
handle_file_ln "$HOME/.dotfiles/config/gh/config.yml" "$HOME/.config/gh/config.yml"
@@ -78,7 +77,9 @@ handle_file_ln "$HOME/.dotfiles/config/git/gitignore" "$HOME/.config/git/gitigno
handle_file_ln "$HOME/.dotfiles/config/wtf/config.yml" "$HOME/.config/wtf/config.yml"
handle_file_ln "$HOME/.dotfiles/git_profiles" "$HOME/.git_profiles"
handle_file_ln "$HOME/.dotfiles/huskyrc" "$HOME/.huskyrc"
handle_file_ln "$HOME/.dotfiles/local/bin/dotfiles" "$HOME/.local/bin/dotfiles"
handle_file_ln "$HOME/.dotfiles/local/bin/antigen.zsh" "$HOME/.local/bin/antigen.zsh"
handle_file_ln "$HOME/.dotfiles/local/bin/dfm" "$HOME/.local/bin/dfm"
handle_file_ln "$HOME/.dotfiles/local/bin/foreach" "$HOME/.local/bin/foreach"
handle_file_ln "$HOME/.dotfiles/local/bin/x-check-git-attributes" "$HOME/.local/bin/x-check-git-attributes"
handle_file_ln "$HOME/.dotfiles/local/bin/x-open-ports" "$HOME/.local/bin/x-open-ports"
handle_file_ln "$HOME/.dotfiles/rcrc" "$HOME/.rcrc"

View File

@@ -1,5 +1,10 @@
#!/usr/bin/env bash
echo 'start osx/set-defaults.sh'
#
# set-defaults.sh - Sets macOS Defaults that I like
#
# This script contains large portions from following scripts:
# - https://github.com/freekmurze/dotfiles/blob/main/macos/set-defaults.sh
#
# Ask for the administrator password upfront
sudo -v
@@ -22,8 +27,8 @@ sudo nvram SystemAudioVolume=" "
# Menu bar: disable transparency
#defaults write NSGlobalDomain AppleEnableMenuBarTransparency -bool false
# Set sidebar icon size to medium
defaults write NSGlobalDomain NSTableViewDefaultSizeMode -int 2
# Set sidebar icon size to small
defaults write NSGlobalDomain NSTableViewDefaultSizeMode -int 1
# Increase window resize speed for Cocoa applications
defaults write NSGlobalDomain NSWindowResizeTime -float 0.001
@@ -125,9 +130,9 @@ defaults write com.apple.screensaver askForPasswordDelay -int 0
defaults write com.apple.finder NewWindowTarget -string "PfDe"
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/Desktop/"
# Show icons for hard drives, servers, and removable media on the desktop
# Show icons for external hard drives, servers, and removable media on the desktop
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool false
defaults write com.apple.finder ShowMountedServersOnDesktop -bool true
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true
@@ -156,7 +161,7 @@ defaults write com.apple.frameworks.diskimages skip-verify-remote -bool true
# Use list view in all Finder windows by default
# Four-letter codes for the other view modes: `icnv`, `clmv`, `Flwv`
defaults write com.apple.finder FXPreferredViewStyle -string "clmv"
defaults write com.apple.finder FXPreferredViewStyle -string "icnv"
# Disable the warning before emptying the Trash
defaults write com.apple.finder WarnOnEmptyTrash -bool false
@@ -182,7 +187,7 @@ defaults write com.apple.finder FXInfoPanesExpanded -dict \
#defaults write com.apple.screencapture "location" -string "~/Documents/Screenshots"
# Exclude date and time in screenshot filenames
defaults write com.apple.screencapture "include-date" -bool false
defaults write com.apple.screencapture "include-date" -bool true
# Change the default screenshot file name
defaults write com.apple.screencapture "name" -string "screenshot"
@@ -194,16 +199,16 @@ defaults write com.apple.screencapture "name" -string "screenshot"
# Prevent applications from bouncing in Dock
defaults write com.apple.dock no-bouncing -bool true
# Set the icon size of Dock items to 72 pixels
defaults write com.apple.dock tilesize -int 72
# Set the icon size of Dock items to 30 pixels
defaults write com.apple.dock tilesize -int 30
# Hide indicator lights for open applications in the Dock
defaults write com.apple.dock show-process-indicators -bool false
defaults write com.apple.dock show-process-indicators -bool true
# Wipe all (default) app icons from the Dock
# This is only really useful when setting up a new Mac, or if you dont use
# the Dock to launch apps.
defaults write com.apple.dock persistent-apps -array ""
# defaults write com.apple.dock persistent-apps -array ""
# Disable Dashboard
defaults write com.apple.dashboard mcx-disabled -bool true
@@ -226,8 +231,11 @@ defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
# Enable the Develop menu and the Web Inspector in Safari
defaults write com.apple.Safari IncludeDevelopMenu -bool true
defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled -bool true
defaults write com.apple.Safari \
WebKitDeveloperExtrasEnabledPreferenceKey -bool true
defaults write com.apple.Safari \
com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled \
-bool true
# Dont display the annoying prompt when quitting iTerm
#defaults write com.googlecode.iterm2 PromptOnQuit -bool false
@@ -268,10 +276,16 @@ defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4
###############################################################################
# Disable smart quotes as its annoying for messages that contain code
defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "automaticQuoteSubstitutionEnabled" -bool false
defaults write com.apple.messageshelper.MessageController \
SOInputLineSettings \
-dict-add "automaticQuoteSubstitutionEnabled" \
-bool false
# Disable continuous spell checking
defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "continuousSpellCheckingEnabled" -bool false
defaults write com.apple.messageshelper.MessageController \
SOInputLineSettings \
-dict-add "continuousSpellCheckingEnabled" \
-bool false
###############################################################################
# Kill affected applications #

View File

@@ -2,6 +2,7 @@
#
# Settler - my macOS setup automator
# Ismo Vuorinen <https://github.com/ivuorinen> 2018
#
# Ask for the administrator password upfront
sudo -v
@@ -43,8 +44,8 @@ else
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
bash ../local/bin/dfm brew install && "Installed Brewfile contents"
bash ../local/bin/dfm dotfiles link && "Linked all dotfiles"
bash "$HOME/.dotfiles/local/bin/dfm" brew install && "Installed Brewfile contents"
bash "$HOME/.dotfiles/local/bin/dfm" dotfiles link && "Linked all dotfiles"
read -r -p "Do you want to set macOS defaults? (y/N) " yn

3
zshrc
View File

@@ -42,7 +42,7 @@ x-load-configs
ssh-add -A 2>/dev/null;
# Try to load antigen, if present
[[ -f "$HOME/.config/antigen.zsh" ]] && source "$HOME/.config/antigen.zsh"
[[ -f "$HOME/.local/bin/antigen.zsh" ]] && source "$HOME/.local/bin/antigen.zsh"
# antigen is present
if command -v antigen &> /dev/null; then
@@ -64,6 +64,7 @@ if command -v antigen &> /dev/null; then
hash docker 2>/dev/null && antigen bundle docker
hash nvm 2>/dev/null && antigen bundle Sparragus/zsh-auto-nvm-use
hash python 2>/dev/null && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
hash jq 2>/dev/null && antigen bundle reegnz/jq-zsh-plugin
hash docker-compose 2>/dev/null && antigen bundle sroze/docker-compose-zsh-plugin
# antigen bundle voronkovich/phpcs.plugin.zsh