1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#+title: Brewfile
#+PROPERTY: header-args:ruby :tangle Brewfile
This file defines all the software that needs to be installed on the system.
First off, of course, needs to be Emacs. This is done through a cask, which is what all graphical applications are installed as.
Although the default Emacs cask doesn't work well with macos, so I've had to install emacs-plus instead, which needs a separate tap first.
#+begin_src ruby
tap "d12frosted/emacs-plus"
cask "emacs-plus-app"
#+end_src
Then comes Glide, the browser that's configurable and extensible through TypeScript. It lets me configure things that Firefox generally doesn't, but it's still based on Firefox, so I don't have to use Chrome.
#+begin_src ruby
cask "glide-browser"
#+end_src
Third is the terminal that I use, Wezterm, which can be configured through Lua.
#+begin_src ruby
cask "wezterm"
#+end_src
Then I need some things for configuration and development purposes:
- git :: Version control system that I use.
- git-secret :: A plugin for git that was recommended by Milon for maintaining secrets inside a git repository.
- git-lfs :: Add large binary files to git repositories efficiently.
- stow :: Mainly used with this repository, "installs" configuration files by making and maintaining symbolic links.
- make :: The bundled version with macos is really old and doesn't support some of the features that I use.
- tailscale-app :: Mesh VPN that lets me connect to my self-hosted services like music streaming.
- hammerspoon :: Automation framework like AutoHotKey for Windows. But different.
- fennel :: Fennel is a lisp -> lua compiler, it allows me to write lua config (like Wezterm and Hammerspoon) in lisp.
- zplug :: A plug-in manager for ZSH.
- atuin :: Shell history completion on steroids.
- bettercmdtab :: Trying out this program that lets me have a better experience switching windows.
- omniwm :: A window manager for macos that works somewhat similarly to Niri and Hyprland.
#+begin_src ruby
brew "git"
brew "git-secret"
brew "git-lfs"
brew "stow"
cask "tailscale-app"
cask "hammerspoon"
brew "fennel"
brew "zplug"
brew "atuin"
cask "bettercmdtab"
cask "omniwm"
#+end_src
Install make because the bundled version is really old and doesn't support some of the features that I used. Surprisingly it /is/ GNU make, not BSD make that's installed.
#+begin_src ruby
brew "make"
#+end_src
This requires an alias in ZSH to make sure that the newly installed make is actually used.
#+begin_src sh :tangle .config/zsh/conf.d/macos.sh
alias make=gmake
#+end_src
And there are some development projects that I need to be able to install.
- docker :: This runs all of my development projects.
- docker-compose :: This is used to organize the different docker containers.
- colima :: This is apparently needed to run the docker daemon if you don't want to run Docker Desktop. I can't run Docker Desktop because you have to pay quite a bit of money for that.
- postgres@16 :: We use PostgreSQL here and I need the client to be able to connect to the containers in docker.
- php :: It's what we use.
#+begin_src ruby
brew "docker"
brew "docker-compose"
brew "colima"
brew "postgresql"
brew "php"
#+end_src
For postgresql we also need to have a shell script to add the tools to the path.
#+begin_src shell :tangle .config/zsh/conf.d/postgresql.sh :mkdirp t
export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH"
#+end_src
Fonts too!
- fantasque-sans-mono :: This is my main coding font. I've been attached to this font for years, I can't let it go. It has the nicest parentheses that I've found so far.
- dosis :: This is a variable-width font that I'm trying out for any text that isn't code. I haven't found anything that I like as much as Fantasque Sans Mono for code yet.
#+begin_src ruby
cask "font-fantasque-sans-mono"
cask "font-dosis"
#+end_src
I also created my own tap for SCSH:
#+begin_src ruby
tap "ryuslash/scsh", "https://git.sr.ht/~ryuslash/homebrew-scsh", trusted: true
brew "scsh"
#+end_src
Flameshot, for easier screenshot taking. Aside from installing through Homebrew this needs some extra work to be enabled. If I try to start it it will be blocked, but after that I have to go into System Settings -> Privacy & Security, and then scroll down to the line that says that Flameshot was blocked, and then allow it. Then I can use it.
#+begin_src ruby
cask "flameshot"
#+end_src
Install the coreutils packages because the BSD alternatives that MacOS comes with are very disappointing.
#+begin_src ruby
brew "coreutils"
#+end_src
This requires some aliases to actually work, otherwise the bundled versions get referenced instead.
#+begin_src sh :tangle .config/zsh/conf.d/macos.sh
alias ls="gls --color=always"
#+end_src
Install wakatime-cli so I can track my personal coding times.
#+begin_src ruby
brew "wakatime-cli"
#+end_src
|