I was wondering if you had any issues setting up a local workbench using the docker template. I have no issue using a GCP-based instance but the local docker instance is throwing fits because it can't find the "host-gateway". I usually use podman so I'm running a fresh install of docket and would have expected the defaults to just work out of the box. Great video. I've been using stow for dotfile management for years but coder is about to take it to a whole new level.
The _git bare_ method is superior to any other method for managing dotfiles. It keeps your dotfiles in a git repo without the need to copy files around or to create symlinks. Look it up.
Ive been using chezmoi and it takes care of emulating this symlinking behavior. The additional benefit is the possibility to include secrets (exporting API keys needed in config files for specific tools, such as pushbullet) using autofilled templates that are populated by chezmoi on the fly. Another benefit is that you can have conditional config, based on the device you are installing the config on, using conditional templates. What do you use for popups in tmux, such as the one that was shown with "neogit" ?
Thanks for making this. I can't explain why, but for some reason I have a ton of procrastination around dotfiles, the concept backing them up, managing them, I feel like it's a brick wall for me to move forward for some crazy reason lol.
@@TwilightTrekker1 going over that wall is worth it. Once you have it set up, it takes very little maintenance. I can go weeks between commits to my dotfiles. Also, with stow you can just gradually build up as you need it. Don’t need to rearrange your entire config dir in one go.
@@ZiRo815 Reproducibility and integration, mostly. I agree it's a pretty bad workflow, so you... shouldn't do that. You can use regular dotfiles while you're changing stuff in your config, and port it to home-manager once you're done and happy with it. Otherwise it will be too slow.
@@Flackon I find it kinda awkward to have some config done one way and some config done another way. I currently symlink everything with home manager, but it’s a little awkward. I’m thinking about using Stow for my user config instead.
@@ZiRo815 My idea is that you only have the straight config when you're setting up a program for the first time, but when you actually commit to your dotfiles repo, you port it to home-manager (either let it link to the nix store, or use a module). That way you don't really mix methods
@@Flackon yeah, I get it. My tools are configured often. Nix makes making changing the config more effort than I want it to be, dragging me into the world of configuration management when I want to focus on whatever I’m trying to achieve. I want the configuration of my at-hand tools to be light touch but I don’t mind the configuration of my systems being a heavier lift. Maybe this attitude will shift as I become more fluent with nix, but managing user configs with nix feels like a PITA when I’m using it, especially when it comes to translating what I want as per original tool doc-specified changes into home manager modules docs-specified changes into the actual changes I need to make to home manager config.
Does zsh on macos automatically respect XDG_CONFIG_HOME? I tried moving zshrc to ~/.config/zshrc/.zshrc but it looks like the configuration file is not being loaded anymore
You need to add env variable export ZDOTDIR="$XDG_CONFIG_HOME/zshrc" to /etc/zshenv (which affects all users) or ~/.zshenv (which affects only your user) and source it ofc.
@@gorr_av Additional note for anybody having trouble setting zsh env variables on macos: Although they should be set in /etc/zshenv Apple declares HISTSIZE, HISTFILE, and maybe a few others in /etc/zshrc This is important to know because zsh files are sourced in order of root, user, root, user etc instead of root files followed by user files. So if you set HISTSIZE in ~/.zshenv its value will be over written by the /etc/zshrc file which is sourced after ~/.zshenv TLDR unless you know what you're doing just set env variables ~/.zshrc to avoid unnecessary issues.
Great video. I was lost most of the time. Looks like the potential of Nix ecosystem is immense. But I quickly gave up after an hour of reading documentation, especially the crazy Nix language.
One problem with symlinked directories is when non config files are put into the directory. Like cache files or log files by various programs. These files end up polluting the git repo, and we don’t know ahead of time which such files we’d need to gitignore. Thats why i use the -no-folding flag when i stow
A program putting logs into the config directory to me (!) is either misconfigured or not worth using since it violates sane programming on the most basic level. Same for cache files.
@@vikingthedude you only need to commit the User dir for vscode. The extra files problem is easily solved with gitignore (you are checking what gets staged into git before committing, right?)
So I recently dove into nixos. My approach was to use hard links to bring a known set of dot files into my git repo within /etc/nixos, so they are versioned in one place. Stow only manages symlinks and git doesn't natively resolve symlinks.
Interesting approach. Have you considered using home manager as a nixos module to manage your home directory or do you feel hard links are good enough for you ?
I will move to home manager eventually. My use case is to version control my whole setup in a single repo. I wonder if home manager can support this...
@@rujnyes it can. You might explore using flakes with home manager, which allows you to create and build everything, even the system configuration.nix, using nix modules to generate all your configs from a single $HOME/ directory tree. Vimjoyer has a great video on how to set it up. Also, in the nix way, the configuration is not written in a discreet dotfile anyway but in a nix module which then generates and places the appropriate dotfile. In other words, linking of configs is a non-issue.
Beautiful, yes I will rebuild every time. Maybe this is overkill but I switch machines often and want the same setup. I am always tweaking and tinkering 👍
I use home manager and Darwin nix, but the portability of stow is nice too. I don’t always want to install home manager on every server I touch, but I would like access to my nvim setup everywhere. And fully configuring nvim within homemanager is not a rabbit hole I care to invest time in.
Hmmm... both Tmux and Zellij seems to have issues for me. Tmux is fast but it doesn't display colors correctly in ascii-patrol meaning the only way to play it is in black and white. Zellij displays the colors correctly but the game runs very slow and there is an input delay.
Thank you! This is the ZSA Platform. Quite pricy, but I love it. You can find some 3D-printable ones on their website if you don't want to spend this much on a tenting kit
ok. I installed nix on fedora and installed some hyprland stuff, waybar, and wofi. Currently installing a s**tload of dependencies that seems excessive, and its worrying me. Is this a normal thing when using using nix on a non-nixos distro?
I was with you up until you started talking about flakes. It seemed like you started hopping around in and out of environments(nix-shells?) without much explanation as to what was happening, and that is the part I am trying to wrap my dense head around. I understand that a flake is a way to kinda provide 'everything for a project' but when a flake is created does it become part of the OS or do you have to 'jump into it' every time you want to use something that is in the flake? For instance, lets say I want to add a few programs or configurations into a flake so I don't mess with my base system. As far as I understand I have to 'go into' the flake to use them correct? what if I decide I want this config to live on my main system now do I 'merge' the flake it with my system or what am I missing?