Overlay rodeo packages on top of NixOS
  • Go 80.3%
  • Nix 19.7%
Find a file
2026-01-17 12:28:46 +01:00
mount feat(mount): added RNX environment variable 2026-01-17 09:48:51 +01:00
nix feat(mount): first prototype! 2026-01-16 15:05:59 +01:00
.gitignore feat(flake): added package 2026-01-16 15:28:41 +01:00
flake.lock feat(flake): added package 2026-01-16 15:28:41 +01:00
flake.nix feat(mount): mounting the ld cache and "fixed" glibc (by making it worse :/) 2026-01-16 19:29:39 +01:00
go.mod feat(nix): parsing flakes 2026-01-16 13:10:30 +01:00
main.go feat(mount): mounting the ld cache and "fixed" glibc (by making it worse :/) 2026-01-16 19:29:39 +01:00
README.md feat(README): added demo link 2026-01-17 12:28:46 +01:00

rnx

The next-generation Nix-Shell

About

rodeonix tries to make it possible to easily run unpatched binaries on NixOS. It uses the Kernels OverlayFS to mount Nix Packages at /usr. This allows programs to find their expected libraries just like on any other FHS-Compliant Distro. Demo

Usage

For a Quick-Start you can just run the following Command:

nix run git+https://git.pauljako.de/rodeo/rnx -- -f <flake path and attribute>

Keep in mind however, that right now it still requires a custom version of glibc. I have provided a precompiled version for x86_64 at the following Link: https://files.pauljako.de/Projects/rnx/glibc-2.42.0-x86_64-linux.tar.gz Just unpack it into /rodeo/overlays and you should be good to go.

Flake Format

rodeonix reads it's overlay-configurations from a flake.nix. A sample of an overlay-configuration is provided within this repo under the overlayConfigurations.default Attribute. But essentially, a flake could look as follows:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
  };
  outputs = {
    self,
    nixpkgs,
    ...
  }: let
    pkgs = import nixpkgs {system = "x86_64-linux";};
  in {
    overlayConfigurations = { # This is the recommend attribute name
      default = {
        nix-packages = with pkgs; []; # The list of packages that should be added to /usr
        command = "" ; # The command that should be executed inside the overlay. If left empty, it will be bash
      };
    };
  };
}