61 lines
1.6 KiB
Org Mode
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...
|
|
|