new post about how you can choose not to use #Nix to manage some parts of your configuration, how to do it, and the benefits you get from doing that

instant changes, no rebuilds, and you can still get pinning for dependencies
https://jade.fyi/blog/use-nix-less/

You don't have to use Nix to manage your dotfiles

computers i guess

@leftpaddotpy

The simplest solution for dotfiles, […], is to symlink a bunch of files into a Git repo.

I’d argue that the simplest solution is to just put the home dir itself into git. Am I missing anything?

Apart from the obvious bit that then you must never run git add . but I don’t think that’s a big issue?

@liskin there's a horrible solution to this actually. you can put * in gitignore and then !foo for each thing you actually want. i know people who do this weird git pattern and different people who put their home directory directly in git.

i don't personally think the latter is great because i don't like the home directory layout and think it's poor code organization. also it will make it pretty easy to do weird tooling mistakes with things that expect a parent repo. but it is technically possible!

@leftpaddotpy What I actually do is I have the .git in src/dotfiles but its worktree is set to ~, solving the problem of the repo being exposed by default. For the root dotfiles, the worktree is / 🙂

And the gitignore thing… I have an alias for git status that only looks at subdirectories that have .gitignore in them. So by touch .vim/.gitignore I mark .vim as wanted. Slightly better than having a global .gitignore, as that would confuse nvim’s detection of LSP root dir and perhaps have other unintended consequences.

So yeah there are hacks but having to symlink stuff is just a different hack.

(I’m not actually arguing, I was just curious why many people bother with symlinks or Nix, and the discussion helped understand)

@leftpaddotpy One thing I really like about my setup is that I can `git grep` and it tells me where that thing actually is 😁

@liskin FASCINATING. i love hearing about people's workflows, especially if they managed to combine together the right advanced features to get what they want (and what they want is a creative use of the tool).

i think originally i used symlinks (and my own bad script) because i didn't like the aesthetics of any of the dotfiles managers which copy the structure of the home directory and didn't want to learn yet another thing. these days, in principle, I've become an advanced enough git user that i could have adopted your workflow but i still have incompatible opinions about the layout that lead to using symlinks.

you could definitely write a blog post about this invention.

@leftpaddotpy now that I think about it I do actually use symlinks a bit, but the other way around - https://github.com/liskin/dotfiles/tree/home/.nvim - as a shortcut for stuff that lives deep in xdg dirs and I edit often enough to be annoyed by it

and yeah it's held together by Makefiles and bash scripts - it's a complete insanity, but too much work to do better (even if there was consensus on what better is, even if there was a chance that better now will be the same as better in 5 years)

(yeah the blog thing... goes somewhere on my already overflowing to do list, I'm afraid)
dotfiles/.nvim at home · liskin/dotfiles

My personal monorepo: dotfiles, /etc-files, single-file scripts, vim plugins, webexts/userscripts, xmonad config, all that stuff… - liskin/dotfiles

GitHub
@leftpaddotpy @liskin we clone our dotfiles into ~/.config. it avoids the above problems and requires like 2 symlinks for the few things that don't support XDG config
@kouhai @leftpaddotpy @liskin imo the most cursed part of it is that we end up putting ~/.config/bin in our $PATH
@Qyriad @kouhai @liskin i have this as well but it's in ~/bin and //bin in my repo
@leftpaddotpy @Qyriad @kouhai @liskin ~/.local/bin has been our tradition for many years now
@helle @Qyriad @kouhai @liskin we don't do this for scripts we own because tools like pip put junk in there
@leftpaddotpy @helle @Qyriad @liskin ditto for usr local bin
@kouhai @leftpaddotpy @helle @Qyriad @liskin looks at dotfiles with arbitrary mappings between config files and home directory paths

looks at fedi i am perfectly normal and can be trusted with configuration scripts
@kouhai @leftpaddotpy @helle @Qyriad @liskin no i didn't write a script called track-config.sh haha that would be absurd
@jyn @leftpaddotpy @helle @Qyriad @liskin I worry for your immortal configuration, jyn
@kouhai @leftpaddotpy @helle @Qyriad @liskin look it gives me less issues than using nix ....

@jyn @kouhai @helle @Qyriad @liskin as this post shows, there are different amounts of using nix, and you can achieve "not having to use homebrew or worry about slow updating linux distros with incomplete packaging of dev tools" without making your life worse by putting nix in your way.

but anyway, the arbitrary mappings thing is something i do as well, but it is as symlinks so i don't have to keep track of the thing once it's created.

@Qyriad @leftpaddotpy @liskin honestly with how well supported XDG config is, this is a great idea!

I have my dotfiles repo with $HOME as worktree (inspired by https://mitxela.com/projects/dotfiles_management) but as you can see https://codeberg.org/valpackett/dotfiles almost everything is in the .config.. almost.

Dotfiles Management - mitxela.com

Tracking config files