Code Monkey home page Code Monkey logo

vuizvui's Introduction

vuizvui's People

Contributors

aszlig avatar devhell avatar layus avatar profpatsch avatar sternenseemann avatar yorickvp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vuizvui's Issues

hannswurscht pulseaudio streaming broken

It worked until a recent update, now whenever the system is started, stackenblocken starts and does regular output (in the meantime streaming works), then afterwards pulseaudio shuts down and streaming as well.

I have no idea.

For reference:
The pa-daemon starts itself automatically on the user openlab, if something wants to do audio output. In order to make that work, hannswurscht automatically logs in the user openlab on startup.

We cannot run pulse as system user, because otherwise the pulse avahi module breaks, which is used for streaming sink auto-discovery.

It’s a mess.

Proposal: Allow ALL the URIs!

Motivation

As you can probably guess, the main motivation for this is #40: It would be nice if we could fetch tvl's depot at eval time with builtins.fetchGit and additionally depot needs builtins.fetchTarball and builtins.fetchGit as well for the following purposes:

  • At eval time for fetching its pinned version of <nixpkgs>
  • At build time for fetching some sources, like for example third_party.lisp.cl-base64

Both of these things will break evaluation on hydra at the moment due to its allowed-uris settings for restricted-eval. The proposal is to change the evaluation settings for hydra, how exactly is described later.

Alternative solutions

I have already explored some alternative solutions to changing the settings for restricted-eval.

Using import from derivation

One ace we have up our sleeve is that our Hydra allows import-from-derivation. We can simply use pkgs.fetchgit to get the tvl sources and import them, as done in 823cfe3. However, depot still uses builtins.fetchTarball to fetch <nixpkgs> as described above, breaking evaluation.

This can be aleviated only by patching upstream which I have experimented with in CL/2552 which I used in 9fb6abf to let depot inherit pkgs from vuizvui, tying it to our nixpkgsSrc advances. This fixes evaluation of depot, but doesn't solve our issues completely, as there are still derivations in depot which wouldn't build due to their usage of builtin fetchers for src. We could of course try to patch upstream, but this would also lead to an ongoing maintenance effort as fetcher discipline wouldn't be enforced upstream.

Additionally it introduces a new issue, namely the potential for substantial breakage: depot has its own <nixpkgs> pin and with good reason:Pin updates reveal substantial breakage introduced in unstable. Letting depot inherit our nixpkgsSrc advances may lead to breakage we can't immediately fix ourselves.

Initial results from this test run where promising though: I added a single unproblematic package from depot to my system configuration and this evaluated successfully on Hydra (even twice). What's more, the eval time was seemingly not negatively impacted by this, clocking in at a perfectly normal 20 minutes.

Using flakes

This would have the requirement first, that we'd need to convert vuizvui to flakes and use flakes-compat for the remaining stable users which seem to be me, @Profpatsch and @‍devhell at the moment.

Additionally, we'd still run into the same problems as described above with the import-from-derivation approach. Since the same evaluation restrictions apply (if not more?!).

Adding an additional input for depot

Not desireable, because:

  • Additional Hydra administrative work
  • We want to pin depot to minimize breakage

Why not builtin fetchers?

Our current settings in vuizvui make using builtin fetchers basically impossible. Instead, all necessary downloads for evaluation (nixpkgsSrc and vuizvuiSrc) are done by Hydra. This is especially nice because Hydra can continuously update both sources from git, meaning we don't have to trigger builds manually or update pinned versions of inputs.

The question is, however, why would we essentially forbid builtin fetcher? Generally there are two main reasons, I can think of:

  • Builtin fetchers can introduce impurities to evaluation: builtins.fetchGit, for example, can be pointed to a repository and told to just fetch the latest revision. This impurity is often not a good which is why you can disable this feature using the nix option pure-eval.
  • Builtin fetchers allow the evaluation to depend on the network: builtins.fetchGit downloads the needed sources during evaluation. Often you'd want to enforce that hydra fetches everything necessary for evaluation and only builds would then depend on the network. However, we already allow this because we don't forbid import-from-derivation: import (builtins.fetchGit { … }) is not different from the allowed import (pkgs.fetchgit { … }).

As it stands, there seems to be no reason why we wouldn't allow builtin fetchers with pure-eval enabled. The only problem we need to solve is a configuration which doesn't require us to update allowed-uris all the time, as we probably don't want to disable restrict-eval.

Proposal

Therefore I'd propose to change the nix config used for evaluating stuff on hydra to something along the lines of the following:

restrict-eval = true
pure-eval = true
allow-import-from-derivation = true
allowed-uris = https:// http:// ftp:// gopher:// # and possibly more protocols

This has the following effect:

  • We only allow builtin fetchers with pinned git revision or sha256 (pure-eval)
  • We allow builtin fetchers to fetch any url with one of the given protocols. This works because allowed-uris just matches a prefix.
  • We disallow access to any non-network paths except the inputs via restricted-eval (as it has been)

To me, this is a no-brainer: We don't introduce any impurities into evaluation (thanks to pure-eval), we don't allow anything which wasn't already possible with import-from-derivation (except now with less overhead) and most we most likely won't ever need to touch the configuration again, as there is no URI list to be updated.

PS: An ancient meme for your viewing pleasure.

allow all the uris

gog games builder

after some hunting i came across you repo, do your gog releated things still work. I would like to try then on some games in my collection

Failed evaluation of machines.schnurrkadse

@sternenseemann: Are you still using this machine? I'm asking because of the following evaluation error:

in job ‘machines.sternenseemann.schnurrkadse’:

Failed assertions:
- The option definition `fonts.fontconfig.ultimate.substitutions' in `/nix/store/9dxrk7ny1hdwsm6ddkf056bqpx3w544m-vuizvui-pre2649.159ff74/machines/sternenseemann/schnurrkadse.nix' no longer has any effect; please remove it.
The fonts.fontconfig.ultimate module and configuration is obsolete.
The repository has since been archived and activity has ceased.
https://github.com/bohoomil/fontconfig-ultimate/issues/171.
No action should be needed for font configuration, as the fonts.fontconfig
module is already used by default.


- The option definition `fonts.fontconfig.ultimate.enable' in `/nix/store/9dxrk7ny1hdwsm6ddkf056bqpx3w544m-vuizvui-pre2649.159ff74/machines/sternenseemann/schnurrkadse.nix' no longer has any effect; please remove it.
The fonts.fontconfig.ultimate module and configuration is obsolete.
The repository has since been archived and activity has ceased.
https://github.com/bohoomil/fontconfig-ultimate/issues/171.
No action should be needed for font configuration, as the fonts.fontconfig
module is already used by default.

The error is rather easy to fix, but if you no longer use it, it might be a better idea to remove the machine.

License

Hello!
Great collection of configs! Did you intentionally left this repo without explicit license? I would like to use some parts of it in my own configs so it would be great if you will add explicit open source license.
Thanks.

installerIso attributes no longer (?) work if boot.loader.grub.enable is set

> nix-instantiate -A machines.sternenseemann.ludwig.installerIso
error: The option `boot.loader.grub.enable' has conflicting definition values:
- In `/nix/var/nix/profiles/per-user/root/channels/vuizvui/nixpkgs/nixos/modules/installer/cd-dvd/iso-image.nix': false
- In `/home/lukas/src/nix/vuizvui/machines/sternenseemann/ludwig.nix': true
Use `lib.mkForce value` or `lib.mkDefault value` to change the priority on any of these definitions.

(use '--show-trace' to show detailed location information)

It appears that it fails while merging the machine config and the iso-image.nix module before there is an opportunity of the lib.mkForce in mkIso to kick in.

Guix' Antichamber crashes after first display with `undefined symbol: MinorityMix_SetPosition`

Hello dear Nix users!

Sorry for intruding with Guix here but I figured that you people were the closest the the problem I'm trying to solve! :) So maybe you'll have a hunch.

I'm trying to package Antichamber for Guix:
https://gitlab.com/guix-gaming-channels/games/merge_requests/19

You can skip the long monologue, only the last post is important:
the game starts and displays the first room, but it almost immediately crashes.
Here is the log:

> ./bin/antichamber 
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
Loading library: libPhysXCooking.so
Result of loading library libPhysXCooking.so: 0x9af6580
Loading library: PhysXUpdateLoader.so
ERROR: PhysXUpdateLoader.so: cannot open shared object file: No such file or directory
Result of loading library PhysXUpdateLoader.so: 0x0
Loading library: libPhysXCore.so
Result of loading library libPhysXCore.so: 0x9de3c80
antichamber: symbol lookup error: antichamber: undefined symbol: MinorityMix_SetPosition

Any idea where this could come from?

The Nix Antichamber discussion is here: #14.
Thanks in advance ;)

Packaging SteamKit for Guix

Hi! Friendly cousin here again! :)

I'm trying to package SteamKit for Guix, and since you people have it here in this repository, I figured I would just ask.

As I understand, SteamKit must be compiled and it depends on Mono >= 5.4.

Guix only has Mono 4.4 :( I've tried updating it, but I get stuck with failing tests.
mono/mono#18979

I tried to copy Nix Mono definitions as close as possible. Typically, when Nix succeeds and Guix doesn't, it's because Guix does not have networking at build time. So this might be the issue here. Thoughts?

Otherwise, do you think it would be possible to get SteamKit to run without Mono 5.4?

Or do you know of any alternative to SteamKit?

Thanks in advance!

gpg-agent socket doesn’t work early in the user login

I’ve got a user startup timer like so:

      (lib.mkIf config.vuizvui.programs.gnupg.enable {
        services.unlock-password-store = {
          description = "unlock the user password store";
          wantedBy = [ "default.target" ];
          # make sure gpg-agent is running
          wants = [ "gpg-agent.service" ];
          after = [ "gpg-agent.service" ];
          serviceConfig = {
            # use special unlock key in the password store (needs to exist of course)
            ExecStart = "${lib.getBin pkgs.pass}/bin/pass misc/unlock";
            StandardOutput = "null";
          };
        };
        timers.unlock-password-store = {
          description = "unlock password store on system start";
          wantedBy = [ "timers.target" ];
          timerConfig.OnStartupSec = "5s";
        };
       })

and when I log in the following errors are logged:

Nov 29 15:04:00 katara gpg-agent[1123]: gpg-agent[1123]: failed to unprotect the secret key: No such file or directory
Nov 29 15:04:00 katara gpg-agent[1123]: gpg-agent[1123]: failed to read the secret key
Nov 29 15:04:00 katara gpg-agent[1123]: gpg-agent[1123]: command 'PKDECRYPT' failed: No such file or directory <Pinentry>
Nov 29 15:04:00 katara systemd[1118]: unlock-password-store.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Nov 29 15:04:00 katara systemd[1118]: unlock-password-store.service: Unit entered failed state.
Nov 29 15:04:00 katara systemd[1118]: unlock-password-store.service: Failed with result 'exit-code'.

nix daemon out of memory

When I want to switch to a new system configuration, it is now too much for the daemon:

> sudo nixos-rebuild switch -I vuizvui=/home/philip/vuizvui -I nixpkgs=/home/philip/nixpkgs --show-trace
building Nix...
building the system configuration...
warning: dumping very large path (> 256 MiB); this may run out of memory
error: while evaluating the attribute ‘buildCommand’ of the derivation ‘nixos-system-katara-16.03.git.40890b2M’ at /home/philip/nixpkgs/nixos/modules/system/activation/top-level.nix:102:7:
while evaluating the attribute ‘sources’ of the derivation ‘etc’ at /home/philip/nixpkgs/nixos/modules/system/etc/etc.nix:12:5:
while evaluating anonymous function at /home/philip/nixpkgs/nixos/modules/system/etc/etc.nix:20:20, called from undefined position:
while evaluating the attribute ‘source’ at /home/philip/nixpkgs/lib/attrsets.nix:165:44:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:74:45, called from /home/philip/nixpkgs/lib/attrsets.nix:165:52:
while evaluating the attribute ‘value’ at /home/philip/nixpkgs/lib/modules.nix:287:9:
while evaluating the option `environment.etc.fish/config.fish.source':
while evaluating the attribute ‘isDefined’ at /home/philip/nixpkgs/lib/modules.nix:319:5:
while evaluating ‘filterOverrides’ at /home/philip/nixpkgs/lib/modules.nix:391:21, called from /home/philip/nixpkgs/lib/modules.nix:303:18:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/modules.nix:397:8:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/modules.nix:298:17:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:298:28, called from undefined position:
while evaluating ‘dischargeProperties’ at /home/philip/nixpkgs/lib/modules.nix:361:25, called from /home/philip/nixpkgs/lib/modules.nix:299:62:
while evaluating the attribute ‘condition’ at /home/philip/nixpkgs/lib/modules.nix:437:14:
while evaluating the attribute ‘text’ at /home/philip/nixpkgs/lib/attrsets.nix:165:44:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:74:45, called from /home/philip/nixpkgs/lib/attrsets.nix:165:52:
while evaluating the attribute ‘value’ at /home/philip/nixpkgs/lib/modules.nix:287:9:
while evaluating the option `environment.etc.fish/config.fish.text':
while evaluating the attribute ‘isDefined’ at /home/philip/nixpkgs/lib/modules.nix:319:5:
while evaluating ‘filterOverrides’ at /home/philip/nixpkgs/lib/modules.nix:391:21, called from /home/philip/nixpkgs/lib/modules.nix:303:18:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/modules.nix:397:8:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/modules.nix:298:17:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:298:28, called from undefined position:
while evaluating ‘dischargeProperties’ at /home/philip/nixpkgs/lib/modules.nix:361:25, called from /home/philip/nixpkgs/lib/modules.nix:299:62:
while evaluating the attribute ‘value’ at /home/philip/nixpkgs/lib/modules.nix:199:48:
while evaluating the attribute ‘config.text’ at /home/philip/nixpkgs/nixos/modules/programs/fish.nix:82:5:
while evaluating the attribute ‘text’ of the derivation ‘set-environment’ at /home/philip/nixpkgs/pkgs/build-support/trivial-builders.nix:10:14:
while evaluating ‘mapAttrsToList’ at /home/philip/nixpkgs/lib/attrsets.nix:189:23, called from /home/philip/nixpkgs/nixos/modules/config/shells-environment.nix:26:9:
while evaluating ‘zipAttrsWith’ at /home/philip/nixpkgs/lib/attrsets.nix:282:21, called from /home/philip/nixpkgs/nixos/modules/config/shells-environment.nix:23:9:
while evaluating ‘zipAttrsWithNames’ at /home/philip/nixpkgs/lib/attrsets.nix:272:33, called from /home/philip/nixpkgs/lib/attrsets.nix:282:27:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/attrsets.nix:282:46:
while evaluating ‘mapAttrs’ at /home/philip/nixpkgs/lib/attrsets.nix:164:17, called from /home/philip/nixpkgs/nixos/modules/config/shells-environment.nix:15:9:
while evaluating the attribute ‘variables’ at /home/philip/nixpkgs/lib/attrsets.nix:165:44:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:74:45, called from /home/philip/nixpkgs/lib/attrsets.nix:165:52:
while evaluating the attribute ‘value’ at /home/philip/nixpkgs/lib/modules.nix:287:9:
while evaluating the option `environment.variables':
while evaluating the attribute ‘isDefined’ at /home/philip/nixpkgs/lib/modules.nix:319:5:
while evaluating ‘filterOverrides’ at /home/philip/nixpkgs/lib/modules.nix:391:21, called from /home/philip/nixpkgs/lib/modules.nix:303:18:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/modules.nix:397:8:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/modules.nix:298:17:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:298:28, called from undefined position:
while evaluating ‘dischargeProperties’ at /home/philip/nixpkgs/lib/modules.nix:361:25, called from /home/philip/nixpkgs/lib/modules.nix:299:62:
while evaluating the attribute ‘value’ at /home/philip/nixpkgs/lib/modules.nix:199:48:
while evaluating the attribute ‘config.variables’ at /home/philip/nixpkgs/nixos/modules/config/shells-environment.nix:157:5:
while evaluating the attribute ‘environment.sessionVariables’ at /home/philip/nixpkgs/lib/attrsets.nix:165:44:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:74:45, called from /home/philip/nixpkgs/lib/attrsets.nix:165:52:
while evaluating the attribute ‘value’ at /home/philip/nixpkgs/lib/modules.nix:287:9:
while evaluating the option `environment.sessionVariables':
while evaluating ‘mapAttrs’ at /home/philip/nixpkgs/lib/attrsets.nix:164:17, called from /home/philip/nixpkgs/lib/modules.nix:282:11:
while evaluating the attribute ‘mergedValue’ at /home/philip/nixpkgs/lib/modules.nix:314:5:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:314:32, called from /home/philip/nixpkgs/lib/modules.nix:314:19:
while evaluating ‘merge’ at /home/philip/nixpkgs/lib/types.nix:132:20, called from /home/philip/nixpkgs/lib/modules.nix:317:8:
while evaluating ‘mapAttrs’ at /home/philip/nixpkgs/lib/attrsets.nix:164:17, called from /home/philip/nixpkgs/lib/types.nix:133:9:
while evaluating ‘filterAttrs’ at /home/philip/nixpkgs/lib/attrsets.nix:88:23, called from /home/philip/nixpkgs/lib/types.nix:133:35:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/attrsets.nix:89:18:
while evaluating anonymous function at /home/philip/nixpkgs/lib/attrsets.nix:89:29, called from undefined position:
while evaluating anonymous function at /home/philip/nixpkgs/lib/types.nix:133:51, called from /home/philip/nixpkgs/lib/attrsets.nix:89:62:
while evaluating the attribute ‘NIX_PATH’ at /home/philip/nixpkgs/lib/attrsets.nix:275:7:
while evaluating anonymous function at /home/philip/nixpkgs/lib/types.nix:133:86, called from /home/philip/nixpkgs/lib/attrsets.nix:275:15:
while evaluating the attribute ‘optionalValue’ at /home/philip/nixpkgs/lib/modules.nix:321:5:
while evaluating ‘filterOverrides’ at /home/philip/nixpkgs/lib/modules.nix:391:21, called from /home/philip/nixpkgs/lib/modules.nix:303:18:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/modules.nix:397:8:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/modules.nix:298:17:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:298:28, called from undefined position:
while evaluating ‘dischargeProperties’ at /home/philip/nixpkgs/lib/modules.nix:361:25, called from /home/philip/nixpkgs/lib/modules.nix:299:62:
while evaluating the attribute ‘value’ at /home/philip/nixpkgs/lib/types.nix:138:55:
while evaluating the attribute ‘NIX_PATH’ at /home/philip/nixpkgs/nixos/modules/services/misc/nix-daemon.nix:397:9:
while evaluating the attribute ‘nixPath’ at /home/philip/nixpkgs/lib/attrsets.nix:165:44:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:74:45, called from /home/philip/nixpkgs/lib/attrsets.nix:165:52:
while evaluating the attribute ‘value’ at /home/philip/nixpkgs/lib/modules.nix:287:9:
while evaluating the option `nix.nixPath':
while evaluating the attribute ‘mergedValue’ at /home/philip/nixpkgs/lib/modules.nix:314:5:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:314:32, called from /home/philip/nixpkgs/lib/modules.nix:314:19:
while evaluating ‘merge’ at /home/philip/nixpkgs/lib/types.nix:116:20, called from /home/philip/nixpkgs/lib/modules.nix:317:8:
while evaluating anonymous function at /home/philip/nixpkgs/lib/types.nix:117:35, called from undefined position:
while evaluating anonymous function at /home/philip/nixpkgs/lib/lists.nix:49:25, called from undefined position:
while evaluating anonymous function at /home/philip/nixpkgs/lib/types.nix:117:86, called from /home/philip/nixpkgs/lib/lists.nix:49:28:
while evaluating the attribute ‘optionalValue’ at /home/philip/nixpkgs/lib/modules.nix:321:5:
while evaluating ‘filterOverrides’ at /home/philip/nixpkgs/lib/modules.nix:391:21, called from /home/philip/nixpkgs/lib/modules.nix:303:18:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/modules.nix:397:8:
while evaluating ‘concatMap’ at /home/philip/nixpkgs/lib/lists.nix:62:18, called from /home/philip/nixpkgs/lib/modules.nix:298:17:
while evaluating anonymous function at /home/philip/nixpkgs/lib/modules.nix:298:28, called from undefined position:
while evaluating ‘dischargeProperties’ at /home/philip/nixpkgs/lib/modules.nix:361:25, called from /home/philip/nixpkgs/lib/modules.nix:299:62:
while evaluating the attribute ‘value’ at /home/philip/nixpkgs/lib/types.nix:121:38:
while evaluating the attribute ‘text’ of the derivation ‘nixpkgs-config.nix’ at /home/philip/nixpkgs/pkgs/build-support/trivial-builders.nix:10:14:
Nix daemon out of memory

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.