Skip to content

Repository files navigation

cod-clients-nix

CI NixOS unstable License: MIT

Call of Duty custom clients packaged for NixOS - a Home Manager launcher module that runs Plutonium, t7x, and the AlterWare family under umu-launcher + Proton, each confined in a bubblewrap sandbox with access to only game-related files, and optionally links Plutonium into Steam so it tracks your hours.

Upstream

Project Plutonium (plutonium.pw) + t7x (alterware.dev) - runtime-fetched, self-updating
License Proprietary / third-party clients (packaging is MIT)
Tracked None - the official clients self-update at runtime

What Is This?

A Nix flake that launches community Call of Duty clients on Linux without hand-rolling a Wine prefix. Launchers:

  • cod-plutonium - Black Ops 1 (T5), Black Ops 2 (T6), Modern Warfare 3 (IW5), World at War (T4). Fetches the official self-updating plutonium.exe, bootstraps a Proton prefix with the required winetricks verbs, and launches under umu-launcher.
  • cod-t7x - Black Ops III (T7). Fetches the official self-updating t7x.exe and runs it against a symlink-farm of your owned retail BO3 install.
  • cod-h1 - Modern Warfare Remastered (Aurora h1-mod). Fetches the self-updating h1-mod.exe and runs it against a symlink-farm of your owned MWR install. Default-off, experimental.
  • cod-h2 - MW2 Campaign Remastered (Aurora h2-mod). Self-updating h2-mod.exe against a symlink-farm of your owned MW2CR install. Default-off, experimental.
  • cod-iw5 / cod-iw6 / cod-s1 / cod-iw2 - the AlterWare family: Modern Warfare 3 (2011), Ghosts, Advanced Warfare, and Call of Duty 2. Each uses the native alterware-launcher to update the client into your owned Steam install, then launches it under umu. Default-off and experimental (see Caveats).
  • cod-hmw - Horizon MW (Modern Warfare Remastered mod). Self-updating launcher that downloads the mod into a symlink-farm of your owned MWR install. Default-off, experimental.
  • cod-boiii - BOIII client (Black Ops III). Drop-in self-updating client that runs against a symlink-farm of your owned BO3 install. Default-off, experimental — DXVK rendering is untested on Linux (dedicated-server mode works under Wine).
  • cod-cblauncher - CB Launcher hub that bundles ~17 community clients (Plutonium, BOIII, IW4x, CoD4x, IW6x, S1x, H1/H2-Mod, IW7-Mod, HorizonMW, Project BO4, stock CoD1/UO). It downloads and launches those itself into a folder you grant via cblauncher.gameDirs. Default-off, experimental.
  • cod-steamlink - optional helper that swaps a Steam game's exe for Plutonium so Steam launches it on "Play" and tracks your hours, safely and reversibly.
  • cod-steam-add - optional helper that registers every installed launcher as a Steam non-Steam shortcut (like Heroic's "Add to Steam"), so each shows in Steam, tracks hours, and takes per-shortcut launch options + Proton. Reversible (remove), sandbox preserved.
  • cod-cleanops - optional helper that drops the CleanOps d3d11.dll into your owned retail Black Ops III, so launching BO3 through Steam loads CleanOps (cheat-removal + P2P hosting). Set the printed WINEDLLOVERRIDES launch option; reversible (--undo).
  • cod-steam-native - registers the set-up clients as Steam shortcuts that run their .exe under Steam's own Proton (so the Compatibility dropdown works), reusing each client's prepared prefix. Plutonium gets one shortcut per owned game+mode (launches straight in via plutonium://); sets GE-Proton and fetches official cover art. Reversible (remove).

Every launcher runs inside a bubblewrap sandbox (see Security). The live client binaries are fetched at runtime into a per-client state directory and maintain themselves from their own official servers - the flake never pins, re-hosts, or freezes a game payload. You bring the games: each client mods a copy you legitimately own on Steam.

Clients

Command Titles Base game (own on Steam) Notes
cod-plutonium BO1, BO2, MW3, WaW 202970 (BO2), 42700 (BO1), 10090 (WaW), 42750 (free MW3 route) Standalone umu launcher; point Plutonium at the Steam folder in its UI
cod-t7x BO3 311210 (Black Ops III) Standalone; experimental on Linux (see Caveats)
cod-h1 MWR 393080 (Modern Warfare Remastered) Aurora h1-mod; farm + self-updating client; experimental, default-off
cod-h2 MW2CR MW2 Campaign Remastered (Battle.net; not on Steam) Aurora h2-mod; set h2.mw2crDir; experimental, default-off
cod-steamlink BO2 (default) + any Plutonium title as above Steam hours-tracking via a reversible exe-swap
cod-steam-add all installed launchers - Adds each launcher to Steam as a non-Steam shortcut; Proton + launch options per shortcut
cod-cleanops BO3 retail MP 311210 (Black Ops III) Drops CleanOps d3d11.dll into owned BO3 (cheat-removal + P2P); launch via Steam
cod-iw5 Modern Warfare 3 (2011) 115300 AlterWare; experimental, default-off
cod-iw6 Ghosts 209160 AlterWare; experimental, default-off
cod-s1 Advanced Warfare 209650 AlterWare; experimental, default-off
cod-iw2 Call of Duty 2 2630 AlterWare; experimental, default-off
cod-hmw MWR 393080 Horizon MW; farm + self-updating launcher; experimental, default-off
cod-boiii BO3 311210 BOIII; farm + self-updating client; experimental, default-off
cod-cblauncher 17 CoD titles - CB Launcher hub; experimental, default-off

Home Manager Module

The repo exports homeManagerModules.default. Options:

myModules.home.cod-clients = {
  enable = true;                         # master switch
  sandbox = true;                        # bubblewrap: game-only access (default on)
  protonPath = "${pkgs.proton-ge-bin.steamcompattool}";  # default: pinned nixpkgs GE-Proton, or "steam"
  desktopEntries = { };                  # per-client app-drawer control, e.g. { boiii = false; } to hide one
  plutonium = {
    enable = true;                       # cod-plutonium
    dotnet = false;                      # opt-in MW3/IW5 support (installs dotnet472)
    extraWinetricks = [ ];               # extra prefix verbs
    extraArgs = [ ];                     # extra plutonium.exe args (LAN etc.)
  };
  t7x = {
    enable = true;                       # cod-t7x
    blackOps3Dir = "";                   # empty = auto-detect from Steam
    extraWinetricks = [ ];               # e.g. [ "mf" "mfplat" ] for codec issues
    extraArgs = [ ];
  };
  h1 = {                                 # experimental, default-off
    enable = false;                      # h1-mod (Modern Warfare Remastered)
    mwrDir = "";                         # empty = auto-detect from Steam (app 393080)
    extraWinetricks = [ ];               # extra prefix verbs
    extraArgs = [ ];
  };
  h2 = {                                 # experimental, default-off
    enable = false;                      # h2-mod (MW2 Campaign Remastered, Battle.net-only)
    mw2crDir = "";                       # required: MW2CR is not on Steam, set it explicitly
    extraWinetricks = [ ];               # extra prefix verbs
    extraArgs = [ ];
  };
  alterware = {                          # experimental, default-off
    iw5.enable = false;                  # Modern Warfare 3 (2011)
    iw6.enable = false;                  # Ghosts
    s1.enable = false;                   # Advanced Warfare
    iw2.enable = false;                  # Call of Duty 2
  };
  hmw = {                                # experimental, default-off
    enable = false;                      # Horizon MW (MWR mod)
    mwrDir = "";                         # empty = auto-detect from Steam (app 393080)
    extraWinetricks = [ ];               # extra prefix verbs
    extraArgs = [ ];
  };
  boiii = {                              # experimental, default-off
    enable = false;                      # BOIII client (BO3)
    blackOps3Dir = "";                   # empty = auto-detect from Steam (app 311210)
    extraWinetricks = [ ];               # e.g. [ "mf" "mfplat" ] for the BO3 codec error
    extraArgs = [ ];
  };
  cblauncher = {                         # experimental, default-off
    enable = false;                      # CB Launcher hub
    gameDirs = [ ];                      # writable dirs it may manage games in (RW in sandbox); paste one into its UI
    extraWinetricks = [ ];               # extra prefix verbs for a sub-client, e.g. [ "dotnet472" ] or [ "mf" "mfplat" ]
    extraArgs = [ ];                     # extra cb-launcher.exe args (after the packaged CEF flags)
  };
  steamAdd.enable = false;               # cod-steam-add: non-Steam shortcuts -> sandboxed native launcher
  steamNative.enable = false;            # cod-steam-native: .exe shortcuts under Steam's Proton (dropdown)
  steamLink.enable = false;              # cod-steamlink: exe-swap for Plutonium Steam hours
  cleanops.enable = false;               # cod-cleanops: CleanOps DLL into retail Black Ops III
};
  • protonPath is what umu runs the clients under. The default pins nixpkgs GE-Proton reproducibly (its steamcompattool output). Set it to "steam" to auto-detect the newest Proton in your Steam compatibilitytools.d (where ProtonPlus installs its builds; the auto-detect skips an aarch64 Proton build on an x86_64 host so a wrongly downloaded arm64 GE-Proton can't be picked), or to a specific Proton path. Three runtime overrides need no rebuild, in priority order: COD_PROTON=<path> for a single launch; a per-client file ~/.config/cod-clients/<name>.proton (e.g. cblauncher.proton) to pin one client's Proton; or the global ~/.config/cod-clients/proton. Each file holds a Proton path or a compatibilitytools.d tool name, and applies to app-drawer launches too.
  • cod-proton is the friendly picker for those overrides. It is installed only when protonPath = "steam" - the route where you have several Protons to choose between; on the default pinned-GE route Proton is fixed, so there is nothing to pick and no picker is added. When present: cod-proton cblauncher opens a menu of your installed Protons - a KDE/GNOME dialog if available, otherwise a numbered terminal list - and writes the right file for you; cod-proton cblauncher auto clears it; cod-proton alone lists your Protons and current overrides. (On the default route, Proton is switched instead through Steam's Compatibility dropdown via steamNative, or by hand-writing an override file.)
  • plutonium.dotnet adds dotnet472 for MW3/IW5. It is off by default because the install is slow and MW3/IW5 has an unfixed no-cursor bug on NixOS + GE-Proton; BO1/BO2/WaW do not need it.
  • t7x.blackOps3Dir empty auto-detects Black Ops III (app 311210) from Steam - see Store detection.
  • desktopEntries controls the app-drawer (.desktop) entry per client: a client absent from the set is shown; set it to false (e.g. desktopEntries.boiii = false) to install the launcher without a drawer entry, for Steam-only or CLI-only use.
  • The Steam helpers (steamAdd, steamNative, steamLink, cleanops) are individual opt-ins, off by default - enable only the ones you use. Each is a CLI you run manually with Steam closed (see the sections below).

Steam hours-tracking

Plutonium runs on non-VAC servers and never touches the retail Steam client, so launching it does not risk a VAC ban - but by default it runs outside Steam, so Steam does not count the time. cod-steamlink wires it into Steam the way the community does it: it renames a game's launch exe and drops plutonium.exe in its place, so Steam's "Play" opens Plutonium and tracks the hours under that game.

cod-steamlink                       # default: Black Ops II (app 202970, t6mp.exe)
cod-steamlink --appid N --exe NAME  # a different title/exe
cod-steamlink --undo                # restore the original exe

It resolves the game directory (see below), backs up the original exe to <exe>.cod-orig, copies in the fetched plutonium.exe, marks it read-only, and prints the one command you run yourself to make it survive Steam auto-updates:

sudo chattr +i "<path>/t6mp.exe"

--undo restores the backup. Because Plutonium's launcher lets you pick any title, one swap (e.g. Black Ops II) is enough to track all your Plutonium hours under that game.

Add to Steam (any Proton, launch options)

cod-steam-add registers every installed cod-* launcher as a non-Steam shortcut - the Heroic-style "Add to Steam", done for you:

cod-steam-add          # add all installed launchers (close Steam first)
cod-steam-add list     # show which are registered
cod-steam-add remove   # remove them again

Close Steam before adding (it rewrites shortcuts.vdf on exit); the helper backs up that file, only ever touches its own tagged entries, and never clobbers your other shortcuts. Restart Steam afterwards.

Each shortcut points at the launcher - so it keeps the bubblewrap sandbox, the winetricks prefix, and the runtime client-fetch. That means Proton is chosen per shortcut in Steam's Launch Options, not the Compatibility dropdown: Steam's forced-Proton only drives a raw Windows .exe and would break a native launcher script. Set a specific Proton with COD_PROTON=/path/to/proton %command% in the shortcut's Launch Options (or leave it to protonPath). Launch options and Steam playtime work as normal.

Steam-native (Proton dropdown + per-mode)

cod-steam-native is the other side of that trade-off: instead of the native launcher (where the Compatibility dropdown can't apply), it registers each client's Windows .exe so Steam runs it under its own Proton and the dropdown works. It reuses each client's already-prepared prefix - so Plutonium keeps its winetricks verbs - via STEAM_COMPAT_DATA_PATH, sets your newest GE-Proton as the default compat tool, and fetches official cover/hero/logo art.

# run each client once first so its prefix + .exe exist, then with Steam closed:
cod-steam-native          # add per-mode Plutonium + t7x/h1/h2 shortcuts
cod-steam-native list
cod-steam-native remove

Plutonium gets one shortcut per owned game+mode (Black Ops II Multiplayer, Zombies, World at War, ...), each labeled with its own cover art and Steam hours. Each passes plutonium://play/<code> as a best-effort direct-launch; Plutonium's launcher may still open for you to pick the title/mode (the per-mode protocol launch is not confirmed to work under Proton - verify on first run). The bubblewrap sandbox does not apply on this path (Steam runs the .exe directly) - use the standalone cod-* launchers when you want the sandbox.

Store detection

cod-t7x and cod-steamlink locate your games from Steam's own metadata, so a game on any drive is found. They scan every Steam install layout - native (~/.steam/steam, ~/.local/share/Steam), Flatpak (~/.var/app/com.valvesoftware.Steam), and Snap (~/snap/steam) - and read each one's steamapps/libraryfolders.vdf to follow moved and additional library folders to the app's appmanifest_<id>.acf. If detection ever misses, pass an explicit path (t7x.blackOps3Dir, or cod-steamlink --dir).

Security

Every launcher runs inside a bubblewrap sandbox (myModules.home.cod-clients.sandbox, default on). Because these are closed-source binaries fetched from third-party CDNs, the sandbox exposes only what a game needs: your Steam library game files (read-only), the client's own prefix and state (read-write), /nix/store, and GPU/audio/input/display/network. Each Steam library's steamapps/shadercache is overlaid with a writable per-client directory - the Steam client library and mesa write their appid-scoped shader cache there instead of failing on the read-only library (and never touch your real Steam state). It hides $HOME and every unrelated file, and nests inside umu's own Steam Runtime container. Set COD_SANDBOX=0 in the environment to bypass it for a single launch (for debugging).

Game Notes

Per-title behavior on Wayland desktops, from tested setups rather than folklore. The launcher seeds CB's per-game launch options (launchOptions), installs per-prefix winetricks, and applies per-exe environment defaults; anything listed as an in-game setting cannot be packaged and is set once in the game's menu.

Game Packaged In-game / notes
Advanced Warfare (s1x) Rerouted prefix defaults to the Wayland recipe: PROTON_USE_WAYLAND=1 PROTON_USE_SDL=1; pair it with a Proton that implements the Wayland toggle (proton-cachyos) Display mode Borderless avoids the exclusive-fullscreen freeze class
Ghosts (iw6x) configFiles enforces r_displayMode "windowed (no border)" on the primary monitor plus the menu-mouse routing and the frame cap in players2 configs Borderless sidesteps the exclusive-fullscreen display switching behind the multi-monitor crash and alt-tab kill
CoD4 (iw3mp via CoD4X) rerouted prefix gets the frame cap; shared runtime fixed the join-time crash class raw_input 1 and resolution = display resolution if the cursor sticks to an edge; competitive fps points are 125/250/333
WaW / BO1 / BO2 (Plutonium) raw_input "1" seeded into the T5/T6 player configs (the canonical Plutonium mouse fix); frame cap via CB launch options, and as DXVK_FRAME_RATE on the standalone client (mouse speed is FPS-coupled) BO1: r_dof_enable 0 fixes the ADS blur; keep fps caps at or under 165 there if mouse feel degrades
CoD2 none by default PROTON_NO_ESYNC=1 is load-bearing if it black-screens after the menu
MW3 (iw5 via Plutonium) none needed to launch vid_restart in the console revives the menu mouse; Mouse Smoothing on and Vsync off correct the feel; keep mouse polling at or under 500 Hz
Black Ops III (boiii) steam client sync is automatic; via CB the packaged launch options default to -nosteam (Steam is an optional sidecar for BOIII - without a reachable running Steam its client library fatally asserts) Use Borderless Fullscreen; exclusive fullscreen misbehaves on alt-tab
CoD1 / United Offensive (stock, via CB) the CB prefix sets PROTON_OLD_GL_STRING=1 (the curated Proton fix for the old-GL-extension-string crash class; inert for the D3D titles sharing the prefix) -
CB Launcher dropdowns not fixable client-side KWin XWayland popup handling (KDE bug 516450), unfixed upstream

The frame cap (maxFps, derived from the host's declared displays, 237 on a 240 Hz panel) is injected wherever com_maxfps verifiably lands: launch options for the arg-consuming CB games, default arguments for rerouted prefixes, and Ghosts' config files. Black Ops III caps at 250 in its own menu and Black Ops 4 exposes no verified cap surface; both stay manual settings.

Raw-input starvation under XWayland (frozen or escaping cursors in this game family) is fixed upstream by wine 11.13's focus-gated raw input; Proton builds rebased on it retire the per-game workarounds above.

Caveats

  • You must own the games on Steam. These launchers mod games you own; they do not provide the base game.
  • t7x / BO3 is experimental on Linux: upstream does not test Linux and there are reports of a GStreamer/Media-Foundation codec error under Proton with no confirmed fix. If you hit it, try t7x.extraWinetricks = [ "mf" "mfplat" ].
  • The AlterWare family is experimental: its Linux launch is unverified end-to-end and the iw4x/iw2 client exe names are inferred. Enable per-game, own the base game, and expect to verify (and possibly adjust) on first run.
  • Plutonium online play needs a free Plutonium forum account and the latest revision (the client self-updates to it).
  • Horizon MW builds a farm of your owned MWR install and runs the official launcher from it; the launcher self-updates and downloads mod files into the farm on first run. Needs the .NET 8 Desktop Runtime and VC++ 2022 in the prefix (installed automatically via the dotnetdesktop8 and vcrun2022 winetricks verbs).
  • BOIII is a community fork of the BOIII client. The DXVK rendering path is unverified on Linux; it may only work in dedicated-server mode under Wine. Report rendering issues to upstream.
  • CB Launcher is a hub for many community clients, so it overlaps the individual cod-* clients and adds titles they do not cover (MW2 via IW4x, CoD4 via CoD4x, CoD1/UO, Infinite Warfare, BO4). It writes client and game files INTO the folder you point it at, so set cblauncher.gameDirs to a writable location and paste that path into its UI (its Browse button is disabled under Wine, so you type the path). It deletes a game dir's d3d11.dll before launch, so do not point it at a retail Black Ops III that cod-cleanops has patched.

Installation

Add as a flake input:

{
  inputs.cod-clients = {
    url = "github:Daaboulex/cod-clients-nix";
    inputs.nixpkgs.follows = "nixpkgs";
  };
}

Usage

# 1. flake input (above), then wire the module into the host:
home-manager.sharedModules = [ inputs.cod-clients.homeManagerModules.default ];

# 2. enable it in the host HM config:
myModules.home.cod-clients = {
  enable = true;
  plutonium.enable = true;
  t7x.enable = true;
};

After a rebuild the launcher commands (cod-plutonium, cod-t7x, cod-steamlink, cod-steam-add) are on your PATH and in your application menu.

Running the clients

Run each launcher from a terminal the first time - you see the setup progress and any errors. The first launch of a client is slow and one-time: it downloads umu's Steam Runtime, builds the Wine prefix, and fetches the client; later launches are fast.

cod-plutonium - Black Ops 1/2, World at War (MW3/IW5 needs plutonium.dotnet):

cod-plutonium

First run fetches plutonium.exe, installs the prefix verbs (a few minutes), then opens Plutonium's launcher. In it: log in with your free Plutonium forum account, point it at your Steam game folder, pick a title, and play. Start with BO1/BO2/WaW - MW3/IW5 is best-effort (see Caveats).

cod-t7x - Black Ops III:

cod-t7x

Auto-detects your owned BO3 install, builds the symlink farm, fetches t7x, and launches it. Experimental on Linux; if you hit the codec error, set t7x.extraWinetricks = [ "mf" "mfplat" ] and rebuild.

For Steam integration - hours, launch options, per-shortcut Proton - see Add to Steam and Steam hours-tracking. To switch Proton for a single run without a rebuild, prefix the command:

COD_PROTON=~/.steam/steam/compatibilitytools.d/GE-Proton10-34 cod-plutonium

Troubleshooting

  • First launch seems to hang - it is downloading the umu runtime and building the prefix (Plutonium's verb install takes several minutes). Run from a terminal to watch; it happens once per client.
  • no valid Proton ... - protonPath is not a directory containing a proton script. The default is fine; if you set it, point at a .../GE-Proton*/ dir, use protonPath = "steam", or COD_PROTON=<path>.
  • A client works only with COD_SANDBOX=0 - the sandbox is missing a bind the game needs; COD_SANDBOX=0 cod-<client> is the interim bypass. Please report it.
  • "Steam must be installed for the game to run", or BO3 says "launching" then nothing happens (BOIII, t7x, CB Launcher's BO3) - the boiii-lineage clients gate on the prefix's HKLM\Software\Wow6432Node\Valve\Steam InstallPath registry value plus a steam.exe at that path, AND their steam_proxy loads steamclient64.dll from there to build a Steam context (a missing DLL makes it hang after the gate passes). The launcher syncs all of it into every prefix: the registry value, and the real steamclient64.dll + GameOverlayRenderer64.dll + steam.exe copied from your installed Steam client's legacycompat/ directory (the same source and file set Proton uses). The copies are signature-tracked against the source files, so a Steam client self-update re-syncs the prefix on the next launch instead of leaving stale DLLs behind. This needs the Steam client installed - a Steam-less host prints a clear message and only these clients are affected.
  • BO3 via CB Launcher dies right after "Launching boiii.exe" with a Valve pipes.cpp "fatal stalled cross-thread pipe" assert - that is Valve's steamclient library failing to reach a running, logged-in Steam client. BOIII treats Steam as an optional sidecar (its server auth and CB's presence/joins never use Steam), so the packaged default seeds -nosteam into CB's BO3 launch options and the Valve library is never loaded. You lose only the Steam overlay and live workshop sync; set cblauncher.launchOptions.bo3 = "" to restore the Steam integration attempt.
  • A microphone icon flashes in the system tray at every launch (KDE Plasma) - that is Plasma's microphone-in-use privacy indicator (plasmashell_microphone), not a launcher tray icon: game audio engines and CEF launchers open brief audio-capture probes while initializing (capture itself is legitimate - in-game voice chat uses it), and Plasma registers/removes the indicator for each short-lived stream (measured: 45 registrations during one CB Launcher start). It is desktop UX, not a launcher defect. To stop the strobe, move the Microphone entry to the hidden area: System Tray settings -> Entries -> Microphone -> Always hidden, or declaratively with plasma-manager: systemTray.items.hidden = [ "plasmashell_microphone" ] (it stays inspectable in the tray popup).
  • CB Launcher dropdowns (language, etc.) do not appear - CEF <select> popups are separate native windows Wine has historically failed to paint (WineHQ bug 33943). The launcher forces software compositing (--disable-gpu --disable-gpu-compositing, on top of --in-process-gpu), the standard CEF-under-Wine cure, which costs nothing for a launcher UI. If a dropdown still misbehaves, the popup usually exists but is unpainted: hover/sweep the mouse where the options would be, or use the arrow keys + Enter.
  • t7x/BOIII: black screen or a "Media Feature Pack"/codec error - on GE-Proton 11 the video stack is FFmpeg-based and the old mf/mfplat codec verbs are legacy; if intro/menu videos still hang, delete the game directory's videos/ folder. A black screen WITH audio on a host with many audio devices is a different class - add [ "sound=alsa" ] to that client's extraWinetricks (the same fix Steam's protonfixes applies to retail BO3). On older Protons [ "mf" "mfplat" ] remains the codec remedy.
  • Game not found - detection reads Steam's libraryfolders.vdf; for an unusual install pass t7x.blackOps3Dir = "/path" or cod-steamlink --dir /path. See Store detection.
  • Interrupted download - fetches use --remove-on-error, so just re-run the launcher.

Development

nix develop      # dev shell (git hooks + nil LSP)
nix fmt          # format Nix (nixfmt-rfc-style)
nix build .#cod-plutonium
nix build .#cod-t7x
nix build .#cod-steamlink
nix flake check  # eval + build + std-conformance + module eval

CI/CD

Workflow Trigger Purpose
ci.yml Push/PR Eval, format, build every declared output
maintenance.yml Weekly Refresh flake.lock, prune stale branches

All GitHub Actions are pinned to full commit SHAs, synced from the Nix Packaging Standard.


Maintained as part of the Daaboulex NixOS ecosystem.

About

Community Call of Duty clients packaged for NixOS - Home Manager launcher module (umu + Proton + bubblewrap)

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages