aurtzy

joined 2 years ago
 

cross-posted from: https://discuss.tchncs.de/post/25591500

Hi! I'd like to share a package of mine that was recently made available on MELPA.

Disproject is a package for GNU Emacs that provides integration with project.el and allows for dispatching various project-related commands via Transient menus.

It is similar to (and inspired by) the function project-switch-project, but also attempts to improve on its feature set in addition to the use of Transient. Projectile users may also find similarities to projectile-commander.

Some notable features include (but may not be limited to):

  • Auto-detecting the current project when starting the menu.
  • Switching between active projects (i.e. only those with open buffers).
  • Defining custom per-project suffixes like compilation commands to show in the menu (see disproject-custom-suffixes).
  • An option to prefer displaying buffers to another window when executing commands.
  • When available, integration with: envrc; magit; magit-todos; mise.el.
  • A set of customizable variables to substitute some commands in the menu (see Customization).
[–] aurtzy@discuss.tchncs.de 4 points 10 months ago

I have for the past half year. I don't have numbers, but rolling with the NVK vulkan driver (context for the unaware [1]) on mesa's main branch gets me somewhere around half the proprietary driver's performance on average, and can be accompanied with stutters if it is a heavy bottleneck (turning down the resolution is an easy way out). Most games I've tried are runnable now.

It sounds like you're looking for more performance with this post though, so you're likely not going to see improvements taking this route. I would still suggest giving it a try for people that are able and can tolerate the sacrifice. It's good enough for me (and better in the wayland case) that I rarely swap to the proprietary driver anymore.

Mesa has a tracker issue for games on NVK [2] [3] with reports about game statuses and issues from the past 5 months. It includes playable and unplayable games for those interested in gauging its usability.

Also, for the record, NVK is no longer considered experimental as of mesa 24.1 (May of this year) [4].

[1] https://www.collabora.com/news-and-blog/news-and-events/nvk-has-landed.html

[2] https://docs.google.com/spreadsheets/d/1RuHD3Z_nBKCp618HHC5I9hOu0lqCoFYwQ4FM69M-Ajg/edit?gid=469568508#gid=469568508

[3] https://gitlab.freedesktop.org/mesa/mesa/-/issues/11066

[4] https://www.collabora.com/news-and-blog/news-and-events/nvk-is-now-ready-for-prime-time.html

[–] aurtzy@discuss.tchncs.de 6 points 10 months ago

You might be interested in git-annex (see the Bob use case).

It has file tracking so you can - for example - "ask" a repository at drive A where some file is, and git-annex can tell you it's on drives C and D.

git-annex can also enforce rules like: "always have at least 3 copies of file X, and any drive will do"; "have one copy of every file at the drives in my house, and have another at the drives in my parents' house"; or "if a file is really big, don't store it on certain drives".

[–] aurtzy@discuss.tchncs.de 4 points 1 year ago

Slight correction, it's available in Linux 6.7, and has to be enabled with the kernel parameter nouveau.config=NvGspRm=1. It may be enabled by default soon though (latest news I could find about that here).

[–] aurtzy@discuss.tchncs.de 15 points 1 year ago (3 children)

NVK itself is not dependent on anything proprietary, but it's practically required to enable NVIDIA's GSP firmware blob if you want to see actual performance since it's what enables re-clocking (older post by Collabora here which touches on it).

[–] aurtzy@discuss.tchncs.de 2 points 1 year ago (2 children)

A neat trick I use to figure out what apps belong to what packages is to run realpath $(which $app_name) - this outputs the full, canonicalized path to the store item, which should include the package name.

I would do a search (e.g. using grep) through a local copy of the Guix repository to figure out what services are providing the packages, then modify the service configurations (or use modified versions of services, if needed) to remove them. This might be a tedious solution, though.

[–] aurtzy@discuss.tchncs.de 1 points 1 year ago* (last edited 1 year ago)

I haven't found a need to do it, but a (modify-services ... (delete pulseaudio-service-type)) in your operating-system declaration might do what you're asking? I don't think this is necessary though. As far as I'm aware, applications that attempt to use Pulseaudio will be transparently rerouted through pipewire-pulse, which is already configured by home-pipewire-service-type. I am also on GNOME, and I haven't noticed any breakage in this aspect using it.

If you're unsure that it works the way you want, you can always try the configuration out and see how it goes (note that I had to re-log in for the wireplumber service to start properly).

[–] aurtzy@discuss.tchncs.de 1 points 2 years ago (2 children)

I've never tried putting it in the system configuration, but I imagine it wouldn't work as it depends on Guix Home services.

If you haven't used Guix Home before, the home-environment record doesn't have required fields like operating-system does so it's fairly easy to get started with.

Here's a minimal working configuration, for example:

(use-modules (gnu)
             (gnu home services desktop)
             (gnu home services sound))
(home-environment
 (services
  (list (service home-dbus-service-type) ;home-pipewire-service-type needs this
        (service home-pipewire-service-type))))

[–] aurtzy@discuss.tchncs.de 1 points 2 years ago (4 children)

There is, actually! It's available as a Guix Home service: home-pipewire-service-type was introduced around the end of December, and you can see documentation for setting it up in the manual.

When using this service, pipewire-pulse is used by default without any extra configuration.

[–] aurtzy@discuss.tchncs.de 5 points 2 years ago* (last edited 2 years ago) (1 children)

I've been having my own fun trying out NVK on Guix System so I can't give you specific instructions (assuming you're not using Guix), but I can tell you what you need and maybe someone else can chip in on how/if you need to do anything else on your distro:

  • Linux kernel >= 6.7
  • GSP firmware enabled via the kernel parameter nouveau.config=NvGspRm=1
  • Mesa built with the -Dvulkan-drivers=nouveau-experimental flag.

A few notes:

  • Performance and stability of games has been fairly hit-or-miss for me. Of the 10 Vulkan games I've tried so far: 3 run perfectly, 3 are playable with noticeable issues, and 4 are borked.
  • NVK is Vulkan-only, but performance largely comes from the GSP firmware so you will still see a difference (huge for me) in games not using Vulkan.
  • You can override flatpaks to use the host's Mesa version (set FLATPAK_GL_DRIVERS=host); however, there's a bug that causes the Steam Flatpak to not work when doing this. The mesa-git-extension Flatpak exists which can also be used to replace Mesa runtimes, but it had issues building with NVK so it's currently disabled.

The only package I'm aware of at the moment (other than my hacked-together Guix package) is available in the AUR.

 

TL;DR: Guix Packager is a new web user interface for defining Guix packages, which should help make Guix more approachable!

You can check out the web app here.

Project repository here.

[–] aurtzy@discuss.tchncs.de 4 points 2 years ago (1 children)

I use git-annex and Guix (particularly Guix Home in this case) for managing all of my data, including dotfiles. git-annex handles syncing (and backups via delivery to a Borg repo) and version management as git does, while Guix takes care of installing programs and setting up configuration files.

I previously wrote a custom Guix service that utilized Stow as well for managing writable files, but have since replaced it with another custom Guix service that handles some cleanup processes better.

Depending on how much you want simplicity of restoration, this approach might be on the heavier side since it's concerned with a lot more than just dotfiles. You could replace git-annex with git to simplify the syncing part if you're only interested in managing configuration files, though. Here's what my Guix config looks like; the readme file shows how I would set up a system from scratch.

[–] aurtzy@discuss.tchncs.de 2 points 2 years ago* (last edited 2 years ago) (2 children)

Was not aware of this, thanks! Looks like it does, with a notable difference being that Cryptomator has better cross-platform support in exchange for not having file size obfuscation.

[–] aurtzy@discuss.tchncs.de 16 points 2 years ago* (last edited 2 years ago) (6 children)

The CryFS developers have a comparison page here that might help you decide what to use. There's a summary table at the bottom that gives a comparison of features between encryption filesystems if you don't feel like reading through it all.

I personally use and would recommend CryFS because it's the only one (that I'm aware of) that plays nice with data synchronization software (i.e. doesn't store the container as a single file) while keeping the directory structure encrypted.

view more: next ›