Have tried this myself and never had much luck trying to install nvim plugins via nix.
I’ve found the best way is to just use the plugin managers built for neovim, I’m not sure if this applies to all of them but lazy.nvim seems to be fairly declarative anyway, have home-manager map a directory to .config/nvim/ and away you go
As a side note though I think it is rather silly just how many different neovim package managers there are, which at the end of the day all do the same thing in very similar ways
Thanks for the feedback. I’m used to packer but it’s not maintained anymore so may be a good time to switch to lazy.
I’ll see if I can have it work in NixOS.
I have no idea, from what I gather there aren’t all the packages
I’m not sure what if anything installing them via nix does I’ve just come to the realisation it’s already declarative so why would people bother getting it working under nix
As other comments point out, they are usually not properly packaged through nix.
If you read the , for most plugins, the derivation just downloads the plugin, puts it to nix-store, and makes it available to the editor through environment variables. So it’s similar to the binary distributed software. Two most notable restrictions:
Nix is not aware of transient dependencies.
The plugin is not aware of the nix-store model.
So for plugins that don’t have external dependencies (or dependencies other than the “common” ones like python or sh that happen to be available), and that don’t interact with the filesystems, this approach would be fine, but the more complex ones would fail.
In your example, mason failed because of 1, home-manager wasn’t aware that the pip module is a transient dependency of this plugin; and treesitter failed because of 2, because it doesn’t know that nix-store is read-only and should be managed by nix.
There are no general solutions, but people may have nixified some plugins on a case-by-case basis. If you don’t want to spend a lot of time (and remember that it might be broken by the next plugin upgrade), as others have suggested, take the traditional plugin management approach. (Personally, I use LunarVim which uses Lazy.nvim and it’s been working fine.)
I had a few programs for various things and one was simply an extension from the gnome extension manager. I updated it and my screen turned black and I couldn’t get it back. I had to revert to a previous version, then uninstall everything until I figurd out what caused it.
I see an issue about providing sudo credentials that has been resolved as “implemented” but I can’t figure out where you do that for a connection that you’ve ssh’d into as a user.
It uses the sudo credentials from the SSH connection, even if you don’t need to provide a password to login. So if you set a password for a SSH connection, it should use that for the sudo elevation.
Firefox iOS is crippled by Apple’s policy. Orion browser has shown it’s possible to install Firefox extensions on iOS. Hope Firefox implements something similar.
I can’t remember what I did to break it, but back when I was in high school I was tinkering right before class and rendered my laptop unbootable. I booted into an Arch Linux USB, chrooted into my install, found the config file I messed with, then reverted it. I booted back into my system and started the bell ringer assignment as quickly as I could. I had one minute left when the teacher walks by, looks at it, and says that I did a really good job. She never knew my laptop was unbootable just 2 minutes earlier.
I used to work at this place that had a gigantic QNX install. I don’t know if QNX that we used back then had any relation to q&x now They certainly don’t look very close.
It was in the '90s and they had it set up so that particular nodes handled particular jobs. One node to handle boot images and serve as a net boot provider, one node handled all of the arcnet to ethernet communication, one node handled all the serial to mainframe, a number of the nodes were main worker nodes that collected data and operated machinery and diverters. All of these primary systems were on upper-end 386s or 486s ,they all had local hard disks.
The last class of node they called slave nodes. They were mainly designed for user data ingest, data scanning stations, touch screen terminals, simple things that weren’t very high priority.
These nodes could have hard discs in them, and if they did, they would attempt to boot from them saving the net boot server a few cycles.
If for some reason they were unable to boot from their local hard drive, They would netboot format their local hard drive and rewrite their local file system.
If they were on able to rewrite their local file system they could still operate perfectly fine purely off the net boot. The Achilles heel of the system was that you had no idea that they had net booted unless you looked into the log files. If you boot it off your local hard drive of course your root file system would be on your local hard drive. If you had net booted, and it could not rebuild your local file system, your local root file / was actually the literal partition on the boot server. Because of the design of the network boot, nothing looked like it was remotely mounted.
SOP for problems on one of the slave nodes was to wipe the hard disk and reboot, in the process it would format the hard drive and either fix itself or show up as unreliable and you could then replace the disc or just leave the disc out of it. Of course If the local disk had failed and the box had already rebooted off netboot without a technician standing there to witness it, rm -Rf would wipe out the master boot node.
I wasn’t the one that wiped it, but I fully understand why the guy did.
Turns out we were on a really old version of QNX, we were kind of a remote warehouse mostly automated. They just shut us down for about a week. Flew a team out. Rebuilt the system from newer software, and setup backups.
Not sure about 1, but 2 and 3 both have the same answer. Both TSInstall and Mason are just trying to install other software packages on your system, and you’re on NixOS, so of course they can’t do that. You don’t install your software, you declare it. Add the Treesitter parsers you need right next to your plugins (there is a sub collection under the vimPlugins collection just for Treesitter parsers), and put whatever Mason would be installing into your user packages instead.
That said, I agree with the other commenter. Even though the community has done a lot of work on rich config options for Neovim, they’re just too far away from the normal way of doing things in the Neovim world, and plenty of plugins are written in ways that assume it’s configured in “normal” ways. Plus configuring Neovim is already kinda like assembling your own car from parts in any case, so it’s honestly better to just use nix to install Lazyvim or whatever flavor of choice and let it handle the plugin management/config. And believe me, I really tried to do it all in Nix, I wanted to do it that way. But it’s just not worth the headache at this point
Thanks for this feedback, it helps me feel a little bit less stupid :) With everything setup in NixOS documentation for neovim in appearance I thought really dumb to not be able to have it worked.
Using the approach proposed by @flashgnash (i.e. using lazy.vim) let me install neovim and all my plugins.
It’s also a nightmare if you want your config to work with both nix and non nix platforms. If I’m using my config on windows or at work, I’m not going to have nix and home manager to interpret the nix version of my vim config. On my systems with home manager, I’d like be able to install my nvim config as part of home manager rebuild. If I have home manager pull my configs git repo, it causes lazy to freak out whenever I try to update my plugins. It’d be nice to have some sort of integration with lazy that exists with cargo and similar tools but it doesn’t look like anyone’s been working on it.
ngl i consistently have a better experience running games through wine than using their native versions. linux ports are often completely dysfunctional and it sucks ass
Can’t say I have any interesting stories. Most of mine are just the head-scratching “I don’t know why that didn’t work; guess I need to reinstall” kind of story. Like enabling encrypted LVM on install and suddenly nothing is visible to UEFI. Or trying to switch desktop environments using tasksel and now I have a blank screen on next reboot. That lame kind of stuff.
My coworker though… he was mindlessly copy/pasting commands and did the classic rm -rf $UNSETVARIABLE while in / and nuked months of migrated data on his newly built system. He hadn’t even set up backups yet. Management was upset but lenient.
A few years ago I was having obscure audio problems on Ubuntu so I tried replacing pulseaudio with pipewire. I was feeling pretty cocky with using the package manager so I tried
sudo apt install pipewire
Installed successfully, realized nothing changed, figured maybe I had to get rid of pulseaudio to make it stick.
sudo apt remove pulseaudio
Just two commands. Instant black screen, PC reboots into the terminal interface. No GUI. Rebooting again just brings me back to the terminal.
I fixed it eventually, but I’m really not very computer literate despite using Linux, so I was sweating bullets for a minute that I might have bricked it irreversibly or something.
linux
Oldest
This magazine is from a federated server and may be incomplete. Browse more on the original instance.