{"id":15672903,"url":"https://github.com/birkhofflee/dotfiles","last_synced_at":"2025-09-11T05:05:24.530Z","repository":{"id":41962335,"uuid":"231104873","full_name":"BirkhoffLee/dotfiles","owner":"BirkhoffLee","description":"my macOS profile with nix-darwin","archived":false,"fork":false,"pushed_at":"2025-08-14T07:51:18.000Z","size":3236,"stargazers_count":20,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-09T16:41:28.974Z","etag":null,"topics":["dotfiles","home-manager","macos","nix","nix-darwin","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BirkhoffLee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-12-31T14:43:33.000Z","updated_at":"2025-08-14T07:51:21.000Z","dependencies_parsed_at":"2023-01-30T23:31:29.046Z","dependency_job_id":"acaf5144-63af-410e-ac24-46487980f32d","html_url":"https://github.com/BirkhoffLee/dotfiles","commit_stats":{"total_commits":359,"total_committers":2,"mean_commits":179.5,"dds":0.00835654596100277,"last_synced_commit":"b7951e2019cc958e6d310247f73a29ae73d1bc74"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/BirkhoffLee/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BirkhoffLee%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BirkhoffLee%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BirkhoffLee%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BirkhoffLee%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BirkhoffLee","download_url":"https://codeload.github.com/BirkhoffLee/dotfiles/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BirkhoffLee%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274340902,"owners_count":25267295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotfiles","home-manager","macos","nix","nix-darwin","zsh"],"created_at":"2024-10-03T15:33:23.360Z","updated_at":"2025-09-11T05:05:24.524Z","avatar_url":"https://github.com/BirkhoffLee.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotfiles\n\nMy macOS dotfiles managed by [nix-darwin](https://github.com/LnL7/nix-darwin) and [home-manager](https://github.com/nix-community/home-manager), powered by [Nix](https://nixos.org/).\n\nWorks on M1 Pro, macOS Sequoia 15.5 (24F74).\n\n## Overview\n\n* [nix-darwin](https://github.com/LnL7/nix-darwin) sets up the macOS system environment.\n  * [Nix](https://nixos.org/) enables reproducible builds.\n* [home-manager](https://github.com/nix-community/home-manager) manages the user environment, including Homebrew packages.\n  * Most GUI apps are managed by Homebrew due to the conflicting nature of Nix and their self-updating capabilities\n\nKey features:\n\n* [Ghostty](https://ghostty.org/) as the terminal emulator, config: [ghostty.nix](hosts/AlexMBP/home/programs/ghostty.nix)\n* zsh with [powerlevel10k](https://github.com/romkatv/powerlevel10k)\n  * Prompt theme is p10k Lean style. Git status symbols docs can be found [here](https://github.com/romkatv/powerlevel10k#what-do-different-symbols-in-git-status-mean).\n* [Helix](https://helix-editor.com/) keymap with [Multirious/zsh-helix-mode](https://github.com/Multirious/zsh-helix-mode)\n* Terminal Multiplexer:\n  * [Zellij](https://zellij.dev/) Unlock-First (non-colliding) preset with [minor customization](hosts/AlexMBP/home/programs/zellij.nix)\n  * tmux configuration from [gpakosz/.tmux](https://github.com/gpakosz/.tmux)\n* [atuin](https://github.com/ellie/atuin) for shell history\n* A number of handy [aliases](hosts/AlexMBP/home/programs/zsh.nix) and [functions](hosts/AlexMBP/home/files/shell/functions.zsh)\n* [fzf shell integration](hosts/AlexMBP/home/programs/fzf.nix)\n  * CTRL-T - Paste the path of selected files and directories onto the command-line\n  * ALT-C - cd into the selected directory\n* [fzf-tab](https://github.com/Aloxaf/fzf-tab) for zsh completion, including a [smart preview window](hosts/AlexMBP/home/files/shell/fzf.zsh):\n  * [fd](https://github.com/sharkdp/fd) for file search\n  * [bat](https://github.com/sharkdp/bat) for file preview\n  * [eza](https://github.com/eza-community/eza) for directory listing\n* [automatically propagated](hosts/AlexMBP/home/files/shell/proxy.zsh) shell proxy settings\n* [Sets](hosts/AlexMBP/home/libs/wallpaper.nix) a beautiful wallpaper from [Raycast](https://www.raycast.com/wallpapers)\n* git utilities include [lazygit](https://github.com/jesseduffield/lazygit) and [forgit](https://github.com/wfxr/forgit) because I'm lazy\n  * [a quick starter video about lazygit](https://www.youtube.com/watch?v=CPLdltN7wgE)\n* [zsh-you-should-use](https://github.com/MichaelAquilina/zsh-you-should-use) to remind me using shell aliases\n* [nix-index-database](https://github.com/nix-community/nix-index-database) to locate the Nix package of a command, and [comma](https://github.com/nix-community/comma) to run the command without installing it.\n\n## Usage\n\nOn a new macOS machine without Nix installed:\n\n```console\nxcode-select --install\n\n# Clone the dotfiles\nmkdir $HOME/.config\ngit clone https://github.com/birkhofflee/dotfiles $HOME/.config/nix\n\n# Install nix with Determinate Systems installer\n# Choose \"no\" to use the upstream nix instead of their own one\ncurl -fsSL https://install.determinate.systems/nix | sh -s -- install\n\n# Source the nix daemon so that the nix command is available immediately\n. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh\n\n# Build the dotfiles\nnix build \"$HOME/.config/nix#darwinConfigurations.AlexMBP.system\" --extra-experimental-features \"nix-command flakes\"\n\n# Apply the dotfiles\nsudo ./result/sw/bin/darwin-rebuild switch --flake \"$HOME/.config/nix#AlexMBP\"\n\n# Optionally, delete the build artifacts\nrm -rf ./result\n```\n\nAfter first successful deployment, use the following command to switch:\n\n```console\n# This only switchs to the latest config\nnh darwin switch --hostname AlexMBP \"$HOME/.config/nix\"\n\n# This updates all flake inputs and switches to the latest config\nnh darwin switch --update --hostname AlexMBP \"$HOME/.config/nix\"\n\n# This updates one flake input and switches to the latest config\nnh darwin switch --update-input \u003cname\u003e --hostname AlexMBP \"$HOME/.config/nix\"\n```\n\nTo clean up:\n\n```console\nnh clean all\n```\n\n\u003e [!IMPORTANT]\n\u003e The following steps were applicable to installations with the original Nix\n\u003e installer. It is unknown whether they are needed to follow for a Determinate\n\u003e Systems installation.\n\nAfter a major macOS update:\n\n1. Upgrade Xcode CLI tools\n2. Uninstall nix: https://nix.dev/manual/nix/2.18/installation/uninstall.html#macos\n3. A system restart may be required\n4. Review [CHANGELOG](https://github.com/LnL7/nix-darwin/blob/master/CHANGELOG) of nix-darwin\n\n```console\n# Install nix\nbash \u003c(curl -L https://nixos.org/nix/install) --daemon --yes --no-modify-profile\n\n# Propagate /run\nprintf 'run\\tprivate/var/run\\n' | sudo tee -a /etc/synthetic.conf\n/System/Library/Filesystems/apfs.fs/Contents/Resources/apfs.util -t\n\n# Fix certs (the uninstallation of nix breaks a symbolic link)\n# https://github.com/NixOS/nix/issues/2899#issuecomment-1669501326\n# https://discourse.nixos.org/t/ssl-ca-cert-error-on-macos/31171/1\nsudo rm /etc/ssl/certs/ca-certificates.crt\nsudo ln -s /nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt\n\nnix build \"$HOME/.config/nix#darwinConfigurations.AlexMBP.system\" --extra-experimental-features \"nix-command flakes\"\n\nsudo ./result/sw/bin/darwin-rebuild switch --flake \"$HOME/.config/nix#AlexMBP\"\n```\n\n## TODOs\n\n* File completion\n  * List directories first like [this](https://github.com/Aloxaf/fzf-tab/pull/518)\n  * When completing with fzf-tab, there's the slash in file names which i dont like\n* [Home Manager: dotfiles management](https://gvolpe.com/blog/home-manager-dotfiles-management/)\n* Use [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) to ensure consistency across different platforms\n\nSome other dotfiles worth looking into:\n\n* https://github.com/malob/nixpkgs\n* https://github.com/ahmedelgabri/dotfiles\n* https://github.com/kornicameister/dotfiles/\n* https://github.com/Aloxaf/dotfiles/tree/master/zsh/.config/zsh\n* https://github.com/paulmillr/dotfiles\n* https://github.com/marlonrichert/zsh-launchpad\n* https://github.com/mashehu/dotfiles/blob/master/zshrc\n\nSome completions setups:\n\n* https://github.com/finnurtorfa/zsh/blob/master/completion.zsh\n\n## Articles\n\nHere are some reads you might find interesting:\n\n* [Declarative macOS Configuration Using nix-darwin And home-manager](https://xyno.space/post/nix-darwin-introduction)\n* [Faster and enjoyable ZSH (maybe)](https://htr3n.github.io/2018/07/faster-zsh/)\n* [Comparison of ZSH frameworks and plugin managers](https://gist.github.com/laggardkernel/4a4c4986ccdcaf47b91e8227f9868ded)\n* [fzf examples (fzf wiki)](https://github.com/junegunn/fzf/wiki/examples)\n\n## License\n\nThis project is released under [The Unlicense](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbirkhofflee%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbirkhofflee%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbirkhofflee%2Fdotfiles/lists"}