First attempt at migrating from Homebrew to Nix with Nix Home Manager.
It didn’t go exactly as planned. I dived into Nix scripts, flakes, and started installing packages with nixpkgs while keeping Homebrew on the side. But... nothing seemed to work correctly. 😵
Tools like fish
shell, fzf
, and ghostty
.etc... did'nt work. I probably need to configure each program properly, manage environments, and link the ~/.config
files with Nix...
During the migration, I enabled autoCleanUp Homebrew with "zap" without paying close attention. Big mistake! It wiped out everything I’d installed through Homebrew. 😱 Aie aie aie.
Thankfully, I had saved all my tools in a Brewfile in my dotfiles. A quick brew bundle
restored everything (though it took time to install).
Lesson learned: I need to take it step by step with Nix, learning more about proper configurations before jumping in too deep.
For now, I’m sticking with Homebrew but I’ll give Nix another try someday.
Tiling window management on macOS with aerospace
In the past, I was a rectangle
user. I used it to move windows into corners or split the screen, basic functionality. Honestly, it never felt transformative. It was fine, but quite basic. I only used it during screen-sharing sessions on Teams calls. I always wanted something more controllable and better organized, with groupings of applications.
Recently, I explored raycast
, and at first, it seemed like the solution I had been looking for. It offered intuitive window organization, powerful workspace controls, and a lot of cool features.
But then I discovered that many of the features I wanted required the Pro version. So I knew I had to look elsewhere.
That’s when I came across aerospace, thanks to all the people sharing it on YouTube. And wow! This is the tool I was looking for! (powerful, free, open-source, workspace management simple, entirely keyboard shortcuts)
Using aerospace has completely transformed my workflow. I now have workspaces neatly organized by task coding (C), terminal (T), browser (B), music (M)... and switching between them is really simple. I can even set apps to open in specific workspaces by default. So cool! Everything feels smoother, faster, and more focused.
For me, there’s only one drawback: aerospace doesn’t natively support the AZERTY keyboard layout, it might a bit inconvenient. However, I can map the QWERTY shortcuts on same location with AZERTY layout and that solution is ok for me.
Manage better for my dotfiles.
Up until now, I’ve been handling my dotfiles manually with a Makefile and shell scripts. I used commands like rsync
to mirror files from my ~/.config
directory to my ~/dotfiles
folder, and then saved everything on GitHub. While this approach worked, it was tedious and had a lot of limitations:
rsync
wouldn’t handle deletions properly, so if I deleted a file in~/.config
, it wouldn’t be removed from the dotfiles folder.- I had to run
make sync
every time I wanted to update my dotfiles - Restoring configurations wasn’t properly handled
- I also wanted to directly manage the
~/.config
folder with Git, but my current setup didn’t make that easy.
Then, I stumbled across a YouTube video about using GNU Stow to manage dotfiles. It’s such a simple yet powerful tool! Stow creates symlinks from your dotfiles folder to your ~/.config
directory, so there’s no need for manual mirroring. Everything stays organized and up-to-date automatically.
Now, I manage my ~/dotfiles
easily with Stow, and my ~/.config
folder is directly synced via symlinks.
I love how clean and efficient this setup feels. Highly recommend giving Stow a try if you’re looking for a better way to manage dotfiles!
Returning to Neovim for Coding
I’ve started using Neovim for coding again.
Early in my career, like many others, I tried to learn Vim. At first, it was difficult to get used to, but I found it fun and rewarding. For some, Vim can feel more "professional," and there's something satisfying about the cool things you can do with it.
I really liked Vim, but when it came to coding, I ran into many challenges. Configuring Vim with the right plugins, settings, and workflows took a lot of time. Back then, I was working with many different languages—Python, Ruby, JavaScript, TypeScript, HTML, CSS—and I could never quite get Vim to work smoothly across all of them. I faced too many issues, so eventually, I switched to VSCode and IntelliJ for most of my coding, using Vim only for occasional file edits.
Now, with modern terminals like Wezterm and Ghostty, I find myself enjoying the terminal environment more. I want to keep my hands on the keyboard as much as possible, so I decided to give Vim another try, but this time with Neovim. Neovim is a more modern and flexible alternative to Vim, with support for Lua-based scripting and plugins.
It’s taking some time to get fully comfortable with Neovim again, but I’m using LazyVim to manage my plugins, and it’s been fantastic. It supports many of the plugins I need for coding, especially the which-key
plugin, which shows all available keybindings in Neovim—something I missed when using Vim before.
LazyVim makes it easy to add, remove, or configure plugins, and the documentation is top-notch, so I can quickly reference the keymaps I need.
I also tried Helix, a text editor built from scratch with Rust. It’s designed to provide a similar experience to Vim but with better performance. It’s still young and doesn’t support plugins yet, and it lacks features like a file explorer, which I rely on. However, I think it has potential, and in the future, it could be a solid alternative to Vim.
For now, I feel more comfortable with Neovim, but it's still not perfect. I continue using VSCode for larger projects, but I’ve enabled the Neovim extension in VSCode, which lets me use Vim keybindings and workflows within VSCode. It’s not the full Vim experience, but it’s been a great way to continue learning Vim while working in a modern IDE. At least now, I don’t need to use the mouse when coding in VSCode.
For smaller projects, I stick to using Neovim in the terminal.
For browsing, I now use Vim as well. With the Vimium extension, I can use Vim-like keybindings and perform almost everything without touching the mouse. It’s really fun and efficient to use.
CLI tools I love using
I’m a huge fan of Rust, and it’s no surprise that many of the tools I rely on in the terminal are written in rust.
Here’s a quick rundown of my favorites:
fzf
: Fuzzy finder that makes searching files or commands a breeze.eza
: A modern, colorful alternative tols
that adds more functionality.zoxide
: A smartercd
command that remembers your most-used directories.Fish shell
: A user-friendly shell with auto-suggestions and syntax highlighting.Starship prompt
: Fast, customizable prompt with support for all major shells.ripgrep
: Lightning-fast search tool, a must-have for large codebases.sd
: Simpler, more intuitive replacement forsed
.fd
: Faster, friendlier alternative tofind
with colorful output.jq
: Power tool for processing JSON data in the terminal.lazygit
: Terminal-based Git interface, perfect for lazy devs.lazydocker
: Easy-to-use terminal tool for managing Docker containers.bat
: Bettercat
with syntax highlighting and line numbers.git-delta
: Enhanced git diff tool with better formatting.fnm
: Fast, Rust-based Node.js version manager.
Ghostty?
Ghostty has just released its official production-ready version: 1.0, and it’s causing quite a hype among developers across all platforms. I’m really curious to try it out!
Ghostty is a terminal emulator built with Zig. Most terminal emulators I’ve used, like WezTerm, Warp, Alacritty, and Zellij, are written in Rust. So it’s exciting to see a terminal tool developed in Zig instead. (I really like both of 2 this languages: rust and zig)
I decided to give it a shot, even though I’ve been happily using WezTerm. And I have to say, I’m impressed.
It’s fast—faster than WezTerm in terms of startup time and when opening new tabs. It integrates smoothly with Fish shell, which I love.
The keybindings are easy to access, and the setup process is a really simple. Plus, it supports a variety of themes.
Some standout features include Quick Terminal and the ability to use Cmd + Triple-click for selection—simple yet powerful.
So, I’ve made the switch. My terminal is now Ghostty.
I’ve started implementing microblog on my website.
The goal is to create a space for sharing shorter updates, thoughts, and progress on ongoing projects. I plan to update this space regularly with useful insights and updates.
Stay tuned for more posts soon.