I'm following the Plutus Env: Setup Starter Pack guideline to run a Plutus Playground Local Instance. At step 4, when running the command nix-shell
, I got the error message error: invalid character in Base64 string: ''
. Does anyone know how to fix it? I'm using WSL2 with Ubuntu 20.04 distro.
All the steps I did are:
- Download the plutus-apps repository: git clone https://github.com/input-output-hk/plutus-apps
- Go to the latest commit of the repository: git checkout 7f53f18dfc788bf6aa929f47d840efa1247e11fd
- Setup IOHK binary cache (https://github.com/input-output-hk/plutus-apps#iohk-binary-cache) and then at top of this repo, nix-build -A plutus-playground.server
- Enter nix-shell => error: invalid character in Base64 string: ''
Here are the outputs of nix-build
, nix-shell
, nix-shell --show-trace
nhaancs@NhanNguyen:~/Workspace/plutus-apps$ nix-build -A plutus-playground.server
/nix/store/3igf75n00amzcyfrk7wmh3kjp73bx6bp-plutus-playground-server-exe-plutus-playground-server-0.1.0.0
nhaancs@NhanNguyen:~/Workspace/plutus-apps$ nix-shell
error: invalid character in Base64 string: ''
(use '--show-trace' to show detailed location information)
nhaancs@NhanNguyen:~/Workspace/plutus-apps$ nix-shell --show-trace
error: invalid character in Base64 string: ''
… while importing '/nix/store/9vsdalr213rjwh2810jdv1p2r7lifpsl-ghc810420210212-boot-packages-nix.nix/ghci.nix'
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/overlays/ghc-packages.nix:51:14:
50| importSrcAndNix = srcAndNix:
51| args: (import srcAndNix.nix args) // { inherit (srcAndNix) src; };
| ^
52|
… while evaluating 'importSrcAndNix'
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/overlays/ghc-packages.nix:51:7:
50| importSrcAndNix = srcAndNix:
51| args: (import srcAndNix.nix args) // { inherit (srcAndNix) src; };
| ^
52|
… from call site
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/modules/plan.nix:302:20:
301| then (abort "${name} has no revision!")
302| else revision (modArgs // { hsPkgs = hsPkgs // (mapAttrs (l: _: hsPkgs.${name}.components.sublibs.${l}) (m.components.sublibs or {})); });
| ^
303| in
… while evaluating anonymous lambda
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/modules/plan.nix:298:63:
297| inherit (module) compiler;
298| packages = lib.mapAttrs (name: { revision, ... }@revArgs: { system, compiler, flags, pkgs, hsPkgs, errorHandler, pkgconfPkgs, ... }@modArgs:
| ^
299|
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/types.nix:499:46:
498| coerce = unify: value: if isFunction value
499| then setFunctionArgs (args: unify (value args)) (functionArgs value)
| ^
500| else unify (if shorthandOnlyDefinesConfig then { config = value; } else value);
… while evaluating 'unifyModuleSyntax'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:258:34:
257| of ‘options’, ‘config’ and ‘imports’ attributes. */
258| unifyModuleSyntax = file: key: m:
| ^
259| let
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/types.nix:499:39:
498| coerce = unify: value: if isFunction value
499| then setFunctionArgs (args: unify (value args)) (functionArgs value)
| ^
500| else unify (if shorthandOnlyDefinesConfig then { config = value; } else value);
… while evaluating anonymous lambda
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/types.nix:499:33:
498| coerce = unify: value: if isFunction value
499| then setFunctionArgs (args: unify (value args)) (functionArgs value)
| ^
500| else unify (if shorthandOnlyDefinesConfig then { config = value; } else value);
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:312:8:
311| # works.
312| in f (args // extraArgs)
| ^
313| else
… while evaluating 'applyIfFunction'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:288:29:
287|
288| applyIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
| ^
289| let
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:191:55:
190| if isFunction m || isAttrs m then
191| unifyModuleSyntax fallbackFile fallbackKey (applyIfFunction fallbackKey m args)
| ^
192| else if isList m then
… while evaluating 'unifyModuleSyntax'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:258:34:
257| of ‘options’, ‘config’ and ‘imports’ attributes. */
258| unifyModuleSyntax = file: key: m:
| ^
259| let
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:191:11:
190| if isFunction m || isAttrs m then
191| unifyModuleSyntax fallbackFile fallbackKey (applyIfFunction fallbackKey m args)
| ^
192| else if isList m then
… while evaluating 'loadModule'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:189:53:
188| # Like unifyModuleSyntax, but also imports paths and calls functions if necessary
189| loadModule = args: fallbackFile: fallbackKey: m:
| ^
190| if isFunction m || isAttrs m then
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:230:22:
229| let
230| module = loadModule args parentFile "${parentKey}:anon-${toString n}" x;
| ^
231| collectedImports = collectStructuredModules module._file module.key module.imports args;
… while evaluating anonymous lambda
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:247:31:
246| disabledKeys = map moduleKey disabled;
247| keyFilter = filter (attrs: ! elem attrs.key disabledKeys);
| ^
248| in map (attrs: attrs.module) (builtins.genericClosure {
… from call site
… while evaluating 'filterModules'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:243:36:
242| # modules recursively. It returns the final list of unique-by-key modules
243| filterModules = modulesPath: { disabled, modules }:
| ^
244| let
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:254:7:
253| in modulesPath: initialModules: args:
254| filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args);
| ^
255|
… while evaluating anonymous lambda
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:253:37:
252|
253| in modulesPath: initialModules: args:
| ^
254| filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args);
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:128:25:
127| merged =
128| let collected = collectModules
| ^
129| (specialArgs.modulesPath or "")
… while evaluating 'reverseList'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/lists.nix:393:17:
392| */
393| reverseList = xs:
| ^
394| let l = length xs; in genList (n: elemAt xs (l - n - 1)) l;
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:132:33:
131| ({ inherit lib options config specialArgs; } // specialArgs);
132| in mergeModules prefix (reverseList collected);
| ^
133|
… while evaluating 'byName'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:364:25:
363| */
364| byName = attr: f: modules:
| ^
365| foldl' (acc: module:
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:383:21:
382| # an attrset 'name' => list of submodules that declare ‘name’.
383| declsByName = byName "options" (module: option:
| ^
384| [{ inherit (module) _file; options = option; }]
… while evaluating 'flip'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/trivial.nix:138:16:
137| */
138| flip = f: a: b: f b a;
| ^
139|
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:395:23:
394|
395| resultsByName = flip mapAttrs declsByName (name: decls:
| ^
396| # We're descending into attribute ‘name’.
… while evaluating the attribute 'matchedOptions'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:427:14:
426| in {
427| inherit matchedOptions;
| ^
428|
… while evaluating 'recurse'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/attrsets.nix:295:23:
294| let
295| recurse = path: set:
| ^
296| let
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/attrsets.nix:303:8:
302| in mapAttrs g set;
303| in recurse [] set;
| ^
304|
… while evaluating 'mapAttrsRecursiveCond'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/attrsets.nix:293:36:
292| */
293| mapAttrsRecursiveCond = cond: f: set:
| ^
294| let
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:140:28:
139| # For definitions that have an associated option
140| declaredConfig = mapAttrsRecursiveCond (v: ! isOption v) (_: v: v.value) options;
| ^
141|
… while evaluating 'evalModules'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:63:17:
62| evalModules) and the less declarative the module set is. */
63| evalModules = { modules
| ^
64| , prefix ? []
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/types.nix:520:12:
519| merge = loc: defs:
520| (evalModules {
| ^
521| modules = allModules defs;
… while evaluating 'merge'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/types.nix:519:22:
518| check = x: isAttrs x || isFunction x || path.check x;
519| merge = loc: defs:
| ^
520| (evalModules {
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:559:59:
558| if isDefined then
559| if all (def: type.check def.value) defsFinal then type.merge loc defsFinal
| ^
560| else let allInvalid = filter (def: ! type.check def.value) defsFinal;
… while evaluating the attribute 'value'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/modules.nix:570:27:
569| optionalValue =
570| if isDefined then { value = mergedValue; }
| ^
571| else {};
… while evaluating anonymous lambda
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/types.nix:394:22:
393| merge = loc: defs:
394| mapAttrs (n: v: v.value) (filterAttrs (n: v: v ? value) (zipAttrsWith (name: defs:
| ^
395| (mergeDefinitions (loc ++ [name]) elemType defs).optionalValue
… from call site
… while evaluating anonymous lambda
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/modules/component-driver.nix:95:14:
94| lib.mapAttrs
95| (name: pkg: if pkg == null then null else builder.build-package config pkg)
| ^
96| (config.packages // lib.genAttrs (config.nonReinstallablePkgs ++ config.bootPkgs) (_: null));
… from call site
… while evaluating anonymous lambda
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/lib/default.nix:103:49:
102| isLocalPackage = p: p.isLocal or false;
103| selectLocalPackages = ps: lib.filterAttrs (n: p: p != null && isLocalPackage p) ps;
| ^
104|
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/attrsets.nix:125:62:
124| filterAttrs = pred: set:
125| listToAttrs (concatMap (name: let v = set.${name}; in if pred name v then [(nameValuePair name v)] else []) (attrNames set));
| ^
126|
… while evaluating anonymous lambda
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/attrsets.nix:125:29:
124| filterAttrs = pred: set:
125| listToAttrs (concatMap (name: let v = set.${name}; in if pred name v then [(nameValuePair name v)] else []) (attrNames set));
| ^
126|
… from call site
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/attrsets.nix:125:18:
124| filterAttrs = pred: set:
125| listToAttrs (concatMap (name: let v = set.${name}; in if pred name v then [(nameValuePair name v)] else []) (attrNames set));
| ^
126|
… while evaluating 'filterAttrs'
at /nix/store/kawxd91ly09hlyqprqs7yn650s3cfvf6-source/lib/attrsets.nix:124:23:
123| */
124| filterAttrs = pred: set:
| ^
125| listToAttrs (concatMap (name: let v = set.${name}; in if pred name v then [(nameValuePair name v)] else []) (attrNames set));
… from call site
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/lib/default.nix:103:29:
102| isLocalPackage = p: p.isLocal or false;
103| selectLocalPackages = ps: lib.filterAttrs (n: p: p != null && isLocalPackage p) ps;
| ^
104|
… while evaluating 'selectLocalPackages'
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/lib/default.nix:103:25:
102| isLocalPackage = p: p.isLocal or false;
103| selectLocalPackages = ps: lib.filterAttrs (n: p: p != null && isLocalPackage p) ps;
| ^
104|
… from call site
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/builder/shell-for.nix:6:39:
5| # dependencies will be included in the shell's `ghc-pkg list`.
6| packages ? ps: builtins.attrValues (haskellLib.selectLocalPackages ps)
| ^
7| # `components` function selects components that will be worked on in the shell itself.
… while evaluating anonymous lambda
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/builder/shell-for.nix:6:14:
5| # dependencies will be included in the shell's `ghc-pkg list`.
6| packages ? ps: builtins.attrValues (haskellLib.selectLocalPackages ps)
| ^
7| # `components` function selects components that will be worked on in the shell itself.
… from call site
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/builder/shell-for.nix:26:22:
25|
26| selectedPackages = packages hsPkgs;
| ^
27| additionalPackages = additional hsPkgs;
… while evaluating the attribute 'name'
at /nix/store/8n76c1c3nz2wl6dzxmxdz2y5xrx70flw-source/builder/shell-for.nix:136:5:
135| mkShell (mkDrvArgs // {
136| name = mkDrvArgs.name or name;
| ^
137|