{"id":15396871,"url":"https://github.com/z0al/dotfiles","last_synced_at":"2025-10-17T12:26:59.675Z","repository":{"id":91931340,"uuid":"129623483","full_name":"z0al/dotfiles","owner":"z0al","description":"An opinionated flake-based system configuration ❄","archived":false,"fork":false,"pushed_at":"2025-10-05T13:13:20.000Z","size":15863,"stargazers_count":50,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-11T05:35:20.727Z","etag":null,"topics":["dotfiles","fish-shell","flake-parts","nix-darwin","nix-flake","nixos","nixos-config"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/z0al.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":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-04-15T15:28:02.000Z","updated_at":"2025-10-05T13:13:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"43634434-6655-4588-a63c-53ffa190b354","html_url":"https://github.com/z0al/dotfiles","commit_stats":{"total_commits":751,"total_committers":2,"mean_commits":375.5,"dds":"0.10252996005326231","last_synced_commit":"2909650f7213a37efd413959b01c7940898e33d3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/z0al/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0al%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0al%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0al%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0al%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/z0al","download_url":"https://codeload.github.com/z0al/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0al%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279343272,"owners_count":26152343,"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-10-17T02:00:07.504Z","response_time":56,"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","fish-shell","flake-parts","nix-darwin","nix-flake","nixos","nixos-config"],"created_at":"2024-10-01T15:35:11.994Z","updated_at":"2025-10-17T12:26:59.670Z","avatar_url":"https://github.com/z0al.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotfiles\n\nAn opinionated [flake](https://nix.dev/concepts/flakes)-based system configuration for both [NixOS](https://nixos.org)[^1] and macOS (via [nix-darwin](https://github.com/nix-darwin/nix-darwin)).\n\nIf you have no idea what any of that means, I highly recommend checking out Matthias's excellent [YouTube mini-course](https://youtu.be/AGVXJ-TIv3Y).\n\n## 🛍️ Goodies\n\nHere are some of the unique features of my configuration you might find interesting:\n\n- [**💻 Device Manager**](./modules/device-manager/_darwin.nix): Generates a `nix.mobileconfig` profile on macOS e.g. used to configure policies for Chromium-based browsers, which can then be manually installed via System Settings. The module warns the user if the profile changes and needs reapplying.\n\n- [**👨‍💻 VS Code**](./modules/programs/vscode): A fully declarative VS Code configuration. The final `settings.json` file is copied (not linked), allowing for quick on-the-fly tweaks.\n\n- [**🔐 1Password**](./modules/programs/1password): Uses 1Password as an SSH agent, Git authentication, and signing program. This keeps SSH keys and tokens in the password manager instead of on disk.\n\n- [**🪟 Tiling**](./modules/config/tiling/_darwin.nix): Configures [AeroSpace](https://nikitabobko.github.io/AeroSpace/guide) for automatic window tiling on macOS.\n\n- [**⚙️ Plist-manager**](https://github.com/z0al/plist-manager): A human-friendly macOS user defaults manager. The module has since been extracted and moved to [z0al/plist-manager](https://github.com/z0al/plist-manager).\n\n## Structure\n\n### Home vs NixOS/Darwin modules\n\nThis repo doesn't follow the usual `/home`, `/nixos`, `/darwin` structure. Instead, modules are organized by feature under `/modules` and ALL modules are system (nixos/nix-darwin) modules e.g.\n\n```\nmodules\n├── config\n│   ├── ...\n│   └── \u003cmodule-a\u003e.nix         # cross-platform module\n├── programs\n│   ├── \u003cmodule-b\u003e             # module with platform-specific implementations\n│   │   ├── _darwin.nix        # → nix-darwin module\n│   │   ├── _nixos.nix         # → nixos module\n│   │   └── default.nix\n│   ├── ...\n│   └── \u003cmodule-c\u003e.nix         # another cross-platform module\n└── ...\n```\n\n**How does it work?**\n\n- `\u003cmodule\u003e/default.nix` defines the shared module configuration. It typically includes the module option definitions like `my.\u003cmodule\u003e.enable`. All custom modules are prefixed with `my.*` to avoid conflicts with upstream modules.\n- `**/*/_nixos.nix` files are automatically imported in [`modules/nixos.nix`](./modules/nixos.nix).\n- `**/*/_darwin.nix` files are automatically imported in [`modules/darwin.nix`](./modules/darwin.nix).\n- Wherever possible, NixOS/nix-darwin modules are preferred over `home-manager`.\n- Home-manager is mostly used to link home content via [`home.file`](https://nix-community.github.io/home-manager/options.xhtml#opt-home.file). When required, the configuration is written inline using [aliass](#aliases).\n\nA practical example of a module that defines both `_nixos.nix` and `_darwin.nix` is the 1Password module in [`modules/programs/1password`](./modules/programs/1password).\n\n### Presets\n\nPresets are flags that group related programs. For example, enabling `my.presets.devOps.enable` activates Docker, Kubernetes, Terraform, and others by default.\n\n```nix\n# Enable DevOps tools e.g. Docker, Terraform ..etc\nmy.presets.devOps.enable = true;\n\n# Exclude Terraform\nmy.programs.terraform.enable = false;\n```\n\nAvailable presets can be found in [`modules/presets.nix`](./modules/presets.nix).\n\n### Aliases\n\nFor convenience, I use the following option aliases:\n\n- `home` → `home-manager.users.\u003cusername\u003e.home`\n  - e.g., `home.file`\n- `xdg` → `home-manager.users.\u003cusername\u003e.xdg`\n  - e.g., `xdg.configFile`\n- `my.user` → `users.users.\u003cusername\u003e`\n  - e.g., `my.user.extraGroups`\n\nThe `\u003cusername\u003e` refers to the primary user login, configured in [`modules/config/users`](./modules/config/users/default.nix).\n\n## 📚 Credits\n\n- [Henrik's dotfiles](https://github.com/hlissner/dotfiles)\n- [Matthias's nixos-config](https://github.com/MatthiasBenaets/nix-config)\n\n## 🧑‍⚖️ License\n\nMIT © z0al\n\n[^1]:\n    This repo used to be heavily focused on NixOS, but life happens and I'm currently stuck on macOS 😔.\n    While most NixOS-specific configurations have been removed, the repo is still NixOS-ready and waiting for the day I switch back soon ™️ (looking at you, [Asahi Linux](https://asahilinux.org/) 👀).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fz0al%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fz0al%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fz0al%2Fdotfiles/lists"}