Skip Navigation
hallettj hallettj @beehaw.org

Programmer in NYC

Posts 3
Comments 27
Is now the right time to switch to Linux?
  • 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.

  • Musl on NixOS
  • 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;
    
  • Do you think if SSO was possible across Federated platforms that it would help drive adoption of decentralized platforms like Lemmy, Mastodon, Pixelfed, Kbin, and others?
  • 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.

  • Wine 8.12 Released With Additional Wayland Enablement
  • 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

  • Warp: Rust-based terminal
  • 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."

  • How many of you are still working full-time remote and how is it going? If not, why not? Was the decision made by you to go back to the office or did your employer decide for you?
  • 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.

  • Favorite Sunscreen?
  • 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.

  • *Permanently Deleted*
  • Well there is Samsung Pay...

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

  • Who makes Nix packages?
  • 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/

  • Who makes Nix packages?
  • 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.

  • nix vs native package manager on other distros.
  • 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.

  • nixos @lemmy.ml hallettj @beehaw.org

    How to install Wine runners in Lutris in NixOS?

    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:

    ```nix

    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?

    0
    Neovim LSP client now supports "inlay hints" in latest 0.10
  • No way! I've waited my whole life for this!

  • Game devs of lemmy, what are the best game engines for beginners, also why so?
  • The only other comment I see is mine. One reason you might not have seen it is the language was set to "Undetermined" because Jerboa does not have a language selector. If you don't have "Undetermined" as one of the languages on your account settings I think you won't see posts or comments with that language tag. So if you see this comment (which is set to English) but not my other one then that could be why.

  • What Cargo addons do you use?
  • Instead of cargo addons I mostly use this neovim plugin: https://github.com/Saecki/crates.nvim. I can add a dependency by typing it in Cargo.toml, and it shows me the latest version number, and tells me whether I guessed wrong about dashes vs underscores in the package name. It shows virtual text next to crates that have upgrades available. It has commands for upgrading the crate under the cursor, or all crates. It has an interactive feature selector.

    What I could still use is cargo-udeps. I'll check that one out!

  • I love using Home Manager with Neovim
  • I'm in the process of setting up this way too. I just switched over to lazy.nvim a few weeks ago, and I'd like to keep the lazy loading and configuration system.

    I did a little experimenting to see if I could use lazy to lazily-load from Nix packages instead of downloading stuff itself. I couldn't work out. But with a version-controlled lock file lazy is declarative and reproducible by itself, so I suppose there's no need to mess with it.

  • kbin now accessible from lemmy instances?
  • I'm seeing this on beehaw via kbin.social

  • My daily driver of the last 6 years.
  • Looks nice! I've been using a Corne for the past six months which is the first keyboard I've used with a similar size and layout to this one.

    What is it you're looking for in your new board?

  • twitter / mastodon
  • I haven't really gotten into Twitter or Mastodon because those systems are organized around relationships with people. Apart from close friends and family that doesn't match how my mind is organized. OTOH the Reddit / forum model is organized around interests and ideas. That clicks for me. I engage more with ideas than with personalities. Because of that I've been a regular Reddit user for many years while rarely checking in on Twitter. Since Lemmy follows a similar model I think it's likely to engage my interest the same way.

  • I'm confused about how I can link Mastodon and Lemmy sites, say. I have an account on Fosstodon. Can I use it to access and post to [https://beehaw.org/c/programming](https://beehaw.org/c/programming)
  • I think this is an oversimplification. ActivityPub is the server-to-server protocol. Mastodon and Lemmy each have different client protocols. I think the ! search syntax is part of the Lemmy client protocol specifically, and won't work on Mastodon.

    Lemmy communities will appear on Mastodon as though they are users. So you can find the programming community on Mastodon by searching for @[email protected]. If you @mention that account your post becomes a thread on Lemmy. You can follow it, but beware that you will get all replies in your Mastodon feed, not just top-level threads.

  • Could you help me with a bit of life advice? Ending uni, scared of going forward.
  • I think when you're in your (I'm guessing) early -or-mid-20s there is a tendency to underestimate how much time you have ahead of you. Whatever you decide, it's not a lifetime commitment. Take a job, work there for a year, or a few years. If it turns out it's not for you, you've gained experience, you've learned new things about yourself, and you still have plenty of time to transition to something different.

    There will be a time when you understand yourself and what you want much better. For me that was maybe my mid-30s. The only way to get there is to try things, and see what happens. I suggest making choices that lead to new experiences, such as travel. That gives you new ways to learn about yourself, and more chances to run into something that really grabs your interest.

  • About to get started with NixOS

    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.

    9

    Recommendations for a 2-in-1 laptop that can run Linux?

    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.

    9