Hi there π
The basic case β your Macbook is new and so empty. And you need to settle down all basic programs, tools, configs, etc to configure as it should be actually.
First, install the Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Visit the official website if there are any errors occures with the curl command or bash script.
Second, deal with SSH keys before clone the dotfiles repo. Copy this into the ~/.ssh/config file:
Host *
AddKeysToAgent yes
IgnoreUnknown UseKeychain
UseKeychain yes
Host github.com*
User git
HostName github.com
IdentityFile ~/.ssh/github-hamsternik
Host bitbucket.org
User git
HostName bitbucket.org
IdentityFile ~/.ssh/bitbucket-hamsternikGenerate new local ssh key for the personal email. Use github-hamsternik key name.
ssh-keygen -t ed25519 -C "[email protected]"Start ssh-agent in the background:
eval "$(ssh-agent -s)"Add the ssh private key to the ssh-agent.
For GitHub:
ssh-add ~/.ssh/github-hamsternikFor Bitbucket*:
ssh-add ~/.ssh/bitbucket-hamsternikCopy the public key into the clipboard.
For GitHub:
pbcopy < ~/.ssh/github-hamsternik.pubOpen your GitHub account settings and add the new generated public key copied into clipboard.
Check out official GitHub doc to address questions about the SSH generation.
Clone the repo and jump into it:
git clone --recurse-submodules -j8 [email protected]:hamsternik/dotfiles.git && cd dotfilesor if you already cloned the repo without extra key for to load submodules, download all of submodules first:
git submodule update --init --recursiveInstall config files in the users' root directory.
Just FYI β you are using Zsh at this moment. But don't worry, you will migrate to the fish the next turn.
make dotfiles-installNext you need to settle the only zsh-git-prompt plugin I am using today with Zsh configuration.
There are 2 versions of this plugin and my choice (and author's one) is the haskell version, of course.
To set it up, first go and download the latest version of the haskell tool stack called stack.
curl -sSL https://get.haskellstack.org/ | shThen jump to the git plugin directory and use next commands:
stack setupPlease wait until the setup is finished to install the proper version of the ghci and other tools.
Then run:
stack build && stack installNext come back to the user root directory and cd into .vim/bundle. Run:
git clone [email protected]:VundleVim/Vundle.vim.gitInstall all plugins described into the .vimrc config file.
Open vim and run PluginInstall.
Vundle will handle all the work automatically.
The last step is to install applications and CLI tools via the Homebrew.
As you see, I am actively using make so it would be easy to you to run any command to set up the machine "one click".
make brew-install
First, to disable signing your git commits just off the commit.gpgsign option into your git configuration file.
That helps to eliminate any commit issues related the older signing.
To be able to commit with commit.gpgsign true setting in your git configuration, you have to set up GPG unique key on the machine.
Check more information about signing commits and git configuration on the official GitHub doc page.
To generate new GPG key you should install gnupg command-line tool first. Verify whether you have the app on your machine after full Homebrew settings file installation. Otherwithe use $ brew install gnupg command to install the app first. Then open the terminal. Generate a GPG key pair.
gpg --default-new-key-algo rsa4096 --gen-keyThis command is the new way to pass some arguments and omit extra work by-default. The plain version of the command check out at the Generating a new GPG key doc page.
Enter your user-ID information.
I am using hamsternik GitHub account username for that.
Next, use gh account's email.
For more information about email verification on GitHub check this doc out.
git does not commit any changes from any public repo.
Idk what is the reason. For now I have GPG key with 2 years of expiration date w/o passphrase.
Use the next command to list the long form of the GPG keys for which you have both a public and private key:
gpg --list-secret-keys --keyid-format=longFrom the list of GPG keys, copy the long form of the GPG key ID you'd like to use.
E.g. in line sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10] the long form of the GPG generated key is 3AA5C34371567BD2 part.
Copy that text from the terminal and insert into your .gitconfig file. You can find configuration file by the configs/gitconfig path.
Run to copy the public GPG key:
gpg --armor --export CCD4FA8B4F35837031CBFD0E9474253FF8C3327E-EXAMPLE | pbcopyPaste copied public key on GPG keys page on GitHub.
The last step to do is telling gh to refresh new GPG key(s) locally.
Run the command:
gh auth refresh -s read:gpg_keyIf you have any questions please refer the official GitHub page.
1/ When commit changes in any git repo the next error provided down below. TODO: figure out what is the reason.
error: gpg failed to sign the data
fatal: failed to write commit objectIn 2022 I had switched from macOS default shell 'Zsh' to the brand-new eye-candy fish shell.
Before I had Zsh with custom configuration and small set of scripts onboard, but that is all a history right now.
The one thing you have to do is to install fish via Homebrew where the brew-install command already did that for you!
There are multiple things that need to be comprehended, but SO so blessed to speed the process up. Here are some answers how to deal with $PATH variables and aliases:
- Modifying PATH with fish shell [closed]. Command to add / modify PATH vars;
- Modifying PATH with fish shell [closed]. Basic variables for popular programming languages & tools;
Furthermore, there are some official document pages from fish shell addressing issues:
I am using fisher fish plugin manager to handle all my programming stuff around. See below certain plugins.
My resume has been written using LaTeX to process plain text into representable peace of my experience and career. I am not a big fan of huge MacTex package. Official source says about ~5Gb of data. Big Yikes!
Let's install A Smaller Distribution, Basic TeX.
Nowadays basictex brew package will not be installed automatically with the whole Brewfile apps batch.
brew install basictex --caskI am using latexmk Perl script to automate the assembly process for the cv repo.
Check out more about the latexmk documentation.
To install latextmk use tlmgr provided in the basictex package:
sudo tlmgr install latexmkMost of the time the prompt will say you need update tlmgr right after.
sudo tlmgr update --selfThat is it. Go to the cv repo and check it out!
Brew officially provide node.js and NVM as node.js versions manager.
But unfortunatelly for any kind of shell you have settled you need to make extra steps to run nvm up the right way.
To enable NVM for fish you need to export NVM_DIR into your PATH, e.g. $fish_complete_path variable.
Another thing I have done to load nvm dynamically on each shell session is to load NVM somehome.
I am using nvm.fish plugin for that purpose because it handles all the things around for me.
I'm using spaceship-prompt as a default Zsh prompt after a long time trying to customize it on my own. It required zsh to be installed and Powerline Font as well.
Steps to Deploy:
- download the repo
- cd to the
fontsdirectory - copy fonts to the
~/Library/Fontsdirectory
I switched from the default Terminal.app macOS application to the cross-platform, GPU-accelerated and popular terminal emulator. Say hello, alacritty ππ»
The topmost reason of doing that is that the Terminal.app does not support true colors and I basically can not make my vim so much brilliant as I can do, obviously.
Right now I am using onedark colorscheme paired with the lightline which is veeery sweety yeah!
There is a discussion thread on the Apple forum about 24bit True Color support in macOS Terminal.app. The short answer: NO.
The whole Emacs installation & system configuration I got by these links
To install Emacs Client with Doom configuration framework just run these 2 commands and give 3-5 min:
git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.emacs.d
~/.emacs.d/bin/doom installTo launch emacs daemon within every user login create the next file by the pass
~/Library/LaunchAgents/gnu.emacs.daemon.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>gnu.emacs.daemon</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/emacs</string>
<string>--daemon</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceDescription</key>
<string>GNU Emacs Daemon</string>
</dict>
</plist>and use launchctl commands to load the script due the startup:
launchctl unload ~/Library/LaunchAgents/gnu.emacs.daemon.plist
launchctl load -w ~/Library/LaunchAgents/gnu.emacs.daemon.plist[UPD] Both of these commands are deprecated by Apple starting from 10.10.
Instead use new bootstrap and bootout commands with appropriate user's UID and service-name:
id -u "Nikita Khomitsevych" # To know current user UID
sudo launchctl bootstrap gui/<user's UID> ~/Library/LaunchAgents/gnu.emacs.daemon.plist # Use `sudo` to get more detailed errorBasically, I am not a cloud engineer, so I really need some space to recall the basic information about i.e. how to run a mongoDB service localy. Here it is!
- to run MongoDB process
$ brew services start mongodb-community- to stop MongoDB as macOS service
$ brew services stop mongodb-communityMore info how to install and work with the latest version of MongoDB Community take a look in the documentation page.