This contains a set of NixOS modules/configurations and various other Nix expressions used by OpenLab Augsburg and its members.
You can find the latest build of the documentation here:
https://hydra.build/job/openlab/vuizvui/manual/latest/download
Nix(OS) expressions used by the OpenLab and its members
Home Page: http://hydra.build/jobset/openlab/vuizvui
License: GNU General Public License v3.0
This contains a set of NixOS modules/configurations and various other Nix expressions used by OpenLab Augsburg and its members.
You can find the latest build of the documentation here:
https://hydra.build/job/openlab/vuizvui/manual/latest/download
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
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:
<nixpkgs>
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.
I have already explored some alternative solutions to changing the settings for restricted-eval
.
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.
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?!).
Not desireable, because:
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:
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
.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
.
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:
pure-eval
)allowed-uris
just matches a prefix.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.
Needs to be patched first.
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'.
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.
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 ;)
Only @devhell uses it at the moment, but all channel evaluations fail nonetheless.
Labtop can't find an executable file for freecad.
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!
@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.
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.
Atm. we are patching nixos tools to make vuizvui (kind of) work.
Maybe change the NIX_PATH
? Or is there an even better solution?
> 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.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.