Update README.md
This change was long overdue. I'm updating this README.md to reflect the state of my monorepo.
This commit is contained in:
		
							parent
							
								
									3555f5a418
								
							
						
					
					
						commit
						d0d331df09
					
				
					 1 changed files with 70 additions and 172 deletions
				
			
		
							
								
								
									
										242
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										242
									
								
								README.md
									
										
									
									
									
								
							|  | @ -1,187 +1,85 @@ | ||||||
| # briefcase | # briefcase | ||||||
| 
 | 
 | ||||||
| Welcome to my briefcase: my monorepo. | Welcome to my monorepo: briefcase. | ||||||
| 
 | 
 | ||||||
| I'm attempting to amass a collection of packages that span a variety of | Herein you will find a variety of libraries, packages, and documents. Some of | ||||||
| languages while minimizing the costs of sharing the code. This also includes | this work in finished and other work is incomplete or just a sketch for a | ||||||
| configuration for things like emacs, ssh, and other tools. | future project. | ||||||
| 
 | 
 | ||||||
| # Installation (Deprecated) | Where applicable, I try to include `README.md` files in some of the | ||||||
|  | subdirectories to help orient both myself and any onlookers. | ||||||
| 
 | 
 | ||||||
| The installation instructions here are deprecated. I'd like to manage packaging | ## Languages | ||||||
| and installing with Nix, but that is only partially supported at the |  | ||||||
| moment. |  | ||||||
| 
 | 
 | ||||||
| ## wpgtk and gvcci | To give you a general idea of the source code inside of this monorepo, here is | ||||||
|  | the latest output from `tokei --hidden --sort code .`: | ||||||
| 
 | 
 | ||||||
| ```bash | ```text | ||||||
| $ apti python-pip3 | ------------------------------------------------------------------------------- | ||||||
| $ gclone deviantfero/wpgtk |  Language            Files        Lines         Code     Comments       Blanks | ||||||
| $ cd .. | ------------------------------------------------------------------------------- | ||||||
| $ gclone FabriceCastel/gvcci |  CSS                     9        67324        50733          218        16373 | ||||||
|  |  Emacs Lisp            111        25326        15790         6337         3199 | ||||||
|  |  Python                 99         7432         5414          623         1395 | ||||||
|  |  JSON                   18         2235         2235            0            0 | ||||||
|  |  Markdown               34         1771         1771            0            0 | ||||||
|  |  TypeScript             25         1665         1317          115          233 | ||||||
|  |  Nix                    65         1302         1115           82          105 | ||||||
|  |  Go                     17         1256          926          173          157 | ||||||
|  |  Vim Script              2          766          470           87          209 | ||||||
|  |  HTML                   17          496          459           11           26 | ||||||
|  |  Org                     8          420          411            8            1 | ||||||
|  |  Haskell                 4          319          217           57           45 | ||||||
|  |  Plain Text              5          145          145            0            0 | ||||||
|  |  JavaScript             13          105           99            0            6 | ||||||
|  |  Fish                    1           87           54           23           10 | ||||||
|  |  Lisp                    3           83           43           23           17 | ||||||
|  |  Elixir                  1           50           39            5            6 | ||||||
|  |  Sass                    1           51           38            2           11 | ||||||
|  |  TOML                    2           37           32            0            5 | ||||||
|  |  Shell                   2           34           15            9           10 | ||||||
|  |  Java                    2           11           11            0            0 | ||||||
|  |  Makefile                2           14            9            3            2 | ||||||
|  |  C                       1            6            5            0            1 | ||||||
|  |  BASH                    2           10            4            2            4 | ||||||
|  |  YAML                    1            5            4            0            1 | ||||||
|  |  Rust                    1            5            3            1            1 | ||||||
|  | ------------------------------------------------------------------------------- | ||||||
|  |  Total                 446       110955        81359         7779        21817 | ||||||
|  | ------------------------------------------------------------------------------- | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| - TODO: Integrate Emacs themes into wpgtk. | 67,321 of the 67,324 lines of CSS comes from `//website`, which includes the | ||||||
| - TODO: Integrate Vim themes into wpgtk. | template I use for my blog. Because I use TailwindCSS for my personal projects, | ||||||
| - TODO: add these to the install script | most of the styling is embedded in the class atribute of HTML and JSX tags. | ||||||
| 
 | 
 | ||||||
| ```bash | ## Sign posts | ||||||
| $ ln -s ~/Dropbox/.password-store ~/.password-store |  | ||||||
| $ ln -s ~/Dropbox/bin ~/bin |  | ||||||
| $ import_gpg $DOTFILES/configs/shared/gpg/.gnupg/exported |  | ||||||
| ``` |  | ||||||
| 
 | 
 | ||||||
| 1. Clipmenu | Below I have outlined a few projects that you might find interesting. I am | ||||||
|  | using `//` to indicate the root of my monorepo, the directory in which this | ||||||
|  | `README.md` resides. | ||||||
| 
 | 
 | ||||||
| Clipmenu is a service to store a history of copied strings. | - `//boilerplate`: scaffolding for projects. Boilerplate's goal is to | ||||||
|  |   reduce the startup costs of a project. | ||||||
|  | - `//configs`: my dotfiles (e.g. `config.fish`, `init.vim`). Eventually Nix | ||||||
|  |   `home-manager` should replace this. | ||||||
|  | - `//emacs`: Emacs is both my preferred text editor and my window manager; with | ||||||
|  |   tens of thousands of lines of Emacs Lisp, you can safely assume that this | ||||||
|  |   directory hosts a lot of libraries and packages. | ||||||
|  | - `//monzo_ynab`: `systemd` timer unit that imports my Monzo (i.e. a U.K.-based | ||||||
|  |   online bank) transactions into the personal finance tool YNAB (i.e. | ||||||
|  |   youneedabudget.com). | ||||||
|  | - `//nixos`: my declarative configuration for my NixOS machines. If you are | ||||||
|  |   unfamiliar with Nix, I recommend reading about the NixOS project. | ||||||
|  | - `//tools`: some scripts and projects that simplify my life. | ||||||
|  | - `//website`: everything required to build my website, wpcarro.dev. | ||||||
| 
 | 
 | ||||||
| Install it as: | ## Notes to self | ||||||
| ```bash |  | ||||||
| $ cd ~/programming && g clone cdown/clipmenu |  | ||||||
| ``` |  | ||||||
| 
 | 
 | ||||||
| - TODO: Include `~/.config/systemd/user` in `configs/shared`. | Here are a few reminders when setting up a new machine: | ||||||
| - TODO: Obviate installation. |  | ||||||
| 
 | 
 | ||||||
| Ensure that it runs on startup: | - Use Nix `home-manager` to configure the new machine. | ||||||
| ```bash | - Ensure `~/.password-store` exists. | ||||||
| $ cd ~/programming/clipmenu | - Run `export_gpg` from a computer with my gpg credentials. Run `import_gpg` | ||||||
| $ cp clipmenu clipmenud clipdel ~/bin # You may not need to do this step. |   from the new machine. | ||||||
| $ vim init/clipmenud.service | - Ensure the new machine can access my Github. | ||||||
| # Change the ExecStart line to point to ~/bin/clipmenud |  | ||||||
| $ cp init/clipmenud.service ~/.config/systemd/user/clipmenud.service |  | ||||||
| $ systemctl --user start clipmenud |  | ||||||
| $ systemctl --user enable clipmenud # This step may be optional. |  | ||||||
| $ reboot |  | ||||||
| $ systemctl --user status clipmenud # Verify installation worked. |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 1. Install Dropbox |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf - |  | ||||||
| $ crontab -e # add the following line... |  | ||||||
| @reboot ~/.dropbox-dist/dropboxd 2>&1 >/tmp/dropbox.log |  | ||||||
| $ reboot            # 1/3 verify installation |  | ||||||
| $ pgrep dropbox     # 2/3 verify installation |  | ||||||
| $ dropbox.py status # 3/3 verify installation |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 1. Authorize computer to access GitHub |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ ssh-keygen -t rsa -b 4096 -C 'wpcarro@gmail.com' |  | ||||||
| $ eval $(ssh-agent -s) |  | ||||||
| $ ssh-add ~/.ssh/id_rsa |  | ||||||
| $ xclip -sel clip <~/.ssh/id_rsa.pub |  | ||||||
| $ browse github.com # paste ssh public key in settings |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 1. Install Vundle, nix-env |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ ln -s ~/Dropbox/Vundle.vim ~/.config/nvim/bundle/Vundle.vim |  | ||||||
| $ cat ~/Dropbox/install_nix.sh | sh |  | ||||||
| $ for p in $(cat nix-env.txt); do |  | ||||||
| >   nix-env -i "$p" |  | ||||||
| > done |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 1. Install dotfiles |  | ||||||
| 
 |  | ||||||
| - TODO: include steps 2-4 in the `make install` command. |  | ||||||
| 
 |  | ||||||
| Missing the following dependencies: |  | ||||||
| 
 |  | ||||||
| - `stow` |  | ||||||
| - `neovim` |  | ||||||
| - `fasd` |  | ||||||
| - `opam` |  | ||||||
| - `ghcup` |  | ||||||
| - `hub` |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ cd ~/Dropbox/dotfiles |  | ||||||
| $ DOTFILES="$(pwd)" make install |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| 1. Install Node dependencies |  | ||||||
| 
 |  | ||||||
| For now, this deserves its own section since it isn't automated. |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ gclone tj/n       # clone repo |  | ||||||
| $ sudo make install # build from source |  | ||||||
| $ n stable          # install the stable version of node |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| - TODO: support dependencies like terminal themes |  | ||||||
| 
 |  | ||||||
| # SSHFS |  | ||||||
| 
 |  | ||||||
| TODO: add explanation about `unison`, `rsync`, etc. |  | ||||||
| 
 |  | ||||||
| SSHFS enables seamless file transfers from your local machine to a remote |  | ||||||
| machine. |  | ||||||
| 
 |  | ||||||
| ## Usage |  | ||||||
| 
 |  | ||||||
| Assuming your remote machine is configured in your `~/.ssh/config` (see above), |  | ||||||
| you can mount your remote machine's home directory on your local machine like |  | ||||||
| so: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ mkdir ~/ec2 |  | ||||||
| $ sshfs ec2:/home/ubuntu ~/ec2 -o reconnect,follow_symlinks |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Now your remote machine's home directory can be accessed using the `~/ec2` |  | ||||||
| directory. This directory can be treated as if it were an ordinary local |  | ||||||
| directory. To illustrate how easy it is to use, let's install `Vundle` onto our |  | ||||||
| remote machine. |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ git clone https://github.com/VundleVim/Vundle.vim.git ~/ec2/.vim/bundle/Vundle.vim |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| Voila! We now have `Vundle` installed on our ec2 instance without needing to |  | ||||||
| manually SSH into that machine. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # GnuPG |  | ||||||
| 
 |  | ||||||
| To install GPG run the following: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ import_gpg |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| TODO: create a job that runs this periodically. |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ export_gpg |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ## Reference |  | ||||||
| 
 |  | ||||||
|     - sec: secret key |  | ||||||
|     - pub: public key |  | ||||||
|     - ssb: secret sub-key |  | ||||||
|     - sub: public sub-key |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Terminals and Fonts |  | ||||||
| 
 |  | ||||||
| Any terminal or font I choose should pass the following checks: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| $ test_true_color |  | ||||||
| $ test_16_colors |  | ||||||
| $ test_text_formatting |  | ||||||
| $ test_unicode |  | ||||||
| $ test_emojis |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ### Ligatures |  | ||||||
| 
 |  | ||||||
| If using a font with ligature (e.g. Hasklig) assert that your terminal also support ligatures. |  | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue