{"id":21033606,"url":"https://github.com/gabyx/dotfiles","last_synced_at":"2025-08-19T19:20:52.991Z","repository":{"id":205650407,"uuid":"714738795","full_name":"gabyx/dotfiles","owner":"gabyx","description":"My dotfiles and NixOs configurations","archived":false,"fork":false,"pushed_at":"2025-08-07T05:53:06.000Z","size":1608,"stargazers_count":15,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-07T07:26:52.554Z","etag":null,"topics":["chezmoi","dotfiles","nix-flakes","nixos","nixos-configuration"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabyx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2023-11-05T18:13:14.000Z","updated_at":"2025-08-07T05:53:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"b7a1490c-07f5-4bb9-a1cd-06f93d9dc10f","html_url":"https://github.com/gabyx/dotfiles","commit_stats":null,"previous_names":["gabyx/dotfiles"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/gabyx/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabyx%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabyx%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabyx%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabyx%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabyx","download_url":"https://codeload.github.com/gabyx/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabyx%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271206993,"owners_count":24718705,"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-08-19T02:00:09.176Z","response_time":63,"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":["chezmoi","dotfiles","nix-flakes","nixos","nixos-configuration"],"created_at":"2024-11-19T12:58:18.556Z","updated_at":"2025-08-19T19:20:52.983Z","avatar_url":"https://github.com/gabyx.png","language":"JavaScript","funding_links":["https://www.buymeacoffee.com/gabyx"],"categories":["JavaScript"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/NixOS/nixos-artwork/4c449b822779d9f3fca2e0eed36c95b07d623fd9/ng/out/nix.svg\" style=\"margin-left: 20pt; width: 150px\" align=\"center\"/\u003e\n    \u003cspan style=\"width:100px;display:inline-block;\"\u003e+\u003c/span\u003e\n    \u003cimg src=\"config/docs/logo.svg\" style=\"margin-left: 20pt; width:150px\" align=\"center\"/\u003e\n    \u003cbr\u003e\n    \u003cbr\u003e\n    Gabyx's Dotfiles \u0026 \u003cbr\u003eNixOS Configuration\n    \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"./LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-GPL-3.svg\" alt=\"License\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.buymeacoffee.com/gabyx\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 20px !important;width: 87px;\" \u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/gabyx/dotfiles\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/gabyx/dotfiles?style=social\" alt=\"Give me a Star\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThese are my [dotfiles](config) managed with\n[chezmoi.io](https://www.chezmoi.io) for Linux and MacOS (and partially the\nother shit OS which desperately tries to convert itself into a \\*nix OS) and\n[NixOS](nix) configurations for Desktop and VM.\n\n![Screenshot](./nixos/docs/screenshot.png)\n\n| Program                     | Name                                                                                                                                              |\n| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Linux Distribution          | [NixOS](https://www.nixos.org/)                                                                                                                   |\n| Window Manager              | [sway](https://github.com/swaywm/sway)                                                                                                            |\n| Bar                         | [waybar](https://github.com/Alexays/Waybar)                                                                                                       |\n| Wallpaper Setter            | [sway](https://github.com/swaywm/sway)                                                                                                            |\n| Program Launcher \u0026 Menus    | [rofi](https://github.com/DaveDavenport/rofi)                                                                                                     |\n| Clipboard                   | [copyq](https://hluk.github.io/CopyQ/) with special password ignore command                                                                       |\n| Screenshot                  | [grimshot](https://search.nixos.org/packages?channel=23.05\u0026show=sway-contrib.grimshot\u0026from=0\u0026size=50\u0026sort=relevance\u0026type=packages\u0026query=grimshot) |\n| Colorpicking                | [hyprpick](https://github.com/hyprwm/hyprpicker) and [gcolor3](https://gitlab.gnome.org/World/gcolor3)                                            |\n| Nightshifting               | [gammastep](https://gitlab.com/chinstrap/gammastep)                                                                                               |\n| Notification                | [swaync](https://github.com/ErikReider/SwayNotificationCenter)                                                                                    |\n| Calendar and Meeting Status | [vdirsyncer](https://vdirsyncer.pimutils.org/en/stable) and [khal](https://khal.readthedocs.io/en/latest/)                                        |\n| Browser                     | [Chrome](https://www.google.com/intl/de/chrome/)                                                                                                  |\n| Editor                      | [Nvim](https://neovim.io/) with [Astrovim](https://github.com/gabyx/astrovim)                                                                     |\n| Normal Font                 | [NotoSans Nerd Font](https://www.nerdfonts.com/)                                                                                                  |\n| Editor/Terminal Font        | [JetBrainsMono Nerd Font](https://www.jetbrains.com/lp/mono)                                                                                      |\n| Shell                       | [zsh](https://www.zsh.org/)                                                                                                                       |\n| Terminal Emulator           | [wezterm](https://wezfurlong.org) [kitty](https://sw.kovidgoyal.net/kitty)                                                                        |\n\n## NixOS Configurations\n\nSee the [documentation](docs/nixos/README.md) to learn how to install NixOS on\nto your system or in a VM.\n\n## Configuration Files\n\nTo install configuration files we use [`chezmoi`](https://www.chezmoi.io):\n\n```shell\nchezmoi init https://github.com/gabyx/chezmoi.git\nchezmoi diff\n```\n\nand to apply use\n\n- For non encrypted files use (which is truly non-interactively, no passphrase\n  prompt)\n\n  ```shell\n  just apply-configs-exclude-encrypted\n  ```\n\n- For encrypted files use (which might prompt for the passphrase):\n\n  ```shell\n  just apply-configs\n  ```\n\n### Minimal Requirements\n\nTo deploy the configs you need the minimal stuff installed:\n\n- `findutils`\n- `delta`\n- `git`\n- `git-lfs`\n- `age`\n- `just`\n\n### Encryption\n\nChezmoi is configured to use `age` as encryption tool with a secret private-key\nfile [config/dot_config/chezmoi/key.age](config/dot_config/chezmoi/key.age)\nwhich was generated with:\n\n```shell\nage-keygen \u003e key\nage-keygen | tee | age -e --armor \u003e key.age \u0026\u0026 rm key\n```\n\nwhere the printed private key `P` acts as the passphrase to decrypt `key.age`.\n\nThis file `key.age` is encrypted and contains the private key for all `age`\nencryption in this repository. The file is encoded in human-readable PEM format\n(`--armor`).\n\nThe file `key.age` is decrypted when `chezmoi apply` is run in a\n[_before_ hook](config/run_before_decrypt-private-key.sh) such that all\nencrypted files can be decrypted in one go. The decrypted key is then again\ndeleted in a _after_ hook](config/run_after_delete-decrypted-private-key.sh).\n\nThe \"passphrase\" `P` can be stored into the login keyring to make\n`just cm apply` **pass non-interactively**:\n\n```shell\nsecret-tool store --label='Chezmoi Key-File Passphrase' chezmoi keyfile-private-key\n```\n\nInspect the store with `seahorse`.\n\n### Element Desktop\n\nSometimes it does not start due to credential backend changes (?). Specify\n`element-desktop --password-store=\"gnome-libsecret\"` once, which should fix\nthat.\n\n### Mail \u0026 Calendar\n\nI am using `gnome-online-accounts` because they work flawlessly for a various of\ndifferent providers (`google`, `Exchange`). The mail/calendar client `evolution`\nis really good and has a very nice user-experience also with PGP etc. It is\nhonestly better than `thunderbird` and integrates better into the system and\nalso from a security perspective (does not contain a browser etc.).\n\nAutomated setup of these online accounts apparently works but is still a bit\nbrittle. It is crucial to follow the below steps.\n\n#### Automated Setup\n\nSetting up the accounts happens with the two folders:\n\n- `~/.config/goa-1.0`\n- `~/.config/evolution/sources`\n\nSkip to step 3 on a fresh system.\n\n1. Check that there are no online accounts already setup:\n\n   ```shell\n   XDG_CURRENT_DESKTOP=GNOME gnome-control-center\n   ```\n\n   **Check tab `Online Accounts`.**\n\n1. Make sure you do not have anything in your login keyring with a name starting\n   with `GOA`. Check `seahorse`. Should be automatically true if no _online\n   accounts_ are setup.\n\n1. Kill all `evolution` processes: `evolution --force-shutdown`.\n\n1. Delete all evolution settings and state:\n\n   Stop also the services for `evolution`:\n\n   ```shell\n   systemctl --user stop evolution-addressbook-factory.service\n   systemctl --user stop evolution-calendar-factory.service\n   systemctl --user stop evolution-source-registry.service\n   systemctl --user daemon-reload\n   ```\n\n   ```shell\n   rm -rf ~/.config/evolution\n   rm -rf ~/.local/share/evolution\n   ```\n\n1. Apply the two folders `~/.config/goa-1.0` and `~/.config/evolution/sources`\n   with (**uncomment the ignore in `.chezmoiignore`**).\n\n   ```shell\n   just cm apply\n\n   find ~/.config/evolution/sources -type f -name \"*.source\" | \\\n      xargs -I {} sed -i -E \"s@NeedsInitialSetup=false@NeedsInitialSetup=true@\" {}\n   ```\n\n1. Restart the `dbus` service, as it controls the\n   [`goa-daemon`](https://manpages.ubuntu.com/manpages/bionic/man8/goa-daemon.8.html).\n   Since we are using `dbus-broker` which exposes all `dbus` services as\n   `systemd` services we can restart it together with the `evolution` services\n   which might still be running.\n\n   ```shell\n   systemctl --user restart dbus-broker\n   ```\n\n   **This should log you out and then login again.**\n\n   Only resetting with\n   `systemctl --user restart dbus-:1.1-org.gnome.OnlineAccounts@0.service` or\n   just login out did not work.\n\n1. Stop any evolution already running after login.\n\n   ```shell\n   evolution --force-shutdown\n   systemctl --user stop evolution-addressbook-factory.service\n   systemctl --user stop evolution-calendar-factory.service\n   systemctl --user stop evolution-source-registry.service\n   ```\n\n1. Now provide credentials to the online accounts in `gnome-control-center`:\n\n   ```shell\n   XDG_CURRENT_DESKTOP=GNOME gnome-control-center\n   ```\n\n1. Check `mail.nix` for adjustments in the `dconf` settings GUID strings.\n\n1. Start `evolution` and you should see now all accounts be connected and\n   working. If `evolution` starts up without having picked up the accounts, you\n   probably need another `dbus` restart above or logout or complete `restart`.\n\n#### Calendar Syncing for NextMeeting Script\n\nThe script in\n[](./config/dot_config/waybar/scripts/executable_nextmeeting-khal.py) uses\n`khal` to read the synced calendar entries with `vdirsyncer` which runs\nperiodically.\n\nIt syncs google calendar and also the Outlook calendar over `davmail` which is\n[configured with this file](./config/dot_config/davmail/properties.tmpl).\nDavmail will popup a window for the OAuth authentication if the token is not\nthere.\n\n#### Troubleshooting\n\n- When I log out and in again, evolution gets sometimes really stuck in\n  authentication and what helps is to do\n\n  ```shell\n     systemctl --user restart dbus-broker\n  ```\n\n- When `vdirsyncer sync` fails you can get the offending calendar entries by\n  doing:\n\n  ```shell\n     curl -u \"$user:$password\" http://localhost:1080/users/gabriel.nuetzi@sdsc.ethz.ch/calendar/\u003cfile-path\u003e\n  ```\n\n  or delete it with\n\n  ```shell\n     curl -u \"$user:$password\" -X DELETE http://localhost:1080/users/gabriel.nuetzi@sdsc.ethz.ch/calendar/\u003cfile-path\u003e\n  ```\n\n  which resolves duplicate items issues.\n\n## Todos\n\n- [] Consider using flake-parts and every file is a flake-part module It makes\n  it much easier:\n  - https://discourse.nixos.org/t/pattern-every-file-is-a-flake-parts-module/61271/16\n  - https://github.com/vic/vix/blob/03d9abb6b8d664119fc6b16dd863b4aa038ef95a/modules/vic/doom.nix#L4\n  - https://github.com/vic/vix/tree/main/modules\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabyx%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabyx%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabyx%2Fdotfiles/lists"}