Live data from Hacker News

Modetc: Move your dotfiles from kernel space

maxwell.eurofusion.eu

11–20 of 44 posts

Re: Modetc: Move your dotfiles from kernel space

#12
post #6

One of the annoyances of Linux is working out where configuration information is, following through multiple layers of indirection and files over-riding other files. This looks like adding another layer, another place to look, and if you're reading the man file for a shell (for example) it probably won't even mention that this could invalidate the information contained in that in the man file.

> working out where configuration information is Generally, good behaved applications have an entry in their man page that spells out these details for you, so you don't have to work out anything.

Unfortunately so many packages these days don’t even have a man page at all let alone one with good config info.

Re: Modetc: Move your dotfiles from kernel space

#13

I struggle to see a valid usecase for this that isn’t handled by symlinks.

The use case is that you can actually use your home directory without either (a) hiding files or (b) wading through 40 config files and dirs that XDG ignorant devs put there.

Re: Modetc: Move your dotfiles from kernel space

#14

Earlier quoted context omitted.

> working out where configuration information is Generally, good behaved applications have an entry in their man page that spells out these details for you, so you don't have to work out anything.

Unfortunately so many packages these days don’t even have a man page at all let alone one with good config info.

Well ... hopefully they're open source and all that.

Re: Modetc: Move your dotfiles from kernel space

#15
post #5
post #4

Earlier quoted context omitted.

Will you not have `~/.ssh`? If you have `.ssh .config/ssh` as a rewrite rule, `stat ~/.ssh` will still find it.

The point is to have a clean home directory.

You could write a kernel module, then, that just hides certain symlinks from you (which is effectively what this module is).

Re: Modetc: Move your dotfiles from kernel space

#16
post #6

One of the annoyances of Linux is working out where configuration information is, following through multiple layers of indirection and files over-riding other files. This looks like adding another layer, another place to look, and if you're reading the man file for a shell (for example) it probably won't even mention that this could invalidate the information contained in that in the man file.

You're not wrong. In a worst case scenario I resort to using strace to figure out where a program is reading config from.. from what I understand, if this kernel module is in use then even that approach wouldn't help.

But since the use case is personal dotfiles, I imagine the user isn't going to forget that they set this up.

Re: Modetc: Move your dotfiles from kernel space

#18
post #6

One of the annoyances of Linux is working out where configuration information is, following through multiple layers of indirection and files over-riding other files. This looks like adding another layer, another place to look, and if you're reading the man file for a shell (for example) it probably won't even mention that this could invalidate the information contained in that in the man file.

To be fair the author shows an example of using NixOS. It's absolutely another layer of indirection (probably several) but it does make that usual Linux "fun" less problematic because of its immutable nature and API design.

Re: Modetc: Move your dotfiles from kernel space

#19
post #7
post #5

Earlier quoted context omitted.

The point is to have a clean home directory.

Abandon hope. I just treat ~ as a system-owned configuration area, and put my actual files (documents, photos, etc.) in a completely different hierarchy under /.

I have been doing this for decades. My files are in a sub-directory of $HOME. It also makes it very obvious when a piece of software does not treat your $HOME with respect.

Re: Modetc: Move your dotfiles from kernel space

#20

I struggle to see a valid usecase for this that isn’t handled by symlinks.

Hi, author here: whether it's a valid use case depends on your level of OCD, but the difference compared to symlinks or bind mounts is that you will have a clean home: e.g. `ls -la` won't show any "hidden" files.

Also, completely unrelated to my motivation, someone pointed out that modetc could be used to quickly hotfix packages built with Nix. Say that you need to fix a CVE in openssl, normally that would require to rebuild all dependent packages, which takes a long time. Instead with something like modetc you could build just openssl and rewrite /nix/store/-openssl-3.6.0/ -> /nix/store/-openssl-3.6.0-hotfix/.

Another application might be replacing some configuration file with placeholders for secrets, with one file with the secrets substituted in, without having to modify it in place, possibly only for a specific UID. This is something you might find useful on NixOS.

Post reply on HN