hallettj

joined 1 year ago
[–] [email protected] 15 points 11 months ago

I believe your last Linux experience in 2015 predates DXVK which has been transformative for Linux gaming. Wine used to have to implement its own DirectX replacement which necessarily lagged behind Microsoft's implementation, and IIUC didn't get the same level of hardware acceleration due to missing out on DirectX acceleration built into graphics cards.

Now DXVK acts as a compatibility bridge between DirectX and Vulkan. Vulkan is cross-platform, does generally the same stuff that DirectX does, and graphics cards have hardware acceleration for Vulkan calls the same way they do for DirectX calls. So game performance on Linux typically meets or exceeds performance on Windows, and you can play games using the latest DirectX version without waiting for some poor dev to reimplement it.

If you are using Steam with Proton, Lutris, or really any Wine gaming these days you are using DXVK. It's easy to take for granted. But I remember the night-and-day difference it made.

[–] [email protected] 1 points 11 months ago* (last edited 11 months ago) (1 children)

Nixpkgs includes packages compiled for musl under the pkgsMusl prefix. For example, pkgs.pkgsMusl.hello. IIUC these only exist on a Linux system.

Maybe you can use those packages for everything by setting pkgsMusl as your package set. For example if you are using Home Manager with a flake config you normally have a line like,

let pkgs = nixpkgs.legacyPackages.${system};

Maybe you could change that to

let pkgs = nixpkgs.legacyPackages.${system}.pkgsMusl;
[–] [email protected] 1 points 1 year ago

Yes, this would be nice. You can use .well-known redirects so that when someone searches your owned name they get redirected to a Fediverse account of your choosing. And you can update those redirects if you change accounts. But that's not quite the same.

[–] [email protected] 2 points 1 year ago (1 children)

Neat! It looks like it will still be a while, but I'm hopeful that with Wayland support I won't have to change my display scaling when I start up Overwatch

[–] [email protected] 6 points 1 year ago

Yes; I met one of the devs a while ago, and we had to have a little disambiguation conversation when he said, "I work on Warp."

[–] [email protected] 1 points 1 year ago

I'm fully remote, in software development. It's very helpful for me to be able to pick up my kids from school, and get back to work while they do homework. I used to have an elaborate system orchestrating pick-up and transportation to a daycare service.

Lots of small software companies have taken a remote-by-default approach the last few years. That means job openings are often not limited by geography. I'm working for a company that doesn't have an office on my side of the continent. For companies that means they can throw a wide net to pick up people with very specific skills.

I think the downside is that mentorship becomes difficult. An all-remote company I worked for before the shutdown said they found it only works well for senior-level engineers or above. I learned a lot of what I know from the guy who used to sit next to me at my first job. I'm not sure if there's a good replacement for that for new devs. There is still collaboration in my current job, but it's limited by the friction of video calls, and timezone mismatches.

[–] [email protected] 1 points 1 year ago

I prefer Hawaiian Tropic Sheer Touch because it's easy to apply, and doesn't feel pasty or oily. But I'm taking note of these other suggestions.

[–] [email protected] 8 points 1 year ago

Well there is Samsung Pay...

Maybe you could get a phone case with a slot to store a credit card?

[–] [email protected] 3 points 1 year ago

I realized that I didn't answer the basic question, what person or organization is behind all this? That would be the NixOS Foundation. You can get some information on the people involved in the "Teams" section on this page, https://nixos.org/community/

[–] [email protected] 10 points 1 year ago (2 children)

The packages are defined in a Github repo, https://github.com/NixOS/nixpkgs. That contains the sources for all of the Nix expressions. Usually when you install packages you get pre-built binaries that are produced from the expressions in the repo through an automated system.

There is a group of "committers" who have the authority to merge PRs (pull requests) to the nixpkgs repo. There is a tracking issue for nominating new committers. That issue also describes criteria that new committers should meet. I found a comment claiming that there are 139 committers - but that comment is a few years old.

Packages are maintained by a larger group of authors who submit new packages or updates via PRs. Committers review these PRs before they can be merged. A key criteria for becoming a committer is to author a sizable number of PRs that go on to be approved through this process.

I didn't see descriptions of any measures that would prevent committers from making whatever changes to nixpkgs they choose to. Also package hashes are not a cryptographically-secure proof of reproducibility - it is technically possible to tamper with binaries in some ways that don't change hashes. So your trust in nixpkgs is based on,

  • vetting of committers
  • committers being sufficiently diligent in PR reviews
  • security of the build system
  • enough eyes on the project to catch a problem quickly if some malicious change does get through

As a system it looks good enough to me. People have to demonstrate a commitment to the project, and an ability to do the work to get the keys to the system. Personal reputations are at stake which I think is a solid motivator to act in good faith. I think if a malicious change did get in it would probably be caught quickly.

[–] [email protected] 6 points 1 year ago (2 children)

I think use Nix for as little or as much as you want. I've been using Nix for a long time to get the odd package that isn't available, or that isn't completely up-to-date in the Debian repo. Now that I've learned more about it I'm using it for dev environments and packaging for my software projects, and I'm setting up NixOS and Home Manager on a new laptop.

The low-level packages are there in case you need them. If you install anything that needs coreutils, libc, gtk, whatever Nix will install it automatically. It's all fully isolated from the libraries that Arch installs so there is no need to worry about conflicts. But since Nix packages use only Nix dependencies you can run into some oddities when Nix uses different library versions than the host OS. For example I've had a case where a GTK app didn't match the theme of the rest of my system.

 

I'm trying to set up Lutris to play games with Wine. I don't understand how I am supposed to install wine runners? Can anyone help?

Edit:* It seems the answer is to install runners through the Lutris UI as usual. The Lutris package runs in an FHS which makes everything work even though the runners are not built for NixOS.

It turns out that what I was missing (I think) was 32-bit DRI support. I enabled that with these lines in my NixOS configuration:

# in /etc/nix/configuration.nix

hardware.opengl = {
  driSupport = true;
  driSupport32Bit = true;
};

Everything below this edit is red herrings.

/end of edit*

I tried installing a runner, lutris-GE-Proton8, through Lutris itself as I do in another distro. That crashed with some sort of error - instead of spending time investigating that I thought I'm probably supposed to install things the Nix way so that dependencies are set up correctly.

I tried installing Wine from nixpkgs like this, and configuring Lutris to use the system Wine:

home.packages = with pkgs; [
  (lutris.override {
    extraPkgs = lutrisPkgs: [
      wine
    ];
  })
];

But when I start up a game I get a warning telling me that I need a version of Wine with esync.

I found a Nix expression for wine-ge in the nix-gaming repo. So I tried building Lutris with that. Here is an excerpt of my Home Manager flake.nix:

{
  inputs = {
    # ...
    nix-gaming = {
      url = "github:fufexan/nix-gaming";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { nixpkgs, home-manager, nix-gaming, ... }:
    let
      system = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${system};
    in
    {
      homeConfigurations."jesse" = home-manager.lib.homeManagerConfiguration {
        # ...
        modules = [
          ./home.nix
          # ...
        ];
        extraSpecialArgs.inputs = { inherit nix-gaming; };
      };
    };
}

And the my attempt at a Lutris config in home.nix:

home.packages = with pkgs; [
  (lutris.override {
    extraPkgs = lutrisPkgs: [
      wine
      inputs.nix-gaming.packages.${pkgs.system}.wine-ge
    ];
  })
];

After a great deal of compiling I believe that I have wine-ge installed... somewhere. (I did try to use the nix-gaming binary cache. I probably messed that up by forcing my version of nixpkgs. I'll probably let nix-gaming use its own nixpkgs version next time.)

I've read that the lutris package creates an FHS (Filesystem Hierarchy Standard) environment. That is a filesystem somewhere with the directory layout you see in other distros. I expected that wine-ge would be linked into the FHS somewhere. I had the thought that I would configure Lutris with the path to wine-ge. But the file browser that I get in Lutris seems to show me the host file system, not the FHS.

I thought that maybe I could give Lutris the store path to wine-ge. Then if when I upgrade I'll have to track that down and set the path again. Is there a better way?

[–] [email protected] 3 points 1 year ago

No way! I've waited my whole life for this!

 

I've been thinking about trying NixOS for a while. I think the concepts are elegant, and I have been finding Nix flakes to be very nice for software development. I'm about to get a new machine so I'm ready to take the plunge. Any advice before I dive in?

I'd like to set up Gnome with some extensions. One of the things I especially want to learn is how to set up graphics drivers, Vulkan, and Lutris.

For anyone who hasn't heard of it, Nix is a "declarative" package manager. Each package is stored with a hash that encodes its exact source, build script, dependencies, etc. You can have packages installed with mutually-incompatible library dependencies, and Nix makes it just work. For purposes of setting up per-project dependencies Nix does what Docker does, but faster, with more cache hits, and without emulation / containerization. If you want to deploy Docker images, Nix can build images that are more efficient than what you get from dockerfiles.

You can use Nix as an additional package layer in Linux, MacOS, or Windows with WSL. Think of it as an alternative to Homebrew.

NixOS is a Linux distro that uses Nix as its primary package manager, and uses Nix principles to manage configuration. Instead of running commands to install things, and then later forgetting what you installed or why, packages are listed in config files. The system installs and links packages as necessary. Anything you remove from your config is unlinked. When you want to reclaim space you can garbage-collect unused packages.

 

I'm moving soon and I won't have access to my desktop computer for a few weeks. I'm shopping for a laptop to continue my programming work during that time, and as a supplement for later when I want portability. Does anyone here have a favorite?

I made my own mechanical Bluetooth keyboard that I want to use; so I'm curious about 2-in-1 or tablet devices where the keyboard can be put out of the way, or even excluded.

I'm looking for:

  • portability over power
  • but enough power to run Rust Analyzer without being painfully slow
  • high-resolution screen
  • doesn't have to be the latest model

I'm a longtime fan of the Dell XPS 13, but I haven't tried any of the 2-in-1 versions. The Asus Zenbook Flip also looks promising.

I'm thinking of trying out Nix' remote builds feature to shift load away from the local processor and RAM. But I'm sure that won't funny eliminate the need for some local processing power. It'll be interesting to find out.

view more: next ›