complete-computing-environment/nixgl.org

61 lines
1.6 KiB
Org Mode

:PROPERTIES:
:ID: cce/nixgl
:ROAM_REFS: https://github.com/guibou/nixGL
:END:
#+TITLE: NixGL
#+filetags: :Project:CCE:
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:yaml :tangle cce/roles/endpoint/tasks/nixgl.yml
#+ARCOLOGY_KEY: cce/nixgl
#+ARCOLOGY_ALLOW_CRAWL: t
#+AUTO_TANGLE: t
NixGL builds little wrapper programs which use the system =libGL= or =nvidia= libraries to run [[id:c75d20e6-8888-4c5a-ac97-5997e2f1c711][nixpkgs]]/[[id:cce/home-manager][home-manager]] programs which need OpenGL or whatever.
* nixGL Wrapper helper
:PROPERTIES:
:ID: nixGLWrap
:ROAM_ALIASES: mkNixGlWrapper
:END:
This plugs in to [[id:cce/cce][CCE]] [[id:128ab0e8-a1c7-48bf-9efe-0c23ce906a48][Hypermedia]] to make it somewhat more durable to create functional wrappers for nixGL:
#+begin_src nix :tangle ~/arroyo-nix/lib/nixgl.nix
{ pkgs, stdenv, ... }:
{ name, package_name ? name, pkg ? null }:
let
nixGL = pkgs.nixGL;
pkg_to_shadow = if (isNull pkg)
then pkgs."${package_name}"
else pkg;
in
pkgs.symlinkJoin {
name = "${name}-nixgl-wrapper";
paths = [
(pkgs.writeScriptBin name ''
#!${pkgs.stdenv.shell}
exec ${nixGL}/bin/nixGLIntel ${pkg_to_shadow}/bin/${name} $@
'')
pkg_to_shadow
];
}
#+end_src
#+begin_src nix :tangle ~/arroyo-nix/pkgs/nixgl.nix
{ stdenv, pkgs ? import <nixpkgs> {}, ... }:
let
nixGLghOptions = pkgs.lib.pkgVersions.nixGL;
nixGLgh = pkgs.callPackage nixGLghOptions {};
nixGL = (pkgs.callPackage nixGLgh {}).nixGLIntel;
in
nixGL
#+end_src
** NEXT mark this for tangling in [[id:cce/home-manager][home-manager]] somehow...