ruffsl

joined 2 years ago
MODERATOR OF
[–] ruffsl@programming.dev 13 points 3 days ago* (last edited 3 days ago) (1 children)

I only have 3 installs of NixOS already, two for work (a server and laptop), and a third for a personal use (desktop). I largely started out by copying a public config from the community. Now I just copy a few kilobytes between the three from time to time via git repo to keep all my kernels, kernel modules, patches, net config, package versions, and system users/groups permissions in sync via lock files. And my user dot files too, but you don't need nix for that last one.

If I have to do something multiple times, like copying a distro across even a few systems more than once, then I figured I'd just revision control it via lockfiles like any other software project.

That all said, NixOS is a hell of a rabbit hole; great for lazy admins and hobby tinkering alike:

https://xkcd.com/1319/

The top graph reflects my stable work install for robot software development,
but the bottom graph is my personal install for hobbies and home lab.

[–] ruffsl@programming.dev 9 points 1 week ago* (last edited 1 week ago) (6 children)

Moving nixpkgs development from GitHub would be ambitious, as that repo already pushes their infrastructure limits with enterprise level support.

https://discourse.nixos.org/t/nixpkgs-core-team-update-2026-01-22/74585

I suspect the Nix org would need to garner many more sponsors to fund the hosting expenditures for an equivalent forge with matching CI/CD, PR automation, and geo redundancy. Would be nice to see.

[–] ruffsl@programming.dev 1 points 1 week ago

I love the comma command. Great for things I only use every blue moon and am fine with being cleaned up by garbage collection.

[–] ruffsl@programming.dev 2 points 1 week ago (1 children)

Wow, hello fellow Rose alum! Class of 2013 here, so don't I remember if IT was advertising an Eduroam SSID back then, but the standard issued corporate HP laptops had decent Linux support, or at least someone in the class cohort would find and disseminate a workaround by the time the next LTS kennel rolled around.

Definitely agree on seeking out a local LUG on campus. As originally an EE while at RHIT, I didn't know about LUGs until I continued on to grad school for CS at GT, which had a very active LUG with invited guest speakers and even senior student led lectures.

Looks like the hosting for lugatgt.org is now down, hope they're still going, or perhaps merged with ALE of Atlanta.

https://vtluug.org/wiki/List_of_Linux_and_Unix_Users_Groups

[–] ruffsl@programming.dev 9 points 2 weeks ago (4 children)

The article veers off about Flox, but I'm unsure what Flox adds over stock Nix?

[–] ruffsl@programming.dev 9 points 3 weeks ago

I never want to go back to an OS I can't diff or track under revision control. I just love being able to solve an issue once and move on without worrying about if I'll forget all the minutiae of changes I made to my customized system when it eventually comes to migrating workstations or replicating across my computers.

[–] ruffsl@programming.dev 2 points 1 month ago (1 children)

Congrats on solving your issue, and thanks for updated the post with the solution! It's really slick how NixOS makes adding a kernel patch to your config no more complex than it would take patching any dot file. Hope the up streaming of your device info goes smoothly.

[–] ruffsl@programming.dev 5 points 1 month ago (3 children)

Encountered an odd Bluetooth issue last week with a motherboard that had a combined Bluetooth and Wi-Fi radio chip set. Wi-Fi worked, but the Bluetooth hardware wasn't even detected. This was after migrating from a Windows install with known working Bluetooth drivers on the same motherboard.

Found a solved thread for the same motherboard SKU where power cycling after disconnecting the desktop power supply from AC for 30 sec resolved it. Didn't believe it, but tried it anyway and it worked. Guessing the Windows driver must have put the Bluetooth transceiver in a funny state that the mainline Linux kernel couldn't recover, but resting the chipset with a through power cycle with internal voltage supplies zeroed made the difference in re-initializing the hardware.

Just a wild suggestion...

[–] ruffsl@programming.dev 2 points 1 month ago (1 children)

This is cool! Still reading over the wiki yet, but do you know what they term multiplexing controllers as? I'd like to learn how they implement the same controller assist functionality for merging simultaneous inputs for the same axis.

There's very little documentation on how the property game consoles implement this accessibility feature, and I'd love to learn how others have implemented the signal mixing logic from a multi user input perspective.

 

CtrlAssist v0.4.0 introduces demultiplexing functionality along with enhancements to the system tray and rumble targeting. The updated README now features FAQ and Cookbook sections with practical examples, such as the "Double Agent Tag Team" scenario, where a single assist controller uses a demux to help multiple primary players across separate mux instances, and the "Couch Co-Op Swap" scenario, in which two players take turns assisting each other using toggle mode, with force feedback following the currently active controller by default.

While controller demultiplexing was a requested feature from a prior release, I didn't have a concrete use case until I found myself helping a pair of youngsters play couch co-op multiplayer games with each other. Instead of needing separate assist controllers for each player, otherwise charging/pairing four controllers in total, being able to unicast between mux instances with a single assist controller made juggling both inputs much simpler. Then after being roped into the "It Takes Two" session myself, I found being able to swap primary and assist players outright much simpler when both helping and playing, allowing the Helpee to also aid the Helper when it really does take two.

New Features

Demux Operation Mode

CtrlAssist now supports demultiplexing (demux), allowing a single physical controller to be split into multiple virtual gamepads. This complements the existing multiplexing (mux) functionality and enables more advanced input routing scenarios.

Demux Modes:

  • Unicast (default): Routes primary controller input to the currently active virtual gamepad. Cycle between virtual gamepads using the reserved Mode button.
    • Assist multiple players across separate mux instances
  • Multicast: Broadcasts primary controller input to all virtual gamepads simultaneously.
    • Replicate controller input for advanced input multiplexing pipelines

Active Rumble Targeting

A new "Active" rumble target has been added as the default option for mux operations. This routes force feedback to whichever controllers are currently active according to the selected mode:

  • Toggle Mode: Rumble follows the currently active controller
  • Priority/Average Modes: Rumble sent to both controllers, same as before

Expanded Documentation

The README has been significantly expanded with:

  • FAQ Section: Addresses common questions about who CtrlAssist is for, why it was developed, game compatibility, supported controllers, and running multiple instances
  • Cookbook Section: Provides practical examples demonstrating complex multi-instance setups:
    • Couch Co-Op Swap: Two players alternating assistance
    • Double Agent Tag Team: One assist controller helping multiple primary players

Breaking Changes

  • The rumble target enum options now defaults to "Active" instead of "Both"
  • Configuration file format has been extended to accommodate separate mux and demux settings

Installation

CtrlAssist v0.4.0 can be installed via:

  • Cargo: cargo install ctrlassist --force
  • Flatpak: Download the bundle from the releases page and install with flatpak install
 

CtrlAssist v0.4.0 introduces demultiplexing functionality along with enhancements to the system tray and rumble targeting. The updated README now features FAQ and Cookbook sections with practical examples, such as the "Double Agent Tag Team" scenario, where a single assist controller uses a demux to help multiple primary players across separate mux instances, and the "Couch Co-Op Swap" scenario, in which two players take turns assisting each other using toggle mode, with force feedback following the currently active controller by default.

While controller demultiplexing was a requested feature from a prior release, I didn't have a concrete use case until I found myself helping a pair of youngsters play couch co-op multiplayer games with each other. Instead of needing separate assist controllers for each player, otherwise charging/pairing four controllers in total, being able to unicast between mux instances with a single assist controller made juggling both inputs much simpler. Then after being roped into the "It Takes Two" session myself, I found being able to swap primary and assist players outright much simpler when both helping and playing, allowing the Helpee to also aid the Helper when it really does take two.

New Features

Demux Operation Mode

CtrlAssist now supports demultiplexing (demux), allowing a single physical controller to be split into multiple virtual gamepads. This complements the existing multiplexing (mux) functionality and enables more advanced input routing scenarios.

Demux Modes:

  • Unicast (default): Routes primary controller input to the currently active virtual gamepad. Cycle between virtual gamepads using the reserved Mode button.
    • Assist multiple players across separate mux instances
  • Multicast: Broadcasts primary controller input to all virtual gamepads simultaneously.
    • Replicate controller input for advanced input multiplexing pipelines

Active Rumble Targeting

A new "Active" rumble target has been added as the default option for mux operations. This routes force feedback to whichever controllers are currently active according to the selected mode:

  • Toggle Mode: Rumble follows the currently active controller
  • Priority/Average Modes: Rumble sent to both controllers, same as before

Expanded Documentation

The README has been significantly expanded with:

  • FAQ Section: Addresses common questions about who CtrlAssist is for, why it was developed, game compatibility, supported controllers, and running multiple instances
  • Cookbook Section: Provides practical examples demonstrating complex multi-instance setups:
    • Couch Co-Op Swap: Two players alternating assistance
    • Double Agent Tag Team: One assist controller helping multiple primary players

Breaking Changes

  • The rumble target enum options now defaults to "Active" instead of "Both"
  • Configuration file format has been extended to accommodate separate mux and demux settings

Installation

CtrlAssist v0.4.0 can be installed via:

  • Cargo: cargo install ctrlassist --force
  • Flatpak: Download the bundle from the releases page and install with flatpak install
[–] ruffsl@programming.dev 7 points 1 month ago (1 children)

Admittedly, it's pretty niche software. But for those who grew up using equivalents on gaming consoles such as Xbox or PlayStation, it was (still is) a pivotal accessibility feature.

And it's not necessarily only for those with physical disabilities or reflexive motor skill issues. Sometimes you'd like to introduce a really good story based game to a novice player that you know just doesn't have (yet or never) the coordination or muscle memory to complete it.

My grandparents never grew up playing videogames, and some of my nieces and nephews in the family are too young to grasp complex game mechanics. However, all of them really enjoyed playing with a control assist, where they could take the initiative in gameplay, like choosing dialogue options, steering saddled horses, flying broomsticks, exploring the world at their discretion, and I could just coast along in the backseat, fixing their camera angles, steering them back on course when lost, rescuing them in high stake combat encounters, etc.

In some ways, you could think about it as co-oping for single player games, but because it's per controller, you can do the same thing for multiplayer games as well. Like to help level the age gap in PvP games with your older sister versus your younger brother.

Before we ever played with control assist, I tried the classic method of tossing around the one controller like a hot potato, but it's just not the same in a number of ways. For one, having to relinquish a single controller really breaks immersion, as your suddenly fumbling about between living room chairs only your game characters on death's door from an unexpected boss encounter. It also deprives them of that haptics, where they can learn more easily attack patterns or UX interaction that conventionally telegraph via force feedback.

There is perhaps some functionality for solo players as well, such as splitting hand control across multiple gamepads. Like if your hands/arms were of different sizes, or you wanted to play other than with the controller on your lap, you could just easily dual wield controllers mux together the left and right sides-in-reach, or mux a regular handheld gamepad with something more like a Xbox Adaptive Controller for when dexterity or convenience demands.

Although, I think the majority of folks will find the assist co-op scenario for single player games the most appealing aspect. As others have replied on prior release posts, like parents helping their kids through their first playthrough ever, it's really an underrated feature for game consoles, and bringing that to gaming on Linux was really appreciated.

[–] ruffsl@programming.dev 1 points 1 month ago

Thank you for all the efforts the admins put into maintaining this place!

[–] ruffsl@programming.dev 1 points 2 months ago

oh, my hand typing was atrocious, that's what I get for not voice dictating with my regular assistive tech.

view more: next ›