{"id":21873693,"url":"https://github.com/archisman-mridha/dotfiles","last_synced_at":"2026-04-11T03:03:46.440Z","repository":{"id":231937678,"uuid":"783082397","full_name":"Archisman-Mridha/dotfiles","owner":"Archisman-Mridha","description":"My system configuration files","archived":false,"fork":false,"pushed_at":"2026-02-02T23:07:01.000Z","size":15034,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-03T12:14:57.315Z","etag":null,"topics":["archlinux","dotfiles","home-manager","hyprland","hyprland-config","lazy-nvim","macos","neovim","nix","nix-darwin","password-store","starship","tmux","tmux-conf","vscode","vscode-settings","wezterm","zsh"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"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/Archisman-Mridha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2024-04-06T22:22:10.000Z","updated_at":"2026-02-02T23:07:04.000Z","dependencies_parsed_at":"2024-04-17T05:28:20.190Z","dependency_job_id":"8b6bde77-0a99-46f7-9a29-52c2d95b9db0","html_url":"https://github.com/Archisman-Mridha/dotfiles","commit_stats":null,"previous_names":["archisman-mridha/dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Archisman-Mridha/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archisman-Mridha%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archisman-Mridha%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archisman-Mridha%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archisman-Mridha%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Archisman-Mridha","download_url":"https://codeload.github.com/Archisman-Mridha/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Archisman-Mridha%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31667034,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T17:19:37.612Z","status":"online","status_checked_at":"2026-04-11T02:00:05.776Z","response_time":54,"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":["archlinux","dotfiles","home-manager","hyprland","hyprland-config","lazy-nvim","macos","neovim","nix","nix-darwin","password-store","starship","tmux","tmux-conf","vscode","vscode-settings","wezterm","zsh"],"created_at":"2024-11-28T07:09:09.010Z","updated_at":"2026-04-11T03:03:46.409Z","avatar_url":"https://github.com/Archisman-Mridha.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotfiles\n\n\u003cp\u003e\n \u003cimg alt=\"Zsh\" src=\"https://img.shields.io/badge/Zsh-F15A24?logo=zsh\u0026logoColor=fff\u0026style=for-the-badge\" /\u003e\n \u003cimg alt=\"Tmux\" src=\"https://img.shields.io/badge/tmux-1BB91F?logo=tmux\u0026logoColor=fff\u0026style=for-the-badge\" /\u003e\n \u003cimg alt=\"Neovim\" src=\"https://img.shields.io/badge/Neovim-57A143?logo=neovim\u0026logoColor=fff\u0026style=for-the-badge\" /\u003e\n \u003cimg alt=\"MacOS\" src=\"https://img.shields.io/badge/macOS-000?logo=macos\u0026logoColor=fff\u0026style=for-the-badge\" /\u003e\n \u003cimg alt=\"Wezterm\" src=\"https://img.shields.io/badge/WezTerm-4E49EE?logo=wezterm\u0026logoColor=fff\u0026style=for-the-badge\" /\u003e\n \u003cimg alt=\"Linux\" src=\"https://img.shields.io/badge/Linux-FCC624?logo=linux\u0026logoColor=000\u0026style=for-the-badge\" /\u003e\n \u003cimg alt=\"Arch Linux\" src=\"https://img.shields.io/badge/Arch%20Linux-1793D1?logo=archlinux\u0026logoColor=fff\u0026style=for-the-badge\" /\u003e\n \u003cimg alt=\"Hyprland\" src=\"https://img.shields.io/badge/Hyprland-58E1FF?logo=hyprland\u0026logoColor=000\u0026style=for-the-badge\" /\u003e\n\u003c/p\u003e\n\n## Installing Arch Linux\n\nYou can follow this tutorial : \u003chttps://www.youtube.com/watch?v=FxeriGuJKTM\u0026t=354s\u003e, to install Arch Linux using the Arch Linux Installer. Just make sure you choose `Hyprland` as the desktop environment and `NetworkManager` as the network management tool.\n\nYou can list available wifi networks using this command :\n\n```sh\nnmcli dev wifi list\n```\n\nand connect with one, using this command :\n\n```sh\nnmcli dev wifi connect \u003cSSID\u003e password \u003cpassword\u003e\n```\n\nTo verify that you're successfully connected to your wifi, run this command :\n\n```sh\nip addr show\n```\n\nthe `wlan0` network interface must have an IPv4 address assigned.\n\n## Setup\n\nFirst install Nix :\n\n```sh\ncurl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install\n```\n\nThen get into a temporary Nix shell, where you'll have access to git, stow and home-manager.\n\n```sh\nnix-shell -p git git-crypt stow home-manager vim\n```\n\nClone this repository :\n\n```sh\ngit clone https://github.com/Archisman-Mridha/dotfiles ~/dotfiles\ncd ~/dotfiles\n```\n\n\u003e [!NOTE]\n\u003e Wireguard and Aviatrix config files are encrypted using `git-crypt`.\n\u003e Import your GPG key and execute `git-crypt unlock` to decrypt the files.\n\nThen execute :\n\n```sh\nstow --no-folding .\n\nhome-manager switch \\\n  --flake $HOME/dotfiles/.config/home-manager#archismanmridha@Archismans-MacBook-Air\n```\n\nOn MacOS, run the following to install nix-darwin :\n\n```sh\nnix run nix-darwin -- switch \\\n  --flake $(pwd)/.config/nix-darwin\n```\n\nThe packages specified in [packages.nix](./.config/home-manager/modules/home-manager/packages.nix) and [homebrew.nix](./.config/home-manager/modules/nix-darwin/homebrew.nix) will be installed in your system.\n\nExecute this command, if you want to cleanup Nix cache :\n\n```sh\nnix-collect-garbage -d\n```\n\n## Arch Linux specific gotchas\n\n- While executing `stow --no-folding .`, in Arch Linux, if you get an error as such :\n\n  ```log\n  * cannot stow dotfiles/.config/hypr/hyprland.conf over existing target .config/hypr/hyprland.conf since neither a link nor a directory and --adopt not specified\n  ```\n\n  In that case, first execute `stow --no-folding . --adopt`. Then, navigate to `~/.config/hypr/hyprland.conf` and replace the content with whatever is present [here](./.config/hypr/hyprland.conf).\n\n- If you're in Arch Linux, your default shell will be Bash. And as far as I know, we cannot change the default shell using HomeManager (since that requires root privileges). So, manually execute the following commands, to make zsh your default shell :\n\n  ```sh\n  grep -qxF $(which zsh) /etc/shells || echo $(which zsh) | sudo tee -a /etc/shells\n  chsh -s $(which zsh)\n  ```\n\n- zsh plugin manager isn't automatically installing `kube-ps1`. So you need to do it yourself :\n\n  ```sh\n  yay -S kube-ps1\n  ```\n\n- Run this, so SSHD starts up automatically on boot :\n\n  ```sh\n  sudo systemctl enable sshd\n  ```\n\n## Updating packages\n\nGo to [./.config/home-manager/](./.config/home-manager/) and run :\n\n```sh\nnix flake update\nhome-manager switch --impure\n```\n\n## Password management using gopass\n\n### Bootstrap\n\nSince, the company I currently work for uses [Password Store](https://www.passwordstore.org), I will be settling with [gopass](https://github.com/gopasspw/gopass) for now. But, if someday I discontinue working with them, I'll might give [sops-nix](https://youtu.be/G5f6GC7SnhU?si=baQEJPWG1dWgIqZQ) a try.\n\nFirst, generate a GPG key-pair (which never expires), using this command :\n\n```sh\ngpg --gen-key\ngpg --edit-key \u003cgpg-key-id\u003e\n```\n\nMake sure you backup this GPG key-pair somewhere safe. You can view the actual public and private keys using :\n\n```sh\ngpg --export --armor \u003cgpg-key-id\u003e\ngpg --export-secret-keys --armor \u003cgpg-key-id\u003e\n```\n\nNext, initialize the password store using :\n\n```sh\ngopass init \u003cgpg-key-id\u003e\n```\n\nYou can follow this tutorial, to learn further more about gopass : \u003chttps://youtu.be/FhwsfH2TpFA?si=ZIo4NmrTHEcgxS_u\u003e.\n\n### Concurrent setups\n\nFirst, import and trust the GPG keypair :\n\n```sh\ngpg --import password-store.private-key.gpg\ngpg --import password-store.public-key.gpg\n\ngpg --edit-key \u003cGPG key-pair id\u003e (and then type trust and hit Enter)\n```\n\nThen, as usual, initialize the password store using `pass init \u003cGPG key-id\u003e`.\n\nThe SSH key-pair I use to sign commits and authenticate against Github, is stored at `personal/github/ssh`. So, I use these commands to complete my Github setup :\n\n```sh\ngopass show personal/github/ssh/private-key \u003e ~/.ssh/github\ngopass show personal/github/ssh/public-key  \u003e ~/.ssh/github.pub\n```\n\nDon't forget to set correct file permission for the private key file :\n\n```sh\nchmod 600 ~/.ssh/github.pub\n```\n\notherwise you'll get `file permissions too open` error.\n\n\u003e A small script can be made for a better UX.\n\n## Wezterm (and tmux)\n\n- [Copy Mode](https://wezfurlong.org/wezterm/copymode.html)\n- [Quick Select Mode](https://wezfurlong.org/wezterm/quickselect.html)\n\n## Working in my Arch Linux machine from my Macbook\n\nEverytime, I connect to the wifi from my Arch Linux machine, I want it to get assigned with the same private IPv4 address : `192.168.29.146/24`. I can pull it off, using this command :\n\n```sh\nsudo nmcli connection modify \"Bandwidth 5\" \\\n  ipv4.method manual \\\n  ipv4.addresses \"192.168.29.146/24\" \\\n  ipv4.gateway \"192.168.29.1\" \\\n  ipv4.dns \"8.8.8.8 8.8.4.4\"\n\nsudo nmcli connection up \"Bandwidth 5\"\n```\n\nIn my Macbook, I open Neovim and run `:DistantInstall`. This will install the distant binary in my Macbook. Then, I run `:DistantLaunch ssh://\u003cusername\u003e@\u003cip or hostname\u003e` to connect to the Arch Linux machine.\n\n\u003e distant.nvim currently doesn't support NeoTree and Telescope integration. But work on them is ongoing. So, as of now, I just SSH into my Arch Linux machine and run Neovim within that SSH session.\n\n## Cheatsheets\n\n- [Neovim](https://gist.github.com/Archisman-Mridha/41923c35fec46d46497a06bdca56cb6f)\n- [Tmux](https://gist.github.com/Archisman-Mridha/d0157da78bac7e1675aa15cfdfa2eb97)\n- [iTerm2](https://gist.github.com/Archisman-Mridha/b7654858acb1d7169482f1307b786a67)\n\n## Previews\n\n- Neovim and Tmux\n  ![Neovim](./previews/neovim-and-tmux.png)\n\n- Wezterm\n  ![Wezterm](./previews/wezterm.png)\n\n- VSCode\n  ![VSCode](./previews/vscode.png)\n\n- Wallpaper\n  ![Glassy](./.config/wallpapers/glassy.jpg)\n\n## References\n\n- [MyNixOS](https://mynixos.com)\n\n- [Appendix A. Home Manager Configuration Options](https://nix-community.github.io/home-manager/options.xhtml)\n\n- [Nix home-manager tutorial: Declare your entire home directory](https://youtu.be/FcC2dzecovw)\n\n- [How I Use Tmux With Neovim For An Awesome Dev Workflow On My Mac](https://www.youtube.com/watch?v=U-omALWIBos)\n\n- [Setup nix, nix-darwin and home-manager from scratch on an M1 Macbook Pro](https://gist.github.com/jmatsushita/5c50ef14b4b96cb24ae5268dab613050)\n\n- [When and how should default.nix, shell.nix and release.nix be used?](https://stackoverflow.com/questions/44088192/when-and-how-should-default-nix-shell-nix-and-release-nix-be-used)\n\n- [Master Nix inherit Keyword in 5 Minutes](https://www.ersocon.net/articles/master-nix-inherit-keyword-in-5-minutes~c464b126-0d57-4971-9a87-2515f9aa8d19)\n\n- [Nix Language basics](https://nix.dev/tutorials/nix-language.html)\n\n- [Disabling System Integrity Protection](https://github.com/koekeishiya/yabai/wiki/Disabling-System-Integrity-Protection)\n- [Determinate Systems : Zero to Nix](https://zero-to-nix.com)\n\n- [Nix darwin activation script by elliott minns](https://gist.github.com/elliottminns/211ef645ebd484eb9a5228570bb60ec3)\n\n- [Installing Arch Linux using the Arch Linux installer](https://www.youtube.com/watch?v=FxeriGuJKTM\u0026t=354s)\n\n- [Arch Linux Experience - Hyprland](https://www.youtube.com/watch?v=uZDPXFQYz0Q)\n\n- [Distant.nvim's Neovim editor guide](https://distant.dev/editors/neovim/)\n\n- [Editing files and running LSP servers on a remote machine](https://youtu.be/BuW2b1Ii0RI?si=vClcQbM75BbJYR73)\n\n- [SSH Port Forwarding](https://www.geeksforgeeks.org/ssh-port-forwarding/)\n\n- [This is perhaps my favorite password manager for the terminal](https://youtu.be/FhwsfH2TpFA?si=ZIo4NmrTHEcgxS_u)\n\n- [PASS: a Password Manager \u0026 Two Factor Authentication (OTP) with no Cell Phone](https://youtu.be/sVkURNfxPd4?si=CD71pMNqsEzQhaDN)\n\n- [Adding a new SSH key to your GitHub account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)\n\n- [My Wezterm Config](https://www.youtube.com/watch?v=V1X4WQTaxrc)\n\n- [Is it possible to disable lsp formatting temporarily?](https://www.reddit.com/r/neovim/comments/oo8jcu/is_it_possible_to_disable_lsp_formatting/)\n\n- [How to Use Multiple Git Configs on One Computer](https://www.freecodecamp.org/news/how-to-handle-multiple-git-configurations-in-one-machine/)\n\n- [Seamless copy-paste between tmux, vim and clipboard over ssh](https://gronskiy.com/posts/2023-03-26-copy-via-vim-tmux-ssh/)\n\n## TODOs\n\n- [x] Detect the underlying OS and CPU architecture, based on which the [macos.config.nix](./.config/home-manager/macos.config.nix) or the [archlinux.config.nix](./.config/home-manager/archlinux.config.nix) will be imported in [flake.nix](./.config/home-manager/flake.nix).\n\n- [x] Setup gopass.\n\n- [ ] Configure Hyprland.\n\n- [x] Enable image support in Neovim\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchisman-mridha%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farchisman-mridha%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchisman-mridha%2Fdotfiles/lists"}