From dba8db7dbf5c79e9f1f49cc18fdfdff5d22f02a9 Mon Sep 17 00:00:00 2001 From: Stefan Imhoff Date: Fri, 26 Jul 2024 20:53:41 +0200 Subject: [PATCH] feat(nix): migrate Homebrew casks to Nix --- Brewfile | 42 +++------------------- nix/darwin/homebrew-common.nix | 63 +++++++++++++++++++++++++++++++++ nix/home/default.nix | 40 +++++++++++++-------- nix/home/git/default.nix | 1 + nix/hosts/mac-mini/home.nix | 7 ++++ nix/hosts/mac-mini/homebrew.nix | 12 ++++++- 6 files changed, 113 insertions(+), 52 deletions(-) diff --git a/Brewfile b/Brewfile index ad30ea5..e653d69 100644 --- a/Brewfile +++ b/Brewfile @@ -164,14 +164,8 @@ cask "angry-ip-scanner" cask "ankerwork" # Memory training application cask "anki" -# Application uninstaller -cask "appcleaner" # Chromium based browser cask "arc" -# Multi-track audio editor and recorder -cask "audacity" -# Menu bar icon organiser -cask "bartender" # Edit and manage bibliographies cask "bibdesk" # 3D creation suite @@ -197,8 +191,6 @@ cask "db-browser-for-sqlite" cask "deepl" # Collect, organise, edit and annotate documents cask "devonthink" -# Voice and text chat software -cask "discord" # App to build and share containerised applications and microservices cask "docker" # Client for the Dropbox cloud storage service @@ -234,26 +226,16 @@ cask "hammerspoon" cask "handbrake" # Create presentation slides from a Markdown document cask "ia-presenter" -# Free and open-source media player -cask "iina" # Tool to optimise images to a smaller size cask "imageoptim" -# Vector graphics editor -cask "inkscape" # Tool to scan a website checking for broken links cask "integrity" # Menu bar calendar cask "itsycal" -# Jellyfin desktop client -cask "jellyfin-media-player" # Spot and merge differences in text and image files or folders -cask "kaleidoscope" +cask "kaleidoscope@3" # Open-source screen recorder built with web technology cask "kap" -# File archiver -cask "keka" -# Open-source keystroke visualiser -cask "keycastr" # Grammar, spelling and style suggestions in all the writing apps cask "languagetool" # Official client for LBRY, a decentralised file-sharing and payment network @@ -276,16 +258,14 @@ cask "obsidian" cask "ogdesign-eagle" # Get up and running with large language models locally cask "ollama" -# Interact with Ollama models -cask "ollamac" # Control your smart light system cask "philips-hue-sync" -# Customise and maintain app icons -cask "pictogram" -# Colour picker for colours onscreen -cask "pika" # Client for Proton Drive cask "proton-drive" +# Client for Proton Mail and Proton Calendar +cask "proton-mail" +# Desktop client for Proton Pass +cask "proton-pass" # Bridges Proton Mail to email clients supporting IMAP and SMTP protocols cask "protonmail-bridge" # VPN client focusing on security @@ -302,8 +282,6 @@ cask "reader" cask "secretive" # Tool for sending personal documents to Kindles from Macs cask "send-to-kindle" -# MySQL/MariaDB database management platform -cask "sequel-pro" # Onion routing based messenger cask "session" # Tool that provides consistent, highly configurable symbols for apps @@ -314,18 +292,10 @@ cask "signal" cask "sonos" # Music streaming service cask "spotify" -# System monitor for the menu bar -cask "stats" -# Tool to render realistic skies in real time on the screen -cask "stellarium" # Interior design application cask "sweet-home3d" -# Desktop client for Telegram messenger -cask "telegram-desktop" # Unpacks archive files cask "the-unarchiver" -# Customizable email client -cask "thunderbird" # Web browser focusing on security cask "tor-browser" # File transfer application @@ -342,8 +312,6 @@ cask "vlc-webplugin" cask "webtorrent" # GPU-accelerated cross-platform terminal emulator and multiplexer cask "wezterm" -# Network diagnostic utility -cask "whatroute" # Native desktop client for WhatsApp cask "whatsapp" # Multiplayer code editor diff --git a/nix/darwin/homebrew-common.nix b/nix/darwin/homebrew-common.nix index 3e93cf8..2685ae2 100644 --- a/nix/darwin/homebrew-common.nix +++ b/nix/darwin/homebrew-common.nix @@ -14,9 +14,72 @@ "prettier" # Code formatter for JavaScript, CSS, JSON, GraphQL, Markdown, YAML ]; casks = [ + "affinity-designer" # Professional graphic design software + "affinity-photo" # Professional image editing software + "affinity-publisher" # Professional desktop publishing software + "alfred" # Application launcher and productivity software + "angry-ip-scanner" # Network scanner + "anki" # Memory training application. FIX: Broken on nixpks + "arc" # Chromium based browser + "bibdesk" # Edit and manage bibliographies + "blender" # 3D creation suite. FIX: Installation fails with broken Xcode derivation + "blender-benchmark" # 3D performance benchmarking tool + "blurred" # Utility to dim background/inactive content in the screen + "brave-browser" # Web browser focusing on privacy + "calibre" # E-books management software. FIX: Broken on nixpks + "cleanshot" # Screen capturing tool + "color-oracle" # Tool to test for color-blindness + "cryptomator" # Multi-platform client-side cloud file encryption tool + "db-browser-for-sqlite" # Browser for SQLite databases + "deepl" # Trains AIs to understand and translate texts + "devonthink" # Collect, organise, edit and annotate documents + "docker" # App to build and share containerised applications and microservices + "dropbox" # Client for the Dropbox cloud storage service + "figma" # Collaborative team software + "firefox" # Web browser + "firefox@developer-edition" # Web browser + "forticlient-vpn" # Free VPN client for FortiClient + "google-japanese-ime" # Japanese input software + "gpg-suite-no-mail" # Tools to protect your files "hammerspoon" # Desktop automation application + "ia-presenter" # Create presentation slides from a Markdown document + "imageoptim" # Tool to optimise images to a smaller size + "integrity" # Tool to scan a website checking for broken links + "itsycal" # Menu bar calendar + "kaleidoscope@3" # Spot and merge differences in text and image files or folders + "kap" # Open-source screen recorder built with web technology + "languagetool" # Grammar, spelling and style suggestions in all the writing apps + "ledger-live" # Wallet desktop application to maintain multiple cryptocurrencies + "macfuse" # File system integration + "microsoft-outlook" # Email client + "microsoft-teams" # Meet, chat, call, and collaborate in just one place + "notion" # App to write, plan, collaborate, and get organised + "obsidian" # Knowledge base that works on top of a local folder of plain text Markdown files + "ogdesign-eagle" # Organise all your reference images in one place + "ollama" # Get up and running with large language models locally + "philips-hue-sync" # Control your smart light system + "proton-drive" # Client for Proton Drive + "proton-mail" # Client for Proton Mail and Proton Calendar + "proton-pass" # Desktop client for Proton Pass + "protonmail-bridge" # Bridges Proton Mail to email clients supporting IMAP and SMTP protocols + "raindropio" # All-in-one bookmark manager "raycast" # Control your tools with a few keystrokes + "reader" # Save articles to read, highlight key content, and organise notes for review + "secretive" # Store SSH keys in the Secure Enclave + "send-to-kindle" # Tool for sending personal documents to Kindles from Macs + "session" # Onion routing based messenger + "sf-symbols" # Tool that provides consistent, highly configurable symbols for apps + "signal" # Instant messaging application focusing on security + "sonos" # Control your Sonos system + "spotify" # Music streaming service + "the-unarchiver" # Unpacks archive files + "transmit" # File transfer application + "veracrypt" # Disk encryption software focusing on security based on TrueCrypt + "visual-studio-code" # Open-source code editor + "vlc" # Multimedia player + "vlc-webplugin" # Web browser plugin "wezterm" # GPU-accelerated cross-platform terminal emulator and multiplexer. NOTE: Only installed with Brew because I want to replace the icon + "whatsapp" # Native desktop client for WhatsApp "zed" # Multiplayer code editor ]; masApps = { }; diff --git a/nix/home/default.nix b/nix/home/default.nix index ce4d4d6..5a7eb2d 100644 --- a/nix/home/default.nix +++ b/nix/home/default.nix @@ -87,7 +87,6 @@ in bzip2 # High-quality data compression program cloc # Program that counts lines of source code comma # Comma runs software without installing it - commitizen # Tool to create committing rules for projects, auto bump versions, and generate changelogs coreutils # GNU Core Utilities darwin.xattr # Display and manipulate extended attributes diff-so-fancy # Good-looking diffs filter for git @@ -107,36 +106,23 @@ in hyperfine # Command-line benchmarking tool jless # Command-line pager for JSON data jq # Lightweight and flexible command-line JSON processor - lua # Powerful, fast, lightweight, embeddable scripting language lynx # Text-mode web browser monolith # Bundle any web page into a single HTML file - mysql84 # World's most popular open source database - nginx # Reverse proxy and lightweight webserver nixd # Nix language server nixpacks # App source + Nix packages + Docker = Image Resources nixpkgs-fmt # Nix code formatter - nodejs_22 # Event-driven I/O framework for the V8 JavaScript engine openai-whisper-cpp # Port of OpenAI's Whisper model in C/C++ - openfortivpn # Client for PPP+SSL VPN tunnel services openssl # A cryptographic library that implements the SSL and TLS protocols - perl # Standard implementation of the Perl 5 programming language - php # HTML-embedded scripting language pngpaste # Paste image files from clipboard to file on MacOS pnpm # Fast, disk space efficient package manager for JavaScript - postgresql # Powerful, open source object-relational database system prettierd # Prettier, as a daemon, for improved formatting speed - python3 # High-level dynamically-typed programming language reattach-to-user-namespace # Wrapper that provides access to the Mac OS X pasteboard service remarshal # Convert between TOML, YAML and JSON rsync # Fast incremental file transfer utility - ruby # Object-oriented language for quick and easy programming - rustc # Safe, concurrent, practical language (wrapper script) sad # CLI tool to search and replace silicon # Create beautiful image of your source code - sqlite # A self-contained, serverless, zero-configuration, transactional SQL database engine ssh-copy-id # Tool to copy SSH public keys to a remote machine tldr # Simplified and community-driven man pages - tldr # Simplified and community-driven man pages tree # Command to produce a depth indented directory listing unar # Archive unpacker program vhs # Tool for generating terminal GIFs with code @@ -145,6 +131,32 @@ in yarn # Fast, reliable, and secure dependency management for javascript yt-dlp # Command-line tool to download videos from YouTube.com and other sites (youtube-dl fork) zoxide # Fast cd command that learns your habits + + # Programming Languages + lua # Powerful, fast, lightweight, embeddable scripting language + nodejs_22 # Event-driven I/O framework for the V8 JavaScript engine + perl # Standard implementation of the Perl 5 programming language + php # HTML-embedded scripting language + python3 # High-level dynamically-typed programming language + ruby # Object-oriented language for quick and easy programming + rustc # Safe, concurrent, practical language (wrapper script) + + # Server & Databases + mysql84 # World's most popular open source database + nginx # Reverse proxy and lightweight webserver + postgresql # Powerful, open source object-relational database system + sqlite # A self-contained, serverless, zero-configuration, transactional SQL database engine + + # Applications + alt-tab-macos # Windows alt-tab on macOS + appcleaner # Uninstall unwanted apps + audacity # Sound editor with graphical UI + bartender # Take control of your menu bar + iina # Modern media player for macOS + keycastr # Open-source keystroke visualizer + openfortivpn # Client for PPP+SSL VPN tunnel services + sequelpro # MySQL database management for macOS + telegram-desktop # Telegram Desktop messaging app ]; }; } diff --git a/nix/home/git/default.nix b/nix/home/git/default.nix index 8620d88..b154bf7 100644 --- a/nix/home/git/default.nix +++ b/nix/home/git/default.nix @@ -170,6 +170,7 @@ }; home.packages = with pkgs; [ + commitizen # Tool to create committing rules for projects, auto bump versions, and generate changelogs delta # Syntax-highlighting pager for git gh # GitHub CLI tool git # Distributed version control system diff --git a/nix/hosts/mac-mini/home.nix b/nix/hosts/mac-mini/home.nix index 18a999a..92fe8e4 100644 --- a/nix/hosts/mac-mini/home.nix +++ b/nix/hosts/mac-mini/home.nix @@ -5,6 +5,13 @@ ../../home ]; + # Services services.yabai.enable = true; services.skhd.enable = true; + + # The home.packages option allows you to install Nix packages into your + # environment. + home.packages = with pkgs; [ + discord # All-in-one cross-platform voice and text chat for gamers + ]; } diff --git a/nix/hosts/mac-mini/homebrew.nix b/nix/hosts/mac-mini/homebrew.nix index 09320fe..733eaef 100644 --- a/nix/hosts/mac-mini/homebrew.nix +++ b/nix/hosts/mac-mini/homebrew.nix @@ -4,7 +4,17 @@ taps = [ ]; brews = [ ]; casks = [ - "webtorrent" + "ankerwork" # Webcam & audio device software + "daisydisk" # Disk space visualiser + "gemini" # Disk space cleaner that finds and deletes duplicated and similar files + "handbrake" # Open-source video transcoder. FIX: Broken on nixpks + "lbry" # Official client for LBRY, a decentralised file-sharing and payment network + "makemkv" # Video format converter (transcoder) + "protonvpn" # VPN client focusing on security + "raspberry-pi-imager" # # Imaging utility to install operating systems to a microSD card + "sweet-home3d" # Interior design application + "tor-browser" # Web browser focusing on security + "webtorrent" # Torrent streaming application ]; masApps = { }; }