diff --git a/.devenv/bash-bash b/.devenv/bash-bash new file mode 120000 index 0000000..4574808 --- /dev/null +++ b/.devenv/bash-bash @@ -0,0 +1 @@ +/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9 \ No newline at end of file diff --git a/.devenv/bootstrap/bootstrapLib.nix b/.devenv/bootstrap/bootstrapLib.nix new file mode 100644 index 0000000..8f41ce4 --- /dev/null +++ b/.devenv/bootstrap/bootstrapLib.nix @@ -0,0 +1,603 @@ +# Shared library functions for devenv evaluation +{ inputs }: + +rec { + # Helper to get overlays for a given input + getOverlays = + inputName: inputAttrs: + let + lib = inputs.nixpkgs.lib; + in + map + ( + overlay: + let + input = + inputs.${inputName} or (throw "No such input `${inputName}` while trying to configure overlays."); + in + input.overlays.${overlay} + or (throw "Input `${inputName}` has no overlay called `${overlay}`. Supported overlays: ${lib.concatStringsSep ", " (builtins.attrNames input.overlays)}") + ) inputAttrs.overlays or [ ]; + + # Main function to create devenv configuration for a specific system with profiles support + # This is the full-featured version used by default.nix + mkDevenvForSystem = + { version + , is_development_version ? false + , require_version_match ? false + , system + , devenv_root + , git_root ? null + , devenv_dotfile + , devenv_dotfile_path + , devenv_tmpdir + , devenv_runtime + , devenv_state ? null + , devenv_istesting ? false + , devenv_direnvrc_latest_version + , active_profiles ? [ ] + , hostname + , username + , cli_options ? [ ] + , skip_local_src ? false + , secretspec ? null + , devenv_inputs ? { } + , devenv_imports ? [ ] + , impure ? false + , nixpkgs_config ? { } + , lock_fingerprint ? null + , primops ? { } + }: + let + inherit (inputs) nixpkgs; + lib = nixpkgs.lib; + targetSystem = system; + + overlays = lib.flatten (lib.mapAttrsToList getOverlays devenv_inputs); + + # Helper to create pkgs for a given system with nixpkgs_config + mkPkgsForSystem = + evalSystem: + import nixpkgs { + system = evalSystem; + config = nixpkgs_config // { + # nixpkgs' check-meta.nix natively handles permittedInsecurePackages + # via allowInsecureDefaultPredicate using the full derivation name. + # We must NOT override allowInsecurePredicate here, as lib.getName + # strips the version, causing mismatches with user-provided entries + # like "openssl-1.1.1w". + # + # For unfree packages, nixpkgs does not natively support + # permittedUnfreePackages, so we provide a custom predicate. + allowUnfreePredicate = + if nixpkgs_config.allowUnfree or false then + (_: true) + else if (nixpkgs_config.permittedUnfreePackages or [ ]) != [ ] then + (pkg: builtins.elem (lib.getName pkg) (nixpkgs_config.permittedUnfreePackages or [ ])) + else + (_: false); + } // lib.optionalAttrs ((nixpkgs_config.allowlistedLicenses or [ ]) != [ ]) { + allowlistedLicenses = map (name: lib.licenses.${name}) (nixpkgs_config.allowlistedLicenses or [ ]); + } // lib.optionalAttrs ((nixpkgs_config.blocklistedLicenses or [ ]) != [ ]) { + blocklistedLicenses = map (name: lib.licenses.${name}) (nixpkgs_config.blocklistedLicenses or [ ]); + }; + inherit overlays; + }; + + pkgsBootstrap = mkPkgsForSystem targetSystem; + + # Helper to import a path, trying .nix first then /devenv.nix + # Returns a list of modules, including devenv.local.nix when present + tryImport = + resolvedPath: basePath: + if lib.hasSuffix ".nix" basePath then + [ (import resolvedPath) ] + else + let + devenvpath = resolvedPath + "/devenv.nix"; + localpath = resolvedPath + "/devenv.local.nix"; + in + if builtins.pathExists devenvpath then + [ (import devenvpath) ] ++ lib.optional (builtins.pathExists localpath) (import localpath) + else + throw (basePath + "/devenv.nix file does not exist"); + + importModule = + path: + if lib.hasPrefix "path:" path then + # path: prefix indicates a local filesystem path - strip it and import directly + let + actualPath = builtins.substring 5 999999 path; + in + tryImport (/. + actualPath) path + else if lib.hasPrefix "/" path then + # Absolute path - import directly (avoids input resolution and NAR hash computation) + tryImport (/. + path) path + else if lib.hasPrefix "./" path then + # Relative paths are relative to devenv_root, not bootstrap directory + let + relPath = builtins.substring 1 255 path; + in + tryImport (/. + devenv_root + relPath) path + else if lib.hasPrefix "../" path then + # Parent relative paths also relative to devenv_root + tryImport (/. + devenv_root + "/${path}") path + else + let + paths = lib.splitString "/" path; + name = builtins.head paths; + input = inputs.${name} or (throw "Unknown input ${name}"); + subpath = "/${lib.concatStringsSep "/" (builtins.tail paths)}"; + devenvpath = input + subpath; + in + tryImport devenvpath path; + + # Common modules shared between main evaluation and cross-system evaluation + mkCommonModules = + evalPkgs: + [ + ( + { config, ... }: + { + _module.args.pkgs = evalPkgs.appendOverlays (config.overlays or [ ]); + _module.args.secretspec = secretspec; + _module.args.devenvPrimops = primops; + } + ) + (inputs.devenv.modules + /top-level.nix) + ( + { options, ... }: + { + config.devenv = lib.mkMerge [ + { + root = devenv_root; + dotfile = devenv_dotfile; + } + ( + if builtins.hasAttr "cli" options.devenv then + { + cli.version = version; + cli.isDevelopment = is_development_version; + } + else + { + cliVersion = version; + } + ) + (lib.optionalAttrs + (builtins.hasAttr "cli" options.devenv + && builtins.hasAttr "requireVersionMatch" options.devenv.cli) + { + cli.requireVersionMatch = require_version_match; + } + ) + (lib.optionalAttrs (builtins.hasAttr "tmpdir" options.devenv) { + tmpdir = devenv_tmpdir; + }) + (lib.optionalAttrs (builtins.hasAttr "isTesting" options.devenv) { + isTesting = devenv_istesting; + }) + (lib.optionalAttrs (builtins.hasAttr "runtime" options.devenv) { + runtime = devenv_runtime; + }) + (lib.optionalAttrs (builtins.hasAttr "state" options.devenv && devenv_state != null) { + state = lib.mkForce devenv_state; + }) + (lib.optionalAttrs (builtins.hasAttr "direnvrcLatestVersion" options.devenv) { + direnvrcLatestVersion = devenv_direnvrc_latest_version; + }) + ]; + } + ) + ( + { options, ... }: + { + config = lib.mkMerge [ + (lib.optionalAttrs (builtins.hasAttr "git" options) { + git.root = git_root; + }) + ]; + } + ) + ] + ++ (lib.flatten (map importModule devenv_imports)) + ++ (if !skip_local_src then (importModule (devenv_root + "/devenv.nix")) else [ ]) + ++ [ + ( + let + localPath = devenv_root + "/devenv.local.nix"; + in + if builtins.pathExists localPath then import localPath else { } + ) + cli_options + ]; + + # Phase 1: Base evaluation to extract profile definitions + baseProject = lib.evalModules { + specialArgs = inputs // { + inherit inputs secretspec primops; + }; + modules = mkCommonModules pkgsBootstrap; + }; + + # Phase 2: Extract and apply profiles using extendModules with priority overrides + project = + let + # Build ordered list of profile names: hostname -> user -> manual + manualProfiles = active_profiles; + currentHostname = hostname; + currentUsername = username; + hostnameProfiles = lib.optional + ( + currentHostname != null + && currentHostname != "" + && builtins.hasAttr currentHostname (baseProject.config.profiles.hostname or { }) + ) "hostname.${currentHostname}"; + userProfiles = lib.optional + ( + currentUsername != null + && currentUsername != "" + && builtins.hasAttr currentUsername (baseProject.config.profiles.user or { }) + ) "user.${currentUsername}"; + + # Ordered list of profiles to activate + orderedProfiles = hostnameProfiles ++ userProfiles ++ manualProfiles; + + # Resolve profile extends with cycle detection + resolveProfileExtends = + profileName: visited: + if builtins.elem profileName visited then + throw "Circular dependency detected in profile extends: ${lib.concatStringsSep " -> " visited} -> ${profileName}" + else + let + profile = getProfileConfig profileName; + extends = profile.extends or [ ]; + newVisited = visited ++ [ profileName ]; + extendedProfiles = lib.flatten (map (name: resolveProfileExtends name newVisited) extends); + in + extendedProfiles ++ [ profileName ]; + + # Get profile configuration by name from baseProject + getProfileConfig = + profileName: + if lib.hasPrefix "hostname." profileName then + let + name = lib.removePrefix "hostname." profileName; + in + baseProject.config.profiles.hostname.${name} + else if lib.hasPrefix "user." profileName then + let + name = lib.removePrefix "user." profileName; + in + baseProject.config.profiles.user.${name} + else + let + availableProfiles = builtins.attrNames (baseProject.config.profiles or { }); + hostnameProfiles = map (n: "hostname.${n}") ( + builtins.attrNames (baseProject.config.profiles.hostname or { }) + ); + userProfiles = map (n: "user.${n}") (builtins.attrNames (baseProject.config.profiles.user or { })); + allAvailableProfiles = availableProfiles ++ hostnameProfiles ++ userProfiles; + in + baseProject.config.profiles.${profileName} + or (throw "Profile '${profileName}' not found. Available profiles: ${lib.concatStringsSep ", " allAvailableProfiles}"); + + # Fold over ordered profiles to build final list with extends + expandedProfiles = lib.foldl' + ( + acc: profileName: + let + allProfileNames = resolveProfileExtends profileName [ ]; + in + acc ++ allProfileNames + ) [ ] + orderedProfiles; + + # Map over expanded profiles and apply priorities + allPrioritizedModules = lib.imap0 + ( + index: profileName: + let + profilePriority = (lib.modules.defaultOverridePriority - 1) - index; + profileConfig = getProfileConfig profileName; + + typeNeedsOverride = + type: + if type == null then + false + else + let + typeName = type.name or type._type or ""; + + isLeafType = builtins.elem typeName [ + "str" + "int" + "bool" + "enum" + "path" + "package" + "float" + "anything" + ]; + in + if isLeafType then + true + else if typeName == "nullOr" then + let + innerType = + type.elemType + or (if type ? nestedTypes && type.nestedTypes ? elemType then type.nestedTypes.elemType else null); + in + if innerType != null then typeNeedsOverride innerType else false + else + false; + + pathNeedsOverride = + optionPath: + let + directOption = lib.attrByPath optionPath null baseProject.options; + in + if directOption != null && lib.isOption directOption then + typeNeedsOverride directOption.type + else if optionPath != [ ] then + let + parentPath = lib.init optionPath; + parentOption = lib.attrByPath parentPath null baseProject.options; + in + if parentOption != null && lib.isOption parentOption then + let + freeformType = parentOption.type.freeformType or parentOption.type.nestedTypes.freeformType or null; + elementType = + if freeformType ? elemType then + freeformType.elemType + else if freeformType ? nestedTypes && freeformType.nestedTypes ? elemType then + freeformType.nestedTypes.elemType + else + freeformType; + in + typeNeedsOverride elementType + else + false + else + false; + + applyModuleOverride = + config: + if builtins.isFunction config then + let + wrapper = args: applyOverrideRecursive (config args) [ ]; + in + lib.mirrorFunctionArgs config wrapper + else + applyOverrideRecursive config [ ]; + + applyOverrideRecursive = + config: optionPath: + if lib.isAttrs config && config ? _type then + config + else if lib.isAttrs config then + lib.mapAttrs (name: value: applyOverrideRecursive value (optionPath ++ [ name ])) config + else if pathNeedsOverride optionPath then + lib.mkOverride profilePriority config + else + config; + + prioritizedConfig = ( + profileConfig.module + // { + imports = lib.map + ( + importItem: + importItem + // { + imports = lib.map (nestedImport: applyModuleOverride nestedImport) (importItem.imports or [ ]); + } + ) + (profileConfig.module.imports or [ ]); + } + ); + in + prioritizedConfig + ) + expandedProfiles; + in + if allPrioritizedModules == [ ] then + baseProject + else + baseProject.extendModules { modules = allPrioritizedModules; }; + + config = project.config; + + # Per-container scoped re-evaluation that flips `isBuilding` for the + # container being built. Selecting one container cannot pollute the + # evaluation of any other operation, since each `containerBuilds.` + # is its own `extendModules` scope. + mkContainerBuilds = + evalProject: + lib.genAttrs (lib.attrNames evalProject.config.containers) ( + name: + let + scoped = evalProject.extendModules { + modules = [{ + container.isBuilding = lib.mkForce true; + containers.${name}.isBuilding = lib.mkForce true; + }]; + }; + in + scoped.config.containers.${name} + ); + + containerBuilds = mkContainerBuilds project; + + # Apply config overlays to pkgs + pkgs = pkgsBootstrap.appendOverlays (config.overlays or [ ]); + + options = pkgs.nixosOptionsDoc { + options = builtins.removeAttrs project.options [ "_module" ]; + warningsAreErrors = false; + transformOptions = + let + isDocType = + v: + builtins.elem v [ + "literalDocBook" + "literalExpression" + "literalMD" + "mdDoc" + ]; + in + lib.attrsets.mapAttrs ( + _: v: + if v ? _type && isDocType v._type then + v.text + else if v ? _type && v._type == "derivation" then + v.name + else + v + ); + }; + + build = + options: config: + lib.concatMapAttrs + ( + name: option: + if lib.isOption option then + let + typeName = option.type.name or ""; + in + if + builtins.elem typeName [ + "output" + "outputOf" + ] + then + { + ${name} = config.${name}; + } + else + { } + else if builtins.isAttrs option && !lib.isDerivation option then + let + v = build option config.${name}; + in + if v != { } then { ${name} = v; } else { } + else + { } + ) + options; + + # Helper to evaluate devenv for a specific system (for cross-compilation, e.g. macOS building Linux containers) + evalForSystem = + evalSystem: + let + evalPkgs = mkPkgsForSystem evalSystem; + evalProject = lib.evalModules { + specialArgs = inputs // { + inherit inputs secretspec primops; + }; + modules = mkCommonModules evalPkgs; + }; + in + { + config = evalProject.config; + containerBuilds = mkContainerBuilds evalProject; + }; + + # All supported systems for cross-compilation (lazily evaluated) + allSystems = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + + # Generate perSystem entries for all systems (only evaluated when accessed) + perSystemConfigs = lib.genAttrs allSystems ( + perSystem: + if perSystem == targetSystem then + { inherit config containerBuilds; } + else + evalForSystem perSystem + ); + in + { + inherit + pkgs + config + options + project + ; + bash = pkgs.bash; + shell = config.shell; + optionsJSON = options.optionsJSON; + info = config.info; + ci = config.ciDerivation; + build = build project.options config; + devenv = { + # Backwards compatibility: wrap config in devenv attribute for code expecting devenv.config.* + inherit config containerBuilds; + # perSystem structure for cross-compilation (e.g. macOS building Linux containers) + perSystem = perSystemConfigs; + }; + }; + + # Simplified devenv evaluation for inputs + # This is a lightweight version suitable for evaluating an input's devenv.nix + mkDevenvForInput = + { + # The input to evaluate (must have outPath and sourceInfo) + input + , # All resolved inputs (for specialArgs) + allInputs + , # System to evaluate for + system ? builtins.currentSystem + , # Nixpkgs to use (defaults to allInputs.nixpkgs) + nixpkgs ? allInputs.nixpkgs or (throw "nixpkgs input required") + , # Devenv modules (defaults to allInputs.devenv) + devenv ? allInputs.devenv or (throw "devenv input required") + , + }: + let + devenvPath = input.outPath + "/devenv.nix"; + hasDevenv = builtins.pathExists devenvPath; + in + if !hasDevenv then + throw '' + Input does not have a devenv.nix file. + Expected file at: ${devenvPath} + + To use this input's devenv configuration, the input must provide a devenv.nix file. + '' + else + let + pkgs = import nixpkgs { + inherit system; + config = { }; + }; + lib = pkgs.lib; + + project = lib.evalModules { + specialArgs = allInputs // { + inputs = allInputs; + secretspec = null; + }; + modules = [ + ( + { config, ... }: + { + _module.args.pkgs = pkgs.appendOverlays (config.overlays or [ ]); + } + ) + (devenv.outPath + "/src/modules/top-level.nix") + (import devenvPath) + ]; + }; + in + { + inherit pkgs; + config = project.config; + options = project.options; + inherit project; + }; +} diff --git a/.devenv/bootstrap/default.nix b/.devenv/bootstrap/default.nix new file mode 100644 index 0000000..7010be3 --- /dev/null +++ b/.devenv/bootstrap/default.nix @@ -0,0 +1,19 @@ +args@{ system +, # The project root (location of devenv.nix) + devenv_root +, ... +}: + +let + inherit + (import ./resolve-lock.nix { + src = devenv_root; + inherit system; + }) + inputs + ; + + bootstrapLib = import ./bootstrapLib.nix { inherit inputs; }; +in + +bootstrapLib.mkDevenvForSystem args diff --git a/.devenv/bootstrap/resolve-lock.nix b/.devenv/bootstrap/resolve-lock.nix new file mode 100644 index 0000000..fee5ebc --- /dev/null +++ b/.devenv/bootstrap/resolve-lock.nix @@ -0,0 +1,157 @@ +# Adapted from https://git.lix.systems/lix-project/flake-compat/src/branch/main/default.nix +{ src +, system ? builtins.currentSystem or "unknown-system" +, +}: + +let + lockFilePath = src + "/devenv.lock"; + + lockFile = builtins.fromJSON (builtins.readFile lockFilePath); + + rootSrc = { + lastModified = 0; + lastModifiedDate = formatSecondsSinceEpoch 0; + # *hacker voice*: it's definitely a store path, I promise (actually a + # nixlang path value, likely not pointing at the store). + outPath = src; + }; + + # Format number of seconds in the Unix epoch as %Y%m%d%H%M%S. + formatSecondsSinceEpoch = + t: + let + rem = x: y: x - x / y * y; + days = t / 86400; + secondsInDay = rem t 86400; + hours = secondsInDay / 3600; + minutes = (rem secondsInDay 3600) / 60; + seconds = rem t 60; + + # Courtesy of https://stackoverflow.com/a/32158604. + z = days + 719468; + era = (if z >= 0 then z else z - 146096) / 146097; + doe = z - era * 146097; + yoe = (doe - doe / 1460 + doe / 36524 - doe / 146096) / 365; + y = yoe + era * 400; + doy = doe - (365 * yoe + yoe / 4 - yoe / 100); + mp = (5 * doy + 2) / 153; + d = doy - (153 * mp + 2) / 5 + 1; + m = mp + (if mp < 10 then 3 else -9); + y' = y + (if m <= 2 then 1 else 0); + + pad = s: if builtins.stringLength s < 2 then "0" + s else s; + in + "${toString y'}${pad (toString m)}${pad (toString d)}${pad (toString hours)}${pad (toString minutes)}${pad (toString seconds)}"; + + allNodes = builtins.mapAttrs + ( + key: node: + let + sourceInfo = + if key == lockFile.root then + rootSrc + # Path inputs pointing to project root (path = ".") should use rootSrc + # to avoid fetchTree hashing the entire project directory + else if node.locked.type or null == "path" && node.locked.path or null == "." then + rootSrc + else + let + locked = node.locked; + isRelativePath = p: p != null && (builtins.substring 0 2 p == "./" || builtins.substring 0 3 p == "../"); + # Resolve relative paths against src + resolvedLocked = locked + // (if locked.type or null == "path" && isRelativePath (locked.path or null) + then { path = toString src + "/${locked.path}"; } + else { }) + // (if locked.type or null == "git" && isRelativePath (locked.url or null) + then { url = toString src + "/${locked.url}"; } + else { }); + in + builtins.fetchTree (node.info or { } // removeAttrs resolvedLocked [ "dir" ]); + + subdir = if key == lockFile.root then "" else node.locked.dir or ""; + + outPath = sourceInfo + ((if subdir == "" then "" else "/") + subdir); + + # Resolve a input spec into a node name. An input spec is + # either a node name, or a 'follows' path from the root + # node. + resolveInput = + inputSpec: if builtins.isList inputSpec then getInputByPath lockFile.root inputSpec else inputSpec; + + # Follow an input path (e.g. ["dwarffs" "nixpkgs"]) from the + # root node, returning the final node. + getInputByPath = + nodeName: path: + if path == [ ] then + nodeName + else + getInputByPath + # Since this could be a 'follows' input, call resolveInput. + (resolveInput lockFile.nodes.${nodeName}.inputs.${builtins.head path}) + (builtins.tail path); + + inputs = builtins.mapAttrs (inputName: inputSpec: allNodes.${resolveInput inputSpec}) ( + node.inputs or { } + ); + + # Only import flake.nix for non-root nodes (root doesn't need it) + flake = if key == lockFile.root then null else import (outPath + "/flake.nix"); + + outputs = if key == lockFile.root then { } else flake.outputs (inputs // { self = result; }); + + # Lazy devenv evaluation for this input + devenvEval = + let + bootstrapLib = import ./bootstrapLib.nix { inputs = inputs; }; + in + bootstrapLib.mkDevenvForInput { + input = { inherit outPath sourceInfo; }; + allInputs = inputs; + inherit system; + }; + + result = + outputs + // sourceInfo + // { + inherit outPath; + inherit inputs; + inherit outputs; + inherit sourceInfo; + _type = "flake"; + devenv = devenvEval; + }; + + nonFlakeResult = sourceInfo // { + inherit outPath; + inherit inputs; + inherit sourceInfo; + _type = "flake"; + devenv = devenvEval; + }; + + in + if node.flake or true && key != lockFile.root then + assert builtins.isFunction flake.outputs; + result + else + nonFlakeResult + ) + lockFile.nodes; + + result = + if !(builtins.pathExists lockFilePath) then + throw "${lockFilePath} does not exist" + else if lockFile.version >= 5 && lockFile.version <= 7 then + allNodes.${lockFile.root} + else + throw "lock file '${lockFilePath}' has unsupported version ${toString lockFile.version}"; + +in +{ + inputs = result.inputs or { } // { + self = result; + }; +} diff --git a/.devenv/gc/shell b/.devenv/gc/shell new file mode 120000 index 0000000..c85bb22 --- /dev/null +++ b/.devenv/gc/shell @@ -0,0 +1 @@ +/nix/store/qfli8mq0fxc3lfj1w7yv00zgf8n3fa6c-devenv-shell \ No newline at end of file diff --git a/.devenv/gc/task-config-devenv-config-task-config b/.devenv/gc/task-config-devenv-config-task-config new file mode 120000 index 0000000..147824c --- /dev/null +++ b/.devenv/gc/task-config-devenv-config-task-config @@ -0,0 +1 @@ +/nix/store/vsp3fis0yyfrw5zdw1r908cz5wkwy1qs-tasks.json \ No newline at end of file diff --git a/.devenv/imports.txt b/.devenv/imports.txt new file mode 100644 index 0000000..e69de29 diff --git a/.devenv/input-paths.txt b/.devenv/input-paths.txt new file mode 100644 index 0000000..86fffb5 --- /dev/null +++ b/.devenv/input-paths.txt @@ -0,0 +1,10 @@ +/home/user01/Projects/score-system/.devenv/bootstrap/bootstrapLib.nix +/home/user01/Projects/score-system/.devenv/bootstrap/default.nix +/home/user01/Projects/score-system/.devenv/bootstrap/resolve-lock.nix +/home/user01/Projects/score-system/devenv.local.nix +/home/user01/Projects/score-system/devenv.lock +/home/user01/Projects/score-system/devenv.nix +/home/user01/Projects/score-system/devenv.yaml +/home/user01/.config/nixpkgs/overlays +/home/user01/.config/nixpkgs/overlays.nix +/home/user01/Projects/score-system/.env \ No newline at end of file diff --git a/.devenv/load-exports b/.devenv/load-exports new file mode 100755 index 0000000..8b13789 --- /dev/null +++ b/.devenv/load-exports @@ -0,0 +1 @@ + diff --git a/.devenv/nix-eval-cache.db-shm b/.devenv/nix-eval-cache.db-shm new file mode 100644 index 0000000..e3f30d0 Binary files /dev/null and b/.devenv/nix-eval-cache.db-shm differ diff --git a/.devenv/nix-eval-cache.db-wal b/.devenv/nix-eval-cache.db-wal new file mode 100644 index 0000000..e56da5c Binary files /dev/null and b/.devenv/nix-eval-cache.db-wal differ diff --git a/.devenv/nixpkgs-config-f0bff968555a3434.nix b/.devenv/nixpkgs-config-f0bff968555a3434.nix new file mode 100644 index 0000000..2679bf5 --- /dev/null +++ b/.devenv/nixpkgs-config-f0bff968555a3434.nix @@ -0,0 +1,12 @@ +let + cfg = {}; + getName = pkg: (builtins.parseDrvName (pkg.name or pkg.pname or "")).name; +in cfg // { + allowUnfreePredicate = + if cfg.allowUnfree or false then + (_: true) + else if (cfg.permittedUnfreePackages or []) != [] then + (pkg: builtins.elem (getName pkg) (cfg.permittedUnfreePackages or [])) + else + (_: false); +} \ No newline at end of file diff --git a/.devenv/profile b/.devenv/profile new file mode 120000 index 0000000..60e4f66 --- /dev/null +++ b/.devenv/profile @@ -0,0 +1 @@ +/nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile \ No newline at end of file diff --git a/.devenv/run b/.devenv/run new file mode 120000 index 0000000..17467a6 --- /dev/null +++ b/.devenv/run @@ -0,0 +1 @@ +/run/user/1000/devenv-3f21a4e \ No newline at end of file diff --git a/.devenv/shell-3f79910ee86ced32.sh b/.devenv/shell-3f79910ee86ced32.sh new file mode 100755 index 0000000..56731c2 --- /dev/null +++ b/.devenv/shell-3f79910ee86ced32.sh @@ -0,0 +1,2265 @@ +if [ -n "$PS1" ] && [ -e $HOME/.bashrc ]; then + source $HOME/.bashrc; +fi + +shopt -u expand_aliases +PATH=${PATH:-} +nix_saved_PATH="$PATH" +XDG_DATA_DIRS=${XDG_DATA_DIRS:-} +nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS" +LINENO='79' +declare -a unpackCmdHooks=('_defaultUnpack' ) +declare -a postFixupHooks=('noBrokenSymlinksInAllOutputs' '_makeSymlinksRelative' '_multioutPropagateDev' ) +NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +builder='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export builder +name='devenv-shell-env' +export name +depsBuildTargetPropagated='' +export depsBuildTargetPropagated +depsBuildBuildPropagated='' +export depsBuildBuildPropagated +declare -a pkgsBuildTarget=() +SOURCE_DATE_EPOCH='315532800' +export SOURCE_DATE_EPOCH +declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' ) +PKG_CONFIG='pkg-config' +export PKG_CONFIG +shell='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export shell +BASH='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +IFS=' +' +declare -a envHostHostHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +propagatedBuildInputs='' +export propagatedBuildInputs +HOSTTYPE='x86_64' +NIX_CFLAGS_COMPILE=' -frandom-seed=y5k9a31603 -isystem /nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/include -isystem /nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/include' +export NIX_CFLAGS_COMPILE +HOST_PATH='/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0/bin:/nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12/bin:/nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9/bin:/nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12/bin:/nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0/bin:/nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35/bin:/nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14/bin:/nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin/bin:/nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1/bin:/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin:/nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8/bin:/nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin/bin:/nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47/bin' +export HOST_PATH +nativeBuildInputs='/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev /nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3 /nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0 /nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13 /nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2 /nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2' +export nativeBuildInputs +CC='gcc' +export CC +propagatedNativeBuildInputs='' +export propagatedNativeBuildInputs +DEVSHELL_NAME='󰏖 devenv/#fab387| Bun/yellow' +export DEVSHELL_NAME +phases='buildPhase' +export phases +READELF='readelf' +export READELF +OSTYPE='linux-gnu' +RANLIB='ranlib' +export RANLIB +declare -a pkgsHostHost=() +outputInfo='out' +DEVENV_TASKS='' +export DEVENV_TASKS +depsBuildBuild='' +export depsBuildBuild +declare -a pkgsHostTarget=() +DEVENV_TASK_FILE='/nix/store/vsp3fis0yyfrw5zdw1r908cz5wkwy1qs-tasks.json' +export DEVENV_TASK_FILE +_substituteStream_has_warned_replace_deprecation='false' +defaultNativeBuildInputs='/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2 /nix/store/xknj6c33cc197s60ry0i69vdkmaizrs1-update-autotools-gnu-config-scripts-hook /nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh /nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh /nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh /nix/store/p3l1a5y7nllfyrjn2krlwgcc3z0cd3fq-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh /nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh /nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +declare -a envHostTargetHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +OPTERR='1' +out='/nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env' +export out +strictDeps='' +export strictDeps +prefix='/nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env' +depsBuildTarget='' +export depsBuildTarget +depsTargetTargetPropagated='' +export depsTargetTargetPropagated +declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' ) +DEVENV_DOTFILE='/home/user01/Projects/score-system/.devenv' +export DEVENV_DOTFILE +NIX_ENFORCE_NO_NATIVE='1' +export NIX_ENFORCE_NO_NATIVE +outputBin='out' +PKG_CONFIG_PATH='/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/lib/pkgconfig' +export PKG_CONFIG_PATH +patches='' +export patches +outputLib='out' +DEVENV_RUNTIME='/run/user/1000/devenv-3f21a4e' +export DEVENV_RUNTIME +XDG_DATA_DIRS='/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9/share:/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13/share:/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2/share:/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2/share' +export XDG_DATA_DIRS +outputs='out' +export outputs +initialPath='/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11 /nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0 /nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12 /nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9 /nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12 /nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0 /nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35 /nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14 /nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin /nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1 /nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9 /nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8 /nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin /nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47' +buildInputs='' +export buildInputs +depsTargetTarget='' +export depsTargetTarget +hardeningDisable='' +export hardeningDisable +outputDevman='out' +declare -a pkgsTargetTarget=() +NIX_LDFLAGS='-rpath /nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env/lib ' +export NIX_LDFLAGS +CONFIG_SHELL='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export CONFIG_SHELL +NM='nm' +export NM +declare -a propagatedTargetDepFiles=('propagated-target-target-deps' ) +shellHook=' + + +# Override temp directories that stdenv set to NIX_BUILD_TOP. +# Only reset those that still point to the Nix build dir; leave +# any user/CI-supplied value intact so child processes (e.g. +# `devenv processes wait`) compute the same runtime directory. +for var in TMP TMPDIR TEMP TEMPDIR; do + if [ -n "${!var-}" ] && [ "${!var}" = "${NIX_BUILD_TOP-}" ]; then + export "$var"=/tmp + fi +done +if [ -n "${NIX_BUILD_TOP-}" ]; then + unset NIX_BUILD_TOP +fi + +# set path to locales on non-NixOS Linux hosts +if [ -z "${LOCALE_ARCHIVE-}" ]; then + export LOCALE_ARCHIVE=/nix/store/3b5l8c2jipz2zgki0wc50vzwa2r9834a-glibc-locales-2.42-61/lib/locale/locale-archive +fi + + +# direnv helper +if [ ! type -p direnv &>/dev/null && -f .envrc ]; then + echo "An .envrc file was detected, but the direnv command is not installed." + echo "To use this configuration, please install direnv: https://direnv.net/docs/installation.html" +fi + +mkdir -p "$DEVENV_STATE" +if [ ! -L "$DEVENV_DOTFILE/profile" ] || [ "$(/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin/readlink $DEVENV_DOTFILE/profile)" != "/nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile" ] +then + ln -snf /nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile "$DEVENV_DOTFILE/profile" +fi +unset HOST_PATH NIX_BUILD_CORES __structuredAttrs buildInputs buildPhase builder depsBuildBuild depsBuildBuildPropagated depsBuildTarget depsBuildTargetPropagated depsHostHost depsHostHostPropagated depsTargetTarget depsTargetTargetPropagated dontAddDisableDepTrack doCheck doInstallCheck nativeBuildInputs out outputs patches phases preferLocalBuild propagatedBuildInputs propagatedNativeBuildInputs shell shellHook stdenv strictDeps + +mkdir -p /run/user/1000/devenv-3f21a4e +ln -snf /run/user/1000/devenv-3f21a4e /home/user01/Projects/score-system/.devenv/run + +echo "💡 A dotenv file was found, while dotenv integration is currently not enabled." >&2 +echo >&2 +echo " To enable it, add \`dotenv.enable = true;\` to your devenv.nix file." >&2; +echo " To disable this hint, add \`dotenv.disableHint = true;\` to your devenv.nix file." >&2; +echo >&2 +echo "See https://devenv.sh/integrations/dotenv/ for more information." >&2; + + + +# Check whether the direnv integration is out of date. +{ + if [[ ":${DIRENV_ACTIVE-}:" == *":/home/user01/Projects/score-system:"* ]]; then + if [[ ! "${DEVENV_NO_DIRENVRC_OUTDATED_WARNING-}" == 1 && ! "${DEVENV_DIRENVRC_ROLLING_UPGRADE-}" == 1 ]]; then + if [[ ${DEVENV_DIRENVRC_VERSION:-0} -lt 2 ]]; then + direnv_line=$(grep --color=never -E "source_url.*cachix/devenv" .envrc || echo "") + + echo "✨ The direnv integration in your .envrc is out of date." + echo "" + echo -n "RECOMMENDED: devenv can now auto-upgrade the direnv integration. " + if [[ -n "$direnv_line" ]]; then + echo "To enable this feature, replace the following line in your .envrc:" + echo "" + echo " $direnv_line" + echo "" + echo "with:" + echo "" + echo " eval \"\$(devenv direnvrc)\"" + else + echo "To enable this feature, replace the \`source_url\` line that fetches the direnvrc integration in your .envrc with:" + echo "" + echo " eval \"$(devenv direnvrc)\"" + fi + echo "" + echo "If you prefer to continue managing the integration manually, follow the upgrade instructions at https://devenv.sh/integrations/direnv/." + echo "" + echo "To disable this message:" + echo "" + echo " Add the following environment to your .envrc before \`use devenv\`:" + echo "" + echo " export DEVENV_NO_DIRENVRC_OUTDATED_WARNING=1" + echo "" + echo " Or set the following option in your devenv configuration:" + echo "" + echo " devenv.warnOnNewVersion = false;" + echo "" + fi + fi + fi +} >&2 + +' +export shellHook +OBJDUMP='objdump' +export OBJDUMP +defaultBuildInputs='' +PATH='/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9/bin:/nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3/bin:/nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0/bin:/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13/bin:/nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2/bin:/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2/bin:/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2/bin:/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0/bin:/nix/store/qxaq7jz61a6zkr2mq49i0zvqip2m2jj8-gcc-15.2.0/bin:/nix/store/bsh7n2nx8ndmm1mmww6v2h4851nalj13-glibc-2.42-61-bin/bin:/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46/bin:/nix/store/s2946bl9ciwzhafd66jhansrmxq9xhqm-binutils-2.46/bin:/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0/bin:/nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12/bin:/nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9/bin:/nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12/bin:/nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0/bin:/nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35/bin:/nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14/bin:/nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin/bin:/nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1/bin:/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin:/nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8/bin:/nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin/bin:/nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47/bin' +export PATH +declare -a envBuildHostHooks=() +declare -a preConfigureHooks=('_multioutConfig' ) +outputMan='out' +declare -a envTargetTargetHooks=() +declare -a pkgsBuildBuild=() +depsHostHostPropagated='' +export depsHostHostPropagated +NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_BUILD_CORES='4' +export NIX_BUILD_CORES +configureFlags='' +export configureFlags +AS='as' +export AS +NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +DEVENV_ROOT='/home/user01/Projects/score-system' +export DEVENV_ROOT +system='x86_64-linux' +export system +CXX='g++' +export CXX +doInstallCheck='' +export doInstallCheck +STRINGS='strings' +export STRINGS +IN_NIX_SHELL='impure' +export IN_NIX_SHELL +declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' ) +MACHTYPE='x86_64-pc-linux-gnu' +DEVENV_PROFILE='/nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile' +export DEVENV_PROFILE +LD='ld' +export LD +NIX_BINTOOLS='/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46' +export NIX_BINTOOLS +dontAddDisableDepTrack='1' +export dontAddDisableDepTrack +__structuredAttrs='' +export __structuredAttrs +OBJCOPY='objcopy' +export OBJCOPY +NIX_CC='/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +export NIX_CC +cmakeFlags='' +export cmakeFlags +PS4='+ ' +outputDev='out' +outputInclude='out' +pkg='/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' ) +buildPhase='{ echo "------------------------------------------------------------"; + echo " WARNING: the existence of this path is not guaranteed."; + echo " It is an internal implementation detail for pkgs.mkShell."; + echo "------------------------------------------------------------"; + echo; + # Record all build inputs as runtime dependencies + export; +} >> "$out" +' +export buildPhase +OLDPWD='' +export OLDPWD +AR='ar' +export AR +outputDoc='out' +declare -a envBuildTargetHooks=() +declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' ) +depsHostHost='' +export depsHostHost +declare -a pkgsBuildHost=('/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev' '/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9' '/nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3' '/nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0' '/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13' '/nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2' '/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2' '/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2' '/nix/store/xknj6c33cc197s60ry0i69vdkmaizrs1-update-autotools-gnu-config-scripts-hook' '/nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh' '/nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh' '/nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh' '/nix/store/p3l1a5y7nllfyrjn2krlwgcc3z0cd3fq-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh' '/nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh' '/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh' '/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' '/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46' ) +preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase' +outputDevdoc='REMOVE' +NIX_STORE='/nix/store' +export NIX_STORE +STRIP='strip' +export STRIP +preferLocalBuild='1' +export preferLocalBuild +DEVENV_STATE='/home/user01/Projects/score-system/.devenv/state' +export DEVENV_STATE +mesonFlags='' +export mesonFlags +NIX_NO_SELF_RPATH='1' +stdenv='/nix/store/jci7gw90lh2vdjaxkb6pzf9xp4v08wzs-stdenv-linux' +export stdenv +SIZE='size' +export SIZE +NIX_HARDENING_ENABLE='bindnow format fortify fortify3 libcxxhardeningfast pic relro stackclashprotection stackprotector strictflexarrays1 strictoverflow zerocallusedregs' +export NIX_HARDENING_ENABLE +declare -a envBuildBuildHooks=() +doCheck='' +export doCheck +_multioutDocs () +{ + + local REMOVE=REMOVE; + moveToOutput share/info "${!outputInfo}"; + moveToOutput share/doc "${!outputDoc}"; + moveToOutput share/gtk-doc "${!outputDevdoc}"; + moveToOutput share/devhelp/books "${!outputDevdoc}"; + moveToOutput share/man "${!outputMan}"; + moveToOutput share/man/man3 "${!outputDevman}" +} +_logHook () +{ + + if [[ -z ${NIX_LOG_FD-} ]]; then + return; + fi; + local hookKind="$1"; + local hookExpr="$2"; + shift 2; + if declare -F "$hookExpr" > /dev/null 2>&1; then + nixTalkativeLog "calling '$hookKind' function hook '$hookExpr'" "$@"; + else + if type -p "$hookExpr" > /dev/null; then + nixTalkativeLog "sourcing '$hookKind' script hook '$hookExpr'"; + else + if [[ "$hookExpr" != "_callImplicitHook"* ]]; then + local exprToOutput; + if [[ ${NIX_DEBUG:-0} -ge 5 ]]; then + exprToOutput="$hookExpr"; + else + local hookExprLine; + while IFS= read -r hookExprLine; do + hookExprLine="${hookExprLine#"${hookExprLine%%[![:space:]]*}"}"; + if [[ -n "$hookExprLine" ]]; then + exprToOutput+="$hookExprLine\\n "; + fi; + done <<< "$hookExpr"; + exprToOutput="${exprToOutput%%\\n }"; + fi; + nixTalkativeLog "evaling '$hookKind' string hook '$exprToOutput'"; + fi; + fi; + fi +} +isELF () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [ "$magic" = 'ELF' ]; then + return 0; + else + return 1; + fi +} +mapOffset () +{ + + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi +} +getHostRoleEnvHook () +{ + + getRole "$depHostOffset" +} +substitute () +{ + + local input="$1"; + local output="$2"; + shift 2; + if [ ! -f "$input" ]; then + echo "substitute(): ERROR: file '$input' does not exist" 1>&2; + return 1; + fi; + local content; + consumeEntire content < "$input"; + if [ -e "$output" ]; then + chmod +w "$output"; + fi; + substituteStream content "file '$input'" "$@" > "$output" +} +_assignFirst () +{ + + local varName="$1"; + local _var; + local REMOVE=REMOVE; + shift; + for _var in "$@"; + do + if [ -n "${!_var-}" ]; then + eval "${varName}"="${_var}"; + return; + fi; + done; + echo; + echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}."; + echo " The following variables were all unset or empty:"; + echo " $*"; + if [ -z "${out:-}" ]; then + echo ' If you do not want an "out" output in your derivation, make sure to define'; + echo ' the other specific required outputs. This can be achieved by picking one'; + echo " of the above as an output."; + echo ' You do not have to remove "out" if you want to have a different default'; + echo ' output, because the first output is taken as a default.'; + echo; + fi; + return 1 +} +_moveToShare () +{ + + if [ -n "$__structuredAttrs" ]; then + if [ -z "${forceShare-}" ]; then + forceShare=(man doc info); + fi; + else + forceShare=(${forceShare:-man doc info}); + fi; + if [[ -z "$out" ]]; then + return; + fi; + for d in "${forceShare[@]}"; + do + if [ -d "$out/$d" ]; then + if [ -d "$out/share/$d" ]; then + echo "both $d/ and share/$d/ exist!"; + else + echo "moving $out/$d to $out/share/$d"; + mkdir -p $out/share; + mv $out/$d $out/share/; + fi; + fi; + done +} +noBrokenSymlinks () +{ + + local -r output="${1:?}"; + local path; + local pathParent; + local symlinkTarget; + local -i numDanglingSymlinks=0; + local -i numReflexiveSymlinks=0; + local -i numUnreadableSymlinks=0; + if [[ ! -e $output ]]; then + nixWarnLog "skipping non-existent output $output"; + return 0; + fi; + nixInfoLog "running on $output"; + while IFS= read -r -d '' path; do + pathParent="$(dirname "$path")"; + if ! symlinkTarget="$(readlink "$path")"; then + nixErrorLog "the symlink $path is unreadable"; + numUnreadableSymlinks+=1; + continue; + fi; + if [[ $symlinkTarget == /* ]]; then + nixInfoLog "symlink $path points to absolute target $symlinkTarget"; + else + nixInfoLog "symlink $path points to relative target $symlinkTarget"; + symlinkTarget="$(realpath --no-symlinks --canonicalize-missing "$pathParent/$symlinkTarget")"; + fi; + if [[ $symlinkTarget = "$TMPDIR"/* ]]; then + nixErrorLog "the symlink $path points to $TMPDIR directory: $symlinkTarget"; + numDanglingSymlinks+=1; + continue; + fi; + if [[ $symlinkTarget != "$NIX_STORE"/* ]]; then + nixInfoLog "symlink $path points outside the Nix store; ignoring"; + continue; + fi; + if [[ $path == "$symlinkTarget" ]]; then + nixErrorLog "the symlink $path is reflexive"; + numReflexiveSymlinks+=1; + else + if [[ ! -e $symlinkTarget ]]; then + nixErrorLog "the symlink $path points to a missing target: $symlinkTarget"; + numDanglingSymlinks+=1; + else + nixDebugLog "the symlink $path is irreflexive and points to a target which exists"; + fi; + fi; + done < <(find "$output" -type l -print0); + if ((numDanglingSymlinks > 0 || numReflexiveSymlinks > 0 || numUnreadableSymlinks > 0)); then + nixErrorLog "found $numDanglingSymlinks dangling symlinks, $numReflexiveSymlinks reflexive symlinks and $numUnreadableSymlinks unreadable symlinks"; + exit 1; + fi; + return 0 +} +patchPhase () +{ + + runHook prePatch; + local -a patchesArray; + concatTo patchesArray patches; + local -a flagsArray; + concatTo flagsArray patchFlags=-p1; + for i in "${patchesArray[@]}"; + do + echo "applying patch $i"; + local uncompress=cat; + case "$i" in + *.gz) + uncompress="gzip -d" + ;; + *.bz2) + uncompress="bzip2 -d" + ;; + *.xz) + uncompress="xz -d" + ;; + *.lzma) + uncompress="lzma -d" + ;; + esac; + $uncompress < "$i" 2>&1 | patch "${flagsArray[@]}"; + done; + runHook postPatch +} +pkgConfigWrapper_addPkgConfigPath () +{ + + local role_post; + getHostRoleEnvHook; + addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/lib/pkgconfig"; + addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/share/pkgconfig" +} +stripHash () +{ + + local strippedName casematchOpt=0; + strippedName="$(basename -- "$1")"; + shopt -q nocasematch && casematchOpt=1; + shopt -u nocasematch; + if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then + echo "${strippedName:33}"; + else + echo "$strippedName"; + fi; + if (( casematchOpt )); then + shopt -s nocasematch; + fi +} +dumpVars () +{ + + if [[ "${noDumpEnvVars:-0}" != 1 && -d "$NIX_BUILD_TOP" ]]; then + local old_umask; + old_umask=$(umask); + umask 0077; + export 2> /dev/null > "$NIX_BUILD_TOP/env-vars"; + umask "$old_umask"; + fi +} +configurePhase () +{ + + runHook preConfigure; + : "${configureScript=}"; + if [[ -z "$configureScript" && -x ./configure ]]; then + configureScript=./configure; + fi; + if [ -z "${dontFixLibtool:-}" ]; then + export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}"; + local i; + find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do + echo "fixing libtool script $i"; + fixLibtool "$i"; + done; + CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX); + find . -executable -type f -name configure -exec grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;; + rm -f "$CONFIGURE_MTIME_REFERENCE"; + fi; + if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then + local -r prefixKeyOrDefault="${prefixKey:---prefix=}"; + if [ "${prefixKeyOrDefault: -1}" = " " ]; then + prependToVar configureFlags "$prefix"; + prependToVar configureFlags "${prefixKeyOrDefault::-1}"; + else + prependToVar configureFlags "$prefixKeyOrDefault$prefix"; + fi; + fi; + if [[ -f "$configureScript" ]]; then + if [ -z "${dontAddDisableDepTrack:-}" ]; then + if grep -q dependency-tracking "$configureScript"; then + prependToVar configureFlags --disable-dependency-tracking; + fi; + fi; + if [ -z "${dontDisableStatic:-}" ]; then + if grep -q enable-static "$configureScript"; then + prependToVar configureFlags --disable-static; + fi; + fi; + if [ -z "${dontPatchShebangsInConfigure:-}" ]; then + patchShebangs --build "$configureScript"; + fi; + fi; + if [ -n "$configureScript" ]; then + local -a flagsArray; + concatTo flagsArray configureFlags configureFlagsArray; + echoCmd 'configure flags' "${flagsArray[@]}"; + $configureScript "${flagsArray[@]}"; + unset flagsArray; + else + echo "no configure script, doing nothing"; + fi; + runHook postConfigure +} +_updateSourceDateEpochFromSourceRoot () +{ + + if [ -n "$sourceRoot" ]; then + updateSourceDateEpoch "$sourceRoot"; + fi +} +installCheckPhase () +{ + + runHook preInstallCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom installCheckPhase, doing nothing"; + else + if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then + echo "no installcheck target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray installCheckTarget=installcheck; + echoCmd 'installcheck flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + fi; + runHook postInstallCheck +} +showPhaseFooter () +{ + + local phase="$1"; + local startTime="$2"; + local endTime="$3"; + local delta=$(( endTime - startTime )); + (( delta < 30 )) && return; + local H=$((delta/3600)); + local M=$((delta%3600/60)); + local S=$((delta%60)); + echo -n "$phase completed in "; + (( H > 0 )) && echo -n "$H hours "; + (( M > 0 )) && echo -n "$M minutes "; + echo "$S seconds" +} +distPhase () +{ + + runHook preDist; + local flagsArray=(); + concatTo flagsArray distFlags distFlagsArray distTarget=dist; + echo 'dist flags: %q' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + if [ "${dontCopyDist:-0}" != 1 ]; then + mkdir -p "$out/tarballs"; + cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs"; + fi; + runHook postDist +} +getTargetRoleWrapper () +{ + + case $targetOffset in + -1) + export NIX_BINTOOLS_WRAPPER_TARGET_BUILD_x86_64_unknown_linux_gnu=1 + ;; + 0) + export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 + ;; + 1) + export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu=1 + ;; + *) + echo "binutils-wrapper-2.46: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +ccWrapper_addCVars () +{ + + local role_post; + getHostRoleEnvHook; + local found=; + if [ -d "$1/include" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include"; + found=1; + fi; + if [ -d "$1/Library/Frameworks" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks"; + found=1; + fi; + if [[ -n "" && -n ${NIX_STORE:-} && -n $found ]]; then + local scrubbed="$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${1#"$NIX_STORE"/*-}"; + export NIX_CFLAGS_COMPILE${role_post}+=" -fmacro-prefix-map=$1=$scrubbed"; + fi +} +nixNoticeLog () +{ + + _nixLogWithLevel 2 "$*" +} +nixTalkativeLog () +{ + + _nixLogWithLevel 4 "$*" +} +substituteStream () +{ + + local var=$1; + local description=$2; + shift 2; + while (( "$#" )); do + local replace_mode="$1"; + case "$1" in + --replace) + if ! "$_substituteStream_has_warned_replace_deprecation"; then + echo "substituteStream() in derivation $name: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. ($description)" 1>&2; + _substituteStream_has_warned_replace_deprecation=true; + fi; + replace_mode='--replace-warn' + ;& + --replace-quiet | --replace-warn | --replace-fail) + pattern="$2"; + replacement="$3"; + shift 3; + if ! [[ "${!var}" == *"$pattern"* ]]; then + if [ "$replace_mode" == --replace-warn ]; then + printf "substituteStream() in derivation $name: WARNING: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2; + else + if [ "$replace_mode" == --replace-fail ]; then + printf "substituteStream() in derivation $name: ERROR: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2; + return 1; + fi; + fi; + fi; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var) + local varName="$2"; + shift 2; + if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then + echo "substituteStream() in derivation $name: ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2; + return 1; + fi; + if [ -z ${!varName+x} ]; then + echo "substituteStream() in derivation $name: ERROR: variable \$$varName is unset" 1>&2; + return 1; + fi; + pattern="@$varName@"; + replacement="${!varName}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var-by) + pattern="@$2@"; + replacement="$3"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + shift 3 + ;; + *) + echo "substituteStream() in derivation $name: ERROR: Invalid command line argument: $1" 1>&2; + return 1 + ;; + esac; + done; + printf "%s" "${!var}" +} +echoCmd () +{ + + printf "%s:" "$1"; + shift; + printf ' %q' "$@"; + echo +} +genericBuild () +{ + + export GZIP_NO_TIMESTAMPS=1; + if [ -f "${buildCommandPath:-}" ]; then + source "$buildCommandPath"; + return; + fi; + if [ -n "${buildCommand:-}" ]; then + eval "$buildCommand"; + return; + fi; + definePhases; + for curPhase in ${phases[*]}; + do + runPhase "$curPhase"; + done +} +checkPhase () +{ + + runHook preCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom checkPhase, doing nothing"; + runHook postCheck; + return; + fi; + if [[ -z "${checkTarget:-}" ]]; then + if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then + checkTarget="check"; + else + if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then + checkTarget="test"; + fi; + fi; + fi; + if [[ -z "${checkTarget:-}" ]]; then + echo "no check/test target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray checkFlags=VERBOSE=y checkFlagsArray checkTarget; + echoCmd 'check flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postCheck +} +addEnvHooks () +{ + + local depHostOffset="$1"; + shift; + local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]"; + local pkgHookVar; + for pkgHookVar in "${!pkgHookVarsSlice}"; + do + eval "${pkgHookVar}s"'+=("$@")'; + done +} +isScript () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 2 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" =~ \#! ]]; then + return 0; + else + return 1; + fi +} +unpackFile () +{ + + curSrc="$1"; + echo "unpacking source archive $curSrc"; + if ! runOneHook unpackCmd "$curSrc"; then + echo "do not know how to unpack source archive $curSrc"; + exit 1; + fi +} +_moveLib64 () +{ + + if [ "${dontMoveLib64-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then + return; + fi; + echo "moving $prefix/lib64/* to $prefix/lib"; + mkdir -p $prefix/lib; + shopt -s dotglob; + for i in $prefix/lib64/*; + do + mv --no-clobber "$i" $prefix/lib; + done; + shopt -u dotglob; + rmdir $prefix/lib64; + ln -s lib $prefix/lib64 +} +substituteInPlace () +{ + + local -a fileNames=(); + for arg in "$@"; + do + if [[ "$arg" = "--"* ]]; then + break; + fi; + fileNames+=("$arg"); + shift; + done; + if ! [[ "${#fileNames[@]}" -gt 0 ]]; then + echo "substituteInPlace called without any files to operate on (files must come before options!)" 1>&2; + return 1; + fi; + for file in "${fileNames[@]}"; + do + substitute "$file" "$file" "$@"; + done +} +activatePackage () +{ + + local pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + if [ -f "$pkg" ]; then + nixTalkativeLog "sourcing setup hook '$pkg'"; + source "$pkg"; + fi; + if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then + addToSearchPath _PATH "$pkg/bin"; + fi; + if (( hostOffset <= -1 )); then + addToSearchPath _XDG_DATA_DIRS "$pkg/share"; + fi; + if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then + addToSearchPath _HOST_PATH "$pkg/bin"; + fi; + if [[ -f "$pkg/nix-support/setup-hook" ]]; then + nixTalkativeLog "sourcing setup hook '$pkg/nix-support/setup-hook'"; + source "$pkg/nix-support/setup-hook"; + fi +} +substituteAll () +{ + + local input="$1"; + local output="$2"; + local -a args=(); + _allFlags; + substitute "$input" "$output" "${args[@]}" +} +getAllOutputNames () +{ + + if [ -n "$__structuredAttrs" ]; then + echo "${!outputs[*]}"; + else + echo "$outputs"; + fi +} +substituteAllInPlace () +{ + + local fileName="$1"; + shift; + substituteAll "$fileName" "$fileName" "$@" +} +auditTmpdir () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "checking for references to $TMPDIR/ in $dir..."; + local tmpdir elf_fifo script_fifo; + tmpdir="$(mktemp -d)"; + elf_fifo="$tmpdir/elf"; + script_fifo="$tmpdir/script"; + mkfifo "$elf_fifo" "$script_fifo"; + ( find "$dir" -type f -not -path '*/.build-id/*' -print0 | while IFS= read -r -d '' file; do + if isELF "$file"; then + printf '%s\0' "$file" 1>&3; + else + if isScript "$file"; then + filename=${file##*/}; + dir=${file%/*}; + if [ -e "$dir/.$filename-wrapped" ]; then + printf '%s\0' "$file" 1>&4; + fi; + fi; + fi; + done; + exec 3>&- 4>&- ) 3> "$elf_fifo" 4> "$script_fifo" & ( xargs -0 -r -P "$NIX_BUILD_CORES" -n 1 sh -c ' + if { printf :; patchelf --print-rpath "$1"; } | grep -q -F ":$TMPDIR/"; then + echo "RPATH of binary $1 contains a forbidden reference to $TMPDIR/" + exit 1 + fi + ' _ < "$elf_fifo" ) & local pid_elf=$!; + local pid_script; + ( xargs -0 -r -P "$NIX_BUILD_CORES" -n 1 sh -c ' + if grep -q -F "$TMPDIR/" "$1"; then + echo "wrapper script $1 contains a forbidden reference to $TMPDIR/" + exit 1 + fi + ' _ < "$script_fifo" ) & local pid_script=$!; + wait "$pid_elf" || { + echo "Some binaries contain forbidden references to $TMPDIR/. Check the error above!"; + exit 1 + }; + wait "$pid_script" || { + echo "Some scripts contain forbidden references to $TMPDIR/. Check the error above!"; + exit 1 + }; + rm -r "$tmpdir" +} +getTargetRole () +{ + + getRole "$targetOffset" +} +_moveSystemdUserUnits () +{ + + if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then + return; + fi; + if [ ! -e "${prefix:?}/lib/systemd/user" ]; then + return; + fi; + local source="$prefix/lib/systemd/user"; + local target="$prefix/share/systemd/user"; + echo "moving $source/* to $target"; + mkdir -p "$target"; + ( shopt -s dotglob; + for i in "$source"/*; + do + mv "$i" "$target"; + done ); + rmdir "$source"; + ln -s "$target" "$source" +} +exitHandler () +{ + + exitCode="$?"; + set +e; + if [ -n "${showBuildStats:-}" ]; then + read -r -d '' -a buildTimes < <(times); + echo "build times:"; + echo "user time for the shell ${buildTimes[0]}"; + echo "system time for the shell ${buildTimes[1]}"; + echo "user time for all child processes ${buildTimes[2]}"; + echo "system time for all child processes ${buildTimes[3]}"; + fi; + if (( "$exitCode" != 0 )); then + runHook failureHook; + if [ -n "${succeedOnFailure:-}" ]; then + echo "build failed with exit code $exitCode (ignored)"; + mkdir -p "$out/nix-support"; + printf "%s" "$exitCode" > "$out/nix-support/failed"; + exit 0; + fi; + else + runHook exitHook; + fi; + return "$exitCode" +} +installPhase () +{ + + runHook preInstall; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom installPhase, doing nothing"; + runHook postInstall; + return; + else + foundMakefile=1; + fi; + if [ -n "$prefix" ]; then + mkdir -p "$prefix"; + fi; + local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray installFlags installFlagsArray installTargets=install; + echoCmd 'install flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + runHook postInstall +} +nixVomitLog () +{ + + _nixLogWithLevel 7 "$*" +} +nixDebugLog () +{ + + _nixLogWithLevel 6 "$*" +} +noBrokenSymlinksInAllOutputs () +{ + + if [[ -z ${dontCheckForBrokenSymlinks-} ]]; then + for output in $(getAllOutputNames); + do + noBrokenSymlinks "${!output}"; + done; + fi +} +addToSearchPath () +{ + + addToSearchPathWithCustomDelimiter ":" "$@" +} +_addRpathPrefix () +{ + + if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then + export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}"; + fi +} +getTargetRoleEnvHook () +{ + + getRole "$depTargetOffset" +} +printWords () +{ + + (( "$#" > 0 )) || return 0; + printf '%s ' "$@" +} +concatStringsSep () +{ + + local sep="$1"; + local name="$2"; + local type oldifs; + if type=$(declare -p "$name" 2> /dev/null); then + local -n nameref="$name"; + case "${type#* }" in + -A*) + echo "concatStringsSep(): ERROR: trying to use concatStringsSep on an associative array." 1>&2; + return 1 + ;; + -a*) + local IFS="$(printf '\036')" + ;; + *) + local IFS=" " + ;; + esac; + local ifs_separated="${nameref[*]}"; + echo -n "${ifs_separated//"$IFS"/"$sep"}"; + fi +} +_callImplicitHook () +{ + + local def="$1"; + local hookName="$2"; + if declare -F "$hookName" > /dev/null; then + nixTalkativeLog "calling implicit '$hookName' function hook"; + "$hookName"; + else + if type -p "$hookName" > /dev/null; then + nixTalkativeLog "sourcing implicit '$hookName' script hook"; + source "$hookName"; + else + if [ -n "${!hookName:-}" ]; then + nixTalkativeLog "evaling implicit '$hookName' string hook"; + eval "${!hookName}"; + else + return "$def"; + fi; + fi; + fi +} +recordPropagatedDependencies () +{ + + declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated); + declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}"); + local propagatedInputsIndex; + for propagatedInputsIndex in "${!flatVars[@]}"; + do + local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]"; + local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}"; + [[ -n "${!propagatedInputsSlice}" ]] || continue; + mkdir -p "${!outputDev}/nix-support"; + printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile"; + done +} +getHostRole () +{ + + getRole "$hostOffset" +} +nixLog () +{ + + [[ -z ${NIX_LOG_FD-} ]] && return 0; + local callerName="${FUNCNAME[1]}"; + if [[ $callerName == "_callImplicitHook" ]]; then + callerName="${hookName:?}"; + fi; + printf "%s: %s\n" "$callerName" "$*" >&"$NIX_LOG_FD" +} +runOneHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook ret=1; + for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _logHook "$hookName" "$hook" "$@"; + if _eval "$hook" "$@"; then + ret=0; + break; + fi; + done; + return "$ret" +} +unpackPhase () +{ + + runHook preUnpack; + if [ -z "${srcs:-}" ]; then + if [ -z "${src:-}" ]; then + echo 'variable $src or $srcs should point to the source'; + exit 1; + fi; + srcs="$src"; + fi; + local -a srcsArray; + concatTo srcsArray srcs; + local dirsBefore=""; + for i in *; + do + if [ -d "$i" ]; then + dirsBefore="$dirsBefore $i "; + fi; + done; + for i in "${srcsArray[@]}"; + do + unpackFile "$i"; + done; + : "${sourceRoot=}"; + if [ -n "${setSourceRoot:-}" ]; then + runOneHook setSourceRoot; + else + if [ -z "$sourceRoot" ]; then + for i in *; + do + if [ -d "$i" ]; then + case $dirsBefore in + *\ $i\ *) + + ;; + *) + if [ -n "$sourceRoot" ]; then + echo "unpacker produced multiple directories"; + exit 1; + fi; + sourceRoot="$i" + ;; + esac; + fi; + done; + fi; + fi; + if [ -z "$sourceRoot" ]; then + echo "unpacker appears to have produced no directories"; + exit 1; + fi; + echo "source root is $sourceRoot"; + if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then + chmod -R u+w -- "$sourceRoot"; + fi; + runHook postUnpack +} +_nixLogWithLevel () +{ + + [[ -z ${NIX_LOG_FD-} || ${NIX_DEBUG:-0} -lt ${1:?} ]] && return 0; + local logLevel; + case "${1:?}" in + 0) + logLevel=ERROR + ;; + 1) + logLevel=WARN + ;; + 2) + logLevel=NOTICE + ;; + 3) + logLevel=INFO + ;; + 4) + logLevel=TALKATIVE + ;; + 5) + logLevel=CHATTY + ;; + 6) + logLevel=DEBUG + ;; + 7) + logLevel=VOMIT + ;; + *) + echo "_nixLogWithLevel: called with invalid log level: ${1:?}" >&"$NIX_LOG_FD"; + return 1 + ;; + esac; + local callerName="${FUNCNAME[2]}"; + if [[ $callerName == "_callImplicitHook" ]]; then + callerName="${hookName:?}"; + fi; + printf "%s: %s: %s\n" "$logLevel" "$callerName" "${2:?}" >&"$NIX_LOG_FD" +} +fixupPhase () +{ + + local output; + for output in $(getAllOutputNames); + do + if [ -e "${!output}" ]; then + chmod -R u+w,u-s,g-s "${!output}"; + fi; + done; + runHook preFixup; + local output; + for output in $(getAllOutputNames); + do + prefix="${!output}" runHook fixupOutput; + done; + recordPropagatedDependencies; + if [ -n "${setupHook:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook"; + fi; + if [ -n "${setupHooks:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + local hook; + for hook in ${setupHooks[@]}; + do + local content; + consumeEntire content < "$hook"; + substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook"; + unset -v content; + done; + unset -v hook; + fi; + if [ -n "${propagatedUserEnvPkgs[*]:-}" ]; then + mkdir -p "${!outputBin}/nix-support"; + printWords "${propagatedUserEnvPkgs[@]}" > "${!outputBin}/nix-support/propagated-user-env-packages"; + fi; + runHook postFixup +} +prependToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if type=$(declare -p "$1" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2; + return 1 + ;; + -a*) + useArray=true + ;; + *) + useArray=false + ;; + esac; + fi; + shift; + if $useArray; then + nameref=("$@" ${nameref+"${nameref[@]}"}); + else + nameref="$* ${nameref-}"; + fi +} +runHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook; + for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _logHook "$hookName" "$hook" "$@"; + _eval "$hook" "$@"; + done; + return 0 +} +_overrideFirst () +{ + + if [ -z "${!1-}" ]; then + _assignFirst "$@"; + fi +} +printLines () +{ + + (( "$#" > 0 )) || return 0; + printf '%s\n' "$@" +} +substituteAllStream () +{ + + local -a args=(); + _allFlags; + substituteStream "$1" "$2" "${args[@]}" +} +moveToOutput () +{ + + local patt="$1"; + local dstOut="$2"; + local output; + for output in $(getAllOutputNames); + do + if [ "${!output}" = "$dstOut" ]; then + continue; + fi; + local srcPath; + for srcPath in "${!output}"/$patt; + do + if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then + continue; + fi; + if [ "$dstOut" = REMOVE ]; then + echo "Removing $srcPath"; + rm -r "$srcPath"; + else + local dstPath="$dstOut${srcPath#${!output}}"; + echo "Moving $srcPath to $dstPath"; + if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then + rmdir "$srcPath" --ignore-fail-on-non-empty; + if [ -d "$srcPath" ]; then + mv -t "$dstPath" "$srcPath"/*; + rmdir "$srcPath"; + fi; + else + mkdir -p "$(readlink -m "$dstPath/..")"; + mv "$srcPath" "$dstPath"; + fi; + fi; + local srcParent="$(readlink -m "$srcPath/..")"; + if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then + echo "Removing empty $srcParent/ and (possibly) its parents"; + rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true; + fi; + done; + done +} +showPhaseHeader () +{ + + local phase="$1"; + echo "Running phase: $phase"; + if [[ -z ${NIX_LOG_FD-} ]]; then + return; + fi; + printf "@nix { \"action\": \"setPhase\", \"phase\": \"%s\" }\n" "$phase" >&"$NIX_LOG_FD" +} +_activatePkgs () +{ + + local hostOffset targetOffset; + local pkg; + for hostOffset in "${allPlatOffsets[@]}"; + do + local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}"; + for targetOffset in "${allPlatOffsets[@]}"; + do + (( hostOffset <= targetOffset )) || continue; + local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + activatePackage "$pkg" "$hostOffset" "$targetOffset"; + done; + done; + done +} +_allFlags () +{ + + export system pname name version; + while IFS='' read -r varName; do + nixTalkativeLog "@${varName}@ -> ${!varName}"; + args+=("--subst-var" "$varName"); + done < <(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }') +} +patchELF () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "shrinking RPATHs of ELF executables and libraries in $dir"; + local i; + while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if ! isELF "$i"; then + continue; + fi; + echo "shrinking $i"; + patchelf --shrink-rpath "$i" || true; + done < <(find "$dir" -type f -print0) +} +getRole () +{ + + case $1 in + -1) + role_post='_FOR_BUILD' + ;; + 0) + role_post='' + ;; + 1) + role_post='_FOR_TARGET' + ;; + *) + echo "binutils-wrapper-2.46: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +appendToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if type=$(declare -p "$1" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2; + return 1 + ;; + -a*) + useArray=true + ;; + *) + useArray=false + ;; + esac; + fi; + shift; + if $useArray; then + nameref=(${nameref+"${nameref[@]}"} "$@"); + else + nameref="${nameref-} $*"; + fi +} +nixErrorLog () +{ + + _nixLogWithLevel 0 "$*" +} +nixInfoLog () +{ + + _nixLogWithLevel 3 "$*" +} +_multioutDevs () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then + return; + fi; + moveToOutput include "${!outputInclude}"; + moveToOutput lib/pkgconfig "${!outputDev}"; + moveToOutput share/pkgconfig "${!outputDev}"; + moveToOutput lib/cmake "${!outputDev}"; + moveToOutput share/aclocal "${!outputDev}"; + for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; + do + echo "Patching '$f' includedir to output ${!outputInclude}"; + sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f"; + done +} +updateAutotoolsGnuConfigScriptsPhase () +{ + + if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then + return; + fi; + for script in config.sub config.guess; + do + for f in $(find . -type f -name "$script"); + do + echo "Updating Autotools / GNU config script to a newer upstream version: $f"; + cp -f "/nix/store/zmvllxxx62iys7vpyg020rni3v29bcxi-gnu-config-2024-01-01/$script" "$f"; + done; + done +} +_addToEnv () +{ + + local depHostOffset depTargetOffset; + local pkg; + for depHostOffset in "${allPlatOffsets[@]}"; + do + local hookVar="${pkgHookVarVars[depHostOffset + 1]}"; + local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}"; + for depTargetOffset in "${allPlatOffsets[@]}"; + do + (( depHostOffset <= depTargetOffset )) || continue; + local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"; + if [[ -z "${strictDeps-}" ]]; then + local visitedPkgs=""; + for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}"; + do + if [[ "$visitedPkgs" = *"$pkg"* ]]; then + continue; + fi; + runHook "${!hookRef}" "$pkg"; + visitedPkgs+=" $pkg"; + done; + else + local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + runHook "${!hookRef}" "$pkg"; + done; + fi; + done; + done +} +consumeEntire () +{ + + if IFS='' read -r -d '' "$1"; then + echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2; + return 1; + fi +} +_defaultUnpack () +{ + + local fn="$1"; + local destination; + if [ -d "$fn" ]; then + destination="$(stripHash "$fn")"; + if [ -e "$destination" ]; then + echo "Cannot copy $fn to $destination: destination already exists!"; + echo "Did you specify two \"srcs\" with the same \"name\"?"; + return 1; + fi; + cp -r --preserve=timestamps --reflink=auto -- "$fn" "$destination"; + else + case "$fn" in + *.tar.xz | *.tar.lzma | *.txz) + ( XZ_OPT="--threads=$NIX_BUILD_CORES" xz -d < "$fn"; + true ) | tar xf - --mode=+w --warning=no-timestamp + ;; + *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz) + tar xf "$fn" --mode=+w --warning=no-timestamp + ;; + *) + return 1 + ;; + esac; + fi +} +addToSearchPathWithCustomDelimiter () +{ + + local delimiter="$1"; + local varName="$2"; + local dir="$3"; + if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then + export "${varName}=${!varName:+${!varName}${delimiter}}${dir}"; + fi +} +isMachO () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then + return 0; + else + return 1; + fi; + fi; + fi +} +fixLibtool () +{ + + local search_path; + for flag in $NIX_LDFLAGS; + do + case $flag in + -L*) + search_path+=" ${flag#-L}" + ;; + esac; + done; + sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'${search_path:-}'^" -e 's^eval sys_lib_.+search_path=.*^^' +} +_multioutPropagateDev () +{ + + if [ "$(getAllOutputNames)" = "out" ]; then + return; + fi; + local outputFirst; + for outputFirst in $(getAllOutputNames); + do + break; + done; + local propagaterOutput="$outputDev"; + if [ -z "$propagaterOutput" ]; then + propagaterOutput="$outputFirst"; + fi; + if [ -z "${propagatedBuildOutputs+1}" ]; then + local po_dirty="$outputBin $outputInclude $outputLib"; + set +o pipefail; + propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `; + set -o pipefail; + fi; + if [ -z "$propagatedBuildOutputs" ]; then + return; + fi; + mkdir -p "${!propagaterOutput}"/nix-support; + for output in $propagatedBuildOutputs; + do + echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs; + done +} +buildPhase () +{ + + runHook preBuild; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom buildPhase, doing nothing"; + else + foundMakefile=1; + local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray; + echoCmd 'build flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postBuild +} +nixWarnLog () +{ + + _nixLogWithLevel 1 "$*" +} +patchShebangsAuto () +{ + + if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then + if [[ "$output" != out && "$output" = "$outputDev" ]]; then + patchShebangs --build "$prefix"; + else + patchShebangs --host "$prefix"; + fi; + fi +} +updateSourceDateEpoch () +{ + + local path="$1"; + [[ $path == -* ]] && path="./$path"; + local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ "%p"\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)); + local time="${res[0]//\.[0-9]*/}"; + local newestFile="${res[1]}"; + if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then + echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile"; + export SOURCE_DATE_EPOCH="$time"; + local now="$(date +%s)"; + if [ "$time" -gt $((now - 60)) ]; then + echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic"; + fi; + fi +} +_eval () +{ + + if declare -F "$1" > /dev/null 2>&1; then + "$@"; + else + eval "$1"; + fi +} +_moveSbin () +{ + + if [ "${dontMoveSbin-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then + return; + fi; + echo "moving $prefix/sbin/* to $prefix/bin"; + mkdir -p $prefix/bin; + shopt -s dotglob; + for i in $prefix/sbin/*; + do + mv "$i" $prefix/bin; + done; + shopt -u dotglob; + rmdir $prefix/sbin; + ln -s bin $prefix/sbin +} +findInputs () +{ + + local -r pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + local varVar="${pkgAccumVarVars[hostOffset + 1]}"; + local varRef="$varVar[$((targetOffset - hostOffset))]"; + local var="${!varRef}"; + unset -v varVar varRef; + local varSlice="$var[*]"; + case " ${!varSlice-} " in + *" $pkg "*) + return 0 + ;; + esac; + unset -v varSlice; + eval "$var"'+=("$pkg")'; + if ! [ -e "$pkg" ]; then + echo "build input $pkg does not exist" 1>&2; + exit 1; + fi; + function mapOffset () + { + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi + }; + local relHostOffset; + for relHostOffset in "${allPlatOffsets[@]}"; + do + local files="${propagatedDepFilesVars[relHostOffset + 1]}"; + local hostOffsetNext; + mapOffset "$relHostOffset" hostOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + local relTargetOffset; + for relTargetOffset in "${allPlatOffsets[@]}"; + do + (( "$relHostOffset" <= "$relTargetOffset" )) || continue; + local fileRef="${files}[$relTargetOffset - $relHostOffset]"; + local file="${!fileRef}"; + unset -v fileRef; + local targetOffsetNext; + mapOffset "$relTargetOffset" targetOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + [[ -f "$pkg/nix-support/$file" ]] || continue; + local pkgNext; + read -r -d '' pkgNext < "$pkg/nix-support/$file" || true; + for pkgNext in $pkgNext; + do + findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext"; + done; + done; + done +} +nixChattyLog () +{ + + _nixLogWithLevel 5 "$*" +} +definePhases () +{ + + if [ -z "${phases[*]:-}" ]; then + phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}"; + fi +} +patchShebangs () +{ + + local pathName; + local update=false; + while [[ $# -gt 0 ]]; do + case "$1" in + --host) + pathName=HOST_PATH; + shift + ;; + --build) + pathName=PATH; + shift + ;; + --update) + update=true; + shift + ;; + --) + shift; + break + ;; + -* | --*) + echo "Unknown option $1 supplied to patchShebangs" 1>&2; + return 1 + ;; + *) + break + ;; + esac; + done; + echo "patching script interpreter paths in $@"; + local f; + local oldPath; + local newPath; + local arg0; + local args; + local oldInterpreterLine; + local newInterpreterLine; + if [[ $# -eq 0 ]]; then + echo "No arguments supplied to patchShebangs" 1>&2; + return 0; + fi; + local f; + while IFS= read -r -d '' f; do + isScript "$f" || continue; + read -r oldInterpreterLine < "$f" || [ "$oldInterpreterLine" ]; + read -r oldPath arg0 args <<< "${oldInterpreterLine:2}"; + if [[ -z "${pathName:-}" ]]; then + if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then + pathName=HOST_PATH; + else + pathName=PATH; + fi; + fi; + if [[ "$oldPath" == *"/bin/env" ]]; then + if [[ $arg0 == "-S" ]]; then + arg0=${args%% *}; + [[ "$args" == *" "* ]] && args=${args#* } || args=; + newPath="$(PATH="${!pathName}" type -P "env" || true)"; + args="-S $(PATH="${!pathName}" type -P "$arg0" || true) $args"; + else + if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then + echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2; + exit 1; + else + newPath="$(PATH="${!pathName}" type -P "$arg0" || true)"; + fi; + fi; + else + if [[ -z $oldPath ]]; then + oldPath="/bin/sh"; + fi; + newPath="$(PATH="${!pathName}" type -P "$(basename "$oldPath")" || true)"; + args="$arg0 $args"; + fi; + newInterpreterLine="$newPath $args"; + newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}}; + if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then + if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then + echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\""; + escapedInterpreterLine=${newInterpreterLine//\\/\\\\}; + timestamp=$(stat --printf "%y" "$f"); + tmpFile=$(mktemp -t patchShebangs.XXXXXXXXXX); + sed -e "1 s|.*|#\!$escapedInterpreterLine|" "$f" > "$tmpFile"; + local restoreReadOnly; + if [[ ! -w "$f" ]]; then + chmod +w "$f"; + restoreReadOnly=true; + fi; + cat "$tmpFile" > "$f"; + rm "$tmpFile"; + if [[ -n "${restoreReadOnly:-}" ]]; then + chmod -w "$f"; + fi; + touch --date "$timestamp" "$f"; + fi; + fi; + done < <(find "$@" -type f -perm -0100 -print0) +} +_makeSymlinksRelative () +{ + + local prefixes; + prefixes=(); + for output in $(getAllOutputNames); + do + [ ! -e "${!output}" ] && continue; + prefixes+=("${!output}"); + done; + find "${prefixes[@]}" -type l -printf '%H\0%p\0' | xargs -0 -n2 -r -P "$NIX_BUILD_CORES" sh -c ' + output="$1" + link="$2" + + linkTarget=$(readlink "$link") + + # only touch links that point inside the same output tree + [[ $linkTarget == "$output"/* ]] || exit 0 + + if [ ! -e "$linkTarget" ]; then + echo "the symlink $link is broken, it points to $linkTarget (which is missing)" + fi + + echo "making symlink relative: $link" + ln -snrf "$linkTarget" "$link" + ' _ +} +compressManPages () +{ + + local dir="$1"; + if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then + return; + fi; + echo "gzipping man pages under $dir/share/man/"; + find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | xargs -0 -n1 -P "$NIX_BUILD_CORES" gzip -n -f; + find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do + local target; + target="$(readlink -f "$f")"; + if [ -f "$target".gz ]; then + ln -sf "$target".gz "$f".gz && rm "$f"; + fi; + done +} +printPhases () +{ + + definePhases; + local phase; + for phase in ${phases[*]}; + do + printf '%s\n' "$phase"; + done +} +stripDirs () +{ + + local cmd="$1"; + local ranlibCmd="$2"; + local paths="$3"; + local stripFlags="$4"; + local excludeFlags=(); + local pathsNew=; + [ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1; + [ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1; + local pattern; + if [ -n "${stripExclude:-}" ]; then + for pattern in "${stripExclude[@]}"; + do + excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')'); + done; + fi; + local p; + for p in ${paths}; + do + if [ -e "$prefix/$p" ]; then + pathsNew="${pathsNew} $prefix/$p"; + fi; + done; + paths=${pathsNew}; + if [ -n "${paths}" ]; then + echo "stripping (with command $cmd and flags $stripFlags) in $paths"; + local striperr; + striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')"; + find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -printf '%D-%i,%p\0' | sort -t, -k1,1 -u -z | cut -d, -f2- -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?; + [[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 ); + rm "$striperr"; + find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2> /dev/null; + fi +} +bintoolsWrapper_addLDVars () +{ + + local role_post; + getHostRoleEnvHook; + if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib64"; + fi; + if [[ -d "$1/lib" ]]; then + local -a glob=($1/lib/lib*); + if [ "${#glob[*]}" -gt 0 ]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib"; + fi; + fi +} +runPhase () +{ + + local curPhase="$*"; + if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then + return; + fi; + if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then + return; + fi; + if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then + return; + fi; + if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then + return; + fi; + if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then + return; + fi; + if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then + return; + fi; + showPhaseHeader "$curPhase"; + dumpVars; + local startTime endTime; + startTime=$(date +"%s"); + eval "${!curPhase:-$curPhase}"; + endTime=$(date +"%s"); + showPhaseFooter "$curPhase" "$startTime" "$endTime"; + if [ "$curPhase" = unpackPhase ]; then + [ -n "${sourceRoot:-}" ] && chmod +x -- "${sourceRoot}"; + cd -- "${sourceRoot:-.}"; + fi +} +concatTo () +{ + + local -; + set -o noglob; + local -n targetref="$1"; + shift; + local arg default name type; + for arg in "$@"; + do + IFS="=" read -r name default <<< "$arg"; + local -n nameref="$name"; + if [[ -z "${nameref[*]}" && -n "$default" ]]; then + targetref+=("$default"); + else + if type=$(declare -p "$name" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "concatTo(): ERROR: trying to use concatTo on an associative array." 1>&2; + return 1 + ;; + -a*) + targetref+=("${nameref[@]}") + ;; + *) + if [[ "$name" = *"Array" ]]; then + nixErrorLog "concatTo(): $name is not declared as array, treating as a singleton. This will become an error in future"; + targetref+=(${nameref+"${nameref[@]}"}); + else + targetref+=(${nameref-}); + fi + ;; + esac; + fi; + fi; + done +} +_doStrip () +{ + + local -ra flags=(dontStripHost dontStripTarget); + local -ra debugDirs=(stripDebugList stripDebugListTarget); + local -ra allDirs=(stripAllList stripAllListTarget); + local -ra stripCmds=(STRIP STRIP_FOR_TARGET); + local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET); + stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin Applications Library/Frameworks}; + stripDebugListTarget=${stripDebugListTarget[*]:-}; + stripAllList=${stripAllList[*]:-}; + stripAllListTarget=${stripAllListTarget[*]:-}; + local i; + for i in ${!stripCmds[@]}; + do + local -n flag="${flags[$i]}"; + local -n debugDirList="${debugDirs[$i]}"; + local -n allDirList="${allDirs[$i]}"; + local -n stripCmd="${stripCmds[$i]}"; + local -n ranlibCmd="${ranlibCmds[$i]}"; + if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then + continue; + fi; + stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}"; + stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}"; + done +} +_multioutConfig () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then + return; + fi; + if [ -z "${shareDocName:-}" ]; then + local confScript="${configureScript:-}"; + if [ -z "$confScript" ] && [ -x ./configure ]; then + confScript=./configure; + fi; + if [ -f "$confScript" ]; then + local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")"; + fi; + if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then + shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"; + fi; + fi; + prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale; + prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal +} +_pruneLibtoolFiles () +{ + + if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; +} +PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}" +XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}" + +eval "${shellHook:-}" +shopt -s expand_aliases + +exec /tmp/devenv-envPiF66L/script \ No newline at end of file diff --git a/.devenv/shell-7f08e6d76227994d.sh b/.devenv/shell-7f08e6d76227994d.sh new file mode 100755 index 0000000..7ba71ca --- /dev/null +++ b/.devenv/shell-7f08e6d76227994d.sh @@ -0,0 +1,2265 @@ +if [ -n "$PS1" ] && [ -e $HOME/.bashrc ]; then + source $HOME/.bashrc; +fi + +shopt -u expand_aliases +PATH=${PATH:-} +nix_saved_PATH="$PATH" +XDG_DATA_DIRS=${XDG_DATA_DIRS:-} +nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS" +depsTargetTarget='' +export depsTargetTarget +declare -a preConfigureHooks=('_multioutConfig' ) +NIX_CC='/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +export NIX_CC +cmakeFlags='' +export cmakeFlags +outputInclude='out' +outputDoc='out' +stdenv='/nix/store/jci7gw90lh2vdjaxkb6pzf9xp4v08wzs-stdenv-linux' +export stdenv +RANLIB='ranlib' +export RANLIB +_substituteStream_has_warned_replace_deprecation='false' +XDG_DATA_DIRS='/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9/share:/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13/share:/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2/share:/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2/share' +export XDG_DATA_DIRS +declare -a envBuildHostHooks=() +declare -a pkgsHostHost=() +NIX_ENFORCE_NO_NATIVE='1' +export NIX_ENFORCE_NO_NATIVE +DEVENV_TASK_FILE='/nix/store/vsp3fis0yyfrw5zdw1r908cz5wkwy1qs-tasks.json' +export DEVENV_TASK_FILE +declare -a envBuildTargetHooks=() +dontAddDisableDepTrack='1' +export dontAddDisableDepTrack +HOSTTYPE='x86_64' +declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' ) +STRINGS='strings' +export STRINGS +declare -a pkgsBuildHost=('/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev' '/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9' '/nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3' '/nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0' '/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13' '/nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2' '/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2' '/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2' '/nix/store/xknj6c33cc197s60ry0i69vdkmaizrs1-update-autotools-gnu-config-scripts-hook' '/nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh' '/nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh' '/nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh' '/nix/store/p3l1a5y7nllfyrjn2krlwgcc3z0cd3fq-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh' '/nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh' '/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh' '/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' '/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46' ) +NIX_NO_SELF_RPATH='1' +declare -a pkgsBuildBuild=() +name='devenv-shell-env' +export name +OLDPWD='' +export OLDPWD +outputMan='out' +configureFlags='' +export configureFlags +declare -a envTargetTargetHooks=() +__structuredAttrs='' +export __structuredAttrs +propagatedBuildInputs='' +export propagatedBuildInputs +IFS=' +' +LD='ld' +export LD +declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' ) +depsTargetTargetPropagated='' +export depsTargetTargetPropagated +defaultNativeBuildInputs='/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2 /nix/store/xknj6c33cc197s60ry0i69vdkmaizrs1-update-autotools-gnu-config-scripts-hook /nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh /nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh /nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh /nix/store/p3l1a5y7nllfyrjn2krlwgcc3z0cd3fq-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh /nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh /nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +depsBuildTargetPropagated='' +export depsBuildTargetPropagated +STRIP='strip' +export STRIP +declare -a envHostHostHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +outputs='out' +export outputs +propagatedNativeBuildInputs='' +export propagatedNativeBuildInputs +declare -a pkgsTargetTarget=() +DEVSHELL_NAME='󰏖 devenv/#fab387| Bun/yellow' +export DEVSHELL_NAME +NIX_BINTOOLS='/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46' +export NIX_BINTOOLS +outputBin='out' +OBJDUMP='objdump' +export OBJDUMP +prefix='/nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env' +outputDevdoc='REMOVE' +system='x86_64-linux' +export system +outputDev='out' +NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NM='nm' +export NM +HOST_PATH='/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0/bin:/nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12/bin:/nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9/bin:/nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12/bin:/nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0/bin:/nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35/bin:/nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14/bin:/nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin/bin:/nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1/bin:/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin:/nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8/bin:/nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin/bin:/nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47/bin' +export HOST_PATH +depsBuildTarget='' +export depsBuildTarget +declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' ) +strictDeps='' +export strictDeps +MACHTYPE='x86_64-pc-linux-gnu' +buildPhase='{ echo "------------------------------------------------------------"; + echo " WARNING: the existence of this path is not guaranteed."; + echo " It is an internal implementation detail for pkgs.mkShell."; + echo "------------------------------------------------------------"; + echo; + # Record all build inputs as runtime dependencies + export; +} >> "$out" +' +export buildPhase +defaultBuildInputs='' +DEVENV_TASKS='' +export DEVENV_TASKS +PKG_CONFIG='pkg-config' +export PKG_CONFIG +OSTYPE='linux-gnu' +mesonFlags='' +export mesonFlags +shell='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export shell +builder='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export builder +NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +hardeningDisable='' +export hardeningDisable +pkg='/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +declare -a pkgsBuildTarget=() +doInstallCheck='' +export doInstallCheck +CC='gcc' +export CC +OBJCOPY='objcopy' +export OBJCOPY +IN_NIX_SHELL='impure' +export IN_NIX_SHELL +depsBuildBuild='' +export depsBuildBuild +phases='buildPhase' +export phases +SOURCE_DATE_EPOCH='315532800' +export SOURCE_DATE_EPOCH +depsBuildBuildPropagated='' +export depsBuildBuildPropagated +out='/nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env' +export out +declare -a envHostTargetHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +NIX_CFLAGS_COMPILE=' -frandom-seed=y5k9a31603 -isystem /nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/include -isystem /nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/include' +export NIX_CFLAGS_COMPILE +PKG_CONFIG_PATH='/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/lib/pkgconfig' +export PKG_CONFIG_PATH +NIX_LDFLAGS='-rpath /nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env/lib ' +export NIX_LDFLAGS +buildInputs='' +export buildInputs +DEVENV_DOTFILE='/home/user01/Projects/score-system/.devenv' +export DEVENV_DOTFILE +NIX_STORE='/nix/store' +export NIX_STORE +depsHostHostPropagated='' +export depsHostHostPropagated +PATH='/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9/bin:/nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3/bin:/nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0/bin:/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13/bin:/nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2/bin:/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2/bin:/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2/bin:/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0/bin:/nix/store/qxaq7jz61a6zkr2mq49i0zvqip2m2jj8-gcc-15.2.0/bin:/nix/store/bsh7n2nx8ndmm1mmww6v2h4851nalj13-glibc-2.42-61-bin/bin:/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46/bin:/nix/store/s2946bl9ciwzhafd66jhansrmxq9xhqm-binutils-2.46/bin:/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0/bin:/nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12/bin:/nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9/bin:/nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12/bin:/nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0/bin:/nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35/bin:/nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14/bin:/nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin/bin:/nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1/bin:/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin:/nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8/bin:/nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin/bin:/nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47/bin' +export PATH +NIX_HARDENING_ENABLE='bindnow format fortify fortify3 libcxxhardeningfast pic relro stackclashprotection stackprotector strictflexarrays1 strictoverflow zerocallusedregs' +export NIX_HARDENING_ENABLE +doCheck='' +export doCheck +outputInfo='out' +DEVENV_ROOT='/home/user01/Projects/score-system' +export DEVENV_ROOT +patches='' +export patches +outputLib='out' +declare -a pkgsHostTarget=() +declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' ) +AR='ar' +export AR +declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' ) +initialPath='/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11 /nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0 /nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12 /nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9 /nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12 /nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0 /nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35 /nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14 /nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin /nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1 /nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9 /nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8 /nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin /nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47' +declare -a propagatedTargetDepFiles=('propagated-target-target-deps' ) +depsHostHost='' +export depsHostHost +shellHook=' + + +# Override temp directories that stdenv set to NIX_BUILD_TOP. +# Only reset those that still point to the Nix build dir; leave +# any user/CI-supplied value intact so child processes (e.g. +# `devenv processes wait`) compute the same runtime directory. +for var in TMP TMPDIR TEMP TEMPDIR; do + if [ -n "${!var-}" ] && [ "${!var}" = "${NIX_BUILD_TOP-}" ]; then + export "$var"=/tmp + fi +done +if [ -n "${NIX_BUILD_TOP-}" ]; then + unset NIX_BUILD_TOP +fi + +# set path to locales on non-NixOS Linux hosts +if [ -z "${LOCALE_ARCHIVE-}" ]; then + export LOCALE_ARCHIVE=/nix/store/3b5l8c2jipz2zgki0wc50vzwa2r9834a-glibc-locales-2.42-61/lib/locale/locale-archive +fi + + +# direnv helper +if [ ! type -p direnv &>/dev/null && -f .envrc ]; then + echo "An .envrc file was detected, but the direnv command is not installed." + echo "To use this configuration, please install direnv: https://direnv.net/docs/installation.html" +fi + +mkdir -p "$DEVENV_STATE" +if [ ! -L "$DEVENV_DOTFILE/profile" ] || [ "$(/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin/readlink $DEVENV_DOTFILE/profile)" != "/nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile" ] +then + ln -snf /nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile "$DEVENV_DOTFILE/profile" +fi +unset HOST_PATH NIX_BUILD_CORES __structuredAttrs buildInputs buildPhase builder depsBuildBuild depsBuildBuildPropagated depsBuildTarget depsBuildTargetPropagated depsHostHost depsHostHostPropagated depsTargetTarget depsTargetTargetPropagated dontAddDisableDepTrack doCheck doInstallCheck nativeBuildInputs out outputs patches phases preferLocalBuild propagatedBuildInputs propagatedNativeBuildInputs shell shellHook stdenv strictDeps + +mkdir -p /run/user/1000/devenv-3f21a4e +ln -snf /run/user/1000/devenv-3f21a4e /home/user01/Projects/score-system/.devenv/run + +echo "💡 A dotenv file was found, while dotenv integration is currently not enabled." >&2 +echo >&2 +echo " To enable it, add \`dotenv.enable = true;\` to your devenv.nix file." >&2; +echo " To disable this hint, add \`dotenv.disableHint = true;\` to your devenv.nix file." >&2; +echo >&2 +echo "See https://devenv.sh/integrations/dotenv/ for more information." >&2; + + + +# Check whether the direnv integration is out of date. +{ + if [[ ":${DIRENV_ACTIVE-}:" == *":/home/user01/Projects/score-system:"* ]]; then + if [[ ! "${DEVENV_NO_DIRENVRC_OUTDATED_WARNING-}" == 1 && ! "${DEVENV_DIRENVRC_ROLLING_UPGRADE-}" == 1 ]]; then + if [[ ${DEVENV_DIRENVRC_VERSION:-0} -lt 2 ]]; then + direnv_line=$(grep --color=never -E "source_url.*cachix/devenv" .envrc || echo "") + + echo "✨ The direnv integration in your .envrc is out of date." + echo "" + echo -n "RECOMMENDED: devenv can now auto-upgrade the direnv integration. " + if [[ -n "$direnv_line" ]]; then + echo "To enable this feature, replace the following line in your .envrc:" + echo "" + echo " $direnv_line" + echo "" + echo "with:" + echo "" + echo " eval \"\$(devenv direnvrc)\"" + else + echo "To enable this feature, replace the \`source_url\` line that fetches the direnvrc integration in your .envrc with:" + echo "" + echo " eval \"$(devenv direnvrc)\"" + fi + echo "" + echo "If you prefer to continue managing the integration manually, follow the upgrade instructions at https://devenv.sh/integrations/direnv/." + echo "" + echo "To disable this message:" + echo "" + echo " Add the following environment to your .envrc before \`use devenv\`:" + echo "" + echo " export DEVENV_NO_DIRENVRC_OUTDATED_WARNING=1" + echo "" + echo " Or set the following option in your devenv configuration:" + echo "" + echo " devenv.warnOnNewVersion = false;" + echo "" + fi + fi + fi +} >&2 + +' +export shellHook +preferLocalBuild='1' +export preferLocalBuild +declare -a unpackCmdHooks=('_defaultUnpack' ) +NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +SIZE='size' +export SIZE +AS='as' +export AS +CONFIG_SHELL='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export CONFIG_SHELL +READELF='readelf' +export READELF +LINENO='79' +declare -a envBuildBuildHooks=() +DEVENV_PROFILE='/nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile' +export DEVENV_PROFILE +declare -a postFixupHooks=('noBrokenSymlinksInAllOutputs' '_makeSymlinksRelative' '_multioutPropagateDev' ) +OPTERR='1' +BASH='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +CXX='g++' +export CXX +DEVENV_RUNTIME='/run/user/1000/devenv-3f21a4e' +export DEVENV_RUNTIME +PS4='+ ' +NIX_BUILD_CORES='4' +export NIX_BUILD_CORES +DEVENV_STATE='/home/user01/Projects/score-system/.devenv/state' +export DEVENV_STATE +preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase' +nativeBuildInputs='/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev /nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3 /nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0 /nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13 /nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2 /nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2' +export nativeBuildInputs +outputDevman='out' +findInputs () +{ + + local -r pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + local varVar="${pkgAccumVarVars[hostOffset + 1]}"; + local varRef="$varVar[$((targetOffset - hostOffset))]"; + local var="${!varRef}"; + unset -v varVar varRef; + local varSlice="$var[*]"; + case " ${!varSlice-} " in + *" $pkg "*) + return 0 + ;; + esac; + unset -v varSlice; + eval "$var"'+=("$pkg")'; + if ! [ -e "$pkg" ]; then + echo "build input $pkg does not exist" 1>&2; + exit 1; + fi; + function mapOffset () + { + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi + }; + local relHostOffset; + for relHostOffset in "${allPlatOffsets[@]}"; + do + local files="${propagatedDepFilesVars[relHostOffset + 1]}"; + local hostOffsetNext; + mapOffset "$relHostOffset" hostOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + local relTargetOffset; + for relTargetOffset in "${allPlatOffsets[@]}"; + do + (( "$relHostOffset" <= "$relTargetOffset" )) || continue; + local fileRef="${files}[$relTargetOffset - $relHostOffset]"; + local file="${!fileRef}"; + unset -v fileRef; + local targetOffsetNext; + mapOffset "$relTargetOffset" targetOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + [[ -f "$pkg/nix-support/$file" ]] || continue; + local pkgNext; + read -r -d '' pkgNext < "$pkg/nix-support/$file" || true; + for pkgNext in $pkgNext; + do + findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext"; + done; + done; + done +} +_allFlags () +{ + + export system pname name version; + while IFS='' read -r varName; do + nixTalkativeLog "@${varName}@ -> ${!varName}"; + args+=("--subst-var" "$varName"); + done < <(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }') +} +dumpVars () +{ + + if [[ "${noDumpEnvVars:-0}" != 1 && -d "$NIX_BUILD_TOP" ]]; then + local old_umask; + old_umask=$(umask); + umask 0077; + export 2> /dev/null > "$NIX_BUILD_TOP/env-vars"; + umask "$old_umask"; + fi +} +getHostRole () +{ + + getRole "$hostOffset" +} +buildPhase () +{ + + runHook preBuild; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom buildPhase, doing nothing"; + else + foundMakefile=1; + local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray; + echoCmd 'build flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postBuild +} +exitHandler () +{ + + exitCode="$?"; + set +e; + if [ -n "${showBuildStats:-}" ]; then + read -r -d '' -a buildTimes < <(times); + echo "build times:"; + echo "user time for the shell ${buildTimes[0]}"; + echo "system time for the shell ${buildTimes[1]}"; + echo "user time for all child processes ${buildTimes[2]}"; + echo "system time for all child processes ${buildTimes[3]}"; + fi; + if (( "$exitCode" != 0 )); then + runHook failureHook; + if [ -n "${succeedOnFailure:-}" ]; then + echo "build failed with exit code $exitCode (ignored)"; + mkdir -p "$out/nix-support"; + printf "%s" "$exitCode" > "$out/nix-support/failed"; + exit 0; + fi; + else + runHook exitHook; + fi; + return "$exitCode" +} +patchShebangsAuto () +{ + + if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then + if [[ "$output" != out && "$output" = "$outputDev" ]]; then + patchShebangs --build "$prefix"; + else + patchShebangs --host "$prefix"; + fi; + fi +} +concatTo () +{ + + local -; + set -o noglob; + local -n targetref="$1"; + shift; + local arg default name type; + for arg in "$@"; + do + IFS="=" read -r name default <<< "$arg"; + local -n nameref="$name"; + if [[ -z "${nameref[*]}" && -n "$default" ]]; then + targetref+=("$default"); + else + if type=$(declare -p "$name" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "concatTo(): ERROR: trying to use concatTo on an associative array." 1>&2; + return 1 + ;; + -a*) + targetref+=("${nameref[@]}") + ;; + *) + if [[ "$name" = *"Array" ]]; then + nixErrorLog "concatTo(): $name is not declared as array, treating as a singleton. This will become an error in future"; + targetref+=(${nameref+"${nameref[@]}"}); + else + targetref+=(${nameref-}); + fi + ;; + esac; + fi; + fi; + done +} +fixupPhase () +{ + + local output; + for output in $(getAllOutputNames); + do + if [ -e "${!output}" ]; then + chmod -R u+w,u-s,g-s "${!output}"; + fi; + done; + runHook preFixup; + local output; + for output in $(getAllOutputNames); + do + prefix="${!output}" runHook fixupOutput; + done; + recordPropagatedDependencies; + if [ -n "${setupHook:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook"; + fi; + if [ -n "${setupHooks:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + local hook; + for hook in ${setupHooks[@]}; + do + local content; + consumeEntire content < "$hook"; + substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook"; + unset -v content; + done; + unset -v hook; + fi; + if [ -n "${propagatedUserEnvPkgs[*]:-}" ]; then + mkdir -p "${!outputBin}/nix-support"; + printWords "${propagatedUserEnvPkgs[@]}" > "${!outputBin}/nix-support/propagated-user-env-packages"; + fi; + runHook postFixup +} +stripDirs () +{ + + local cmd="$1"; + local ranlibCmd="$2"; + local paths="$3"; + local stripFlags="$4"; + local excludeFlags=(); + local pathsNew=; + [ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1; + [ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1; + local pattern; + if [ -n "${stripExclude:-}" ]; then + for pattern in "${stripExclude[@]}"; + do + excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')'); + done; + fi; + local p; + for p in ${paths}; + do + if [ -e "$prefix/$p" ]; then + pathsNew="${pathsNew} $prefix/$p"; + fi; + done; + paths=${pathsNew}; + if [ -n "${paths}" ]; then + echo "stripping (with command $cmd and flags $stripFlags) in $paths"; + local striperr; + striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')"; + find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -printf '%D-%i,%p\0' | sort -t, -k1,1 -u -z | cut -d, -f2- -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?; + [[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 ); + rm "$striperr"; + find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2> /dev/null; + fi +} +mapOffset () +{ + + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi +} +nixLog () +{ + + [[ -z ${NIX_LOG_FD-} ]] && return 0; + local callerName="${FUNCNAME[1]}"; + if [[ $callerName == "_callImplicitHook" ]]; then + callerName="${hookName:?}"; + fi; + printf "%s: %s\n" "$callerName" "$*" >&"$NIX_LOG_FD" +} +nixTalkativeLog () +{ + + _nixLogWithLevel 4 "$*" +} +getHostRoleEnvHook () +{ + + getRole "$depHostOffset" +} +isMachO () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then + return 0; + else + return 1; + fi; + fi; + fi +} +isELF () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [ "$magic" = 'ELF' ]; then + return 0; + else + return 1; + fi +} +_multioutConfig () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then + return; + fi; + if [ -z "${shareDocName:-}" ]; then + local confScript="${configureScript:-}"; + if [ -z "$confScript" ] && [ -x ./configure ]; then + confScript=./configure; + fi; + if [ -f "$confScript" ]; then + local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")"; + fi; + if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then + shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"; + fi; + fi; + prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale; + prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal +} +nixChattyLog () +{ + + _nixLogWithLevel 5 "$*" +} +addToSearchPathWithCustomDelimiter () +{ + + local delimiter="$1"; + local varName="$2"; + local dir="$3"; + if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then + export "${varName}=${!varName:+${!varName}${delimiter}}${dir}"; + fi +} +_callImplicitHook () +{ + + local def="$1"; + local hookName="$2"; + if declare -F "$hookName" > /dev/null; then + nixTalkativeLog "calling implicit '$hookName' function hook"; + "$hookName"; + else + if type -p "$hookName" > /dev/null; then + nixTalkativeLog "sourcing implicit '$hookName' script hook"; + source "$hookName"; + else + if [ -n "${!hookName:-}" ]; then + nixTalkativeLog "evaling implicit '$hookName' string hook"; + eval "${!hookName}"; + else + return "$def"; + fi; + fi; + fi +} +nixVomitLog () +{ + + _nixLogWithLevel 7 "$*" +} +distPhase () +{ + + runHook preDist; + local flagsArray=(); + concatTo flagsArray distFlags distFlagsArray distTarget=dist; + echo 'dist flags: %q' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + if [ "${dontCopyDist:-0}" != 1 ]; then + mkdir -p "$out/tarballs"; + cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs"; + fi; + runHook postDist +} +patchPhase () +{ + + runHook prePatch; + local -a patchesArray; + concatTo patchesArray patches; + local -a flagsArray; + concatTo flagsArray patchFlags=-p1; + for i in "${patchesArray[@]}"; + do + echo "applying patch $i"; + local uncompress=cat; + case "$i" in + *.gz) + uncompress="gzip -d" + ;; + *.bz2) + uncompress="bzip2 -d" + ;; + *.xz) + uncompress="xz -d" + ;; + *.lzma) + uncompress="lzma -d" + ;; + esac; + $uncompress < "$i" 2>&1 | patch "${flagsArray[@]}"; + done; + runHook postPatch +} +_doStrip () +{ + + local -ra flags=(dontStripHost dontStripTarget); + local -ra debugDirs=(stripDebugList stripDebugListTarget); + local -ra allDirs=(stripAllList stripAllListTarget); + local -ra stripCmds=(STRIP STRIP_FOR_TARGET); + local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET); + stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin Applications Library/Frameworks}; + stripDebugListTarget=${stripDebugListTarget[*]:-}; + stripAllList=${stripAllList[*]:-}; + stripAllListTarget=${stripAllListTarget[*]:-}; + local i; + for i in ${!stripCmds[@]}; + do + local -n flag="${flags[$i]}"; + local -n debugDirList="${debugDirs[$i]}"; + local -n allDirList="${allDirs[$i]}"; + local -n stripCmd="${stripCmds[$i]}"; + local -n ranlibCmd="${ranlibCmds[$i]}"; + if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then + continue; + fi; + stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}"; + stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}"; + done +} +patchShebangs () +{ + + local pathName; + local update=false; + while [[ $# -gt 0 ]]; do + case "$1" in + --host) + pathName=HOST_PATH; + shift + ;; + --build) + pathName=PATH; + shift + ;; + --update) + update=true; + shift + ;; + --) + shift; + break + ;; + -* | --*) + echo "Unknown option $1 supplied to patchShebangs" 1>&2; + return 1 + ;; + *) + break + ;; + esac; + done; + echo "patching script interpreter paths in $@"; + local f; + local oldPath; + local newPath; + local arg0; + local args; + local oldInterpreterLine; + local newInterpreterLine; + if [[ $# -eq 0 ]]; then + echo "No arguments supplied to patchShebangs" 1>&2; + return 0; + fi; + local f; + while IFS= read -r -d '' f; do + isScript "$f" || continue; + read -r oldInterpreterLine < "$f" || [ "$oldInterpreterLine" ]; + read -r oldPath arg0 args <<< "${oldInterpreterLine:2}"; + if [[ -z "${pathName:-}" ]]; then + if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then + pathName=HOST_PATH; + else + pathName=PATH; + fi; + fi; + if [[ "$oldPath" == *"/bin/env" ]]; then + if [[ $arg0 == "-S" ]]; then + arg0=${args%% *}; + [[ "$args" == *" "* ]] && args=${args#* } || args=; + newPath="$(PATH="${!pathName}" type -P "env" || true)"; + args="-S $(PATH="${!pathName}" type -P "$arg0" || true) $args"; + else + if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then + echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2; + exit 1; + else + newPath="$(PATH="${!pathName}" type -P "$arg0" || true)"; + fi; + fi; + else + if [[ -z $oldPath ]]; then + oldPath="/bin/sh"; + fi; + newPath="$(PATH="${!pathName}" type -P "$(basename "$oldPath")" || true)"; + args="$arg0 $args"; + fi; + newInterpreterLine="$newPath $args"; + newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}}; + if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then + if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then + echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\""; + escapedInterpreterLine=${newInterpreterLine//\\/\\\\}; + timestamp=$(stat --printf "%y" "$f"); + tmpFile=$(mktemp -t patchShebangs.XXXXXXXXXX); + sed -e "1 s|.*|#\!$escapedInterpreterLine|" "$f" > "$tmpFile"; + local restoreReadOnly; + if [[ ! -w "$f" ]]; then + chmod +w "$f"; + restoreReadOnly=true; + fi; + cat "$tmpFile" > "$f"; + rm "$tmpFile"; + if [[ -n "${restoreReadOnly:-}" ]]; then + chmod -w "$f"; + fi; + touch --date "$timestamp" "$f"; + fi; + fi; + done < <(find "$@" -type f -perm -0100 -print0) +} +printLines () +{ + + (( "$#" > 0 )) || return 0; + printf '%s\n' "$@" +} +_addToEnv () +{ + + local depHostOffset depTargetOffset; + local pkg; + for depHostOffset in "${allPlatOffsets[@]}"; + do + local hookVar="${pkgHookVarVars[depHostOffset + 1]}"; + local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}"; + for depTargetOffset in "${allPlatOffsets[@]}"; + do + (( depHostOffset <= depTargetOffset )) || continue; + local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"; + if [[ -z "${strictDeps-}" ]]; then + local visitedPkgs=""; + for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}"; + do + if [[ "$visitedPkgs" = *"$pkg"* ]]; then + continue; + fi; + runHook "${!hookRef}" "$pkg"; + visitedPkgs+=" $pkg"; + done; + else + local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + runHook "${!hookRef}" "$pkg"; + done; + fi; + done; + done +} +getTargetRoleWrapper () +{ + + case $targetOffset in + -1) + export NIX_BINTOOLS_WRAPPER_TARGET_BUILD_x86_64_unknown_linux_gnu=1 + ;; + 0) + export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 + ;; + 1) + export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu=1 + ;; + *) + echo "binutils-wrapper-2.46: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +_moveSbin () +{ + + if [ "${dontMoveSbin-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then + return; + fi; + echo "moving $prefix/sbin/* to $prefix/bin"; + mkdir -p $prefix/bin; + shopt -s dotglob; + for i in $prefix/sbin/*; + do + mv "$i" $prefix/bin; + done; + shopt -u dotglob; + rmdir $prefix/sbin; + ln -s bin $prefix/sbin +} +addToSearchPath () +{ + + addToSearchPathWithCustomDelimiter ":" "$@" +} +showPhaseFooter () +{ + + local phase="$1"; + local startTime="$2"; + local endTime="$3"; + local delta=$(( endTime - startTime )); + (( delta < 30 )) && return; + local H=$((delta/3600)); + local M=$((delta%3600/60)); + local S=$((delta%60)); + echo -n "$phase completed in "; + (( H > 0 )) && echo -n "$H hours "; + (( M > 0 )) && echo -n "$M minutes "; + echo "$S seconds" +} +unpackFile () +{ + + curSrc="$1"; + echo "unpacking source archive $curSrc"; + if ! runOneHook unpackCmd "$curSrc"; then + echo "do not know how to unpack source archive $curSrc"; + exit 1; + fi +} +nixWarnLog () +{ + + _nixLogWithLevel 1 "$*" +} +_logHook () +{ + + if [[ -z ${NIX_LOG_FD-} ]]; then + return; + fi; + local hookKind="$1"; + local hookExpr="$2"; + shift 2; + if declare -F "$hookExpr" > /dev/null 2>&1; then + nixTalkativeLog "calling '$hookKind' function hook '$hookExpr'" "$@"; + else + if type -p "$hookExpr" > /dev/null; then + nixTalkativeLog "sourcing '$hookKind' script hook '$hookExpr'"; + else + if [[ "$hookExpr" != "_callImplicitHook"* ]]; then + local exprToOutput; + if [[ ${NIX_DEBUG:-0} -ge 5 ]]; then + exprToOutput="$hookExpr"; + else + local hookExprLine; + while IFS= read -r hookExprLine; do + hookExprLine="${hookExprLine#"${hookExprLine%%[![:space:]]*}"}"; + if [[ -n "$hookExprLine" ]]; then + exprToOutput+="$hookExprLine\\n "; + fi; + done <<< "$hookExpr"; + exprToOutput="${exprToOutput%%\\n }"; + fi; + nixTalkativeLog "evaling '$hookKind' string hook '$exprToOutput'"; + fi; + fi; + fi +} +noBrokenSymlinks () +{ + + local -r output="${1:?}"; + local path; + local pathParent; + local symlinkTarget; + local -i numDanglingSymlinks=0; + local -i numReflexiveSymlinks=0; + local -i numUnreadableSymlinks=0; + if [[ ! -e $output ]]; then + nixWarnLog "skipping non-existent output $output"; + return 0; + fi; + nixInfoLog "running on $output"; + while IFS= read -r -d '' path; do + pathParent="$(dirname "$path")"; + if ! symlinkTarget="$(readlink "$path")"; then + nixErrorLog "the symlink $path is unreadable"; + numUnreadableSymlinks+=1; + continue; + fi; + if [[ $symlinkTarget == /* ]]; then + nixInfoLog "symlink $path points to absolute target $symlinkTarget"; + else + nixInfoLog "symlink $path points to relative target $symlinkTarget"; + symlinkTarget="$(realpath --no-symlinks --canonicalize-missing "$pathParent/$symlinkTarget")"; + fi; + if [[ $symlinkTarget = "$TMPDIR"/* ]]; then + nixErrorLog "the symlink $path points to $TMPDIR directory: $symlinkTarget"; + numDanglingSymlinks+=1; + continue; + fi; + if [[ $symlinkTarget != "$NIX_STORE"/* ]]; then + nixInfoLog "symlink $path points outside the Nix store; ignoring"; + continue; + fi; + if [[ $path == "$symlinkTarget" ]]; then + nixErrorLog "the symlink $path is reflexive"; + numReflexiveSymlinks+=1; + else + if [[ ! -e $symlinkTarget ]]; then + nixErrorLog "the symlink $path points to a missing target: $symlinkTarget"; + numDanglingSymlinks+=1; + else + nixDebugLog "the symlink $path is irreflexive and points to a target which exists"; + fi; + fi; + done < <(find "$output" -type l -print0); + if ((numDanglingSymlinks > 0 || numReflexiveSymlinks > 0 || numUnreadableSymlinks > 0)); then + nixErrorLog "found $numDanglingSymlinks dangling symlinks, $numReflexiveSymlinks reflexive symlinks and $numUnreadableSymlinks unreadable symlinks"; + exit 1; + fi; + return 0 +} +fixLibtool () +{ + + local search_path; + for flag in $NIX_LDFLAGS; + do + case $flag in + -L*) + search_path+=" ${flag#-L}" + ;; + esac; + done; + sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'${search_path:-}'^" -e 's^eval sys_lib_.+search_path=.*^^' +} +checkPhase () +{ + + runHook preCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom checkPhase, doing nothing"; + runHook postCheck; + return; + fi; + if [[ -z "${checkTarget:-}" ]]; then + if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then + checkTarget="check"; + else + if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then + checkTarget="test"; + fi; + fi; + fi; + if [[ -z "${checkTarget:-}" ]]; then + echo "no check/test target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray checkFlags=VERBOSE=y checkFlagsArray checkTarget; + echoCmd 'check flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postCheck +} +showPhaseHeader () +{ + + local phase="$1"; + echo "Running phase: $phase"; + if [[ -z ${NIX_LOG_FD-} ]]; then + return; + fi; + printf "@nix { \"action\": \"setPhase\", \"phase\": \"%s\" }\n" "$phase" >&"$NIX_LOG_FD" +} +moveToOutput () +{ + + local patt="$1"; + local dstOut="$2"; + local output; + for output in $(getAllOutputNames); + do + if [ "${!output}" = "$dstOut" ]; then + continue; + fi; + local srcPath; + for srcPath in "${!output}"/$patt; + do + if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then + continue; + fi; + if [ "$dstOut" = REMOVE ]; then + echo "Removing $srcPath"; + rm -r "$srcPath"; + else + local dstPath="$dstOut${srcPath#${!output}}"; + echo "Moving $srcPath to $dstPath"; + if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then + rmdir "$srcPath" --ignore-fail-on-non-empty; + if [ -d "$srcPath" ]; then + mv -t "$dstPath" "$srcPath"/*; + rmdir "$srcPath"; + fi; + else + mkdir -p "$(readlink -m "$dstPath/..")"; + mv "$srcPath" "$dstPath"; + fi; + fi; + local srcParent="$(readlink -m "$srcPath/..")"; + if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then + echo "Removing empty $srcParent/ and (possibly) its parents"; + rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true; + fi; + done; + done +} +compressManPages () +{ + + local dir="$1"; + if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then + return; + fi; + echo "gzipping man pages under $dir/share/man/"; + find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | xargs -0 -n1 -P "$NIX_BUILD_CORES" gzip -n -f; + find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do + local target; + target="$(readlink -f "$f")"; + if [ -f "$target".gz ]; then + ln -sf "$target".gz "$f".gz && rm "$f"; + fi; + done +} +_overrideFirst () +{ + + if [ -z "${!1-}" ]; then + _assignFirst "$@"; + fi +} +concatStringsSep () +{ + + local sep="$1"; + local name="$2"; + local type oldifs; + if type=$(declare -p "$name" 2> /dev/null); then + local -n nameref="$name"; + case "${type#* }" in + -A*) + echo "concatStringsSep(): ERROR: trying to use concatStringsSep on an associative array." 1>&2; + return 1 + ;; + -a*) + local IFS="$(printf '\036')" + ;; + *) + local IFS=" " + ;; + esac; + local ifs_separated="${nameref[*]}"; + echo -n "${ifs_separated//"$IFS"/"$sep"}"; + fi +} +recordPropagatedDependencies () +{ + + declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated); + declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}"); + local propagatedInputsIndex; + for propagatedInputsIndex in "${!flatVars[@]}"; + do + local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]"; + local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}"; + [[ -n "${!propagatedInputsSlice}" ]] || continue; + mkdir -p "${!outputDev}/nix-support"; + printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile"; + done +} +substituteAll () +{ + + local input="$1"; + local output="$2"; + local -a args=(); + _allFlags; + substitute "$input" "$output" "${args[@]}" +} +_addRpathPrefix () +{ + + if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then + export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}"; + fi +} +unpackPhase () +{ + + runHook preUnpack; + if [ -z "${srcs:-}" ]; then + if [ -z "${src:-}" ]; then + echo 'variable $src or $srcs should point to the source'; + exit 1; + fi; + srcs="$src"; + fi; + local -a srcsArray; + concatTo srcsArray srcs; + local dirsBefore=""; + for i in *; + do + if [ -d "$i" ]; then + dirsBefore="$dirsBefore $i "; + fi; + done; + for i in "${srcsArray[@]}"; + do + unpackFile "$i"; + done; + : "${sourceRoot=}"; + if [ -n "${setSourceRoot:-}" ]; then + runOneHook setSourceRoot; + else + if [ -z "$sourceRoot" ]; then + for i in *; + do + if [ -d "$i" ]; then + case $dirsBefore in + *\ $i\ *) + + ;; + *) + if [ -n "$sourceRoot" ]; then + echo "unpacker produced multiple directories"; + exit 1; + fi; + sourceRoot="$i" + ;; + esac; + fi; + done; + fi; + fi; + if [ -z "$sourceRoot" ]; then + echo "unpacker appears to have produced no directories"; + exit 1; + fi; + echo "source root is $sourceRoot"; + if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then + chmod -R u+w -- "$sourceRoot"; + fi; + runHook postUnpack +} +installCheckPhase () +{ + + runHook preInstallCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom installCheckPhase, doing nothing"; + else + if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then + echo "no installcheck target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray installCheckTarget=installcheck; + echoCmd 'installcheck flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + fi; + runHook postInstallCheck +} +updateSourceDateEpoch () +{ + + local path="$1"; + [[ $path == -* ]] && path="./$path"; + local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ "%p"\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)); + local time="${res[0]//\.[0-9]*/}"; + local newestFile="${res[1]}"; + if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then + echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile"; + export SOURCE_DATE_EPOCH="$time"; + local now="$(date +%s)"; + if [ "$time" -gt $((now - 60)) ]; then + echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic"; + fi; + fi +} +nixDebugLog () +{ + + _nixLogWithLevel 6 "$*" +} +isScript () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 2 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" =~ \#! ]]; then + return 0; + else + return 1; + fi +} +_activatePkgs () +{ + + local hostOffset targetOffset; + local pkg; + for hostOffset in "${allPlatOffsets[@]}"; + do + local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}"; + for targetOffset in "${allPlatOffsets[@]}"; + do + (( hostOffset <= targetOffset )) || continue; + local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + activatePackage "$pkg" "$hostOffset" "$targetOffset"; + done; + done; + done +} +_assignFirst () +{ + + local varName="$1"; + local _var; + local REMOVE=REMOVE; + shift; + for _var in "$@"; + do + if [ -n "${!_var-}" ]; then + eval "${varName}"="${_var}"; + return; + fi; + done; + echo; + echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}."; + echo " The following variables were all unset or empty:"; + echo " $*"; + if [ -z "${out:-}" ]; then + echo ' If you do not want an "out" output in your derivation, make sure to define'; + echo ' the other specific required outputs. This can be achieved by picking one'; + echo " of the above as an output."; + echo ' You do not have to remove "out" if you want to have a different default'; + echo ' output, because the first output is taken as a default.'; + echo; + fi; + return 1 +} +bintoolsWrapper_addLDVars () +{ + + local role_post; + getHostRoleEnvHook; + if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib64"; + fi; + if [[ -d "$1/lib" ]]; then + local -a glob=($1/lib/lib*); + if [ "${#glob[*]}" -gt 0 ]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib"; + fi; + fi +} +configurePhase () +{ + + runHook preConfigure; + : "${configureScript=}"; + if [[ -z "$configureScript" && -x ./configure ]]; then + configureScript=./configure; + fi; + if [ -z "${dontFixLibtool:-}" ]; then + export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}"; + local i; + find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do + echo "fixing libtool script $i"; + fixLibtool "$i"; + done; + CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX); + find . -executable -type f -name configure -exec grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;; + rm -f "$CONFIGURE_MTIME_REFERENCE"; + fi; + if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then + local -r prefixKeyOrDefault="${prefixKey:---prefix=}"; + if [ "${prefixKeyOrDefault: -1}" = " " ]; then + prependToVar configureFlags "$prefix"; + prependToVar configureFlags "${prefixKeyOrDefault::-1}"; + else + prependToVar configureFlags "$prefixKeyOrDefault$prefix"; + fi; + fi; + if [[ -f "$configureScript" ]]; then + if [ -z "${dontAddDisableDepTrack:-}" ]; then + if grep -q dependency-tracking "$configureScript"; then + prependToVar configureFlags --disable-dependency-tracking; + fi; + fi; + if [ -z "${dontDisableStatic:-}" ]; then + if grep -q enable-static "$configureScript"; then + prependToVar configureFlags --disable-static; + fi; + fi; + if [ -z "${dontPatchShebangsInConfigure:-}" ]; then + patchShebangs --build "$configureScript"; + fi; + fi; + if [ -n "$configureScript" ]; then + local -a flagsArray; + concatTo flagsArray configureFlags configureFlagsArray; + echoCmd 'configure flags' "${flagsArray[@]}"; + $configureScript "${flagsArray[@]}"; + unset flagsArray; + else + echo "no configure script, doing nothing"; + fi; + runHook postConfigure +} +getRole () +{ + + case $1 in + -1) + role_post='_FOR_BUILD' + ;; + 0) + role_post='' + ;; + 1) + role_post='_FOR_TARGET' + ;; + *) + echo "binutils-wrapper-2.46: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +_eval () +{ + + if declare -F "$1" > /dev/null 2>&1; then + "$@"; + else + eval "$1"; + fi +} +printPhases () +{ + + definePhases; + local phase; + for phase in ${phases[*]}; + do + printf '%s\n' "$phase"; + done +} +echoCmd () +{ + + printf "%s:" "$1"; + shift; + printf ' %q' "$@"; + echo +} +patchELF () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "shrinking RPATHs of ELF executables and libraries in $dir"; + local i; + while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if ! isELF "$i"; then + continue; + fi; + echo "shrinking $i"; + patchelf --shrink-rpath "$i" || true; + done < <(find "$dir" -type f -print0) +} +nixNoticeLog () +{ + + _nixLogWithLevel 2 "$*" +} +_moveToShare () +{ + + if [ -n "$__structuredAttrs" ]; then + if [ -z "${forceShare-}" ]; then + forceShare=(man doc info); + fi; + else + forceShare=(${forceShare:-man doc info}); + fi; + if [[ -z "$out" ]]; then + return; + fi; + for d in "${forceShare[@]}"; + do + if [ -d "$out/$d" ]; then + if [ -d "$out/share/$d" ]; then + echo "both $d/ and share/$d/ exist!"; + else + echo "moving $out/$d to $out/share/$d"; + mkdir -p $out/share; + mv $out/$d $out/share/; + fi; + fi; + done +} +stripHash () +{ + + local strippedName casematchOpt=0; + strippedName="$(basename -- "$1")"; + shopt -q nocasematch && casematchOpt=1; + shopt -u nocasematch; + if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then + echo "${strippedName:33}"; + else + echo "$strippedName"; + fi; + if (( casematchOpt )); then + shopt -s nocasematch; + fi +} +pkgConfigWrapper_addPkgConfigPath () +{ + + local role_post; + getHostRoleEnvHook; + addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/lib/pkgconfig"; + addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/share/pkgconfig" +} +activatePackage () +{ + + local pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + if [ -f "$pkg" ]; then + nixTalkativeLog "sourcing setup hook '$pkg'"; + source "$pkg"; + fi; + if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then + addToSearchPath _PATH "$pkg/bin"; + fi; + if (( hostOffset <= -1 )); then + addToSearchPath _XDG_DATA_DIRS "$pkg/share"; + fi; + if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then + addToSearchPath _HOST_PATH "$pkg/bin"; + fi; + if [[ -f "$pkg/nix-support/setup-hook" ]]; then + nixTalkativeLog "sourcing setup hook '$pkg/nix-support/setup-hook'"; + source "$pkg/nix-support/setup-hook"; + fi +} +_moveSystemdUserUnits () +{ + + if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then + return; + fi; + if [ ! -e "${prefix:?}/lib/systemd/user" ]; then + return; + fi; + local source="$prefix/lib/systemd/user"; + local target="$prefix/share/systemd/user"; + echo "moving $source/* to $target"; + mkdir -p "$target"; + ( shopt -s dotglob; + for i in "$source"/*; + do + mv "$i" "$target"; + done ); + rmdir "$source"; + ln -s "$target" "$source" +} +_multioutDevs () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then + return; + fi; + moveToOutput include "${!outputInclude}"; + moveToOutput lib/pkgconfig "${!outputDev}"; + moveToOutput share/pkgconfig "${!outputDev}"; + moveToOutput lib/cmake "${!outputDev}"; + moveToOutput share/aclocal "${!outputDev}"; + for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; + do + echo "Patching '$f' includedir to output ${!outputInclude}"; + sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f"; + done +} +nixErrorLog () +{ + + _nixLogWithLevel 0 "$*" +} +getAllOutputNames () +{ + + if [ -n "$__structuredAttrs" ]; then + echo "${!outputs[*]}"; + else + echo "$outputs"; + fi +} +noBrokenSymlinksInAllOutputs () +{ + + if [[ -z ${dontCheckForBrokenSymlinks-} ]]; then + for output in $(getAllOutputNames); + do + noBrokenSymlinks "${!output}"; + done; + fi +} +_multioutDocs () +{ + + local REMOVE=REMOVE; + moveToOutput share/info "${!outputInfo}"; + moveToOutput share/doc "${!outputDoc}"; + moveToOutput share/gtk-doc "${!outputDevdoc}"; + moveToOutput share/devhelp/books "${!outputDevdoc}"; + moveToOutput share/man "${!outputMan}"; + moveToOutput share/man/man3 "${!outputDevman}" +} +_pruneLibtoolFiles () +{ + + if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; +} +_updateSourceDateEpochFromSourceRoot () +{ + + if [ -n "$sourceRoot" ]; then + updateSourceDateEpoch "$sourceRoot"; + fi +} +definePhases () +{ + + if [ -z "${phases[*]:-}" ]; then + phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}"; + fi +} +runHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook; + for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _logHook "$hookName" "$hook" "$@"; + _eval "$hook" "$@"; + done; + return 0 +} +runOneHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook ret=1; + for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _logHook "$hookName" "$hook" "$@"; + if _eval "$hook" "$@"; then + ret=0; + break; + fi; + done; + return "$ret" +} +substitute () +{ + + local input="$1"; + local output="$2"; + shift 2; + if [ ! -f "$input" ]; then + echo "substitute(): ERROR: file '$input' does not exist" 1>&2; + return 1; + fi; + local content; + consumeEntire content < "$input"; + if [ -e "$output" ]; then + chmod +w "$output"; + fi; + substituteStream content "file '$input'" "$@" > "$output" +} +substituteAllStream () +{ + + local -a args=(); + _allFlags; + substituteStream "$1" "$2" "${args[@]}" +} +installPhase () +{ + + runHook preInstall; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom installPhase, doing nothing"; + runHook postInstall; + return; + else + foundMakefile=1; + fi; + if [ -n "$prefix" ]; then + mkdir -p "$prefix"; + fi; + local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray installFlags installFlagsArray installTargets=install; + echoCmd 'install flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + runHook postInstall +} +printWords () +{ + + (( "$#" > 0 )) || return 0; + printf '%s ' "$@" +} +substituteStream () +{ + + local var=$1; + local description=$2; + shift 2; + while (( "$#" )); do + local replace_mode="$1"; + case "$1" in + --replace) + if ! "$_substituteStream_has_warned_replace_deprecation"; then + echo "substituteStream() in derivation $name: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. ($description)" 1>&2; + _substituteStream_has_warned_replace_deprecation=true; + fi; + replace_mode='--replace-warn' + ;& + --replace-quiet | --replace-warn | --replace-fail) + pattern="$2"; + replacement="$3"; + shift 3; + if ! [[ "${!var}" == *"$pattern"* ]]; then + if [ "$replace_mode" == --replace-warn ]; then + printf "substituteStream() in derivation $name: WARNING: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2; + else + if [ "$replace_mode" == --replace-fail ]; then + printf "substituteStream() in derivation $name: ERROR: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2; + return 1; + fi; + fi; + fi; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var) + local varName="$2"; + shift 2; + if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then + echo "substituteStream() in derivation $name: ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2; + return 1; + fi; + if [ -z ${!varName+x} ]; then + echo "substituteStream() in derivation $name: ERROR: variable \$$varName is unset" 1>&2; + return 1; + fi; + pattern="@$varName@"; + replacement="${!varName}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var-by) + pattern="@$2@"; + replacement="$3"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + shift 3 + ;; + *) + echo "substituteStream() in derivation $name: ERROR: Invalid command line argument: $1" 1>&2; + return 1 + ;; + esac; + done; + printf "%s" "${!var}" +} +auditTmpdir () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "checking for references to $TMPDIR/ in $dir..."; + local tmpdir elf_fifo script_fifo; + tmpdir="$(mktemp -d)"; + elf_fifo="$tmpdir/elf"; + script_fifo="$tmpdir/script"; + mkfifo "$elf_fifo" "$script_fifo"; + ( find "$dir" -type f -not -path '*/.build-id/*' -print0 | while IFS= read -r -d '' file; do + if isELF "$file"; then + printf '%s\0' "$file" 1>&3; + else + if isScript "$file"; then + filename=${file##*/}; + dir=${file%/*}; + if [ -e "$dir/.$filename-wrapped" ]; then + printf '%s\0' "$file" 1>&4; + fi; + fi; + fi; + done; + exec 3>&- 4>&- ) 3> "$elf_fifo" 4> "$script_fifo" & ( xargs -0 -r -P "$NIX_BUILD_CORES" -n 1 sh -c ' + if { printf :; patchelf --print-rpath "$1"; } | grep -q -F ":$TMPDIR/"; then + echo "RPATH of binary $1 contains a forbidden reference to $TMPDIR/" + exit 1 + fi + ' _ < "$elf_fifo" ) & local pid_elf=$!; + local pid_script; + ( xargs -0 -r -P "$NIX_BUILD_CORES" -n 1 sh -c ' + if grep -q -F "$TMPDIR/" "$1"; then + echo "wrapper script $1 contains a forbidden reference to $TMPDIR/" + exit 1 + fi + ' _ < "$script_fifo" ) & local pid_script=$!; + wait "$pid_elf" || { + echo "Some binaries contain forbidden references to $TMPDIR/. Check the error above!"; + exit 1 + }; + wait "$pid_script" || { + echo "Some scripts contain forbidden references to $TMPDIR/. Check the error above!"; + exit 1 + }; + rm -r "$tmpdir" +} +_nixLogWithLevel () +{ + + [[ -z ${NIX_LOG_FD-} || ${NIX_DEBUG:-0} -lt ${1:?} ]] && return 0; + local logLevel; + case "${1:?}" in + 0) + logLevel=ERROR + ;; + 1) + logLevel=WARN + ;; + 2) + logLevel=NOTICE + ;; + 3) + logLevel=INFO + ;; + 4) + logLevel=TALKATIVE + ;; + 5) + logLevel=CHATTY + ;; + 6) + logLevel=DEBUG + ;; + 7) + logLevel=VOMIT + ;; + *) + echo "_nixLogWithLevel: called with invalid log level: ${1:?}" >&"$NIX_LOG_FD"; + return 1 + ;; + esac; + local callerName="${FUNCNAME[2]}"; + if [[ $callerName == "_callImplicitHook" ]]; then + callerName="${hookName:?}"; + fi; + printf "%s: %s: %s\n" "$logLevel" "$callerName" "${2:?}" >&"$NIX_LOG_FD" +} +getTargetRoleEnvHook () +{ + + getRole "$depTargetOffset" +} +getTargetRole () +{ + + getRole "$targetOffset" +} +nixInfoLog () +{ + + _nixLogWithLevel 3 "$*" +} +_defaultUnpack () +{ + + local fn="$1"; + local destination; + if [ -d "$fn" ]; then + destination="$(stripHash "$fn")"; + if [ -e "$destination" ]; then + echo "Cannot copy $fn to $destination: destination already exists!"; + echo "Did you specify two \"srcs\" with the same \"name\"?"; + return 1; + fi; + cp -r --preserve=timestamps --reflink=auto -- "$fn" "$destination"; + else + case "$fn" in + *.tar.xz | *.tar.lzma | *.txz) + ( XZ_OPT="--threads=$NIX_BUILD_CORES" xz -d < "$fn"; + true ) | tar xf - --mode=+w --warning=no-timestamp + ;; + *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz) + tar xf "$fn" --mode=+w --warning=no-timestamp + ;; + *) + return 1 + ;; + esac; + fi +} +prependToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if type=$(declare -p "$1" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2; + return 1 + ;; + -a*) + useArray=true + ;; + *) + useArray=false + ;; + esac; + fi; + shift; + if $useArray; then + nameref=("$@" ${nameref+"${nameref[@]}"}); + else + nameref="$* ${nameref-}"; + fi +} +_makeSymlinksRelative () +{ + + local prefixes; + prefixes=(); + for output in $(getAllOutputNames); + do + [ ! -e "${!output}" ] && continue; + prefixes+=("${!output}"); + done; + find "${prefixes[@]}" -type l -printf '%H\0%p\0' | xargs -0 -n2 -r -P "$NIX_BUILD_CORES" sh -c ' + output="$1" + link="$2" + + linkTarget=$(readlink "$link") + + # only touch links that point inside the same output tree + [[ $linkTarget == "$output"/* ]] || exit 0 + + if [ ! -e "$linkTarget" ]; then + echo "the symlink $link is broken, it points to $linkTarget (which is missing)" + fi + + echo "making symlink relative: $link" + ln -snrf "$linkTarget" "$link" + ' _ +} +_multioutPropagateDev () +{ + + if [ "$(getAllOutputNames)" = "out" ]; then + return; + fi; + local outputFirst; + for outputFirst in $(getAllOutputNames); + do + break; + done; + local propagaterOutput="$outputDev"; + if [ -z "$propagaterOutput" ]; then + propagaterOutput="$outputFirst"; + fi; + if [ -z "${propagatedBuildOutputs+1}" ]; then + local po_dirty="$outputBin $outputInclude $outputLib"; + set +o pipefail; + propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `; + set -o pipefail; + fi; + if [ -z "$propagatedBuildOutputs" ]; then + return; + fi; + mkdir -p "${!propagaterOutput}"/nix-support; + for output in $propagatedBuildOutputs; + do + echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs; + done +} +ccWrapper_addCVars () +{ + + local role_post; + getHostRoleEnvHook; + local found=; + if [ -d "$1/include" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include"; + found=1; + fi; + if [ -d "$1/Library/Frameworks" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks"; + found=1; + fi; + if [[ -n "" && -n ${NIX_STORE:-} && -n $found ]]; then + local scrubbed="$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${1#"$NIX_STORE"/*-}"; + export NIX_CFLAGS_COMPILE${role_post}+=" -fmacro-prefix-map=$1=$scrubbed"; + fi +} +substituteInPlace () +{ + + local -a fileNames=(); + for arg in "$@"; + do + if [[ "$arg" = "--"* ]]; then + break; + fi; + fileNames+=("$arg"); + shift; + done; + if ! [[ "${#fileNames[@]}" -gt 0 ]]; then + echo "substituteInPlace called without any files to operate on (files must come before options!)" 1>&2; + return 1; + fi; + for file in "${fileNames[@]}"; + do + substitute "$file" "$file" "$@"; + done +} +addEnvHooks () +{ + + local depHostOffset="$1"; + shift; + local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]"; + local pkgHookVar; + for pkgHookVar in "${!pkgHookVarsSlice}"; + do + eval "${pkgHookVar}s"'+=("$@")'; + done +} +consumeEntire () +{ + + if IFS='' read -r -d '' "$1"; then + echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2; + return 1; + fi +} +genericBuild () +{ + + export GZIP_NO_TIMESTAMPS=1; + if [ -f "${buildCommandPath:-}" ]; then + source "$buildCommandPath"; + return; + fi; + if [ -n "${buildCommand:-}" ]; then + eval "$buildCommand"; + return; + fi; + definePhases; + for curPhase in ${phases[*]}; + do + runPhase "$curPhase"; + done +} +appendToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if type=$(declare -p "$1" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2; + return 1 + ;; + -a*) + useArray=true + ;; + *) + useArray=false + ;; + esac; + fi; + shift; + if $useArray; then + nameref=(${nameref+"${nameref[@]}"} "$@"); + else + nameref="${nameref-} $*"; + fi +} +runPhase () +{ + + local curPhase="$*"; + if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then + return; + fi; + if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then + return; + fi; + if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then + return; + fi; + if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then + return; + fi; + if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then + return; + fi; + if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then + return; + fi; + showPhaseHeader "$curPhase"; + dumpVars; + local startTime endTime; + startTime=$(date +"%s"); + eval "${!curPhase:-$curPhase}"; + endTime=$(date +"%s"); + showPhaseFooter "$curPhase" "$startTime" "$endTime"; + if [ "$curPhase" = unpackPhase ]; then + [ -n "${sourceRoot:-}" ] && chmod +x -- "${sourceRoot}"; + cd -- "${sourceRoot:-.}"; + fi +} +updateAutotoolsGnuConfigScriptsPhase () +{ + + if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then + return; + fi; + for script in config.sub config.guess; + do + for f in $(find . -type f -name "$script"); + do + echo "Updating Autotools / GNU config script to a newer upstream version: $f"; + cp -f "/nix/store/zmvllxxx62iys7vpyg020rni3v29bcxi-gnu-config-2024-01-01/$script" "$f"; + done; + done +} +_moveLib64 () +{ + + if [ "${dontMoveLib64-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then + return; + fi; + echo "moving $prefix/lib64/* to $prefix/lib"; + mkdir -p $prefix/lib; + shopt -s dotglob; + for i in $prefix/lib64/*; + do + mv --no-clobber "$i" $prefix/lib; + done; + shopt -u dotglob; + rmdir $prefix/lib64; + ln -s lib $prefix/lib64 +} +substituteAllInPlace () +{ + + local fileName="$1"; + shift; + substituteAll "$fileName" "$fileName" "$@" +} +PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}" +XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}" + +eval "${shellHook:-}" +shopt -s expand_aliases + +exec /tmp/devenv-env7BrCS2/script \ No newline at end of file diff --git a/.devenv/shell-e893b9157f2d2e31.sh b/.devenv/shell-e893b9157f2d2e31.sh new file mode 100755 index 0000000..09bd4a6 --- /dev/null +++ b/.devenv/shell-e893b9157f2d2e31.sh @@ -0,0 +1,2265 @@ +if [ -n "$PS1" ] && [ -e $HOME/.bashrc ]; then + source $HOME/.bashrc; +fi + +shopt -u expand_aliases +PATH=${PATH:-} +nix_saved_PATH="$PATH" +XDG_DATA_DIRS=${XDG_DATA_DIRS:-} +nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS" +defaultNativeBuildInputs='/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2 /nix/store/xknj6c33cc197s60ry0i69vdkmaizrs1-update-autotools-gnu-config-scripts-hook /nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh /nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh /nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh /nix/store/p3l1a5y7nllfyrjn2krlwgcc3z0cd3fq-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh /nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh /nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +declare -a pkgsBuildHost=('/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev' '/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9' '/nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3' '/nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0' '/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13' '/nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2' '/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2' '/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2' '/nix/store/xknj6c33cc197s60ry0i69vdkmaizrs1-update-autotools-gnu-config-scripts-hook' '/nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh' '/nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh' '/nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh' '/nix/store/p3l1a5y7nllfyrjn2krlwgcc3z0cd3fq-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh' '/nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh' '/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh' '/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' '/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46' ) +propagatedBuildInputs='' +export propagatedBuildInputs +HOSTTYPE='x86_64' +depsBuildBuild='' +export depsBuildBuild +MACHTYPE='x86_64-pc-linux-gnu' +name='devenv-shell-env' +export name +OSTYPE='linux-gnu' +BASH='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +buildInputs='' +export buildInputs +mesonFlags='' +export mesonFlags +prefix='/nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env' +stdenv='/nix/store/jci7gw90lh2vdjaxkb6pzf9xp4v08wzs-stdenv-linux' +export stdenv +DEVENV_DOTFILE='/home/user01/Projects/score-system/.devenv' +export DEVENV_DOTFILE +strictDeps='' +export strictDeps +declare -a unpackCmdHooks=('_defaultUnpack' ) +declare -a propagatedTargetDepFiles=('propagated-target-target-deps' ) +outputInclude='out' +SIZE='size' +export SIZE +OLDPWD='' +export OLDPWD +HOST_PATH='/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0/bin:/nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12/bin:/nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9/bin:/nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12/bin:/nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0/bin:/nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35/bin:/nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14/bin:/nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin/bin:/nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1/bin:/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin:/nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8/bin:/nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin/bin:/nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47/bin' +export HOST_PATH +READELF='readelf' +export READELF +declare -a envHostTargetHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +AR='ar' +export AR +out='/nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env' +export out +propagatedNativeBuildInputs='' +export propagatedNativeBuildInputs +depsTargetTarget='' +export depsTargetTarget +builder='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export builder +defaultBuildInputs='' +outputDoc='out' +declare -a pkgsBuildBuild=() +OPTERR='1' +declare -a envTargetTargetHooks=() +NIX_STORE='/nix/store' +export NIX_STORE +outputMan='out' +NIX_LDFLAGS='-rpath /nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env/lib ' +export NIX_LDFLAGS +declare -a preConfigureHooks=('_multioutConfig' ) +depsBuildBuildPropagated='' +export depsBuildBuildPropagated +STRIP='strip' +export STRIP +NIX_BINTOOLS='/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46' +export NIX_BINTOOLS +DEVENV_STATE='/home/user01/Projects/score-system/.devenv/state' +export DEVENV_STATE +DEVENV_TASK_FILE='/nix/store/vsp3fis0yyfrw5zdw1r908cz5wkwy1qs-tasks.json' +export DEVENV_TASK_FILE +pkg='/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +shell='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export shell +SOURCE_DATE_EPOCH='315532800' +export SOURCE_DATE_EPOCH +DEVENV_TASKS='' +export DEVENV_TASKS +declare -a postFixupHooks=('noBrokenSymlinksInAllOutputs' '_makeSymlinksRelative' '_multioutPropagateDev' ) +NIX_CC='/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +export NIX_CC +NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +nativeBuildInputs='/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev /nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3 /nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0 /nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13 /nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2 /nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2' +export nativeBuildInputs +STRINGS='strings' +export STRINGS +PKG_CONFIG='pkg-config' +export PKG_CONFIG +outputDev='out' +_substituteStream_has_warned_replace_deprecation='false' +declare -a pkgsHostTarget=() +cmakeFlags='' +export cmakeFlags +NIX_ENFORCE_NO_NATIVE='1' +export NIX_ENFORCE_NO_NATIVE +depsHostHostPropagated='' +export depsHostHostPropagated +LD='ld' +export LD +outputInfo='out' +PATH='/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9/bin:/nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3/bin:/nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0/bin:/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13/bin:/nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2/bin:/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2/bin:/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2/bin:/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0/bin:/nix/store/qxaq7jz61a6zkr2mq49i0zvqip2m2jj8-gcc-15.2.0/bin:/nix/store/bsh7n2nx8ndmm1mmww6v2h4851nalj13-glibc-2.42-61-bin/bin:/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46/bin:/nix/store/s2946bl9ciwzhafd66jhansrmxq9xhqm-binutils-2.46/bin:/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0/bin:/nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12/bin:/nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9/bin:/nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12/bin:/nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0/bin:/nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35/bin:/nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14/bin:/nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin/bin:/nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1/bin:/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin:/nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8/bin:/nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin/bin:/nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47/bin' +export PATH +patches='' +export patches +initialPath='/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11 /nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0 /nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12 /nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9 /nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12 /nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0 /nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35 /nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14 /nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin /nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1 /nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9 /nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8 /nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin /nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47' +PKG_CONFIG_PATH='/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/lib/pkgconfig' +export PKG_CONFIG_PATH +declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' ) +declare -a envHostHostHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +outputDevdoc='REMOVE' +declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' ) +declare -a pkgsTargetTarget=() +DEVENV_RUNTIME='/run/user/1000/devenv-3f21a4e' +export DEVENV_RUNTIME +declare -a pkgsBuildTarget=() +NIX_BUILD_CORES='4' +export NIX_BUILD_CORES +RANLIB='ranlib' +export RANLIB +depsTargetTargetPropagated='' +export depsTargetTargetPropagated +outputBin='out' +CXX='g++' +export CXX +DEVENV_ROOT='/home/user01/Projects/score-system' +export DEVENV_ROOT +depsBuildTargetPropagated='' +export depsBuildTargetPropagated +system='x86_64-linux' +export system +outputs='out' +export outputs +outputDevman='out' +dontAddDisableDepTrack='1' +export dontAddDisableDepTrack +NIX_HARDENING_ENABLE='bindnow format fortify fortify3 libcxxhardeningfast pic relro stackclashprotection stackprotector strictflexarrays1 strictoverflow zerocallusedregs' +export NIX_HARDENING_ENABLE +depsHostHost='' +export depsHostHost +LINENO='79' +shellHook=' + + +# Override temp directories that stdenv set to NIX_BUILD_TOP. +# Only reset those that still point to the Nix build dir; leave +# any user/CI-supplied value intact so child processes (e.g. +# `devenv processes wait`) compute the same runtime directory. +for var in TMP TMPDIR TEMP TEMPDIR; do + if [ -n "${!var-}" ] && [ "${!var}" = "${NIX_BUILD_TOP-}" ]; then + export "$var"=/tmp + fi +done +if [ -n "${NIX_BUILD_TOP-}" ]; then + unset NIX_BUILD_TOP +fi + +# set path to locales on non-NixOS Linux hosts +if [ -z "${LOCALE_ARCHIVE-}" ]; then + export LOCALE_ARCHIVE=/nix/store/3b5l8c2jipz2zgki0wc50vzwa2r9834a-glibc-locales-2.42-61/lib/locale/locale-archive +fi + + +# direnv helper +if [ ! type -p direnv &>/dev/null && -f .envrc ]; then + echo "An .envrc file was detected, but the direnv command is not installed." + echo "To use this configuration, please install direnv: https://direnv.net/docs/installation.html" +fi + +mkdir -p "$DEVENV_STATE" +if [ ! -L "$DEVENV_DOTFILE/profile" ] || [ "$(/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin/readlink $DEVENV_DOTFILE/profile)" != "/nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile" ] +then + ln -snf /nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile "$DEVENV_DOTFILE/profile" +fi +unset HOST_PATH NIX_BUILD_CORES __structuredAttrs buildInputs buildPhase builder depsBuildBuild depsBuildBuildPropagated depsBuildTarget depsBuildTargetPropagated depsHostHost depsHostHostPropagated depsTargetTarget depsTargetTargetPropagated dontAddDisableDepTrack doCheck doInstallCheck nativeBuildInputs out outputs patches phases preferLocalBuild propagatedBuildInputs propagatedNativeBuildInputs shell shellHook stdenv strictDeps + +mkdir -p /run/user/1000/devenv-3f21a4e +ln -snf /run/user/1000/devenv-3f21a4e /home/user01/Projects/score-system/.devenv/run + +echo "💡 A dotenv file was found, while dotenv integration is currently not enabled." >&2 +echo >&2 +echo " To enable it, add \`dotenv.enable = true;\` to your devenv.nix file." >&2; +echo " To disable this hint, add \`dotenv.disableHint = true;\` to your devenv.nix file." >&2; +echo >&2 +echo "See https://devenv.sh/integrations/dotenv/ for more information." >&2; + + + +# Check whether the direnv integration is out of date. +{ + if [[ ":${DIRENV_ACTIVE-}:" == *":/home/user01/Projects/score-system:"* ]]; then + if [[ ! "${DEVENV_NO_DIRENVRC_OUTDATED_WARNING-}" == 1 && ! "${DEVENV_DIRENVRC_ROLLING_UPGRADE-}" == 1 ]]; then + if [[ ${DEVENV_DIRENVRC_VERSION:-0} -lt 2 ]]; then + direnv_line=$(grep --color=never -E "source_url.*cachix/devenv" .envrc || echo "") + + echo "✨ The direnv integration in your .envrc is out of date." + echo "" + echo -n "RECOMMENDED: devenv can now auto-upgrade the direnv integration. " + if [[ -n "$direnv_line" ]]; then + echo "To enable this feature, replace the following line in your .envrc:" + echo "" + echo " $direnv_line" + echo "" + echo "with:" + echo "" + echo " eval \"\$(devenv direnvrc)\"" + else + echo "To enable this feature, replace the \`source_url\` line that fetches the direnvrc integration in your .envrc with:" + echo "" + echo " eval \"$(devenv direnvrc)\"" + fi + echo "" + echo "If you prefer to continue managing the integration manually, follow the upgrade instructions at https://devenv.sh/integrations/direnv/." + echo "" + echo "To disable this message:" + echo "" + echo " Add the following environment to your .envrc before \`use devenv\`:" + echo "" + echo " export DEVENV_NO_DIRENVRC_OUTDATED_WARNING=1" + echo "" + echo " Or set the following option in your devenv configuration:" + echo "" + echo " devenv.warnOnNewVersion = false;" + echo "" + fi + fi + fi +} >&2 + +' +export shellHook +OBJDUMP='objdump' +export OBJDUMP +XDG_DATA_DIRS='/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9/share:/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13/share:/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2/share:/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2/share' +export XDG_DATA_DIRS +OBJCOPY='objcopy' +export OBJCOPY +doCheck='' +export doCheck +declare -a envBuildTargetHooks=() +outputLib='out' +preferLocalBuild='1' +export preferLocalBuild +CC='gcc' +export CC +configureFlags='' +export configureFlags +declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' ) +AS='as' +export AS +IN_NIX_SHELL='impure' +export IN_NIX_SHELL +NIX_NO_SELF_RPATH='1' +declare -a envBuildHostHooks=() +DEVENV_PROFILE='/nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile' +export DEVENV_PROFILE +IFS=' +' +__structuredAttrs='' +export __structuredAttrs +declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' ) +depsBuildTarget='' +export depsBuildTarget +NM='nm' +export NM +NIX_CFLAGS_COMPILE=' -frandom-seed=y5k9a31603 -isystem /nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/include -isystem /nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/include' +export NIX_CFLAGS_COMPILE +PS4='+ ' +CONFIG_SHELL='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export CONFIG_SHELL +declare -a pkgsHostHost=() +doInstallCheck='' +export doInstallCheck +phases='buildPhase' +export phases +declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' ) +NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +buildPhase='{ echo "------------------------------------------------------------"; + echo " WARNING: the existence of this path is not guaranteed."; + echo " It is an internal implementation detail for pkgs.mkShell."; + echo "------------------------------------------------------------"; + echo; + # Record all build inputs as runtime dependencies + export; +} >> "$out" +' +export buildPhase +declare -a envBuildBuildHooks=() +hardeningDisable='' +export hardeningDisable +DEVSHELL_NAME='󰏖 devenv/#fab387| Bun/yellow' +export DEVSHELL_NAME +preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase' +_updateSourceDateEpochFromSourceRoot () +{ + + if [ -n "$sourceRoot" ]; then + updateSourceDateEpoch "$sourceRoot"; + fi +} +substituteAll () +{ + + local input="$1"; + local output="$2"; + local -a args=(); + _allFlags; + substitute "$input" "$output" "${args[@]}" +} +_pruneLibtoolFiles () +{ + + if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; +} +isScript () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 2 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" =~ \#! ]]; then + return 0; + else + return 1; + fi +} +_nixLogWithLevel () +{ + + [[ -z ${NIX_LOG_FD-} || ${NIX_DEBUG:-0} -lt ${1:?} ]] && return 0; + local logLevel; + case "${1:?}" in + 0) + logLevel=ERROR + ;; + 1) + logLevel=WARN + ;; + 2) + logLevel=NOTICE + ;; + 3) + logLevel=INFO + ;; + 4) + logLevel=TALKATIVE + ;; + 5) + logLevel=CHATTY + ;; + 6) + logLevel=DEBUG + ;; + 7) + logLevel=VOMIT + ;; + *) + echo "_nixLogWithLevel: called with invalid log level: ${1:?}" >&"$NIX_LOG_FD"; + return 1 + ;; + esac; + local callerName="${FUNCNAME[2]}"; + if [[ $callerName == "_callImplicitHook" ]]; then + callerName="${hookName:?}"; + fi; + printf "%s: %s: %s\n" "$logLevel" "$callerName" "${2:?}" >&"$NIX_LOG_FD" +} +_assignFirst () +{ + + local varName="$1"; + local _var; + local REMOVE=REMOVE; + shift; + for _var in "$@"; + do + if [ -n "${!_var-}" ]; then + eval "${varName}"="${_var}"; + return; + fi; + done; + echo; + echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}."; + echo " The following variables were all unset or empty:"; + echo " $*"; + if [ -z "${out:-}" ]; then + echo ' If you do not want an "out" output in your derivation, make sure to define'; + echo ' the other specific required outputs. This can be achieved by picking one'; + echo " of the above as an output."; + echo ' You do not have to remove "out" if you want to have a different default'; + echo ' output, because the first output is taken as a default.'; + echo; + fi; + return 1 +} +consumeEntire () +{ + + if IFS='' read -r -d '' "$1"; then + echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2; + return 1; + fi +} +nixNoticeLog () +{ + + _nixLogWithLevel 2 "$*" +} +checkPhase () +{ + + runHook preCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom checkPhase, doing nothing"; + runHook postCheck; + return; + fi; + if [[ -z "${checkTarget:-}" ]]; then + if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then + checkTarget="check"; + else + if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then + checkTarget="test"; + fi; + fi; + fi; + if [[ -z "${checkTarget:-}" ]]; then + echo "no check/test target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray checkFlags=VERBOSE=y checkFlagsArray checkTarget; + echoCmd 'check flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postCheck +} +runHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook; + for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _logHook "$hookName" "$hook" "$@"; + _eval "$hook" "$@"; + done; + return 0 +} +installCheckPhase () +{ + + runHook preInstallCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom installCheckPhase, doing nothing"; + else + if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then + echo "no installcheck target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray installCheckTarget=installcheck; + echoCmd 'installcheck flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + fi; + runHook postInstallCheck +} +_moveLib64 () +{ + + if [ "${dontMoveLib64-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then + return; + fi; + echo "moving $prefix/lib64/* to $prefix/lib"; + mkdir -p $prefix/lib; + shopt -s dotglob; + for i in $prefix/lib64/*; + do + mv --no-clobber "$i" $prefix/lib; + done; + shopt -u dotglob; + rmdir $prefix/lib64; + ln -s lib $prefix/lib64 +} +substituteInPlace () +{ + + local -a fileNames=(); + for arg in "$@"; + do + if [[ "$arg" = "--"* ]]; then + break; + fi; + fileNames+=("$arg"); + shift; + done; + if ! [[ "${#fileNames[@]}" -gt 0 ]]; then + echo "substituteInPlace called without any files to operate on (files must come before options!)" 1>&2; + return 1; + fi; + for file in "${fileNames[@]}"; + do + substitute "$file" "$file" "$@"; + done +} +_doStrip () +{ + + local -ra flags=(dontStripHost dontStripTarget); + local -ra debugDirs=(stripDebugList stripDebugListTarget); + local -ra allDirs=(stripAllList stripAllListTarget); + local -ra stripCmds=(STRIP STRIP_FOR_TARGET); + local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET); + stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin Applications Library/Frameworks}; + stripDebugListTarget=${stripDebugListTarget[*]:-}; + stripAllList=${stripAllList[*]:-}; + stripAllListTarget=${stripAllListTarget[*]:-}; + local i; + for i in ${!stripCmds[@]}; + do + local -n flag="${flags[$i]}"; + local -n debugDirList="${debugDirs[$i]}"; + local -n allDirList="${allDirs[$i]}"; + local -n stripCmd="${stripCmds[$i]}"; + local -n ranlibCmd="${ranlibCmds[$i]}"; + if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then + continue; + fi; + stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}"; + stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}"; + done +} +_activatePkgs () +{ + + local hostOffset targetOffset; + local pkg; + for hostOffset in "${allPlatOffsets[@]}"; + do + local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}"; + for targetOffset in "${allPlatOffsets[@]}"; + do + (( hostOffset <= targetOffset )) || continue; + local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + activatePackage "$pkg" "$hostOffset" "$targetOffset"; + done; + done; + done +} +addEnvHooks () +{ + + local depHostOffset="$1"; + shift; + local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]"; + local pkgHookVar; + for pkgHookVar in "${!pkgHookVarsSlice}"; + do + eval "${pkgHookVar}s"'+=("$@")'; + done +} +nixInfoLog () +{ + + _nixLogWithLevel 3 "$*" +} +nixWarnLog () +{ + + _nixLogWithLevel 1 "$*" +} +_defaultUnpack () +{ + + local fn="$1"; + local destination; + if [ -d "$fn" ]; then + destination="$(stripHash "$fn")"; + if [ -e "$destination" ]; then + echo "Cannot copy $fn to $destination: destination already exists!"; + echo "Did you specify two \"srcs\" with the same \"name\"?"; + return 1; + fi; + cp -r --preserve=timestamps --reflink=auto -- "$fn" "$destination"; + else + case "$fn" in + *.tar.xz | *.tar.lzma | *.txz) + ( XZ_OPT="--threads=$NIX_BUILD_CORES" xz -d < "$fn"; + true ) | tar xf - --mode=+w --warning=no-timestamp + ;; + *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz) + tar xf "$fn" --mode=+w --warning=no-timestamp + ;; + *) + return 1 + ;; + esac; + fi +} +stripDirs () +{ + + local cmd="$1"; + local ranlibCmd="$2"; + local paths="$3"; + local stripFlags="$4"; + local excludeFlags=(); + local pathsNew=; + [ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1; + [ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1; + local pattern; + if [ -n "${stripExclude:-}" ]; then + for pattern in "${stripExclude[@]}"; + do + excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')'); + done; + fi; + local p; + for p in ${paths}; + do + if [ -e "$prefix/$p" ]; then + pathsNew="${pathsNew} $prefix/$p"; + fi; + done; + paths=${pathsNew}; + if [ -n "${paths}" ]; then + echo "stripping (with command $cmd and flags $stripFlags) in $paths"; + local striperr; + striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')"; + find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -printf '%D-%i,%p\0' | sort -t, -k1,1 -u -z | cut -d, -f2- -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?; + [[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 ); + rm "$striperr"; + find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2> /dev/null; + fi +} +auditTmpdir () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "checking for references to $TMPDIR/ in $dir..."; + local tmpdir elf_fifo script_fifo; + tmpdir="$(mktemp -d)"; + elf_fifo="$tmpdir/elf"; + script_fifo="$tmpdir/script"; + mkfifo "$elf_fifo" "$script_fifo"; + ( find "$dir" -type f -not -path '*/.build-id/*' -print0 | while IFS= read -r -d '' file; do + if isELF "$file"; then + printf '%s\0' "$file" 1>&3; + else + if isScript "$file"; then + filename=${file##*/}; + dir=${file%/*}; + if [ -e "$dir/.$filename-wrapped" ]; then + printf '%s\0' "$file" 1>&4; + fi; + fi; + fi; + done; + exec 3>&- 4>&- ) 3> "$elf_fifo" 4> "$script_fifo" & ( xargs -0 -r -P "$NIX_BUILD_CORES" -n 1 sh -c ' + if { printf :; patchelf --print-rpath "$1"; } | grep -q -F ":$TMPDIR/"; then + echo "RPATH of binary $1 contains a forbidden reference to $TMPDIR/" + exit 1 + fi + ' _ < "$elf_fifo" ) & local pid_elf=$!; + local pid_script; + ( xargs -0 -r -P "$NIX_BUILD_CORES" -n 1 sh -c ' + if grep -q -F "$TMPDIR/" "$1"; then + echo "wrapper script $1 contains a forbidden reference to $TMPDIR/" + exit 1 + fi + ' _ < "$script_fifo" ) & local pid_script=$!; + wait "$pid_elf" || { + echo "Some binaries contain forbidden references to $TMPDIR/. Check the error above!"; + exit 1 + }; + wait "$pid_script" || { + echo "Some scripts contain forbidden references to $TMPDIR/. Check the error above!"; + exit 1 + }; + rm -r "$tmpdir" +} +dumpVars () +{ + + if [[ "${noDumpEnvVars:-0}" != 1 && -d "$NIX_BUILD_TOP" ]]; then + local old_umask; + old_umask=$(umask); + umask 0077; + export 2> /dev/null > "$NIX_BUILD_TOP/env-vars"; + umask "$old_umask"; + fi +} +getHostRoleEnvHook () +{ + + getRole "$depHostOffset" +} +printLines () +{ + + (( "$#" > 0 )) || return 0; + printf '%s\n' "$@" +} +_overrideFirst () +{ + + if [ -z "${!1-}" ]; then + _assignFirst "$@"; + fi +} +printPhases () +{ + + definePhases; + local phase; + for phase in ${phases[*]}; + do + printf '%s\n' "$phase"; + done +} +stripHash () +{ + + local strippedName casematchOpt=0; + strippedName="$(basename -- "$1")"; + shopt -q nocasematch && casematchOpt=1; + shopt -u nocasematch; + if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then + echo "${strippedName:33}"; + else + echo "$strippedName"; + fi; + if (( casematchOpt )); then + shopt -s nocasematch; + fi +} +genericBuild () +{ + + export GZIP_NO_TIMESTAMPS=1; + if [ -f "${buildCommandPath:-}" ]; then + source "$buildCommandPath"; + return; + fi; + if [ -n "${buildCommand:-}" ]; then + eval "$buildCommand"; + return; + fi; + definePhases; + for curPhase in ${phases[*]}; + do + runPhase "$curPhase"; + done +} +_eval () +{ + + if declare -F "$1" > /dev/null 2>&1; then + "$@"; + else + eval "$1"; + fi +} +substituteStream () +{ + + local var=$1; + local description=$2; + shift 2; + while (( "$#" )); do + local replace_mode="$1"; + case "$1" in + --replace) + if ! "$_substituteStream_has_warned_replace_deprecation"; then + echo "substituteStream() in derivation $name: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. ($description)" 1>&2; + _substituteStream_has_warned_replace_deprecation=true; + fi; + replace_mode='--replace-warn' + ;& + --replace-quiet | --replace-warn | --replace-fail) + pattern="$2"; + replacement="$3"; + shift 3; + if ! [[ "${!var}" == *"$pattern"* ]]; then + if [ "$replace_mode" == --replace-warn ]; then + printf "substituteStream() in derivation $name: WARNING: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2; + else + if [ "$replace_mode" == --replace-fail ]; then + printf "substituteStream() in derivation $name: ERROR: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2; + return 1; + fi; + fi; + fi; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var) + local varName="$2"; + shift 2; + if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then + echo "substituteStream() in derivation $name: ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2; + return 1; + fi; + if [ -z ${!varName+x} ]; then + echo "substituteStream() in derivation $name: ERROR: variable \$$varName is unset" 1>&2; + return 1; + fi; + pattern="@$varName@"; + replacement="${!varName}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var-by) + pattern="@$2@"; + replacement="$3"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + shift 3 + ;; + *) + echo "substituteStream() in derivation $name: ERROR: Invalid command line argument: $1" 1>&2; + return 1 + ;; + esac; + done; + printf "%s" "${!var}" +} +patchShebangs () +{ + + local pathName; + local update=false; + while [[ $# -gt 0 ]]; do + case "$1" in + --host) + pathName=HOST_PATH; + shift + ;; + --build) + pathName=PATH; + shift + ;; + --update) + update=true; + shift + ;; + --) + shift; + break + ;; + -* | --*) + echo "Unknown option $1 supplied to patchShebangs" 1>&2; + return 1 + ;; + *) + break + ;; + esac; + done; + echo "patching script interpreter paths in $@"; + local f; + local oldPath; + local newPath; + local arg0; + local args; + local oldInterpreterLine; + local newInterpreterLine; + if [[ $# -eq 0 ]]; then + echo "No arguments supplied to patchShebangs" 1>&2; + return 0; + fi; + local f; + while IFS= read -r -d '' f; do + isScript "$f" || continue; + read -r oldInterpreterLine < "$f" || [ "$oldInterpreterLine" ]; + read -r oldPath arg0 args <<< "${oldInterpreterLine:2}"; + if [[ -z "${pathName:-}" ]]; then + if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then + pathName=HOST_PATH; + else + pathName=PATH; + fi; + fi; + if [[ "$oldPath" == *"/bin/env" ]]; then + if [[ $arg0 == "-S" ]]; then + arg0=${args%% *}; + [[ "$args" == *" "* ]] && args=${args#* } || args=; + newPath="$(PATH="${!pathName}" type -P "env" || true)"; + args="-S $(PATH="${!pathName}" type -P "$arg0" || true) $args"; + else + if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then + echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2; + exit 1; + else + newPath="$(PATH="${!pathName}" type -P "$arg0" || true)"; + fi; + fi; + else + if [[ -z $oldPath ]]; then + oldPath="/bin/sh"; + fi; + newPath="$(PATH="${!pathName}" type -P "$(basename "$oldPath")" || true)"; + args="$arg0 $args"; + fi; + newInterpreterLine="$newPath $args"; + newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}}; + if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then + if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then + echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\""; + escapedInterpreterLine=${newInterpreterLine//\\/\\\\}; + timestamp=$(stat --printf "%y" "$f"); + tmpFile=$(mktemp -t patchShebangs.XXXXXXXXXX); + sed -e "1 s|.*|#\!$escapedInterpreterLine|" "$f" > "$tmpFile"; + local restoreReadOnly; + if [[ ! -w "$f" ]]; then + chmod +w "$f"; + restoreReadOnly=true; + fi; + cat "$tmpFile" > "$f"; + rm "$tmpFile"; + if [[ -n "${restoreReadOnly:-}" ]]; then + chmod -w "$f"; + fi; + touch --date "$timestamp" "$f"; + fi; + fi; + done < <(find "$@" -type f -perm -0100 -print0) +} +_multioutConfig () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then + return; + fi; + if [ -z "${shareDocName:-}" ]; then + local confScript="${configureScript:-}"; + if [ -z "$confScript" ] && [ -x ./configure ]; then + confScript=./configure; + fi; + if [ -f "$confScript" ]; then + local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")"; + fi; + if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then + shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"; + fi; + fi; + prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale; + prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal +} +exitHandler () +{ + + exitCode="$?"; + set +e; + if [ -n "${showBuildStats:-}" ]; then + read -r -d '' -a buildTimes < <(times); + echo "build times:"; + echo "user time for the shell ${buildTimes[0]}"; + echo "system time for the shell ${buildTimes[1]}"; + echo "user time for all child processes ${buildTimes[2]}"; + echo "system time for all child processes ${buildTimes[3]}"; + fi; + if (( "$exitCode" != 0 )); then + runHook failureHook; + if [ -n "${succeedOnFailure:-}" ]; then + echo "build failed with exit code $exitCode (ignored)"; + mkdir -p "$out/nix-support"; + printf "%s" "$exitCode" > "$out/nix-support/failed"; + exit 0; + fi; + else + runHook exitHook; + fi; + return "$exitCode" +} +_addRpathPrefix () +{ + + if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then + export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}"; + fi +} +_moveSbin () +{ + + if [ "${dontMoveSbin-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then + return; + fi; + echo "moving $prefix/sbin/* to $prefix/bin"; + mkdir -p $prefix/bin; + shopt -s dotglob; + for i in $prefix/sbin/*; + do + mv "$i" $prefix/bin; + done; + shopt -u dotglob; + rmdir $prefix/sbin; + ln -s bin $prefix/sbin +} +getTargetRole () +{ + + getRole "$targetOffset" +} +nixDebugLog () +{ + + _nixLogWithLevel 6 "$*" +} +nixTalkativeLog () +{ + + _nixLogWithLevel 4 "$*" +} +nixVomitLog () +{ + + _nixLogWithLevel 7 "$*" +} +moveToOutput () +{ + + local patt="$1"; + local dstOut="$2"; + local output; + for output in $(getAllOutputNames); + do + if [ "${!output}" = "$dstOut" ]; then + continue; + fi; + local srcPath; + for srcPath in "${!output}"/$patt; + do + if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then + continue; + fi; + if [ "$dstOut" = REMOVE ]; then + echo "Removing $srcPath"; + rm -r "$srcPath"; + else + local dstPath="$dstOut${srcPath#${!output}}"; + echo "Moving $srcPath to $dstPath"; + if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then + rmdir "$srcPath" --ignore-fail-on-non-empty; + if [ -d "$srcPath" ]; then + mv -t "$dstPath" "$srcPath"/*; + rmdir "$srcPath"; + fi; + else + mkdir -p "$(readlink -m "$dstPath/..")"; + mv "$srcPath" "$dstPath"; + fi; + fi; + local srcParent="$(readlink -m "$srcPath/..")"; + if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then + echo "Removing empty $srcParent/ and (possibly) its parents"; + rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true; + fi; + done; + done +} +patchELF () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "shrinking RPATHs of ELF executables and libraries in $dir"; + local i; + while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if ! isELF "$i"; then + continue; + fi; + echo "shrinking $i"; + patchelf --shrink-rpath "$i" || true; + done < <(find "$dir" -type f -print0) +} +_addToEnv () +{ + + local depHostOffset depTargetOffset; + local pkg; + for depHostOffset in "${allPlatOffsets[@]}"; + do + local hookVar="${pkgHookVarVars[depHostOffset + 1]}"; + local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}"; + for depTargetOffset in "${allPlatOffsets[@]}"; + do + (( depHostOffset <= depTargetOffset )) || continue; + local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"; + if [[ -z "${strictDeps-}" ]]; then + local visitedPkgs=""; + for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}"; + do + if [[ "$visitedPkgs" = *"$pkg"* ]]; then + continue; + fi; + runHook "${!hookRef}" "$pkg"; + visitedPkgs+=" $pkg"; + done; + else + local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + runHook "${!hookRef}" "$pkg"; + done; + fi; + done; + done +} +installPhase () +{ + + runHook preInstall; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom installPhase, doing nothing"; + runHook postInstall; + return; + else + foundMakefile=1; + fi; + if [ -n "$prefix" ]; then + mkdir -p "$prefix"; + fi; + local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray installFlags installFlagsArray installTargets=install; + echoCmd 'install flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + runHook postInstall +} +bintoolsWrapper_addLDVars () +{ + + local role_post; + getHostRoleEnvHook; + if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib64"; + fi; + if [[ -d "$1/lib" ]]; then + local -a glob=($1/lib/lib*); + if [ "${#glob[*]}" -gt 0 ]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib"; + fi; + fi +} +recordPropagatedDependencies () +{ + + declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated); + declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}"); + local propagatedInputsIndex; + for propagatedInputsIndex in "${!flatVars[@]}"; + do + local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]"; + local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}"; + [[ -n "${!propagatedInputsSlice}" ]] || continue; + mkdir -p "${!outputDev}/nix-support"; + printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile"; + done +} +showPhaseHeader () +{ + + local phase="$1"; + echo "Running phase: $phase"; + if [[ -z ${NIX_LOG_FD-} ]]; then + return; + fi; + printf "@nix { \"action\": \"setPhase\", \"phase\": \"%s\" }\n" "$phase" >&"$NIX_LOG_FD" +} +ccWrapper_addCVars () +{ + + local role_post; + getHostRoleEnvHook; + local found=; + if [ -d "$1/include" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include"; + found=1; + fi; + if [ -d "$1/Library/Frameworks" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks"; + found=1; + fi; + if [[ -n "" && -n ${NIX_STORE:-} && -n $found ]]; then + local scrubbed="$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${1#"$NIX_STORE"/*-}"; + export NIX_CFLAGS_COMPILE${role_post}+=" -fmacro-prefix-map=$1=$scrubbed"; + fi +} +compressManPages () +{ + + local dir="$1"; + if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then + return; + fi; + echo "gzipping man pages under $dir/share/man/"; + find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | xargs -0 -n1 -P "$NIX_BUILD_CORES" gzip -n -f; + find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do + local target; + target="$(readlink -f "$f")"; + if [ -f "$target".gz ]; then + ln -sf "$target".gz "$f".gz && rm "$f"; + fi; + done +} +getRole () +{ + + case $1 in + -1) + role_post='_FOR_BUILD' + ;; + 0) + role_post='' + ;; + 1) + role_post='_FOR_TARGET' + ;; + *) + echo "binutils-wrapper-2.46: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +isELF () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [ "$magic" = 'ELF' ]; then + return 0; + else + return 1; + fi +} +_moveToShare () +{ + + if [ -n "$__structuredAttrs" ]; then + if [ -z "${forceShare-}" ]; then + forceShare=(man doc info); + fi; + else + forceShare=(${forceShare:-man doc info}); + fi; + if [[ -z "$out" ]]; then + return; + fi; + for d in "${forceShare[@]}"; + do + if [ -d "$out/$d" ]; then + if [ -d "$out/share/$d" ]; then + echo "both $d/ and share/$d/ exist!"; + else + echo "moving $out/$d to $out/share/$d"; + mkdir -p $out/share; + mv $out/$d $out/share/; + fi; + fi; + done +} +addToSearchPath () +{ + + addToSearchPathWithCustomDelimiter ":" "$@" +} +_multioutDocs () +{ + + local REMOVE=REMOVE; + moveToOutput share/info "${!outputInfo}"; + moveToOutput share/doc "${!outputDoc}"; + moveToOutput share/gtk-doc "${!outputDevdoc}"; + moveToOutput share/devhelp/books "${!outputDevdoc}"; + moveToOutput share/man "${!outputMan}"; + moveToOutput share/man/man3 "${!outputDevman}" +} +_multioutPropagateDev () +{ + + if [ "$(getAllOutputNames)" = "out" ]; then + return; + fi; + local outputFirst; + for outputFirst in $(getAllOutputNames); + do + break; + done; + local propagaterOutput="$outputDev"; + if [ -z "$propagaterOutput" ]; then + propagaterOutput="$outputFirst"; + fi; + if [ -z "${propagatedBuildOutputs+1}" ]; then + local po_dirty="$outputBin $outputInclude $outputLib"; + set +o pipefail; + propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `; + set -o pipefail; + fi; + if [ -z "$propagatedBuildOutputs" ]; then + return; + fi; + mkdir -p "${!propagaterOutput}"/nix-support; + for output in $propagatedBuildOutputs; + do + echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs; + done +} +nixChattyLog () +{ + + _nixLogWithLevel 5 "$*" +} +noBrokenSymlinks () +{ + + local -r output="${1:?}"; + local path; + local pathParent; + local symlinkTarget; + local -i numDanglingSymlinks=0; + local -i numReflexiveSymlinks=0; + local -i numUnreadableSymlinks=0; + if [[ ! -e $output ]]; then + nixWarnLog "skipping non-existent output $output"; + return 0; + fi; + nixInfoLog "running on $output"; + while IFS= read -r -d '' path; do + pathParent="$(dirname "$path")"; + if ! symlinkTarget="$(readlink "$path")"; then + nixErrorLog "the symlink $path is unreadable"; + numUnreadableSymlinks+=1; + continue; + fi; + if [[ $symlinkTarget == /* ]]; then + nixInfoLog "symlink $path points to absolute target $symlinkTarget"; + else + nixInfoLog "symlink $path points to relative target $symlinkTarget"; + symlinkTarget="$(realpath --no-symlinks --canonicalize-missing "$pathParent/$symlinkTarget")"; + fi; + if [[ $symlinkTarget = "$TMPDIR"/* ]]; then + nixErrorLog "the symlink $path points to $TMPDIR directory: $symlinkTarget"; + numDanglingSymlinks+=1; + continue; + fi; + if [[ $symlinkTarget != "$NIX_STORE"/* ]]; then + nixInfoLog "symlink $path points outside the Nix store; ignoring"; + continue; + fi; + if [[ $path == "$symlinkTarget" ]]; then + nixErrorLog "the symlink $path is reflexive"; + numReflexiveSymlinks+=1; + else + if [[ ! -e $symlinkTarget ]]; then + nixErrorLog "the symlink $path points to a missing target: $symlinkTarget"; + numDanglingSymlinks+=1; + else + nixDebugLog "the symlink $path is irreflexive and points to a target which exists"; + fi; + fi; + done < <(find "$output" -type l -print0); + if ((numDanglingSymlinks > 0 || numReflexiveSymlinks > 0 || numUnreadableSymlinks > 0)); then + nixErrorLog "found $numDanglingSymlinks dangling symlinks, $numReflexiveSymlinks reflexive symlinks and $numUnreadableSymlinks unreadable symlinks"; + exit 1; + fi; + return 0 +} +patchPhase () +{ + + runHook prePatch; + local -a patchesArray; + concatTo patchesArray patches; + local -a flagsArray; + concatTo flagsArray patchFlags=-p1; + for i in "${patchesArray[@]}"; + do + echo "applying patch $i"; + local uncompress=cat; + case "$i" in + *.gz) + uncompress="gzip -d" + ;; + *.bz2) + uncompress="bzip2 -d" + ;; + *.xz) + uncompress="xz -d" + ;; + *.lzma) + uncompress="lzma -d" + ;; + esac; + $uncompress < "$i" 2>&1 | patch "${flagsArray[@]}"; + done; + runHook postPatch +} +pkgConfigWrapper_addPkgConfigPath () +{ + + local role_post; + getHostRoleEnvHook; + addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/lib/pkgconfig"; + addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/share/pkgconfig" +} +printWords () +{ + + (( "$#" > 0 )) || return 0; + printf '%s ' "$@" +} +showPhaseFooter () +{ + + local phase="$1"; + local startTime="$2"; + local endTime="$3"; + local delta=$(( endTime - startTime )); + (( delta < 30 )) && return; + local H=$((delta/3600)); + local M=$((delta%3600/60)); + local S=$((delta%60)); + echo -n "$phase completed in "; + (( H > 0 )) && echo -n "$H hours "; + (( M > 0 )) && echo -n "$M minutes "; + echo "$S seconds" +} +unpackPhase () +{ + + runHook preUnpack; + if [ -z "${srcs:-}" ]; then + if [ -z "${src:-}" ]; then + echo 'variable $src or $srcs should point to the source'; + exit 1; + fi; + srcs="$src"; + fi; + local -a srcsArray; + concatTo srcsArray srcs; + local dirsBefore=""; + for i in *; + do + if [ -d "$i" ]; then + dirsBefore="$dirsBefore $i "; + fi; + done; + for i in "${srcsArray[@]}"; + do + unpackFile "$i"; + done; + : "${sourceRoot=}"; + if [ -n "${setSourceRoot:-}" ]; then + runOneHook setSourceRoot; + else + if [ -z "$sourceRoot" ]; then + for i in *; + do + if [ -d "$i" ]; then + case $dirsBefore in + *\ $i\ *) + + ;; + *) + if [ -n "$sourceRoot" ]; then + echo "unpacker produced multiple directories"; + exit 1; + fi; + sourceRoot="$i" + ;; + esac; + fi; + done; + fi; + fi; + if [ -z "$sourceRoot" ]; then + echo "unpacker appears to have produced no directories"; + exit 1; + fi; + echo "source root is $sourceRoot"; + if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then + chmod -R u+w -- "$sourceRoot"; + fi; + runHook postUnpack +} +_multioutDevs () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then + return; + fi; + moveToOutput include "${!outputInclude}"; + moveToOutput lib/pkgconfig "${!outputDev}"; + moveToOutput share/pkgconfig "${!outputDev}"; + moveToOutput lib/cmake "${!outputDev}"; + moveToOutput share/aclocal "${!outputDev}"; + for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; + do + echo "Patching '$f' includedir to output ${!outputInclude}"; + sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f"; + done +} +updateAutotoolsGnuConfigScriptsPhase () +{ + + if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then + return; + fi; + for script in config.sub config.guess; + do + for f in $(find . -type f -name "$script"); + do + echo "Updating Autotools / GNU config script to a newer upstream version: $f"; + cp -f "/nix/store/zmvllxxx62iys7vpyg020rni3v29bcxi-gnu-config-2024-01-01/$script" "$f"; + done; + done +} +_callImplicitHook () +{ + + local def="$1"; + local hookName="$2"; + if declare -F "$hookName" > /dev/null; then + nixTalkativeLog "calling implicit '$hookName' function hook"; + "$hookName"; + else + if type -p "$hookName" > /dev/null; then + nixTalkativeLog "sourcing implicit '$hookName' script hook"; + source "$hookName"; + else + if [ -n "${!hookName:-}" ]; then + nixTalkativeLog "evaling implicit '$hookName' string hook"; + eval "${!hookName}"; + else + return "$def"; + fi; + fi; + fi +} +updateSourceDateEpoch () +{ + + local path="$1"; + [[ $path == -* ]] && path="./$path"; + local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ "%p"\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)); + local time="${res[0]//\.[0-9]*/}"; + local newestFile="${res[1]}"; + if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then + echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile"; + export SOURCE_DATE_EPOCH="$time"; + local now="$(date +%s)"; + if [ "$time" -gt $((now - 60)) ]; then + echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic"; + fi; + fi +} +_moveSystemdUserUnits () +{ + + if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then + return; + fi; + if [ ! -e "${prefix:?}/lib/systemd/user" ]; then + return; + fi; + local source="$prefix/lib/systemd/user"; + local target="$prefix/share/systemd/user"; + echo "moving $source/* to $target"; + mkdir -p "$target"; + ( shopt -s dotglob; + for i in "$source"/*; + do + mv "$i" "$target"; + done ); + rmdir "$source"; + ln -s "$target" "$source" +} +getAllOutputNames () +{ + + if [ -n "$__structuredAttrs" ]; then + echo "${!outputs[*]}"; + else + echo "$outputs"; + fi +} +getTargetRoleWrapper () +{ + + case $targetOffset in + -1) + export NIX_BINTOOLS_WRAPPER_TARGET_BUILD_x86_64_unknown_linux_gnu=1 + ;; + 0) + export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 + ;; + 1) + export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu=1 + ;; + *) + echo "binutils-wrapper-2.46: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +patchShebangsAuto () +{ + + if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then + if [[ "$output" != out && "$output" = "$outputDev" ]]; then + patchShebangs --build "$prefix"; + else + patchShebangs --host "$prefix"; + fi; + fi +} +runOneHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook ret=1; + for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _logHook "$hookName" "$hook" "$@"; + if _eval "$hook" "$@"; then + ret=0; + break; + fi; + done; + return "$ret" +} +runPhase () +{ + + local curPhase="$*"; + if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then + return; + fi; + if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then + return; + fi; + if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then + return; + fi; + if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then + return; + fi; + if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then + return; + fi; + if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then + return; + fi; + showPhaseHeader "$curPhase"; + dumpVars; + local startTime endTime; + startTime=$(date +"%s"); + eval "${!curPhase:-$curPhase}"; + endTime=$(date +"%s"); + showPhaseFooter "$curPhase" "$startTime" "$endTime"; + if [ "$curPhase" = unpackPhase ]; then + [ -n "${sourceRoot:-}" ] && chmod +x -- "${sourceRoot}"; + cd -- "${sourceRoot:-.}"; + fi +} +addToSearchPathWithCustomDelimiter () +{ + + local delimiter="$1"; + local varName="$2"; + local dir="$3"; + if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then + export "${varName}=${!varName:+${!varName}${delimiter}}${dir}"; + fi +} +concatTo () +{ + + local -; + set -o noglob; + local -n targetref="$1"; + shift; + local arg default name type; + for arg in "$@"; + do + IFS="=" read -r name default <<< "$arg"; + local -n nameref="$name"; + if [[ -z "${nameref[*]}" && -n "$default" ]]; then + targetref+=("$default"); + else + if type=$(declare -p "$name" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "concatTo(): ERROR: trying to use concatTo on an associative array." 1>&2; + return 1 + ;; + -a*) + targetref+=("${nameref[@]}") + ;; + *) + if [[ "$name" = *"Array" ]]; then + nixErrorLog "concatTo(): $name is not declared as array, treating as a singleton. This will become an error in future"; + targetref+=(${nameref+"${nameref[@]}"}); + else + targetref+=(${nameref-}); + fi + ;; + esac; + fi; + fi; + done +} +mapOffset () +{ + + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi +} +concatStringsSep () +{ + + local sep="$1"; + local name="$2"; + local type oldifs; + if type=$(declare -p "$name" 2> /dev/null); then + local -n nameref="$name"; + case "${type#* }" in + -A*) + echo "concatStringsSep(): ERROR: trying to use concatStringsSep on an associative array." 1>&2; + return 1 + ;; + -a*) + local IFS="$(printf '\036')" + ;; + *) + local IFS=" " + ;; + esac; + local ifs_separated="${nameref[*]}"; + echo -n "${ifs_separated//"$IFS"/"$sep"}"; + fi +} +distPhase () +{ + + runHook preDist; + local flagsArray=(); + concatTo flagsArray distFlags distFlagsArray distTarget=dist; + echo 'dist flags: %q' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + if [ "${dontCopyDist:-0}" != 1 ]; then + mkdir -p "$out/tarballs"; + cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs"; + fi; + runHook postDist +} +getTargetRoleEnvHook () +{ + + getRole "$depTargetOffset" +} +nixLog () +{ + + [[ -z ${NIX_LOG_FD-} ]] && return 0; + local callerName="${FUNCNAME[1]}"; + if [[ $callerName == "_callImplicitHook" ]]; then + callerName="${hookName:?}"; + fi; + printf "%s: %s\n" "$callerName" "$*" >&"$NIX_LOG_FD" +} +prependToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if type=$(declare -p "$1" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2; + return 1 + ;; + -a*) + useArray=true + ;; + *) + useArray=false + ;; + esac; + fi; + shift; + if $useArray; then + nameref=("$@" ${nameref+"${nameref[@]}"}); + else + nameref="$* ${nameref-}"; + fi +} +_makeSymlinksRelative () +{ + + local prefixes; + prefixes=(); + for output in $(getAllOutputNames); + do + [ ! -e "${!output}" ] && continue; + prefixes+=("${!output}"); + done; + find "${prefixes[@]}" -type l -printf '%H\0%p\0' | xargs -0 -n2 -r -P "$NIX_BUILD_CORES" sh -c ' + output="$1" + link="$2" + + linkTarget=$(readlink "$link") + + # only touch links that point inside the same output tree + [[ $linkTarget == "$output"/* ]] || exit 0 + + if [ ! -e "$linkTarget" ]; then + echo "the symlink $link is broken, it points to $linkTarget (which is missing)" + fi + + echo "making symlink relative: $link" + ln -snrf "$linkTarget" "$link" + ' _ +} +activatePackage () +{ + + local pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + if [ -f "$pkg" ]; then + nixTalkativeLog "sourcing setup hook '$pkg'"; + source "$pkg"; + fi; + if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then + addToSearchPath _PATH "$pkg/bin"; + fi; + if (( hostOffset <= -1 )); then + addToSearchPath _XDG_DATA_DIRS "$pkg/share"; + fi; + if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then + addToSearchPath _HOST_PATH "$pkg/bin"; + fi; + if [[ -f "$pkg/nix-support/setup-hook" ]]; then + nixTalkativeLog "sourcing setup hook '$pkg/nix-support/setup-hook'"; + source "$pkg/nix-support/setup-hook"; + fi +} +appendToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if type=$(declare -p "$1" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2; + return 1 + ;; + -a*) + useArray=true + ;; + *) + useArray=false + ;; + esac; + fi; + shift; + if $useArray; then + nameref=(${nameref+"${nameref[@]}"} "$@"); + else + nameref="${nameref-} $*"; + fi +} +_allFlags () +{ + + export system pname name version; + while IFS='' read -r varName; do + nixTalkativeLog "@${varName}@ -> ${!varName}"; + args+=("--subst-var" "$varName"); + done < <(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }') +} +findInputs () +{ + + local -r pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + local varVar="${pkgAccumVarVars[hostOffset + 1]}"; + local varRef="$varVar[$((targetOffset - hostOffset))]"; + local var="${!varRef}"; + unset -v varVar varRef; + local varSlice="$var[*]"; + case " ${!varSlice-} " in + *" $pkg "*) + return 0 + ;; + esac; + unset -v varSlice; + eval "$var"'+=("$pkg")'; + if ! [ -e "$pkg" ]; then + echo "build input $pkg does not exist" 1>&2; + exit 1; + fi; + function mapOffset () + { + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi + }; + local relHostOffset; + for relHostOffset in "${allPlatOffsets[@]}"; + do + local files="${propagatedDepFilesVars[relHostOffset + 1]}"; + local hostOffsetNext; + mapOffset "$relHostOffset" hostOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + local relTargetOffset; + for relTargetOffset in "${allPlatOffsets[@]}"; + do + (( "$relHostOffset" <= "$relTargetOffset" )) || continue; + local fileRef="${files}[$relTargetOffset - $relHostOffset]"; + local file="${!fileRef}"; + unset -v fileRef; + local targetOffsetNext; + mapOffset "$relTargetOffset" targetOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + [[ -f "$pkg/nix-support/$file" ]] || continue; + local pkgNext; + read -r -d '' pkgNext < "$pkg/nix-support/$file" || true; + for pkgNext in $pkgNext; + do + findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext"; + done; + done; + done +} +isMachO () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then + return 0; + else + return 1; + fi; + fi; + fi +} +getHostRole () +{ + + getRole "$hostOffset" +} +noBrokenSymlinksInAllOutputs () +{ + + if [[ -z ${dontCheckForBrokenSymlinks-} ]]; then + for output in $(getAllOutputNames); + do + noBrokenSymlinks "${!output}"; + done; + fi +} +definePhases () +{ + + if [ -z "${phases[*]:-}" ]; then + phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}"; + fi +} +fixLibtool () +{ + + local search_path; + for flag in $NIX_LDFLAGS; + do + case $flag in + -L*) + search_path+=" ${flag#-L}" + ;; + esac; + done; + sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'${search_path:-}'^" -e 's^eval sys_lib_.+search_path=.*^^' +} +substituteAllInPlace () +{ + + local fileName="$1"; + shift; + substituteAll "$fileName" "$fileName" "$@" +} +substituteAllStream () +{ + + local -a args=(); + _allFlags; + substituteStream "$1" "$2" "${args[@]}" +} +unpackFile () +{ + + curSrc="$1"; + echo "unpacking source archive $curSrc"; + if ! runOneHook unpackCmd "$curSrc"; then + echo "do not know how to unpack source archive $curSrc"; + exit 1; + fi +} +configurePhase () +{ + + runHook preConfigure; + : "${configureScript=}"; + if [[ -z "$configureScript" && -x ./configure ]]; then + configureScript=./configure; + fi; + if [ -z "${dontFixLibtool:-}" ]; then + export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}"; + local i; + find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do + echo "fixing libtool script $i"; + fixLibtool "$i"; + done; + CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX); + find . -executable -type f -name configure -exec grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;; + rm -f "$CONFIGURE_MTIME_REFERENCE"; + fi; + if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then + local -r prefixKeyOrDefault="${prefixKey:---prefix=}"; + if [ "${prefixKeyOrDefault: -1}" = " " ]; then + prependToVar configureFlags "$prefix"; + prependToVar configureFlags "${prefixKeyOrDefault::-1}"; + else + prependToVar configureFlags "$prefixKeyOrDefault$prefix"; + fi; + fi; + if [[ -f "$configureScript" ]]; then + if [ -z "${dontAddDisableDepTrack:-}" ]; then + if grep -q dependency-tracking "$configureScript"; then + prependToVar configureFlags --disable-dependency-tracking; + fi; + fi; + if [ -z "${dontDisableStatic:-}" ]; then + if grep -q enable-static "$configureScript"; then + prependToVar configureFlags --disable-static; + fi; + fi; + if [ -z "${dontPatchShebangsInConfigure:-}" ]; then + patchShebangs --build "$configureScript"; + fi; + fi; + if [ -n "$configureScript" ]; then + local -a flagsArray; + concatTo flagsArray configureFlags configureFlagsArray; + echoCmd 'configure flags' "${flagsArray[@]}"; + $configureScript "${flagsArray[@]}"; + unset flagsArray; + else + echo "no configure script, doing nothing"; + fi; + runHook postConfigure +} +echoCmd () +{ + + printf "%s:" "$1"; + shift; + printf ' %q' "$@"; + echo +} +_logHook () +{ + + if [[ -z ${NIX_LOG_FD-} ]]; then + return; + fi; + local hookKind="$1"; + local hookExpr="$2"; + shift 2; + if declare -F "$hookExpr" > /dev/null 2>&1; then + nixTalkativeLog "calling '$hookKind' function hook '$hookExpr'" "$@"; + else + if type -p "$hookExpr" > /dev/null; then + nixTalkativeLog "sourcing '$hookKind' script hook '$hookExpr'"; + else + if [[ "$hookExpr" != "_callImplicitHook"* ]]; then + local exprToOutput; + if [[ ${NIX_DEBUG:-0} -ge 5 ]]; then + exprToOutput="$hookExpr"; + else + local hookExprLine; + while IFS= read -r hookExprLine; do + hookExprLine="${hookExprLine#"${hookExprLine%%[![:space:]]*}"}"; + if [[ -n "$hookExprLine" ]]; then + exprToOutput+="$hookExprLine\\n "; + fi; + done <<< "$hookExpr"; + exprToOutput="${exprToOutput%%\\n }"; + fi; + nixTalkativeLog "evaling '$hookKind' string hook '$exprToOutput'"; + fi; + fi; + fi +} +buildPhase () +{ + + runHook preBuild; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom buildPhase, doing nothing"; + else + foundMakefile=1; + local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray; + echoCmd 'build flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postBuild +} +fixupPhase () +{ + + local output; + for output in $(getAllOutputNames); + do + if [ -e "${!output}" ]; then + chmod -R u+w,u-s,g-s "${!output}"; + fi; + done; + runHook preFixup; + local output; + for output in $(getAllOutputNames); + do + prefix="${!output}" runHook fixupOutput; + done; + recordPropagatedDependencies; + if [ -n "${setupHook:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook"; + fi; + if [ -n "${setupHooks:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + local hook; + for hook in ${setupHooks[@]}; + do + local content; + consumeEntire content < "$hook"; + substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook"; + unset -v content; + done; + unset -v hook; + fi; + if [ -n "${propagatedUserEnvPkgs[*]:-}" ]; then + mkdir -p "${!outputBin}/nix-support"; + printWords "${propagatedUserEnvPkgs[@]}" > "${!outputBin}/nix-support/propagated-user-env-packages"; + fi; + runHook postFixup +} +nixErrorLog () +{ + + _nixLogWithLevel 0 "$*" +} +substitute () +{ + + local input="$1"; + local output="$2"; + shift 2; + if [ ! -f "$input" ]; then + echo "substitute(): ERROR: file '$input' does not exist" 1>&2; + return 1; + fi; + local content; + consumeEntire content < "$input"; + if [ -e "$output" ]; then + chmod +w "$output"; + fi; + substituteStream content "file '$input'" "$@" > "$output" +} +PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}" +XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}" + +eval "${shellHook:-}" +shopt -s expand_aliases + +exec /tmp/devenv-envo15r5f/script \ No newline at end of file diff --git a/.devenv/shell-env.sh b/.devenv/shell-env.sh new file mode 100644 index 0000000..fc609a0 --- /dev/null +++ b/.devenv/shell-env.sh @@ -0,0 +1,2257 @@ +PATH=${PATH:-} +nix_saved_PATH="$PATH" +XDG_DATA_DIRS=${XDG_DATA_DIRS:-} +nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS" +LINENO='79' +declare -a unpackCmdHooks=('_defaultUnpack' ) +declare -a postFixupHooks=('noBrokenSymlinksInAllOutputs' '_makeSymlinksRelative' '_multioutPropagateDev' ) +NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +builder='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export builder +name='devenv-shell-env' +export name +depsBuildTargetPropagated='' +export depsBuildTargetPropagated +depsBuildBuildPropagated='' +export depsBuildBuildPropagated +declare -a pkgsBuildTarget=() +SOURCE_DATE_EPOCH='315532800' +export SOURCE_DATE_EPOCH +declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' ) +PKG_CONFIG='pkg-config' +export PKG_CONFIG +shell='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export shell +BASH='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +IFS=' +' +declare -a envHostHostHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +propagatedBuildInputs='' +export propagatedBuildInputs +HOSTTYPE='x86_64' +NIX_CFLAGS_COMPILE=' -frandom-seed=y5k9a31603 -isystem /nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/include -isystem /nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/include' +export NIX_CFLAGS_COMPILE +HOST_PATH='/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0/bin:/nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12/bin:/nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9/bin:/nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12/bin:/nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0/bin:/nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35/bin:/nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14/bin:/nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin/bin:/nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1/bin:/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin:/nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8/bin:/nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin/bin:/nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47/bin' +export HOST_PATH +nativeBuildInputs='/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev /nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3 /nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0 /nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13 /nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2 /nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2' +export nativeBuildInputs +CC='gcc' +export CC +propagatedNativeBuildInputs='' +export propagatedNativeBuildInputs +DEVSHELL_NAME='󰏖 devenv/#fab387| Bun/yellow' +export DEVSHELL_NAME +phases='buildPhase' +export phases +READELF='readelf' +export READELF +OSTYPE='linux-gnu' +RANLIB='ranlib' +export RANLIB +declare -a pkgsHostHost=() +outputInfo='out' +DEVENV_TASKS='' +export DEVENV_TASKS +depsBuildBuild='' +export depsBuildBuild +declare -a pkgsHostTarget=() +DEVENV_TASK_FILE='/nix/store/vsp3fis0yyfrw5zdw1r908cz5wkwy1qs-tasks.json' +export DEVENV_TASK_FILE +_substituteStream_has_warned_replace_deprecation='false' +defaultNativeBuildInputs='/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2 /nix/store/xknj6c33cc197s60ry0i69vdkmaizrs1-update-autotools-gnu-config-scripts-hook /nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh /nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh /nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh /nix/store/p3l1a5y7nllfyrjn2krlwgcc3z0cd3fq-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh /nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh /nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh /nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +declare -a envHostTargetHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) +OPTERR='1' +out='/nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env' +export out +strictDeps='' +export strictDeps +prefix='/nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env' +depsBuildTarget='' +export depsBuildTarget +depsTargetTargetPropagated='' +export depsTargetTargetPropagated +declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' ) +DEVENV_DOTFILE='/home/user01/Projects/score-system/.devenv' +export DEVENV_DOTFILE +NIX_ENFORCE_NO_NATIVE='1' +export NIX_ENFORCE_NO_NATIVE +outputBin='out' +PKG_CONFIG_PATH='/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev/lib/pkgconfig' +export PKG_CONFIG_PATH +patches='' +export patches +outputLib='out' +DEVENV_RUNTIME='/run/user/1000/devenv-3f21a4e' +export DEVENV_RUNTIME +XDG_DATA_DIRS='/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9/share:/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13/share:/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2/share:/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2/share' +export XDG_DATA_DIRS +outputs='out' +export outputs +initialPath='/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11 /nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0 /nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12 /nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9 /nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12 /nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0 /nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35 /nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14 /nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin /nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1 /nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9 /nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8 /nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin /nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47' +buildInputs='' +export buildInputs +depsTargetTarget='' +export depsTargetTarget +hardeningDisable='' +export hardeningDisable +outputDevman='out' +declare -a pkgsTargetTarget=() +NIX_LDFLAGS='-rpath /nix/store/y5k9a31603208npmzpfsc2nrar2nn9xa-devenv-shell-env/lib ' +export NIX_LDFLAGS +CONFIG_SHELL='/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin/bash' +export CONFIG_SHELL +NM='nm' +export NM +declare -a propagatedTargetDepFiles=('propagated-target-target-deps' ) +shellHook=' + + +# Override temp directories that stdenv set to NIX_BUILD_TOP. +# Only reset those that still point to the Nix build dir; leave +# any user/CI-supplied value intact so child processes (e.g. +# `devenv processes wait`) compute the same runtime directory. +for var in TMP TMPDIR TEMP TEMPDIR; do + if [ -n "${!var-}" ] && [ "${!var}" = "${NIX_BUILD_TOP-}" ]; then + export "$var"=/tmp + fi +done +if [ -n "${NIX_BUILD_TOP-}" ]; then + unset NIX_BUILD_TOP +fi + +# set path to locales on non-NixOS Linux hosts +if [ -z "${LOCALE_ARCHIVE-}" ]; then + export LOCALE_ARCHIVE=/nix/store/3b5l8c2jipz2zgki0wc50vzwa2r9834a-glibc-locales-2.42-61/lib/locale/locale-archive +fi + + +# direnv helper +if [ ! type -p direnv &>/dev/null && -f .envrc ]; then + echo "An .envrc file was detected, but the direnv command is not installed." + echo "To use this configuration, please install direnv: https://direnv.net/docs/installation.html" +fi + +mkdir -p "$DEVENV_STATE" +if [ ! -L "$DEVENV_DOTFILE/profile" ] || [ "$(/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin/readlink $DEVENV_DOTFILE/profile)" != "/nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile" ] +then + ln -snf /nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile "$DEVENV_DOTFILE/profile" +fi +unset HOST_PATH NIX_BUILD_CORES __structuredAttrs buildInputs buildPhase builder depsBuildBuild depsBuildBuildPropagated depsBuildTarget depsBuildTargetPropagated depsHostHost depsHostHostPropagated depsTargetTarget depsTargetTargetPropagated dontAddDisableDepTrack doCheck doInstallCheck nativeBuildInputs out outputs patches phases preferLocalBuild propagatedBuildInputs propagatedNativeBuildInputs shell shellHook stdenv strictDeps + +mkdir -p /run/user/1000/devenv-3f21a4e +ln -snf /run/user/1000/devenv-3f21a4e /home/user01/Projects/score-system/.devenv/run + +echo "💡 A dotenv file was found, while dotenv integration is currently not enabled." >&2 +echo >&2 +echo " To enable it, add \`dotenv.enable = true;\` to your devenv.nix file." >&2; +echo " To disable this hint, add \`dotenv.disableHint = true;\` to your devenv.nix file." >&2; +echo >&2 +echo "See https://devenv.sh/integrations/dotenv/ for more information." >&2; + + + +# Check whether the direnv integration is out of date. +{ + if [[ ":${DIRENV_ACTIVE-}:" == *":/home/user01/Projects/score-system:"* ]]; then + if [[ ! "${DEVENV_NO_DIRENVRC_OUTDATED_WARNING-}" == 1 && ! "${DEVENV_DIRENVRC_ROLLING_UPGRADE-}" == 1 ]]; then + if [[ ${DEVENV_DIRENVRC_VERSION:-0} -lt 2 ]]; then + direnv_line=$(grep --color=never -E "source_url.*cachix/devenv" .envrc || echo "") + + echo "✨ The direnv integration in your .envrc is out of date." + echo "" + echo -n "RECOMMENDED: devenv can now auto-upgrade the direnv integration. " + if [[ -n "$direnv_line" ]]; then + echo "To enable this feature, replace the following line in your .envrc:" + echo "" + echo " $direnv_line" + echo "" + echo "with:" + echo "" + echo " eval \"\$(devenv direnvrc)\"" + else + echo "To enable this feature, replace the \`source_url\` line that fetches the direnvrc integration in your .envrc with:" + echo "" + echo " eval \"$(devenv direnvrc)\"" + fi + echo "" + echo "If you prefer to continue managing the integration manually, follow the upgrade instructions at https://devenv.sh/integrations/direnv/." + echo "" + echo "To disable this message:" + echo "" + echo " Add the following environment to your .envrc before \`use devenv\`:" + echo "" + echo " export DEVENV_NO_DIRENVRC_OUTDATED_WARNING=1" + echo "" + echo " Or set the following option in your devenv configuration:" + echo "" + echo " devenv.warnOnNewVersion = false;" + echo "" + fi + fi + fi +} >&2 + +' +export shellHook +OBJDUMP='objdump' +export OBJDUMP +defaultBuildInputs='' +PATH='/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9/bin:/nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3/bin:/nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0/bin:/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13/bin:/nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2/bin:/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2/bin:/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2/bin:/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0/bin:/nix/store/qxaq7jz61a6zkr2mq49i0zvqip2m2jj8-gcc-15.2.0/bin:/nix/store/bsh7n2nx8ndmm1mmww6v2h4851nalj13-glibc-2.42-61-bin/bin:/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46/bin:/nix/store/s2946bl9ciwzhafd66jhansrmxq9xhqm-binutils-2.46/bin:/nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin:/nix/store/c1cjgg6p8m8fssivzrc2p13mwwml3p3v-findutils-4.10.0/bin:/nix/store/ww555mznia5v7sz2w85lblg4amvhkhv1-diffutils-3.12/bin:/nix/store/kgxafhycw2kybbqih759ykc2043qyi5j-gnused-4.9/bin:/nix/store/gn94gpcp5q08x4v6g8mvw8v4r65rcjzk-gnugrep-3.12/bin:/nix/store/wp1cshqv98i8abs8rcx91s54igqgll0f-gawk-5.4.0/bin:/nix/store/k5akwnrn9x2afaj2va7g4a2zpdim8l43-gnutar-1.35/bin:/nix/store/ndpbjk6jhw0da5h272dqqnyxa35a9gmx-gzip-1.14/bin:/nix/store/3y3kzc5njlj7nwj1s78am0yzjnpicv9x-bzip2-1.0.8-bin/bin:/nix/store/vlq7nnw39j7rwk0pp68w1fcwzpxahm9h-gnumake-4.4.1/bin:/nix/store/gik3rh1vz2jlgnifb9dh6vc6sxwwz9jj-bash-5.3p9/bin:/nix/store/wgvplwp0faqhqr92w0ma8bxaxk202ama-patch-2.8/bin:/nix/store/csra6zhdjw7rjzv98fycz7qjalyv55k2-xz-5.8.3-bin/bin:/nix/store/kyz3mm5snbb8998kbkm28jps1phk9509-file-5.47/bin' +export PATH +declare -a envBuildHostHooks=() +declare -a preConfigureHooks=('_multioutConfig' ) +outputMan='out' +declare -a envTargetTargetHooks=() +declare -a pkgsBuildBuild=() +depsHostHostPropagated='' +export depsHostHostPropagated +NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_PKG_CONFIG_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +NIX_BUILD_CORES='4' +export NIX_BUILD_CORES +configureFlags='' +export configureFlags +AS='as' +export AS +NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' +export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu +DEVENV_ROOT='/home/user01/Projects/score-system' +export DEVENV_ROOT +system='x86_64-linux' +export system +CXX='g++' +export CXX +doInstallCheck='' +export doInstallCheck +STRINGS='strings' +export STRINGS +IN_NIX_SHELL='impure' +export IN_NIX_SHELL +declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' ) +MACHTYPE='x86_64-pc-linux-gnu' +DEVENV_PROFILE='/nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile' +export DEVENV_PROFILE +LD='ld' +export LD +NIX_BINTOOLS='/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46' +export NIX_BINTOOLS +dontAddDisableDepTrack='1' +export dontAddDisableDepTrack +__structuredAttrs='' +export __structuredAttrs +OBJCOPY='objcopy' +export OBJCOPY +NIX_CC='/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +export NIX_CC +cmakeFlags='' +export cmakeFlags +PS4='+ ' +outputDev='out' +outputInclude='out' +pkg='/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' +declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' ) +buildPhase='{ echo "------------------------------------------------------------"; + echo " WARNING: the existence of this path is not guaranteed."; + echo " It is an internal implementation detail for pkgs.mkShell."; + echo "------------------------------------------------------------"; + echo; + # Record all build inputs as runtime dependencies + export; +} >> "$out" +' +export buildPhase +OLDPWD='' +export OLDPWD +AR='ar' +export AR +outputDoc='out' +declare -a envBuildTargetHooks=() +declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' ) +depsHostHost='' +export depsHostHost +declare -a pkgsBuildHost=('/nix/store/bvsy09r85z0q1m30p87s1bf4ikb0s84i-bash-interactive-5.3p9-dev' '/nix/store/cgjr3kj3hs7ngznyws5qfg16c8scpys0-bash-interactive-5.3p9' '/nix/store/1njx7nq9qkcslk0qaririipi1qpdv7vx-typescript-5.9.3' '/nix/store/0fm002iw8wq367lmwp520ml62ag5pq56-typescript-language-server-5.3.0' '/nix/store/z1cxjx705fswwjjns0sw2ysbd5jqxfgm-bun-1.3.13' '/nix/store/gq0svahwy1bvlfz07kimykr6qlalcjz5-eslint_d-15.0.2' '/nix/store/1m05k7xgfnw6jc21xxk5681ni3ar97wf-pkg-config-wrapper-0.29.2' '/nix/store/ilblcn1dkvzghcr2yk3av6jxn5rk1iqw-patchelf-0.15.2' '/nix/store/xknj6c33cc197s60ry0i69vdkmaizrs1-update-autotools-gnu-config-scripts-hook' '/nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh' '/nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh' '/nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh' '/nix/store/p3l1a5y7nllfyrjn2krlwgcc3z0cd3fq-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh' '/nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh' '/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh' '/nix/store/788mx070y81zjlg5ipcl0cra3afviw9k-gcc-wrapper-15.2.0' '/nix/store/mbyy19mdwnfvfwmdi0gqgggx0njvpl1w-binutils-wrapper-2.46' ) +preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase' +outputDevdoc='REMOVE' +NIX_STORE='/nix/store' +export NIX_STORE +STRIP='strip' +export STRIP +preferLocalBuild='1' +export preferLocalBuild +DEVENV_STATE='/home/user01/Projects/score-system/.devenv/state' +export DEVENV_STATE +mesonFlags='' +export mesonFlags +NIX_NO_SELF_RPATH='1' +stdenv='/nix/store/jci7gw90lh2vdjaxkb6pzf9xp4v08wzs-stdenv-linux' +export stdenv +SIZE='size' +export SIZE +NIX_HARDENING_ENABLE='bindnow format fortify fortify3 libcxxhardeningfast pic relro stackclashprotection stackprotector strictflexarrays1 strictoverflow zerocallusedregs' +export NIX_HARDENING_ENABLE +declare -a envBuildBuildHooks=() +doCheck='' +export doCheck +_multioutDocs () +{ + + local REMOVE=REMOVE; + moveToOutput share/info "${!outputInfo}"; + moveToOutput share/doc "${!outputDoc}"; + moveToOutput share/gtk-doc "${!outputDevdoc}"; + moveToOutput share/devhelp/books "${!outputDevdoc}"; + moveToOutput share/man "${!outputMan}"; + moveToOutput share/man/man3 "${!outputDevman}" +} +_logHook () +{ + + if [[ -z ${NIX_LOG_FD-} ]]; then + return; + fi; + local hookKind="$1"; + local hookExpr="$2"; + shift 2; + if declare -F "$hookExpr" > /dev/null 2>&1; then + nixTalkativeLog "calling '$hookKind' function hook '$hookExpr'" "$@"; + else + if type -p "$hookExpr" > /dev/null; then + nixTalkativeLog "sourcing '$hookKind' script hook '$hookExpr'"; + else + if [[ "$hookExpr" != "_callImplicitHook"* ]]; then + local exprToOutput; + if [[ ${NIX_DEBUG:-0} -ge 5 ]]; then + exprToOutput="$hookExpr"; + else + local hookExprLine; + while IFS= read -r hookExprLine; do + hookExprLine="${hookExprLine#"${hookExprLine%%[![:space:]]*}"}"; + if [[ -n "$hookExprLine" ]]; then + exprToOutput+="$hookExprLine\\n "; + fi; + done <<< "$hookExpr"; + exprToOutput="${exprToOutput%%\\n }"; + fi; + nixTalkativeLog "evaling '$hookKind' string hook '$exprToOutput'"; + fi; + fi; + fi +} +isELF () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [ "$magic" = 'ELF' ]; then + return 0; + else + return 1; + fi +} +mapOffset () +{ + + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi +} +getHostRoleEnvHook () +{ + + getRole "$depHostOffset" +} +substitute () +{ + + local input="$1"; + local output="$2"; + shift 2; + if [ ! -f "$input" ]; then + echo "substitute(): ERROR: file '$input' does not exist" 1>&2; + return 1; + fi; + local content; + consumeEntire content < "$input"; + if [ -e "$output" ]; then + chmod +w "$output"; + fi; + substituteStream content "file '$input'" "$@" > "$output" +} +_assignFirst () +{ + + local varName="$1"; + local _var; + local REMOVE=REMOVE; + shift; + for _var in "$@"; + do + if [ -n "${!_var-}" ]; then + eval "${varName}"="${_var}"; + return; + fi; + done; + echo; + echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}."; + echo " The following variables were all unset or empty:"; + echo " $*"; + if [ -z "${out:-}" ]; then + echo ' If you do not want an "out" output in your derivation, make sure to define'; + echo ' the other specific required outputs. This can be achieved by picking one'; + echo " of the above as an output."; + echo ' You do not have to remove "out" if you want to have a different default'; + echo ' output, because the first output is taken as a default.'; + echo; + fi; + return 1 +} +_moveToShare () +{ + + if [ -n "$__structuredAttrs" ]; then + if [ -z "${forceShare-}" ]; then + forceShare=(man doc info); + fi; + else + forceShare=(${forceShare:-man doc info}); + fi; + if [[ -z "$out" ]]; then + return; + fi; + for d in "${forceShare[@]}"; + do + if [ -d "$out/$d" ]; then + if [ -d "$out/share/$d" ]; then + echo "both $d/ and share/$d/ exist!"; + else + echo "moving $out/$d to $out/share/$d"; + mkdir -p $out/share; + mv $out/$d $out/share/; + fi; + fi; + done +} +noBrokenSymlinks () +{ + + local -r output="${1:?}"; + local path; + local pathParent; + local symlinkTarget; + local -i numDanglingSymlinks=0; + local -i numReflexiveSymlinks=0; + local -i numUnreadableSymlinks=0; + if [[ ! -e $output ]]; then + nixWarnLog "skipping non-existent output $output"; + return 0; + fi; + nixInfoLog "running on $output"; + while IFS= read -r -d '' path; do + pathParent="$(dirname "$path")"; + if ! symlinkTarget="$(readlink "$path")"; then + nixErrorLog "the symlink $path is unreadable"; + numUnreadableSymlinks+=1; + continue; + fi; + if [[ $symlinkTarget == /* ]]; then + nixInfoLog "symlink $path points to absolute target $symlinkTarget"; + else + nixInfoLog "symlink $path points to relative target $symlinkTarget"; + symlinkTarget="$(realpath --no-symlinks --canonicalize-missing "$pathParent/$symlinkTarget")"; + fi; + if [[ $symlinkTarget = "$TMPDIR"/* ]]; then + nixErrorLog "the symlink $path points to $TMPDIR directory: $symlinkTarget"; + numDanglingSymlinks+=1; + continue; + fi; + if [[ $symlinkTarget != "$NIX_STORE"/* ]]; then + nixInfoLog "symlink $path points outside the Nix store; ignoring"; + continue; + fi; + if [[ $path == "$symlinkTarget" ]]; then + nixErrorLog "the symlink $path is reflexive"; + numReflexiveSymlinks+=1; + else + if [[ ! -e $symlinkTarget ]]; then + nixErrorLog "the symlink $path points to a missing target: $symlinkTarget"; + numDanglingSymlinks+=1; + else + nixDebugLog "the symlink $path is irreflexive and points to a target which exists"; + fi; + fi; + done < <(find "$output" -type l -print0); + if ((numDanglingSymlinks > 0 || numReflexiveSymlinks > 0 || numUnreadableSymlinks > 0)); then + nixErrorLog "found $numDanglingSymlinks dangling symlinks, $numReflexiveSymlinks reflexive symlinks and $numUnreadableSymlinks unreadable symlinks"; + exit 1; + fi; + return 0 +} +patchPhase () +{ + + runHook prePatch; + local -a patchesArray; + concatTo patchesArray patches; + local -a flagsArray; + concatTo flagsArray patchFlags=-p1; + for i in "${patchesArray[@]}"; + do + echo "applying patch $i"; + local uncompress=cat; + case "$i" in + *.gz) + uncompress="gzip -d" + ;; + *.bz2) + uncompress="bzip2 -d" + ;; + *.xz) + uncompress="xz -d" + ;; + *.lzma) + uncompress="lzma -d" + ;; + esac; + $uncompress < "$i" 2>&1 | patch "${flagsArray[@]}"; + done; + runHook postPatch +} +pkgConfigWrapper_addPkgConfigPath () +{ + + local role_post; + getHostRoleEnvHook; + addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/lib/pkgconfig"; + addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/share/pkgconfig" +} +stripHash () +{ + + local strippedName casematchOpt=0; + strippedName="$(basename -- "$1")"; + shopt -q nocasematch && casematchOpt=1; + shopt -u nocasematch; + if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then + echo "${strippedName:33}"; + else + echo "$strippedName"; + fi; + if (( casematchOpt )); then + shopt -s nocasematch; + fi +} +dumpVars () +{ + + if [[ "${noDumpEnvVars:-0}" != 1 && -d "$NIX_BUILD_TOP" ]]; then + local old_umask; + old_umask=$(umask); + umask 0077; + export 2> /dev/null > "$NIX_BUILD_TOP/env-vars"; + umask "$old_umask"; + fi +} +configurePhase () +{ + + runHook preConfigure; + : "${configureScript=}"; + if [[ -z "$configureScript" && -x ./configure ]]; then + configureScript=./configure; + fi; + if [ -z "${dontFixLibtool:-}" ]; then + export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}"; + local i; + find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do + echo "fixing libtool script $i"; + fixLibtool "$i"; + done; + CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX); + find . -executable -type f -name configure -exec grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;; + rm -f "$CONFIGURE_MTIME_REFERENCE"; + fi; + if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then + local -r prefixKeyOrDefault="${prefixKey:---prefix=}"; + if [ "${prefixKeyOrDefault: -1}" = " " ]; then + prependToVar configureFlags "$prefix"; + prependToVar configureFlags "${prefixKeyOrDefault::-1}"; + else + prependToVar configureFlags "$prefixKeyOrDefault$prefix"; + fi; + fi; + if [[ -f "$configureScript" ]]; then + if [ -z "${dontAddDisableDepTrack:-}" ]; then + if grep -q dependency-tracking "$configureScript"; then + prependToVar configureFlags --disable-dependency-tracking; + fi; + fi; + if [ -z "${dontDisableStatic:-}" ]; then + if grep -q enable-static "$configureScript"; then + prependToVar configureFlags --disable-static; + fi; + fi; + if [ -z "${dontPatchShebangsInConfigure:-}" ]; then + patchShebangs --build "$configureScript"; + fi; + fi; + if [ -n "$configureScript" ]; then + local -a flagsArray; + concatTo flagsArray configureFlags configureFlagsArray; + echoCmd 'configure flags' "${flagsArray[@]}"; + $configureScript "${flagsArray[@]}"; + unset flagsArray; + else + echo "no configure script, doing nothing"; + fi; + runHook postConfigure +} +_updateSourceDateEpochFromSourceRoot () +{ + + if [ -n "$sourceRoot" ]; then + updateSourceDateEpoch "$sourceRoot"; + fi +} +installCheckPhase () +{ + + runHook preInstallCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom installCheckPhase, doing nothing"; + else + if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then + echo "no installcheck target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray installCheckTarget=installcheck; + echoCmd 'installcheck flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + fi; + runHook postInstallCheck +} +showPhaseFooter () +{ + + local phase="$1"; + local startTime="$2"; + local endTime="$3"; + local delta=$(( endTime - startTime )); + (( delta < 30 )) && return; + local H=$((delta/3600)); + local M=$((delta%3600/60)); + local S=$((delta%60)); + echo -n "$phase completed in "; + (( H > 0 )) && echo -n "$H hours "; + (( M > 0 )) && echo -n "$M minutes "; + echo "$S seconds" +} +distPhase () +{ + + runHook preDist; + local flagsArray=(); + concatTo flagsArray distFlags distFlagsArray distTarget=dist; + echo 'dist flags: %q' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + if [ "${dontCopyDist:-0}" != 1 ]; then + mkdir -p "$out/tarballs"; + cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs"; + fi; + runHook postDist +} +getTargetRoleWrapper () +{ + + case $targetOffset in + -1) + export NIX_BINTOOLS_WRAPPER_TARGET_BUILD_x86_64_unknown_linux_gnu=1 + ;; + 0) + export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 + ;; + 1) + export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu=1 + ;; + *) + echo "binutils-wrapper-2.46: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +ccWrapper_addCVars () +{ + + local role_post; + getHostRoleEnvHook; + local found=; + if [ -d "$1/include" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include"; + found=1; + fi; + if [ -d "$1/Library/Frameworks" ]; then + export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks"; + found=1; + fi; + if [[ -n "" && -n ${NIX_STORE:-} && -n $found ]]; then + local scrubbed="$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${1#"$NIX_STORE"/*-}"; + export NIX_CFLAGS_COMPILE${role_post}+=" -fmacro-prefix-map=$1=$scrubbed"; + fi +} +nixNoticeLog () +{ + + _nixLogWithLevel 2 "$*" +} +nixTalkativeLog () +{ + + _nixLogWithLevel 4 "$*" +} +substituteStream () +{ + + local var=$1; + local description=$2; + shift 2; + while (( "$#" )); do + local replace_mode="$1"; + case "$1" in + --replace) + if ! "$_substituteStream_has_warned_replace_deprecation"; then + echo "substituteStream() in derivation $name: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. ($description)" 1>&2; + _substituteStream_has_warned_replace_deprecation=true; + fi; + replace_mode='--replace-warn' + ;& + --replace-quiet | --replace-warn | --replace-fail) + pattern="$2"; + replacement="$3"; + shift 3; + if ! [[ "${!var}" == *"$pattern"* ]]; then + if [ "$replace_mode" == --replace-warn ]; then + printf "substituteStream() in derivation $name: WARNING: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2; + else + if [ "$replace_mode" == --replace-fail ]; then + printf "substituteStream() in derivation $name: ERROR: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2; + return 1; + fi; + fi; + fi; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var) + local varName="$2"; + shift 2; + if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then + echo "substituteStream() in derivation $name: ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2; + return 1; + fi; + if [ -z ${!varName+x} ]; then + echo "substituteStream() in derivation $name: ERROR: variable \$$varName is unset" 1>&2; + return 1; + fi; + pattern="@$varName@"; + replacement="${!varName}"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' + ;; + --subst-var-by) + pattern="@$2@"; + replacement="$3"; + eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; + shift 3 + ;; + *) + echo "substituteStream() in derivation $name: ERROR: Invalid command line argument: $1" 1>&2; + return 1 + ;; + esac; + done; + printf "%s" "${!var}" +} +echoCmd () +{ + + printf "%s:" "$1"; + shift; + printf ' %q' "$@"; + echo +} +genericBuild () +{ + + export GZIP_NO_TIMESTAMPS=1; + if [ -f "${buildCommandPath:-}" ]; then + source "$buildCommandPath"; + return; + fi; + if [ -n "${buildCommand:-}" ]; then + eval "$buildCommand"; + return; + fi; + definePhases; + for curPhase in ${phases[*]}; + do + runPhase "$curPhase"; + done +} +checkPhase () +{ + + runHook preCheck; + if [[ -z "${foundMakefile:-}" ]]; then + echo "no Makefile or custom checkPhase, doing nothing"; + runHook postCheck; + return; + fi; + if [[ -z "${checkTarget:-}" ]]; then + if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then + checkTarget="check"; + else + if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then + checkTarget="test"; + fi; + fi; + fi; + if [[ -z "${checkTarget:-}" ]]; then + echo "no check/test target in ${makefile:-Makefile}, doing nothing"; + else + local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray checkFlags=VERBOSE=y checkFlagsArray checkTarget; + echoCmd 'check flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postCheck +} +addEnvHooks () +{ + + local depHostOffset="$1"; + shift; + local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]"; + local pkgHookVar; + for pkgHookVar in "${!pkgHookVarsSlice}"; + do + eval "${pkgHookVar}s"'+=("$@")'; + done +} +isScript () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 2 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" =~ \#! ]]; then + return 0; + else + return 1; + fi +} +unpackFile () +{ + + curSrc="$1"; + echo "unpacking source archive $curSrc"; + if ! runOneHook unpackCmd "$curSrc"; then + echo "do not know how to unpack source archive $curSrc"; + exit 1; + fi +} +_moveLib64 () +{ + + if [ "${dontMoveLib64-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then + return; + fi; + echo "moving $prefix/lib64/* to $prefix/lib"; + mkdir -p $prefix/lib; + shopt -s dotglob; + for i in $prefix/lib64/*; + do + mv --no-clobber "$i" $prefix/lib; + done; + shopt -u dotglob; + rmdir $prefix/lib64; + ln -s lib $prefix/lib64 +} +substituteInPlace () +{ + + local -a fileNames=(); + for arg in "$@"; + do + if [[ "$arg" = "--"* ]]; then + break; + fi; + fileNames+=("$arg"); + shift; + done; + if ! [[ "${#fileNames[@]}" -gt 0 ]]; then + echo "substituteInPlace called without any files to operate on (files must come before options!)" 1>&2; + return 1; + fi; + for file in "${fileNames[@]}"; + do + substitute "$file" "$file" "$@"; + done +} +activatePackage () +{ + + local pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + if [ -f "$pkg" ]; then + nixTalkativeLog "sourcing setup hook '$pkg'"; + source "$pkg"; + fi; + if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then + addToSearchPath _PATH "$pkg/bin"; + fi; + if (( hostOffset <= -1 )); then + addToSearchPath _XDG_DATA_DIRS "$pkg/share"; + fi; + if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then + addToSearchPath _HOST_PATH "$pkg/bin"; + fi; + if [[ -f "$pkg/nix-support/setup-hook" ]]; then + nixTalkativeLog "sourcing setup hook '$pkg/nix-support/setup-hook'"; + source "$pkg/nix-support/setup-hook"; + fi +} +substituteAll () +{ + + local input="$1"; + local output="$2"; + local -a args=(); + _allFlags; + substitute "$input" "$output" "${args[@]}" +} +getAllOutputNames () +{ + + if [ -n "$__structuredAttrs" ]; then + echo "${!outputs[*]}"; + else + echo "$outputs"; + fi +} +substituteAllInPlace () +{ + + local fileName="$1"; + shift; + substituteAll "$fileName" "$fileName" "$@" +} +auditTmpdir () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "checking for references to $TMPDIR/ in $dir..."; + local tmpdir elf_fifo script_fifo; + tmpdir="$(mktemp -d)"; + elf_fifo="$tmpdir/elf"; + script_fifo="$tmpdir/script"; + mkfifo "$elf_fifo" "$script_fifo"; + ( find "$dir" -type f -not -path '*/.build-id/*' -print0 | while IFS= read -r -d '' file; do + if isELF "$file"; then + printf '%s\0' "$file" 1>&3; + else + if isScript "$file"; then + filename=${file##*/}; + dir=${file%/*}; + if [ -e "$dir/.$filename-wrapped" ]; then + printf '%s\0' "$file" 1>&4; + fi; + fi; + fi; + done; + exec 3>&- 4>&- ) 3> "$elf_fifo" 4> "$script_fifo" & ( xargs -0 -r -P "$NIX_BUILD_CORES" -n 1 sh -c ' + if { printf :; patchelf --print-rpath "$1"; } | grep -q -F ":$TMPDIR/"; then + echo "RPATH of binary $1 contains a forbidden reference to $TMPDIR/" + exit 1 + fi + ' _ < "$elf_fifo" ) & local pid_elf=$!; + local pid_script; + ( xargs -0 -r -P "$NIX_BUILD_CORES" -n 1 sh -c ' + if grep -q -F "$TMPDIR/" "$1"; then + echo "wrapper script $1 contains a forbidden reference to $TMPDIR/" + exit 1 + fi + ' _ < "$script_fifo" ) & local pid_script=$!; + wait "$pid_elf" || { + echo "Some binaries contain forbidden references to $TMPDIR/. Check the error above!"; + exit 1 + }; + wait "$pid_script" || { + echo "Some scripts contain forbidden references to $TMPDIR/. Check the error above!"; + exit 1 + }; + rm -r "$tmpdir" +} +getTargetRole () +{ + + getRole "$targetOffset" +} +_moveSystemdUserUnits () +{ + + if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then + return; + fi; + if [ ! -e "${prefix:?}/lib/systemd/user" ]; then + return; + fi; + local source="$prefix/lib/systemd/user"; + local target="$prefix/share/systemd/user"; + echo "moving $source/* to $target"; + mkdir -p "$target"; + ( shopt -s dotglob; + for i in "$source"/*; + do + mv "$i" "$target"; + done ); + rmdir "$source"; + ln -s "$target" "$source" +} +exitHandler () +{ + + exitCode="$?"; + set +e; + if [ -n "${showBuildStats:-}" ]; then + read -r -d '' -a buildTimes < <(times); + echo "build times:"; + echo "user time for the shell ${buildTimes[0]}"; + echo "system time for the shell ${buildTimes[1]}"; + echo "user time for all child processes ${buildTimes[2]}"; + echo "system time for all child processes ${buildTimes[3]}"; + fi; + if (( "$exitCode" != 0 )); then + runHook failureHook; + if [ -n "${succeedOnFailure:-}" ]; then + echo "build failed with exit code $exitCode (ignored)"; + mkdir -p "$out/nix-support"; + printf "%s" "$exitCode" > "$out/nix-support/failed"; + exit 0; + fi; + else + runHook exitHook; + fi; + return "$exitCode" +} +installPhase () +{ + + runHook preInstall; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom installPhase, doing nothing"; + runHook postInstall; + return; + else + foundMakefile=1; + fi; + if [ -n "$prefix" ]; then + mkdir -p "$prefix"; + fi; + local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray installFlags installFlagsArray installTargets=install; + echoCmd 'install flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + runHook postInstall +} +nixVomitLog () +{ + + _nixLogWithLevel 7 "$*" +} +nixDebugLog () +{ + + _nixLogWithLevel 6 "$*" +} +noBrokenSymlinksInAllOutputs () +{ + + if [[ -z ${dontCheckForBrokenSymlinks-} ]]; then + for output in $(getAllOutputNames); + do + noBrokenSymlinks "${!output}"; + done; + fi +} +addToSearchPath () +{ + + addToSearchPathWithCustomDelimiter ":" "$@" +} +_addRpathPrefix () +{ + + if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then + export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}"; + fi +} +getTargetRoleEnvHook () +{ + + getRole "$depTargetOffset" +} +printWords () +{ + + (( "$#" > 0 )) || return 0; + printf '%s ' "$@" +} +concatStringsSep () +{ + + local sep="$1"; + local name="$2"; + local type oldifs; + if type=$(declare -p "$name" 2> /dev/null); then + local -n nameref="$name"; + case "${type#* }" in + -A*) + echo "concatStringsSep(): ERROR: trying to use concatStringsSep on an associative array." 1>&2; + return 1 + ;; + -a*) + local IFS="$(printf '\036')" + ;; + *) + local IFS=" " + ;; + esac; + local ifs_separated="${nameref[*]}"; + echo -n "${ifs_separated//"$IFS"/"$sep"}"; + fi +} +_callImplicitHook () +{ + + local def="$1"; + local hookName="$2"; + if declare -F "$hookName" > /dev/null; then + nixTalkativeLog "calling implicit '$hookName' function hook"; + "$hookName"; + else + if type -p "$hookName" > /dev/null; then + nixTalkativeLog "sourcing implicit '$hookName' script hook"; + source "$hookName"; + else + if [ -n "${!hookName:-}" ]; then + nixTalkativeLog "evaling implicit '$hookName' string hook"; + eval "${!hookName}"; + else + return "$def"; + fi; + fi; + fi +} +recordPropagatedDependencies () +{ + + declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated); + declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}"); + local propagatedInputsIndex; + for propagatedInputsIndex in "${!flatVars[@]}"; + do + local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]"; + local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}"; + [[ -n "${!propagatedInputsSlice}" ]] || continue; + mkdir -p "${!outputDev}/nix-support"; + printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile"; + done +} +getHostRole () +{ + + getRole "$hostOffset" +} +nixLog () +{ + + [[ -z ${NIX_LOG_FD-} ]] && return 0; + local callerName="${FUNCNAME[1]}"; + if [[ $callerName == "_callImplicitHook" ]]; then + callerName="${hookName:?}"; + fi; + printf "%s: %s\n" "$callerName" "$*" >&"$NIX_LOG_FD" +} +runOneHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook ret=1; + for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _logHook "$hookName" "$hook" "$@"; + if _eval "$hook" "$@"; then + ret=0; + break; + fi; + done; + return "$ret" +} +unpackPhase () +{ + + runHook preUnpack; + if [ -z "${srcs:-}" ]; then + if [ -z "${src:-}" ]; then + echo 'variable $src or $srcs should point to the source'; + exit 1; + fi; + srcs="$src"; + fi; + local -a srcsArray; + concatTo srcsArray srcs; + local dirsBefore=""; + for i in *; + do + if [ -d "$i" ]; then + dirsBefore="$dirsBefore $i "; + fi; + done; + for i in "${srcsArray[@]}"; + do + unpackFile "$i"; + done; + : "${sourceRoot=}"; + if [ -n "${setSourceRoot:-}" ]; then + runOneHook setSourceRoot; + else + if [ -z "$sourceRoot" ]; then + for i in *; + do + if [ -d "$i" ]; then + case $dirsBefore in + *\ $i\ *) + + ;; + *) + if [ -n "$sourceRoot" ]; then + echo "unpacker produced multiple directories"; + exit 1; + fi; + sourceRoot="$i" + ;; + esac; + fi; + done; + fi; + fi; + if [ -z "$sourceRoot" ]; then + echo "unpacker appears to have produced no directories"; + exit 1; + fi; + echo "source root is $sourceRoot"; + if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then + chmod -R u+w -- "$sourceRoot"; + fi; + runHook postUnpack +} +_nixLogWithLevel () +{ + + [[ -z ${NIX_LOG_FD-} || ${NIX_DEBUG:-0} -lt ${1:?} ]] && return 0; + local logLevel; + case "${1:?}" in + 0) + logLevel=ERROR + ;; + 1) + logLevel=WARN + ;; + 2) + logLevel=NOTICE + ;; + 3) + logLevel=INFO + ;; + 4) + logLevel=TALKATIVE + ;; + 5) + logLevel=CHATTY + ;; + 6) + logLevel=DEBUG + ;; + 7) + logLevel=VOMIT + ;; + *) + echo "_nixLogWithLevel: called with invalid log level: ${1:?}" >&"$NIX_LOG_FD"; + return 1 + ;; + esac; + local callerName="${FUNCNAME[2]}"; + if [[ $callerName == "_callImplicitHook" ]]; then + callerName="${hookName:?}"; + fi; + printf "%s: %s: %s\n" "$logLevel" "$callerName" "${2:?}" >&"$NIX_LOG_FD" +} +fixupPhase () +{ + + local output; + for output in $(getAllOutputNames); + do + if [ -e "${!output}" ]; then + chmod -R u+w,u-s,g-s "${!output}"; + fi; + done; + runHook preFixup; + local output; + for output in $(getAllOutputNames); + do + prefix="${!output}" runHook fixupOutput; + done; + recordPropagatedDependencies; + if [ -n "${setupHook:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook"; + fi; + if [ -n "${setupHooks:-}" ]; then + mkdir -p "${!outputDev}/nix-support"; + local hook; + for hook in ${setupHooks[@]}; + do + local content; + consumeEntire content < "$hook"; + substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook"; + unset -v content; + done; + unset -v hook; + fi; + if [ -n "${propagatedUserEnvPkgs[*]:-}" ]; then + mkdir -p "${!outputBin}/nix-support"; + printWords "${propagatedUserEnvPkgs[@]}" > "${!outputBin}/nix-support/propagated-user-env-packages"; + fi; + runHook postFixup +} +prependToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if type=$(declare -p "$1" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2; + return 1 + ;; + -a*) + useArray=true + ;; + *) + useArray=false + ;; + esac; + fi; + shift; + if $useArray; then + nameref=("$@" ${nameref+"${nameref[@]}"}); + else + nameref="$* ${nameref-}"; + fi +} +runHook () +{ + + local hookName="$1"; + shift; + local hooksSlice="${hookName%Hook}Hooks[@]"; + local hook; + for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"}; + do + _logHook "$hookName" "$hook" "$@"; + _eval "$hook" "$@"; + done; + return 0 +} +_overrideFirst () +{ + + if [ -z "${!1-}" ]; then + _assignFirst "$@"; + fi +} +printLines () +{ + + (( "$#" > 0 )) || return 0; + printf '%s\n' "$@" +} +substituteAllStream () +{ + + local -a args=(); + _allFlags; + substituteStream "$1" "$2" "${args[@]}" +} +moveToOutput () +{ + + local patt="$1"; + local dstOut="$2"; + local output; + for output in $(getAllOutputNames); + do + if [ "${!output}" = "$dstOut" ]; then + continue; + fi; + local srcPath; + for srcPath in "${!output}"/$patt; + do + if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then + continue; + fi; + if [ "$dstOut" = REMOVE ]; then + echo "Removing $srcPath"; + rm -r "$srcPath"; + else + local dstPath="$dstOut${srcPath#${!output}}"; + echo "Moving $srcPath to $dstPath"; + if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then + rmdir "$srcPath" --ignore-fail-on-non-empty; + if [ -d "$srcPath" ]; then + mv -t "$dstPath" "$srcPath"/*; + rmdir "$srcPath"; + fi; + else + mkdir -p "$(readlink -m "$dstPath/..")"; + mv "$srcPath" "$dstPath"; + fi; + fi; + local srcParent="$(readlink -m "$srcPath/..")"; + if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then + echo "Removing empty $srcParent/ and (possibly) its parents"; + rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true; + fi; + done; + done +} +showPhaseHeader () +{ + + local phase="$1"; + echo "Running phase: $phase"; + if [[ -z ${NIX_LOG_FD-} ]]; then + return; + fi; + printf "@nix { \"action\": \"setPhase\", \"phase\": \"%s\" }\n" "$phase" >&"$NIX_LOG_FD" +} +_activatePkgs () +{ + + local hostOffset targetOffset; + local pkg; + for hostOffset in "${allPlatOffsets[@]}"; + do + local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}"; + for targetOffset in "${allPlatOffsets[@]}"; + do + (( hostOffset <= targetOffset )) || continue; + local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + activatePackage "$pkg" "$hostOffset" "$targetOffset"; + done; + done; + done +} +_allFlags () +{ + + export system pname name version; + while IFS='' read -r varName; do + nixTalkativeLog "@${varName}@ -> ${!varName}"; + args+=("--subst-var" "$varName"); + done < <(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }') +} +patchELF () +{ + + local dir="$1"; + [ -e "$dir" ] || return 0; + echo "shrinking RPATHs of ELF executables and libraries in $dir"; + local i; + while IFS= read -r -d '' i; do + if [[ "$i" =~ .build-id ]]; then + continue; + fi; + if ! isELF "$i"; then + continue; + fi; + echo "shrinking $i"; + patchelf --shrink-rpath "$i" || true; + done < <(find "$dir" -type f -print0) +} +getRole () +{ + + case $1 in + -1) + role_post='_FOR_BUILD' + ;; + 0) + role_post='' + ;; + 1) + role_post='_FOR_TARGET' + ;; + *) + echo "binutils-wrapper-2.46: used as improper sort of dependency" 1>&2; + return 1 + ;; + esac +} +appendToVar () +{ + + local -n nameref="$1"; + local useArray type; + if [ -n "$__structuredAttrs" ]; then + useArray=true; + else + useArray=false; + fi; + if type=$(declare -p "$1" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2; + return 1 + ;; + -a*) + useArray=true + ;; + *) + useArray=false + ;; + esac; + fi; + shift; + if $useArray; then + nameref=(${nameref+"${nameref[@]}"} "$@"); + else + nameref="${nameref-} $*"; + fi +} +nixErrorLog () +{ + + _nixLogWithLevel 0 "$*" +} +nixInfoLog () +{ + + _nixLogWithLevel 3 "$*" +} +_multioutDevs () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then + return; + fi; + moveToOutput include "${!outputInclude}"; + moveToOutput lib/pkgconfig "${!outputDev}"; + moveToOutput share/pkgconfig "${!outputDev}"; + moveToOutput lib/cmake "${!outputDev}"; + moveToOutput share/aclocal "${!outputDev}"; + for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; + do + echo "Patching '$f' includedir to output ${!outputInclude}"; + sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f"; + done +} +updateAutotoolsGnuConfigScriptsPhase () +{ + + if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then + return; + fi; + for script in config.sub config.guess; + do + for f in $(find . -type f -name "$script"); + do + echo "Updating Autotools / GNU config script to a newer upstream version: $f"; + cp -f "/nix/store/zmvllxxx62iys7vpyg020rni3v29bcxi-gnu-config-2024-01-01/$script" "$f"; + done; + done +} +_addToEnv () +{ + + local depHostOffset depTargetOffset; + local pkg; + for depHostOffset in "${allPlatOffsets[@]}"; + do + local hookVar="${pkgHookVarVars[depHostOffset + 1]}"; + local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}"; + for depTargetOffset in "${allPlatOffsets[@]}"; + do + (( depHostOffset <= depTargetOffset )) || continue; + local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"; + if [[ -z "${strictDeps-}" ]]; then + local visitedPkgs=""; + for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}"; + do + if [[ "$visitedPkgs" = *"$pkg"* ]]; then + continue; + fi; + runHook "${!hookRef}" "$pkg"; + visitedPkgs+=" $pkg"; + done; + else + local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]"; + local pkgsSlice="${!pkgsRef}[@]"; + for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; + do + runHook "${!hookRef}" "$pkg"; + done; + fi; + done; + done +} +consumeEntire () +{ + + if IFS='' read -r -d '' "$1"; then + echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2; + return 1; + fi +} +_defaultUnpack () +{ + + local fn="$1"; + local destination; + if [ -d "$fn" ]; then + destination="$(stripHash "$fn")"; + if [ -e "$destination" ]; then + echo "Cannot copy $fn to $destination: destination already exists!"; + echo "Did you specify two \"srcs\" with the same \"name\"?"; + return 1; + fi; + cp -r --preserve=timestamps --reflink=auto -- "$fn" "$destination"; + else + case "$fn" in + *.tar.xz | *.tar.lzma | *.txz) + ( XZ_OPT="--threads=$NIX_BUILD_CORES" xz -d < "$fn"; + true ) | tar xf - --mode=+w --warning=no-timestamp + ;; + *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz) + tar xf "$fn" --mode=+w --warning=no-timestamp + ;; + *) + return 1 + ;; + esac; + fi +} +addToSearchPathWithCustomDelimiter () +{ + + local delimiter="$1"; + local varName="$2"; + local dir="$3"; + if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then + export "${varName}=${!varName:+${!varName}${delimiter}}${dir}"; + fi +} +isMachO () +{ + + local fn="$1"; + local fd; + local magic; + exec {fd}< "$fn"; + LANG=C read -r -n 4 -u "$fd" magic; + exec {fd}>&-; + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then + return 0; + else + if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then + return 0; + else + return 1; + fi; + fi; + fi +} +fixLibtool () +{ + + local search_path; + for flag in $NIX_LDFLAGS; + do + case $flag in + -L*) + search_path+=" ${flag#-L}" + ;; + esac; + done; + sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'${search_path:-}'^" -e 's^eval sys_lib_.+search_path=.*^^' +} +_multioutPropagateDev () +{ + + if [ "$(getAllOutputNames)" = "out" ]; then + return; + fi; + local outputFirst; + for outputFirst in $(getAllOutputNames); + do + break; + done; + local propagaterOutput="$outputDev"; + if [ -z "$propagaterOutput" ]; then + propagaterOutput="$outputFirst"; + fi; + if [ -z "${propagatedBuildOutputs+1}" ]; then + local po_dirty="$outputBin $outputInclude $outputLib"; + set +o pipefail; + propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `; + set -o pipefail; + fi; + if [ -z "$propagatedBuildOutputs" ]; then + return; + fi; + mkdir -p "${!propagaterOutput}"/nix-support; + for output in $propagatedBuildOutputs; + do + echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs; + done +} +buildPhase () +{ + + runHook preBuild; + if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then + echo "no Makefile or custom buildPhase, doing nothing"; + else + foundMakefile=1; + local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL="$SHELL"); + concatTo flagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray; + echoCmd 'build flags' "${flagsArray[@]}"; + make ${makefile:+-f $makefile} "${flagsArray[@]}"; + unset flagsArray; + fi; + runHook postBuild +} +nixWarnLog () +{ + + _nixLogWithLevel 1 "$*" +} +patchShebangsAuto () +{ + + if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then + if [[ "$output" != out && "$output" = "$outputDev" ]]; then + patchShebangs --build "$prefix"; + else + patchShebangs --host "$prefix"; + fi; + fi +} +updateSourceDateEpoch () +{ + + local path="$1"; + [[ $path == -* ]] && path="./$path"; + local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ "%p"\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)); + local time="${res[0]//\.[0-9]*/}"; + local newestFile="${res[1]}"; + if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then + echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile"; + export SOURCE_DATE_EPOCH="$time"; + local now="$(date +%s)"; + if [ "$time" -gt $((now - 60)) ]; then + echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic"; + fi; + fi +} +_eval () +{ + + if declare -F "$1" > /dev/null 2>&1; then + "$@"; + else + eval "$1"; + fi +} +_moveSbin () +{ + + if [ "${dontMoveSbin-}" = 1 ]; then + return; + fi; + if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then + return; + fi; + echo "moving $prefix/sbin/* to $prefix/bin"; + mkdir -p $prefix/bin; + shopt -s dotglob; + for i in $prefix/sbin/*; + do + mv "$i" $prefix/bin; + done; + shopt -u dotglob; + rmdir $prefix/sbin; + ln -s bin $prefix/sbin +} +findInputs () +{ + + local -r pkg="$1"; + local -r hostOffset="$2"; + local -r targetOffset="$3"; + (( hostOffset <= targetOffset )) || exit 1; + local varVar="${pkgAccumVarVars[hostOffset + 1]}"; + local varRef="$varVar[$((targetOffset - hostOffset))]"; + local var="${!varRef}"; + unset -v varVar varRef; + local varSlice="$var[*]"; + case " ${!varSlice-} " in + *" $pkg "*) + return 0 + ;; + esac; + unset -v varSlice; + eval "$var"'+=("$pkg")'; + if ! [ -e "$pkg" ]; then + echo "build input $pkg does not exist" 1>&2; + exit 1; + fi; + function mapOffset () + { + local -r inputOffset="$1"; + local -n outputOffset="$2"; + if (( inputOffset <= 0 )); then + outputOffset=$((inputOffset + hostOffset)); + else + outputOffset=$((inputOffset - 1 + targetOffset)); + fi + }; + local relHostOffset; + for relHostOffset in "${allPlatOffsets[@]}"; + do + local files="${propagatedDepFilesVars[relHostOffset + 1]}"; + local hostOffsetNext; + mapOffset "$relHostOffset" hostOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + local relTargetOffset; + for relTargetOffset in "${allPlatOffsets[@]}"; + do + (( "$relHostOffset" <= "$relTargetOffset" )) || continue; + local fileRef="${files}[$relTargetOffset - $relHostOffset]"; + local file="${!fileRef}"; + unset -v fileRef; + local targetOffsetNext; + mapOffset "$relTargetOffset" targetOffsetNext; + (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; + [[ -f "$pkg/nix-support/$file" ]] || continue; + local pkgNext; + read -r -d '' pkgNext < "$pkg/nix-support/$file" || true; + for pkgNext in $pkgNext; + do + findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext"; + done; + done; + done +} +nixChattyLog () +{ + + _nixLogWithLevel 5 "$*" +} +definePhases () +{ + + if [ -z "${phases[*]:-}" ]; then + phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}"; + fi +} +patchShebangs () +{ + + local pathName; + local update=false; + while [[ $# -gt 0 ]]; do + case "$1" in + --host) + pathName=HOST_PATH; + shift + ;; + --build) + pathName=PATH; + shift + ;; + --update) + update=true; + shift + ;; + --) + shift; + break + ;; + -* | --*) + echo "Unknown option $1 supplied to patchShebangs" 1>&2; + return 1 + ;; + *) + break + ;; + esac; + done; + echo "patching script interpreter paths in $@"; + local f; + local oldPath; + local newPath; + local arg0; + local args; + local oldInterpreterLine; + local newInterpreterLine; + if [[ $# -eq 0 ]]; then + echo "No arguments supplied to patchShebangs" 1>&2; + return 0; + fi; + local f; + while IFS= read -r -d '' f; do + isScript "$f" || continue; + read -r oldInterpreterLine < "$f" || [ "$oldInterpreterLine" ]; + read -r oldPath arg0 args <<< "${oldInterpreterLine:2}"; + if [[ -z "${pathName:-}" ]]; then + if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then + pathName=HOST_PATH; + else + pathName=PATH; + fi; + fi; + if [[ "$oldPath" == *"/bin/env" ]]; then + if [[ $arg0 == "-S" ]]; then + arg0=${args%% *}; + [[ "$args" == *" "* ]] && args=${args#* } || args=; + newPath="$(PATH="${!pathName}" type -P "env" || true)"; + args="-S $(PATH="${!pathName}" type -P "$arg0" || true) $args"; + else + if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then + echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2; + exit 1; + else + newPath="$(PATH="${!pathName}" type -P "$arg0" || true)"; + fi; + fi; + else + if [[ -z $oldPath ]]; then + oldPath="/bin/sh"; + fi; + newPath="$(PATH="${!pathName}" type -P "$(basename "$oldPath")" || true)"; + args="$arg0 $args"; + fi; + newInterpreterLine="$newPath $args"; + newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}}; + if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then + if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then + echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\""; + escapedInterpreterLine=${newInterpreterLine//\\/\\\\}; + timestamp=$(stat --printf "%y" "$f"); + tmpFile=$(mktemp -t patchShebangs.XXXXXXXXXX); + sed -e "1 s|.*|#\!$escapedInterpreterLine|" "$f" > "$tmpFile"; + local restoreReadOnly; + if [[ ! -w "$f" ]]; then + chmod +w "$f"; + restoreReadOnly=true; + fi; + cat "$tmpFile" > "$f"; + rm "$tmpFile"; + if [[ -n "${restoreReadOnly:-}" ]]; then + chmod -w "$f"; + fi; + touch --date "$timestamp" "$f"; + fi; + fi; + done < <(find "$@" -type f -perm -0100 -print0) +} +_makeSymlinksRelative () +{ + + local prefixes; + prefixes=(); + for output in $(getAllOutputNames); + do + [ ! -e "${!output}" ] && continue; + prefixes+=("${!output}"); + done; + find "${prefixes[@]}" -type l -printf '%H\0%p\0' | xargs -0 -n2 -r -P "$NIX_BUILD_CORES" sh -c ' + output="$1" + link="$2" + + linkTarget=$(readlink "$link") + + # only touch links that point inside the same output tree + [[ $linkTarget == "$output"/* ]] || exit 0 + + if [ ! -e "$linkTarget" ]; then + echo "the symlink $link is broken, it points to $linkTarget (which is missing)" + fi + + echo "making symlink relative: $link" + ln -snrf "$linkTarget" "$link" + ' _ +} +compressManPages () +{ + + local dir="$1"; + if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then + return; + fi; + echo "gzipping man pages under $dir/share/man/"; + find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | xargs -0 -n1 -P "$NIX_BUILD_CORES" gzip -n -f; + find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do + local target; + target="$(readlink -f "$f")"; + if [ -f "$target".gz ]; then + ln -sf "$target".gz "$f".gz && rm "$f"; + fi; + done +} +printPhases () +{ + + definePhases; + local phase; + for phase in ${phases[*]}; + do + printf '%s\n' "$phase"; + done +} +stripDirs () +{ + + local cmd="$1"; + local ranlibCmd="$2"; + local paths="$3"; + local stripFlags="$4"; + local excludeFlags=(); + local pathsNew=; + [ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1; + [ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1; + local pattern; + if [ -n "${stripExclude:-}" ]; then + for pattern in "${stripExclude[@]}"; + do + excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')'); + done; + fi; + local p; + for p in ${paths}; + do + if [ -e "$prefix/$p" ]; then + pathsNew="${pathsNew} $prefix/$p"; + fi; + done; + paths=${pathsNew}; + if [ -n "${paths}" ]; then + echo "stripping (with command $cmd and flags $stripFlags) in $paths"; + local striperr; + striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')"; + find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -printf '%D-%i,%p\0' | sort -t, -k1,1 -u -z | cut -d, -f2- -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?; + [[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 ); + rm "$striperr"; + find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2> /dev/null; + fi +} +bintoolsWrapper_addLDVars () +{ + + local role_post; + getHostRoleEnvHook; + if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib64"; + fi; + if [[ -d "$1/lib" ]]; then + local -a glob=($1/lib/lib*); + if [ "${#glob[*]}" -gt 0 ]; then + export NIX_LDFLAGS${role_post}+=" -L$1/lib"; + fi; + fi +} +runPhase () +{ + + local curPhase="$*"; + if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then + return; + fi; + if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then + return; + fi; + if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then + return; + fi; + if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then + return; + fi; + if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then + return; + fi; + if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then + return; + fi; + if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then + return; + fi; + if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then + return; + fi; + showPhaseHeader "$curPhase"; + dumpVars; + local startTime endTime; + startTime=$(date +"%s"); + eval "${!curPhase:-$curPhase}"; + endTime=$(date +"%s"); + showPhaseFooter "$curPhase" "$startTime" "$endTime"; + if [ "$curPhase" = unpackPhase ]; then + [ -n "${sourceRoot:-}" ] && chmod +x -- "${sourceRoot}"; + cd -- "${sourceRoot:-.}"; + fi +} +concatTo () +{ + + local -; + set -o noglob; + local -n targetref="$1"; + shift; + local arg default name type; + for arg in "$@"; + do + IFS="=" read -r name default <<< "$arg"; + local -n nameref="$name"; + if [[ -z "${nameref[*]}" && -n "$default" ]]; then + targetref+=("$default"); + else + if type=$(declare -p "$name" 2> /dev/null); then + case "${type#* }" in + -A*) + echo "concatTo(): ERROR: trying to use concatTo on an associative array." 1>&2; + return 1 + ;; + -a*) + targetref+=("${nameref[@]}") + ;; + *) + if [[ "$name" = *"Array" ]]; then + nixErrorLog "concatTo(): $name is not declared as array, treating as a singleton. This will become an error in future"; + targetref+=(${nameref+"${nameref[@]}"}); + else + targetref+=(${nameref-}); + fi + ;; + esac; + fi; + fi; + done +} +_doStrip () +{ + + local -ra flags=(dontStripHost dontStripTarget); + local -ra debugDirs=(stripDebugList stripDebugListTarget); + local -ra allDirs=(stripAllList stripAllListTarget); + local -ra stripCmds=(STRIP STRIP_FOR_TARGET); + local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET); + stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin Applications Library/Frameworks}; + stripDebugListTarget=${stripDebugListTarget[*]:-}; + stripAllList=${stripAllList[*]:-}; + stripAllListTarget=${stripAllListTarget[*]:-}; + local i; + for i in ${!stripCmds[@]}; + do + local -n flag="${flags[$i]}"; + local -n debugDirList="${debugDirs[$i]}"; + local -n allDirList="${allDirs[$i]}"; + local -n stripCmd="${stripCmds[$i]}"; + local -n ranlibCmd="${ranlibCmds[$i]}"; + if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then + continue; + fi; + stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}"; + stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}"; + done +} +_multioutConfig () +{ + + if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then + return; + fi; + if [ -z "${shareDocName:-}" ]; then + local confScript="${configureScript:-}"; + if [ -z "$confScript" ] && [ -x ./configure ]; then + confScript=./configure; + fi; + if [ -f "$confScript" ]; then + local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")"; + fi; + if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then + shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"; + fi; + fi; + prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale; + prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal +} +_pruneLibtoolFiles () +{ + + if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then + return; + fi; + find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; +} +PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}" +XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}" + +eval "${shellHook:-}" diff --git a/.devenv/shell-rcfile.sh b/.devenv/shell-rcfile.sh new file mode 100644 index 0000000..f8d243a --- /dev/null +++ b/.devenv/shell-rcfile.sh @@ -0,0 +1,163 @@ +# Disable history during init so devenv internal commands don't pollute history. +set +o history + +# Environment diff helpers (always defined for tracking) + +# Environment diff helpers (inspired by direnv) +# Diff is stored in _DEVENV_DIFF env var (not a file) so each shell has its own state +# Uses gzip+base64 encoding for compact storage + +# Variables to ignore in diff (shell internals that change dynamically) +__devenv_ignored_var() { + case "$1" in + _*|PWD|OLDPWD|SHLVL|SHELL|SHELLOPTS|BASHOPTS|BASH_*|HISTCMD|HISTFILE) + return 0 ;; + PS1|PS2|PS3|PS4|PROMPT|PROMPT_COMMAND|PROMPT_DIRTRIM) + return 0 ;; + COMP_*|READLINE_*|MAILCHECK|COLUMNS|LINES|RANDOM|SECONDS|LINENO|EPOCHSECONDS|EPOCHREALTIME|SRANDOM) + return 0 ;; + STARSHIP_*|__fish*|DIRENV_*|nix_saved_*) + return 0 ;; + *) + return 1 ;; + esac +} + +__devenv_capture_env() { + # Capture exported variables using declare -p for proper escaping + declare -p -x 2>/dev/null | LC_ALL=C sort +} + +__devenv_serialize_diff() { + # Serialize diff (stdin) to base64-encoded gzip + gzip -c | base64 -w0 +} + +__devenv_deserialize_diff() { + # Deserialize diff from base64-encoded gzip to stdout + echo "$1" | base64 -d | gzip -d 2>/dev/null +} + +__devenv_compute_diff() { + # Compare before ($1) and current env, return diff via _DEVENV_DIFF env var + local before_file="$1" + + # Create temp files + local after_file diff_content + after_file=$(mktemp) + diff_content=$(mktemp) + __devenv_capture_env > "$after_file" + + # Build associative arrays for before/after + local -A before_vars after_vars + while IFS= read -r line; do + [[ "$line" != declare\ -x\ * ]] && continue + local vardef="${line#declare -x }" + local var="${vardef%%=*}" + [[ -z "$var" ]] && continue + __devenv_ignored_var "$var" && continue + before_vars["$var"]="$line" + done < "$before_file" + + while IFS= read -r line; do + [[ "$line" != declare\ -x\ * ]] && continue + local vardef="${line#declare -x }" + local var="${vardef%%=*}" + [[ -z "$var" ]] && continue + __devenv_ignored_var "$var" && continue + after_vars["$var"]="$line" + done < "$after_file" + + # Find PREV entries (vars that were modified or removed) + for var in "${!before_vars[@]}"; do + if [[ "${after_vars[$var]}" != "${before_vars[$var]}" ]]; then + echo "P:${before_vars[$var]}" >> "$diff_content" + fi + done + + # Find NEXT entries (vars that were added or modified) + for var in "${!after_vars[@]}"; do + if [[ -z "${before_vars[$var]+x}" ]]; then + echo "N:$var" >> "$diff_content" + elif [[ "${after_vars[$var]}" != "${before_vars[$var]}" ]]; then + echo "N:$var" >> "$diff_content" + fi + done + + # Serialize and store in env var + _DEVENV_DIFF=$(__devenv_serialize_diff < "$diff_content") + export _DEVENV_DIFF + + rm -f "$after_file" "$diff_content" +} + +__devenv_apply_reverse_diff() { + # Reverse the diff: restore PREV values, unset NEXT-only vars + [[ -z "$_DEVENV_DIFF" ]] && return + + local -A prev_vars + local diff_content + diff_content=$(__devenv_deserialize_diff "$_DEVENV_DIFF") + + # First pass: collect and restore PREV declarations + while IFS= read -r line; do + if [[ "$line" == P:declare\ * ]]; then + local decl="${line#P:}" + local var="${decl#declare -x }" + var="${var%%=*}" + prev_vars["$var"]=1 + # Use export instead of evaluating the declare statement directly, + # because declare -x inside a function creates a local variable + # in bash 5.0+. + eval "export ${decl#declare -x }" 2>/dev/null + fi + done <<< "$diff_content" + + # Second pass: unset NEXT vars that were not in PREV (added vars) + while IFS= read -r line; do + if [[ "$line" == N:* ]]; then + local var="${line#N:}" + if [[ -z "${prev_vars[$var]+x}" ]]; then + unset "$var" + fi + fi + done <<< "$diff_content" +} + + +# Capture environment BEFORE sourcing devenv (for diff tracking) +_devenv_before_file=$(mktemp) +__devenv_capture_env > "$_devenv_before_file" + +# Source the devenv environment +source "/home/user01/Projects/score-system/.devenv/shell-env.sh" + +# Compute and store the initial diff in _DEVENV_DIFF env var +__devenv_compute_diff "$_devenv_before_file" +rm -f "$_devenv_before_file" +unset _devenv_before_file + +# Save PATH before zsh init potentially modifies it +export _DEVENV_PATH="$PATH" + +# Save original ZDOTDIR so zsh init can restore it +if [ -n "$ZDOTDIR" ]; then + export _DEVENV_REAL_ZDOTDIR="$ZDOTDIR" +fi + +# Point ZDOTDIR to our init directory containing our .zshrc +export ZDOTDIR="/home/user01/Projects/score-system/.devenv/zsh" + +# Re-enable history before exec +set -o history + +# Exec into zsh (resolve via PATH if not absolute, since the devenv +# environment may have added it after this process started) +if [ ! -x "/run/current-system/sw/bin/zsh" ] && ! command -v "/run/current-system/sw/bin/zsh" >/dev/null 2>&1; then + echo "devenv: error: shell '/run/current-system/sw/bin/zsh' not found" >&2 + echo "devenv: add zsh to your devenv.nix packages or set SHELL to an absolute path" >&2 + exit 1 +fi +exec "/run/current-system/sw/bin/zsh" -i +echo "devenv: error: failed to exec into /run/current-system/sw/bin/zsh" >&2 +exit 1 diff --git a/.devenv/state/files.json b/.devenv/state/files.json new file mode 100644 index 0000000..b4c7443 --- /dev/null +++ b/.devenv/state/files.json @@ -0,0 +1 @@ +{"managedFiles":[]} diff --git a/.devenv/state/tasks.db-shm b/.devenv/state/tasks.db-shm new file mode 100644 index 0000000..a75d1ab Binary files /dev/null and b/.devenv/state/tasks.db-shm differ diff --git a/.devenv/state/tasks.db-wal b/.devenv/state/tasks.db-wal new file mode 100644 index 0000000..dd9b18a Binary files /dev/null and b/.devenv/state/tasks.db-wal differ diff --git a/.devenv/task-names.txt b/.devenv/task-names.txt new file mode 100644 index 0000000..2ff6500 --- /dev/null +++ b/.devenv/task-names.txt @@ -0,0 +1,6 @@ +devenv:container:copy +devenv:enterShell +devenv:enterTest +devenv:files +devenv:files:cleanup +devenv:processes:server \ No newline at end of file diff --git a/.devenv/zsh/.zcompdump b/.devenv/zsh/.zcompdump new file mode 100644 index 0000000..fa0536e --- /dev/null +++ b/.devenv/zsh/.zcompdump @@ -0,0 +1,2464 @@ +#files: 2076 version: 5.9.1 + +_comps=( +'-' '_precommand' +'.' '_source' +'5g' '_go' +'5l' '_go' +'6g' '_go' +'6l' '_go' +'7z' '_7zip' +'7za' '_7zip' +'7zr' '_7zip' +'7zz' '_7zip' +'8g' '_go' +'8l' '_go' +'a2dismod' '_a2utils' +'a2dissite' '_a2utils' +'a2enmod' '_a2utils' +'a2ensite' '_a2utils' +'a2ps' '_a2ps' +'aaaa' '_hosts' +'aap' '_aap' +'abcde' '_abcde' +'ack' '_ack' +'ack2' '_ack' +'ack-grep' '_ack' +'ack-standalone' '_ack' +'acpi' '_acpi' +'acpiconf' '_acpiconf' +'acpitool' '_acpitool' +'acroread' '_acroread' +'adb' '_adb' +'add-zle-hook-widget' '_add-zle-hook-widget' +'add-zsh-hook' '_add-zsh-hook' +'ali' '_mh' +'alias' '_alias' +'amaya' '_webbrowser' +'analyseplugin' '_analyseplugin' +'animate' '_imagemagick' +'anno' '_mh' +'ansible' '_ansible' +'ansible-config' '_ansible' +'ansible-console' '_ansible' +'ansible-doc' '_ansible' +'ansible-galaxy' '_ansible' +'ansible-inventory' '_ansible' +'ansible-playbook' '_ansible' +'ansible-pull' '_ansible' +'ansible-vault' '_ansible' +'ant' '_ant' +'antiword' '_antiword' +'aodh' '_openstack' +'aoss' '_precommand' +'apache2ctl' '_apachectl' +'apachectl' '_apachectl' +'aplay' '_alsa-utils' +'apm' '_apm' +'appletviewer' '_java' +'apropos' '_man' +'apt' '_apt' +'apt-cache' '_apt' +'apt-cdrom' '_apt' +'apt-config' '_apt' +'apt-file' '_apt-file' +'apt-get' '_apt' +'aptitude' '_aptitude' +'apt-mark' '_apt' +'apt-move' '_apt-move' +'apt-show-versions' '_apt-show-versions' +'apvlv' '_pdf' +'arduino-ctags' '_ctags' +'arecord' '_alsa-utils' +'arena' '_webbrowser' +'_arguments' '__arguments' +'arp' '_arp' +'arping' '_arping' +'arptables' '_iptables' +'-array-value-' '_value' +'asciidoctor' '_asciidoctor' +'asciinema' '_asciinema' +'ash' '_sh' +'-assign-parameter-' '_assign' +'at' '_at' +'atq' '_at' +'atrm' '_at' +'attr' '_attr' +'audit2allow' '_selinux' +'audit2why' '_selinux' +'augtool' '_augeas' +'auto-apt' '_auto-apt' +'autoload' '_typeset' +'avahi-browse' '_avahi' +'avahi-browse-domains' '_avahi' +'avahi-resolve' '_avahi' +'avahi-resolve-address' '_avahi' +'avahi-resolve-host-name' '_avahi' +'avcstat' '_selinux' +'awk' '_awk' +'axi-cache' '_axi-cache' +'b2sum' '_md5sum' +'barbican' '_openstack' +'base32' '_base64' +'base64' '_base64' +'basename' '_basename' +'basenc' '_basenc' +'bash' '_bash' +'bat' '_bat' +'batch' '_at' +'baz' '_baz' +'beadm' '_beadm' +'bectl' '_bectl' +'beep' '_beep' +'bg' '_jobs_bg' +'bibtex' '_bibtex' +'bindkey' '_bindkey' +'bison' '_bison' +'blkid' '_blkid' +'bluetoothctl' '_bluetoothctl' +'bmake' '_make' +'bogofilter' '_bogofilter' +'bogotune' '_bogofilter' +'bogoutil' '_bogofilter' +'bootctl' '_bootctl' +'bpython' '_bpython' +'bpython2' '_bpython' +'bpython2-gtk' '_bpython' +'bpython2-urwid' '_bpython' +'bpython3' '_bpython' +'bpython3-gtk' '_bpython' +'bpython3-urwid' '_bpython' +'bpython-gtk' '_bpython' +'bpython-urwid' '_bpython' +'-brace-parameter-' '_brace_parameter' +'brctl' '_brctl' +'bsdconfig' '_bsdconfig' +'bsdgrep' '_grep' +'bsdinstall' '_bsdinstall' +'bsdtar' '_tar' +'btdownloadcurses' '_bittorrent' +'btdownloadgui' '_bittorrent' +'btdownloadheadless' '_bittorrent' +'btlaunchmany' '_bittorrent' +'btlaunchmanycurses' '_bittorrent' +'btmakemetafile' '_bittorrent' +'btreannounce' '_bittorrent' +'btrename' '_bittorrent' +'btrfs' '_btrfs' +'bts' '_bts' +'btshowmetainfo' '_bittorrent' +'bttrack' '_bittorrent' +'bug' '_bug' +'buildhash' '_ispell' +'builtin' '_builtin' +'bun' '_bun' +'bunzip2' '_bzip2' +'burst' '_mh' +'busctl' '_busctl' +'bzcat' '_bzip2' +'bzegrep' '_grep' +'bzfgrep' '_grep' +'bzgrep' '_grep' +'bzip2' '_bzip2' +'bzip2recover' '_bzip2' +'bzr' '_bzr' +'c++' '_gcc' +'cabal' '_cabal' +'cacaclock' '_cacaclock' +'caffeinate' '_caffeinate' +'cal' '_cal' +'calendar' '_calendar' +'cat' '_cat' +'catchsegv' '_precommand' +'cc' '_gcc' +'ccal' '_ccal' +'cd' '_cd' +'cdbs-edit-patch' '_cdbs-edit-patch' +'cdcd' '_cdcd' +'cdr' '_cdr' +'cdrdao' '_cdrdao' +'cdrecord' '_cdrecord' +'ceilometer' '_openstack' +'certtool' '_gnutls' +'cftp' '_twisted' +'chage' '_users' +'chattr' '_chattr' +'chcon' '_selinux' +'chdir' '_cd' +'chdman' '_chdman' +'checkmodule' '_selinux' +'checkpolicy' '_selinux' +'chflags' '_chflags' +'chfn' '_users' +'chgrp' '_chown' +'chimera' '_webbrowser' +'chkconfig' '_chkconfig' +'chkstow' '_stow' +'chmod' '_chmod' +'choom' '_choom' +'chown' '_chown' +'chpass' '_chsh' +'chroot' '_chroot' +'chrt' '_chrt' +'chsh' '_chsh' +'ci' '_rcs' +'cifsiostat' '_sysstat' +'cinder' '_openstack' +'ckeygen' '_twisted' +'cksum' '_cksum' +'clang' '_gcc' +'clang++' '_gcc' +'clay' '_clay' +'clear' '_nothing' +'cloudkitty' '_openstack' +'clusterdb' '_postgresql' +'cmp' '_cmp' +'co' '_rcs' +'code' '_code' +'col' '_col' +'column' '_column' +'combine' '_imagemagick' +'combinediff' '_patchutils' +'comm' '_comm' +'-command-' '_autocd' +'command' '_command' +'-command-line-' '_normal' +'comp' '_mh' +'compadd' '_compadd' +'compdef' '_compdef' +'compinit' '_compinit' +'composer' '_composer' +'composer.phar' '_composer' +'composite' '_imagemagick' +'compress' '_compress' +'conch' '_twisted' +'-condition-' '_condition' +'config.status' '_configure' +'configure' '_configure' +'convert' '_imagemagick' +'coreadm' '_coreadm' +'coredumpctl' '_coredumpctl' +'cowsay' '_cowsay' +'cowthink' '_cowsay' +'cp' '_cp' +'cpio' '_cpio' +'cplay' '_cplay' +'cpupower' '_cpupower' +'createdb' '_postgresql' +'createuser' '_postgresql' +'crontab' '_crontab' +'crsh' '_cssh' +'cryptsetup' '_cryptsetup' +'cscope' '_cscope' +'csh' '_sh' +'csplit' '_csplit' +'cssh' '_cssh' +'csup' '_csup' +'ctags' '_ctags' +'ctags-exuberant' '_ctags' +'ctags-universal' '_ctags' +'cu' '_cu' +'curl' '_curl' +'cut' '_cut' +'cvs' '_cvs' +'cvsup' '_cvsup' +'cygcheck' '_cygcheck' +'cygcheck.exe' '_cygcheck' +'cygpath' '_cygpath' +'cygpath.exe' '_cygpath' +'cygrunsrv' '_cygrunsrv' +'cygrunsrv.exe' '_cygrunsrv' +'cygserver' '_cygserver' +'cygserver.exe' '_cygserver' +'cygstart' '_cygstart' +'cygstart.exe' '_cygstart' +'dak' '_dak' +'darcs' '_darcs' +'dash' '_sh' +'date' '_date' +'dbus-launch' '_dbus' +'dbus-monitor' '_dbus' +'dbus-send' '_dbus' +'dch' '_debchange' +'dchroot' '_dchroot' +'dchroot-dsa' '_dchroot-dsa' +'dconf' '_dconf' +'dcop' '_dcop' +'dcopclient' '_dcop' +'dcopfind' '_dcop' +'dcopobject' '_dcop' +'dcopref' '_dcop' +'dcopstart' '_dcop' +'dcut' '_dcut' +'dd' '_dd' +'debchange' '_debchange' +'debcheckout' '_debcheckout' +'debdiff' '_debdiff' +'debfoster' '_debfoster' +'debmany' '_debmany' +'deborphan' '_deborphan' +'debsign' '_debsign' +'debsnap' '_debsnap' +'debuild' '_debuild' +'declare' '_typeset' +'-default-' '_default' +'defaults' '_defaults' +'designate' '_openstack' +'devenv' '_devenv' +'devtodo' '_devtodo' +'df' '_df' +'dhclient' '_dhclient' +'dhclient3' '_dhclient' +'dhcpinfo' '_dhcpinfo' +'dhomepage' '_dhomepage' +'dict' '_dict' +'diff' '_diff' +'diff3' '_diff3' +'diffstat' '_diffstat' +'dig' '_dig' +'dillo' '_webbrowser' +'dircmp' '_directories' +'dirs' '_dirs' +'disable' '_disable' +'disown' '_jobs_fg' +'display' '_imagemagick' +'dist' '_mh' +'django-admin' '_django' +'django-admin.py' '_django' +'dladm' '_dladm' +'dlocate' '_dlocate' +'dmake' '_make' +'dmesg' '_dmesg' +'dmidecode' '_dmidecode' +'dnctl' '_ipfw' +'dnf' '_dnf' +'dnf-2' '_dnf' +'dnf-3' '_dnf' +'dnf4' '_dnf' +'dnf5' '_dnf5' +'doas' '_doas' +'docker' '_docker' +'domainname' '_yp' +'dos2unix' '_dos2unix' +'dosdel' '_floppy' +'dosread' '_floppy' +'dpatch-edit-patch' '_dpatch-edit-patch' +'dpkg' '_dpkg' +'dpkg-buildpackage' '_dpkg-buildpackage' +'dpkg-cross' '_dpkg-cross' +'dpkg-deb' '_dpkg' +'dpkg-info' '_dpkg-info' +'dpkg-query' '_dpkg' +'dpkg-reconfigure' '_dpkg' +'dpkg-repack' '_dpkg-repack' +'dpkg-source' '_dpkg_source' +'dput' '_dput' +'drill' '_drill' +'dropbox' '_dropbox' +'dropdb' '_postgresql' +'dropuser' '_postgresql' +'dscverify' '_dscverify' +'dsh' '_dsh' +'dtrace' '_dtrace' +'dtruss' '_dtruss' +'du' '_du' +'dumpadm' '_dumpadm' +'dumper' '_dumper' +'dumper.exe' '_dumper' +'_dunst' '_dunst' +'dunst' '_dunst' +'_dunstctl' '_dunstctl' +'dunstctl' '_dunstctl' +'_dunstify' '_dunstify' +'dunstify' '_dunstify' +'dupload' '_dupload' +'dvibook' '_dvi' +'dviconcat' '_dvi' +'dvicopy' '_dvi' +'dvidvi' '_dvi' +'dvipdf' '_dvi' +'dvips' '_dvi' +'dviselect' '_dvi' +'dvitodvi' '_dvi' +'dvitype' '_dvi' +'dwb' '_webbrowser' +'e2label' '_e2label' +'eatmydata' '_precommand' +'ebtables' '_iptables' +'ecasound' '_ecasound' +'echo' '_echo' +'echotc' '_echotc' +'echoti' '_echoti' +'ed' '_ed' +'egrep' '_grep' +'elfdump' '_elfdump' +'elinks' '_elinks' +'emulate' '_emulate' +'enable' '_enable' +'enscript' '_enscript' +'entr' '_entr' +'env' '_env' +'eog' '_eog' +'epdfview' '_pdf' +'epsffit' '_psutils' +'-equal-' '_equal' +'erb' '_ruby' +'espeak' '_espeak' +'etags' '_etags' +'ethtool' '_ethtool' +'eu-nm' '_nm' +'eu-objdump' '_objdump' +'eu-readelf' '_readelf' +'eu-strings' '_strings' +'eval' '_precommand' +'eview' '_vim' +'evim' '_vim' +'evince' '_evince' +'ex' '_vi' +'exec' '_exec' +'expand' '_unexpand' +'explodepkg' '_pkgtool' +'export' '_typeset' +'express' '_webbrowser' +'extcheck' '_java' +'extractres' '_psutils' +'fakeroot' '_fakeroot' +'false' '_nothing' +'fastfetch' '_fastfetch' +'fc' '_fc' +'fc-list' '_xft_fonts' +'fc-match' '_xft_fonts' +'feh' '_feh' +'fetch' '_fetch' +'fetchmail' '_fetchmail' +'ffmpeg' '_ffmpeg' +'fg' '_jobs_fg' +'fgrep' '_grep' +'figlet' '_figlet' +'filterdiff' '_patchutils' +'find' '_find' +'findaffix' '_ispell' +'findmnt' '_findmnt' +'finger' '_finger' +'fink' '_fink' +'firefox' '_mozilla' +'-first-' '_first' +'fish' '_fish' +'fixdlsrps' '_psutils' +'fixfiles' '_selinux' +'fixfmps' '_psutils' +'fixmacps' '_psutils' +'fixpsditps' '_psutils' +'fixpspps' '_psutils' +'fixscribeps' '_psutils' +'fixtpps' '_psutils' +'fixwfwps' '_psutils' +'fixwpps' '_psutils' +'fixwwps' '_psutils' +'flac' '_flac' +'flex' '_flex' +'flex++' '_flex' +'flipdiff' '_patchutils' +'flist' '_mh' +'flists' '_mh' +'float' '_typeset' +'flowadm' '_flowadm' +'flua' '_lua' +'fmadm' '_fmadm' +'fmt' '_fmt' +'fmttest' '_mh' +'fned' '_zed' +'fnext' '_mh' +'fold' '_fold' +'folder' '_mh' +'folders' '_mh' +'fortune' '_fortune' +'forw' '_mh' +'fprev' '_mh' +'free' '_free' +'freebsd-make' '_make' +'freebsd-update' '_freebsd-update' +'freezer' '_openstack' +'fsh' '_fsh' +'fstat' '_fstat' +'fs_usage' '_fs_usage' +'ftp' '_hosts' +'functions' '_typeset' +'fuser' '_fuser' +'fusermount' '_fusermount' +'fusermount3' '_fusermount' +'fwhois' '_whois' +'fw_update' '_fw_update' +'g++' '_gcc' +'galeon' '_webbrowser' +'gawk' '_awk' +'gb2sum' '_md5sum' +'gbase32' '_base64' +'gbase64' '_base64' +'gbasename' '_basename' +'gcat' '_cat' +'gcc' '_gcc' +'gccgo' '_go' +'gchgrp' '_chown' +'gchmod' '_chmod' +'gchown' '_chown' +'gchroot' '_chroot' +'gcksum' '_cksum' +'gcmp' '_cmp' +'gcomm' '_comm' +'gcore' '_gcore' +'gcp' '_cp' +'gcut' '_cut' +'gdate' '_date' +'gdb' '_gdb' +'gdd' '_dd' +'gdf' '_df' +'gdiff' '_diff' +'gdu' '_du' +'geany' '_geany' +'gecho' '_echo' +'gegrep' '_grep' +'gem' '_gem' +'genisoimage' '_genisoimage' +'genv' '_env' +'getafm' '_psutils' +'getclip' '_getclip' +'getclip.exe' '_getclip' +'getconf' '_getconf' +'getent' '_getent' +'getfacl' '_getfacl' +'getfacl.exe' '_getfacl' +'getfattr' '_attr' +'getmail' '_getmail' +'getopt' '_getopt' +'getopts' '_vars' +'getpidprevcon' '_selinux' +'getsebool' '_selinux' +'gex' '_vim' +'gexpand' '_unexpand' +'gfgrep' '_grep' +'gfind' '_find' +'gfmt' '_fmt' +'gfold' '_fold' +'ggetopt' '_getopt' +'ggrep' '_grep' +'ggv' '_gnome-gv' +'ghead' '_head' +'ghostscript' '_ghostscript' +'ghostview' '_pspdf' +'gid' '_id' +'ginstall' '_install' +'git' '_git' +'git-buildpackage' '_git-buildpackage' +'git-cvsserver' '_git' +'gitk' '_git' +'git-receive-pack' '_git' +'git-shell' '_git' +'git-upload-archive' '_git' +'git-upload-pack' '_git' +'gjoin' '_join' +'glance' '_openstack' +'gln' '_ln' +'global' '_global' +'glocate' '_locate' +'gls' '_ls' +'gm' '_graphicsmagick' +'gmake' '_make' +'gmd5sum' '_md5sum' +'gmkdir' '_mkdir' +'gmkfifo' '_mkfifo' +'gmknod' '_mknod' +'gmktemp' '_mktemp' +'gmplayer' '_mplayer' +'gmv' '_mv' +'gnl' '_nl' +'gnocchi' '_openstack' +'gnome-gv' '_gnome-gv' +'gnumake' '_make' +'gnumfmt' '_numfmt' +'gnupod_addsong' '_gnupod' +'gnupod_addsong.pl' '_gnupod' +'gnupod_check' '_gnupod' +'gnupod_check.pl' '_gnupod' +'gnupod_INIT' '_gnupod' +'gnupod_INIT.pl' '_gnupod' +'gnupod_search' '_gnupod' +'gnupod_search.pl' '_gnupod' +'gnutls-cli' '_gnutls' +'gnutls-cli-debug' '_gnutls' +'gnutls-serv' '_gnutls' +'god' '_od' +'gofmt' '_go' +'gpasswd' '_gpasswd' +'gpaste' '_paste' +'gpatch' '_patch' +'gpg' '_gpg' +'gpg2' '_gpg' +'gpgv' '_gpg' +'gpg-zip' '_gpg' +'gphoto2' '_gphoto2' +'gprintenv' '_printenv' +'gprof' '_gprof' +'gqview' '_gqview' +'gradle' '_gradle' +'gradlew' '_gradle' +'grail' '_webbrowser' +'greadlink' '_readlink' +'grep' '_grep' +'grepdiff' '_patchutils' +'grep-excuses' '_grep-excuses' +'grm' '_rm' +'grmdir' '_rmdir' +'groff' '_groff' +'groupadd' '_user_admin' +'groupdel' '_groups' +'groupmod' '_user_admin' +'groups' '_users' +'growisofs' '_growisofs' +'gs' '_ghostscript' +'gsbj' '_pspdf' +'gsdj' '_pspdf' +'gsdj500' '_pspdf' +'gsed' '_sed' +'gseq' '_seq' +'gsettings' '_gsettings' +'gsha1sum' '_md5sum' +'gsha224sum' '_md5sum' +'gsha256sum' '_md5sum' +'gsha384sum' '_md5sum' +'gsha512sum' '_md5sum' +'gshred' '_shred' +'gshuf' '_shuf' +'gslj' '_pspdf' +'gslp' '_pspdf' +'gsnd' '_ghostscript' +'gsort' '_sort' +'gsplit' '_split' +'gstat' '_gstat' +'gstdbuf' '_stdbuf' +'gstrings' '_strings' +'gstty' '_stty' +'gsum' '_cksum' +'gtac' '_tac' +'gtail' '_tail' +'gtar' '_tar' +'gtee' '_tee' +'gtimeout' '_timeout' +'gtouch' '_touch' +'gtr' '_tr' +'gtty' '_tty' +'guilt' '_guilt' +'guilt-add' '_guilt' +'guilt-applied' '_guilt' +'guilt-delete' '_guilt' +'guilt-files' '_guilt' +'guilt-fold' '_guilt' +'guilt-fork' '_guilt' +'guilt-header' '_guilt' +'guilt-help' '_guilt' +'guilt-import' '_guilt' +'guilt-import-commit' '_guilt' +'guilt-init' '_guilt' +'guilt-new' '_guilt' +'guilt-next' '_guilt' +'guilt-patchbomb' '_guilt' +'guilt-pop' '_guilt' +'guilt-prev' '_guilt' +'guilt-push' '_guilt' +'guilt-rebase' '_guilt' +'guilt-refresh' '_guilt' +'guilt-rm' '_guilt' +'guilt-series' '_guilt' +'guilt-status' '_guilt' +'guilt-top' '_guilt' +'guilt-unapplied' '_guilt' +'guname' '_uname' +'gunexpand' '_unexpand' +'guniq' '_uniq' +'gunzip' '_gzip' +'guptime' '_uptime' +'gv' '_gv' +'gview' '_vim' +'gvim' '_vim' +'gvimdiff' '_vim' +'gwc' '_wc' +'gwho' '_who' +'gxargs' '_xargs' +'gzcat' '_gzip' +'gzegrep' '_grep' +'gzfgrep' '_grep' +'gzgrep' '_grep' +'gzilla' '_webbrowser' +'gzip' '_gzip' +'hash' '_hash' +'hd' '_hexdump' +'hdiutil' '_hdiutil' +'head' '_head' +'heat' '_openstack' +'hexdump' '_hexdump' +'hilite' '_precommand' +'histed' '_zed' +'history' '_fc' +'host' '_host' +'hostname' '_hostname' +'hostnamectl' '_hostnamectl' +'hotjava' '_webbrowser' +'htop' '_htop' +'hwinfo' '_hwinfo' +'hyprctl' '_hyprctl' +'hyprpm' '_hyprpm' +'iceweasel' '_mozilla' +'icombine' '_ispell' +'iconv' '_iconv' +'iconvconfig' '_iconvconfig' +'id' '_id' +'identify' '_imagemagick' +'ifconfig' '_ifconfig' +'ifdown' '_net_interfaces' +'iftop' '_iftop' +'ifup' '_net_interfaces' +'ijoin' '_ispell' +'import' '_imagemagick' +'inc' '_mh' +'includeres' '_psutils' +'inetadm' '_inetadm' +'info' '_texinfo' +'infocmp' '_terminals' +'initctl' '_initctl' +'initdb' '_postgresql' +'insmod' '_modutils' +'install' '_install' +'install-info' '_texinfo' +'installpkg' '_pkgtool' +'integer' '_typeset' +'interdiff' '_patchutils' +'invoke-rc.d' '_invoke-rc.d' +'ionice' '_ionice' +'iostat' '_iostat' +'ip' '_ip' +'ip6tables' '_iptables' +'ip6tables-restore' '_iptables' +'ip6tables-save' '_iptables' +'ipadm' '_ipadm' +'ipfw' '_ipfw' +'ipkg' '_opkg' +'ipsec' '_ipsec' +'ipset' '_ipset' +'iptables' '_iptables' +'iptables-restore' '_iptables' +'iptables-save' '_iptables' +'irb' '_ruby' +'ironic' '_openstack' +'irssi' '_irssi' +'isag' '_sysstat' +'ispell' '_ispell' +'iwconfig' '_iwconfig' +'jadetex' '_tex' +'jail' '_jail' +'jar' '_java' +'jarsigner' '_java' +'java' '_java' +'javac' '_java' +'javadoc' '_java' +'javah' '_java' +'javap' '_java' +'jdb' '_java' +'jexec' '_jexec' +'jls' '_jls' +'jobs' '_jobs_builtin' +'joe' '_joe' +'join' '_join' +'jot' '_jot' +'journalctl' '_journalctl' +'jq' '_jq' +'kdeconnect-cli' '_kdeconnect' +'kdump' '_kdump' +'keystone' '_openstack' +'keytool' '_java' +'kfmclient' '_kfmclient' +'kill' '_kill' +'killall' '_killall' +'killall5' '_killall' +'kioclient' '_kfmclient' +'kitty' '_kitty' +'kldload' '_kld' +'kldunload' '_kld' +'knock' '_knock' +'konqueror' '_webbrowser' +'kpartx' '_kpartx' +'kpdf' '_pdf' +'ksh' '_sh' +'ksh88' '_sh' +'ksh93' '_sh' +'ktrace' '_ktrace' +'kvno' '_kvno' +'last' '_last' +'lastb' '_last' +'latex' '_tex' +'latexmk' '_tex' +'ldap' '_ldap' +'ldapadd' '_openldap' +'ldapcompare' '_openldap' +'ldapdelete' '_openldap' +'ldapexop' '_openldap' +'ldapmodify' '_openldap' +'ldapmodrdn' '_openldap' +'ldappasswd' '_openldap' +'ldapsearch' '_openldap' +'ldapurl' '_openldap' +'ldapwhoami' '_openldap' +'ldconfig' '_ldconfig' +'ldconfig.real' '_ldconfig' +'ldd' '_ldd' +'less' '_less' +'let' '_math' +'lftp' '_ncftp' +'lha' '_lha' +'light' '_webbrowser' +'lighty-disable-mod' '_lighttpd' +'lighty-enable-mod' '_lighttpd' +'limit' '_limit' +'links' '_links' +'links2' '_links' +'lintian' '_lintian' +'lintian-info' '_lintian' +'linux' '_uml' +'lldb' '_lldb' +'llvm-g++' '_gcc' +'llvm-gcc' '_gcc' +'llvm-objdump' '_objdump' +'llvm-otool' '_otool' +'ln' '_ln' +'loadkeys' '_loadkeys' +'local' '_typeset' +'locale' '_locale' +'localectl' '_localectl' +'localedef' '_localedef' +'locate' '_locate' +'log' '_nothing' +'logger' '_logger' +'loginctl' '_loginctl' +'logname' '_nothing' +'look' '_look' +'losetup' '_losetup' +'lp' '_lp' +'lpadmin' '_lp' +'lpinfo' '_lp' +'lpoptions' '_lp' +'lpq' '_lp' +'lpr' '_lp' +'lprm' '_lp' +'lpstat' '_lp' +'ls' '_ls' +'lsattr' '_lsattr' +'lsblk' '_lsblk' +'lscfg' '_lscfg' +'lsd' '_lsd' +'lsdev' '_lsdev' +'lsdiff' '_patchutils' +'lslv' '_lslv' +'lsmod' '_modutils' +'lsns' '_lsns' +'lsof' '_lsof' +'lspv' '_lspv' +'lsusb' '_lsusb' +'lsvg' '_lsvg' +'ltrace' '_ltrace' +'lua' '_lua' +'lualatex' '_tex' +'luarocks' '_luarocks' +'lvchange' '_lvm2' +'lvconvert' '_lvm2' +'lvcreate' '_lvm2' +'lvdisplay' '_lvm2' +'lvextend' '_lvm2' +'lvm' '_lvm2' +'lvmconfig' '_lvm2' +'lvmdiskscan' '_lvm2' +'lvmdump' '_lvm2' +'lvreduce' '_lvm2' +'lvremove' '_lvm2' +'lvrename' '_lvm2' +'lvresize' '_lvm2' +'lvs' '_lvm2' +'lvscan' '_lvm2' +'lynx' '_lynx' +'lz4' '_lz4' +'lz4c' '_lz4' +'lz4c32' '_lz4' +'lz4cat' '_lz4' +'lzcat' '_xz' +'lzma' '_xz' +'lzop' '_lzop' +'m-a' '_module-assistant' +'mac2unix' '_dos2unix' +'machinectl' '_machinectl' +'madison' '_madison' +'magnum' '_openstack' +'mail' '_mail' +'Mail' '_mail' +'mailx' '_mail' +'make' '_make' +'makeinfo' '_texinfo' +'make-kpkg' '_make-kpkg' +'makepkg' '_pkgtool' +'man' '_man' +'manage.py' '_django' +'manila' '_openstack' +'mark' '_mh' +'mat' '_mat' +'mat2' '_mat2' +'matchpathcon' '_selinux' +'-math-' '_math' +'matlab' '_matlab' +'mattrib' '_mtools' +'mcd' '_mtools' +'mcopy' '_mtools' +'md2' '_cksum' +'md4' '_cksum' +'md5' '_cksum' +'md5sum' '_md5sum' +'mdadm' '_mdadm' +'mdel' '_mtools' +'mdeltree' '_mtools' +'mdfind' '_mdfind' +'mdir' '_mtools' +'mdls' '_mdls' +'mdo' '_mdo' +'mdu' '_mtools' +'mdutil' '_mdutil' +'members' '_members' +'mencal' '_mencal' +'mere' '_mere' +'merge' '_rcs' +'mergechanges' '_mergechanges' +'metaflac' '_flac' +'mformat' '_mtools' +'mgv' '_pspdf' +'mhfixmsg' '_mh' +'mhlist' '_mh' +'mhmail' '_mh' +'mhn' '_mh' +'mhparam' '_mh' +'mhpath' '_mh' +'mhshow' '_mh' +'mhstore' '_mh' +'mii-tool' '_mii-tool' +'mistral' '_openstack' +'mixerctl' '_mixerctl' +'mkdir' '_mkdir' +'mkfifo' '_mkfifo' +'mkisofs' '_growisofs' +'mknod' '_mknod' +'mksh' '_sh' +'mkshortcut' '_mkshortcut' +'mkshortcut.exe' '_mkshortcut' +'mktemp' '_mktemp' +'mktunes' '_gnupod' +'mktunes.pl' '_gnupod' +'mkzsh' '_mkzsh' +'mkzsh.exe' '_mkzsh' +'mlabel' '_mtools' +'mlocate' '_locate' +'mmd' '_mtools' +'mmm' '_webbrowser' +'mmount' '_mtools' +'mmove' '_mtools' +'modinfo' '_modutils' +'modprobe' '_modutils' +'module' '_module' +'module-assistant' '_module-assistant' +'mogrify' '_imagemagick' +'monasca' '_openstack' +'mondoarchive' '_mondo' +'montage' '_imagemagick' +'moosic' '_moosic' +'Mosaic' '_webbrowser' +'mosh' '_mosh' +'mount' '_mount' +'mozilla' '_mozilla' +'mozilla-firefox' '_mozilla' +'mozilla-xremote-client' '_mozilla' +'mpc' '_mpc' +'mplayer' '_mplayer' +'mpstat' '_sysstat' +'mpv' '_mpv' +'mr' '_myrepos' +'mrd' '_mtools' +'mread' '_mtools' +'mren' '_mtools' +'msgchk' '_mh' +'mt' '_mt' +'mtn' '_monotone' +'mtoolstest' '_mtools' +'mtr' '_mtr' +'mtype' '_mtools' +'munchlist' '_ispell' +'mupdf' '_mupdf' +'murano' '_openstack' +'mush' '_mail' +'mutt' '_mutt' +'mv' '_mv' +'mvim' '_vim' +'mx' '_hosts' +'mysql' '_mysql_utils' +'mysqladmin' '_mysql_utils' +'mysqldiff' '_mysqldiff' +'mysqldump' '_mysql_utils' +'mysqlimport' '_mysql_utils' +'mysqlshow' '_mysql_utils' +'nail' '_mail' +'nano' '_nano' +'native2ascii' '_java' +'nautilus' '_nautilus' +'nawk' '_awk' +'nc' '_netcat' +'ncal' '_cal' +'ncftp' '_ncftp' +'ncl' '_nedit' +'nedit' '_nedit' +'nedit-client' '_nedit' +'nedit-nc' '_nedit' +'neomutt' '_mutt' +'netcat' '_netcat' +'netrik' '_webbrowser' +'netscape' '_netscape' +'netstat' '_netstat' +'nettop' '_nettop' +'networkctl' '_networkctl' +'networksetup' '_networksetup' +'neutron' '_openstack' +'new' '_mh' +'newgrp' '_groups' +'newrole' '_selinux' +'next' '_mh' +'nginx' '_nginx' +'ngrep' '_ngrep' +'nice' '_nice' +'nix' '_nix' +'nix-build' '_nix-build' +'nix-channel' '_nix-channel' +'nix-collect-garbage' '_nix-collect-garbage' +'nix-copy-closure' '_nix-copy-closure' +'nix-env' '_nix-env' +'nix-hash' '_nix-hash' +'nix-install-package' '_nix-install-package' +'nix-instantiate' '_nix-instantiate' +'nixops' '_nixops' +'nixos-build-vms' '_nixos-build-vms' +'nixos-container' '_nixos-container' +'nixos-generate-config' '_nixos-generate-config' +'nixos-install' '_nixos-install' +'nixos-option' '_nixos-option' +'nixos-rebuild' '_nixos-rebuild' +'nixos-version' '_nixos-version' +'nix-prefetch-url' '_nix-prefetch-url' +'nix-push' '_nix-push' +'nix-shell' '_nix-shell' +'nix-store' '_nix-store' +'nkf' '_nkf' +'nl' '_nl' +'nm' '_nm' +'nmap' '_nmap' +'nmblookup' '_samba' +'nmcli' '_networkmanager' +'nocorrect' '_precommand' +'noglob' '_precommand' +'nohup' '_precommand' +'nova' '_openstack' +'npm' '_npm' +'ns' '_hosts' +'nsenter' '_nsenter' +'nslookup' '_nslookup' +'ntalk' '_other_accounts' +'numfmt' '_numfmt' +'nvim' '_vim' +'nvram' '_nvram' +'objdump' '_objdump' +'od' '_od' +'odme' '_object_classes' +'odmget' '_object_classes' +'odmshow' '_object_classes' +'ogg123' '_vorbis' +'oggdec' '_vorbis' +'oggenc' '_vorbis' +'ogginfo' '_vorbis' +'oksh' '_sh' +'okular' '_okular' +'oomctl' '_oomctl' +'open' '_open' +'opencode' '_opencode' +'openstack' '_openstack' +'opera' '_webbrowser' +'opera-next' '_webbrowser' +'opkg' '_opkg' +'opusdec' '_opustools' +'opusenc' '_opustools' +'opusinfo' '_opustools' +'osascript' '_osascript' +'osc' '_osc' +'otool' '_otool' +'p4' '_perforce' +'p4d' '_perforce' +'pack' '_pack' +'packf' '_mh' +'pandoc' '_pandoc' +'papers' '_papers' +'-parameter-' '_parameter' +'parsehdlist' '_urpmi' +'passwd' '_users' +'paste' '_paste' +'patch' '_patch' +'pax' '_pax' +'pbcopy' '_pbcopy' +'pbpaste' '_pbcopy' +'pbuilder' '_pbuilder' +'pcat' '_pack' +'pcp-htop' '_htop' +'pcred' '_pids' +'pdf2dsc' '_pdf' +'pdf2ps' '_pdf' +'pdffonts' '_pdf' +'pdfimages' '_pdf' +'pdfinfo' '_pdf' +'pdfjadetex' '_tex' +'pdflatex' '_tex' +'pdfopt' '_pdf' +'pdftex' '_tex' +'pdftexi2dvi' '_texinfo' +'pdftk' '_pdftk' +'pdftopbm' '_pdf' +'pdftops' '_pdf' +'pdftotext' '_pdf' +'pdksh' '_sh' +'perf' '_perf' +'perl' '_perl' +'perlbrew' '_perlbrew' +'perldoc' '_perldoc' +'pfctl' '_pfctl' +'pfexec' '_pfexec' +'pfiles' '_pids' +'pflags' '_pids' +'pg_config' '_postgresql' +'pg_ctl' '_postgresql' +'pg_dump' '_postgresql' +'pg_dumpall' '_postgresql' +'pg_isready' '_postgresql' +'pgrep' '_pgrep' +'pg_restore' '_postgresql' +'pg_upgrade' '_postgresql' +'php' '_php' +'pick' '_mh' +'picocom' '_picocom' +'pidof' '_pidof' +'pidstat' '_sysstat' +'pigz' '_gzip' +'pine' '_pine' +'pinef' '_pine' +'pinfo' '_texinfo' +'ping' '_ping' +'ping6' '_ping' +'piuparts' '_piuparts' +'pkg' '_pkg5' +'pkg_add' '_bsd_pkg' +'pkgadd' '_pkgadd' +'pkg-config' '_pkg-config' +'pkg_create' '_bsd_pkg' +'pkg_delete' '_bsd_pkg' +'pkgin' '_pkgin' +'pkg_info' '_bsd_pkg' +'pkginfo' '_pkginfo' +'pkgrm' '_pkgrm' +'pkgtool' '_pkgtool' +'pkill' '_pgrep' +'playerctl' '_playerctl' +'pldd' '_pids' +'plutil' '_plutil' +'pmake' '_make' +'pman' '_perl_modules' +'pmap' '_pmap' +'pmcat' '_perl_modules' +'pmdesc' '_perl_modules' +'pmeth' '_perl_modules' +'pmexp' '_perl_modules' +'pmfunc' '_perl_modules' +'pmload' '_perl_modules' +'pmls' '_perl_modules' +'pmpath' '_perl_modules' +'pmvers' '_perl_modules' +'podgrep' '_perl_modules' +'podpath' '_perl_modules' +'podtoc' '_perl_modules' +'poff' '_pon' +'policytool' '_java' +'pon' '_pon' +'popd' '_directory_stack' +'portaudit' '_portaudit' +'portlint' '_portlint' +'portmaster' '_portmaster' +'portsnap' '_portsnap' +'postconf' '_postfix' +'postgres' '_postgresql' +'postmaster' '_postgresql' +'postqueue' '_postfix' +'postsuper' '_postfix' +'powerd' '_powerd' +'pr' '_pr' +'prev' '_mh' +'print' '_print' +'printenv' '_printenv' +'printf' '_print' +'procstat' '_procstat' +'prompt' '_prompt' +'prove' '_prove' +'prstat' '_prstat' +'prun' '_pids' +'ps' '_ps' +'ps2ascii' '_pspdf' +'ps2epsi' '_postscript' +'ps2pdf' '_postscript' +'ps2pdf12' '_postscript' +'ps2pdf13' '_postscript' +'ps2pdf14' '_postscript' +'ps2pdfwr' '_postscript' +'ps2ps' '_postscript' +'psbook' '_psutils' +'pscp' '_pscp' +'pscp.exe' '_pscp' +'psed' '_sed' +'psig' '_pids' +'psmerge' '_psutils' +'psmulti' '_postscript' +'psnup' '_psutils' +'psql' '_postgresql' +'psresize' '_psutils' +'psselect' '_psutils' +'pstack' '_pids' +'pstoedit' '_pspdf' +'pstop' '_pids' +'pstops' '_psutils' +'pstotgif' '_pspdf' +'pswrap' '_postscript' +'ptree' '_ptree' +'ptx' '_ptx' +'pump' '_pump' +'pushd' '_cd' +'putclip' '_putclip' +'putclip.exe' '_putclip' +'pv' '_pv' +'pvchange' '_lvm2' +'pvck' '_lvm2' +'pvcreate' '_lvm2' +'pvdisplay' '_lvm2' +'pvmove' '_lvm2' +'pvremove' '_lvm2' +'pvresize' '_lvm2' +'pvs' '_lvm2' +'pvscan' '_lvm2' +'pwait' '_pids' +'pwdx' '_pids' +'pwgen' '_pwgen' +'pyhtmlizer' '_twisted' +'qdbus' '_qdbus' +'qiv' '_qiv' +'qtplay' '_qtplay' +'querybts' '_bug' +'quilt' '_quilt' +'r' '_fc' +'rake' '_rake' +'ranlib' '_ranlib' +'rar' '_rar' +'rc' '_sh' +'rcctl' '_rcctl' +'rclone' '_rclone' +'rcp' '_rlogin' +'rcs' '_rcs' +'rcsdiff' '_rcs' +'rdesktop' '_rdesktop' +'read' '_read' +'readelf' '_readelf' +'readlink' '_readlink' +'readonly' '_typeset' +'readshortcut' '_readshortcut' +'readshortcut.exe' '_readshortcut' +'rebootin' '_rebootin' +'-redirect-' '_redirect' +'-redirect-,<,bunzip2' '_bzip2' +'-redirect-,<,bzip2' '_bzip2' +'-redirect-,>,bzip2' '_bzip2' +'-redirect-,<,compress' '_compress' +'-redirect-,>,compress' '_compress' +'-redirect-,-default-,-default-' '_files' +'-redirect-,<,gunzip' '_gzip' +'-redirect-,<,gzip' '_gzip' +'-redirect-,>,gzip' '_gzip' +'-redirect-,<,uncompress' '_compress' +'-redirect-,<,unxz' '_xz' +'-redirect-,<,unzstd' '_zstd' +'-redirect-,<,xz' '_xz' +'-redirect-,>,xz' '_xz' +'-redirect-,<,zstd' '_zstd' +'-redirect-,>,zstd' '_zstd' +'refile' '_mh' +'rehash' '_hash' +'reindexdb' '_postgresql' +'reload' '_initctl' +'removepkg' '_pkgtool' +'remsh' '_rlogin' +'renice' '_renice' +'repl' '_mh' +'reportbug' '_bug' +'reprepro' '_reprepro' +'resolvectl' '_resolvectl' +'restart' '_initctl' +'restorecon' '_selinux' +'retawq' '_webbrowser' +'rg' '_rg' +'rgrep' '_grep' +'rgview' '_vim' +'rgvim' '_vim' +'ri' '_ri' +'rlogin' '_rlogin' +'rm' '_rm' +'rmadison' '_madison' +'rmd160' '_cksum' +'rmdir' '_rmdir' +'rmf' '_mh' +'rmic' '_java' +'rmid' '_java' +'rmiregistry' '_java' +'rmm' '_mh' +'rmmod' '_modutils' +'rnano' '_nano' +'route' '_route' +'rpm' '_rpm' +'rpmbuild' '_rpm' +'rpmkeys' '_rpm' +'rpmquery' '_rpm' +'rpmsign' '_rpm' +'rpmspec' '_rpm' +'rpmverify' '_rpm' +'rrdtool' '_rrdtool' +'rsh' '_rlogin' +'rsvg-convert' '_rsvg-convert' +'rsync' '_rsync' +'rtin' '_tin' +'rubber' '_rubber' +'rubber-info' '_rubber' +'rubber-pipe' '_rubber' +'ruby' '_ruby' +'ruby-mri' '_ruby' +'run0' '_run0' +'runcon' '_selinux' +'run-help' '_run-help' +'rup' '_hosts' +'rusage' '_precommand' +'rview' '_vim' +'rvim' '_vim' +'rwho' '_hosts' +'rxvt' '_urxvt' +'s2p' '_sed' +'sadf' '_sysstat' +'sahara' '_openstack' +'sar' '_sysstat' +'savecore' '_savecore' +'say' '_say' +'sbuild' '_sbuild' +'scan' '_mh' +'sccs' '_sccs' +'sccsdiff' '_sccs' +'sched' '_sched' +'schedtool' '_schedtool' +'schroot' '_schroot' +'scl' '_scl' +'scons' '_scons' +'scp' '_ssh' +'screen' '_screen' +'script' '_script' +'scriptreplay' '_script' +'scselect' '_scselect' +'sc_usage' '_sc_usage' +'scutil' '_scutil' +'seaf-cli' '_seafile' +'sealert' '_selinux' +'secon' '_selinux' +'sed' '_sed' +'sedismod' '_selinux' +'sedta' '_selinux' +'seinfo' '_selinux' +'selinuxconlist' '_selinux' +'selinuxdefcon' '_selinux' +'selinuxexeccon' '_selinux' +'semanage' '_selinux' +'semodule' '_selinux' +'semodule_unpackage' '_selinux' +'senlin' '_openstack' +'sepolgen' '_selinux' +'sepolicy' '_selinux' +'seq' '_seq' +'serialver' '_java' +'service' '_service' +'sesearch' '_selinux' +'sestatus' '_selinux' +'set' '_set' +'setenforce' '_selinux' +'setfacl' '_setfacl' +'setfacl.exe' '_setfacl' +'setfattr' '_attr' +'setopt' '_setopt' +'setpriv' '_setpriv' +'setsebool' '_selinux' +'setsid' '_setsid' +'setxkbmap' '_setxkbmap' +'sftp' '_ssh' +'sh' '_sh' +'sha1' '_cksum' +'sha1sum' '_md5sum' +'sha224sum' '_md5sum' +'sha256' '_cksum' +'sha256sum' '_md5sum' +'sha384' '_cksum' +'sha384sum' '_md5sum' +'sha512' '_cksum' +'sha512sum' '_md5sum' +'sha512t256' '_cksum' +'shasum' '_shasum' +'shift' '_arrays' +'shortcuts' '_shortcuts' +'show' '_mh' +'showchar' '_psutils' +'showmount' '_showmount' +'shred' '_shred' +'shuf' '_shuf' +'shutdown' '_shutdown' +'signify' '_signify' +'sioyek' '_sioyek' +'sisu' '_sisu' +'skein1024' '_cksum' +'skein256' '_cksum' +'skein512' '_cksum' +'skipstone' '_webbrowser' +'slabtop' '_slabtop' +'slitex' '_tex' +'slocate' '_locate' +'slogin' '_ssh' +'slrn' '_slrn' +'smartctl' '_smartmontools' +'smbclient' '_samba' +'smbcontrol' '_samba' +'smbstatus' '_samba' +'smit' '_smit' +'smitty' '_smit' +'snoop' '_snoop' +'soa' '_hosts' +'socket' '_socket' +'sockstat' '_sockstat' +'softwareupdate' '_softwareupdate' +'sort' '_sort' +'sortm' '_mh' +'source' '_source' +'spamassassin' '_spamassassin' +'split' '_split' +'splitdiff' '_patchutils' +'sqlite' '_sqlite' +'sqlite3' '_sqlite' +'sqsh' '_sqsh' +'sr' '_surfraw' +'srptool' '_gnutls' +'ss' '_ss' +'ssh' '_ssh' +'ssh-add' '_ssh' +'ssh-agent' '_ssh' +'ssh-copy-id' '_ssh' +'sshfs' '_sshfs' +'ssh-keygen' '_ssh' +'ssh-keyscan' '_ssh' +'star' '_tar' +'start' '_initctl' +'stat' '_stat' +'status' '_initctl' +'stdbuf' '_stdbuf' +'stop' '_initctl' +'stow' '_stow' +'strace' '_strace' +'strace64' '_strace' +'strftime' '_strftime' +'strings' '_strings' +'strip' '_strip' +'strongswan' '_ipsec' +'stty' '_stty' +'su' '_su' +'subl' '_sublimetext' +'-subscript-' '_subscript' +'sudo' '_sudo' +'sudoedit' '_sudo' +'sum' '_cksum' +'surfraw' '_surfraw' +'SuSEconfig' '_SUSEconfig' +'sv' '_runit' +'svcadm' '_svcadm' +'svccfg' '_svccfg' +'svcprop' '_svcprop' +'svcs' '_svcs' +'svn' '_subversion' +'svnadmin' '_subversion' +'svnadmin-static' '_subversion' +'svn-buildpackage' '_svn-buildpackage' +'svnlite' '_subversion' +'svnliteadmin' '_subversion' +'swaks' '_swaks' +'swanctl' '_swanctl' +'swift' '_swift' +'swiftc' '_swift' +'sw_vers' '_sw_vers' +'sync' '_nothing' +'sysclean' '_sysclean' +'sysctl' '_sysctl' +'sysmerge' '_sysmerge' +'syspatch' '_syspatch' +'sysrc' '_sysrc' +'systat' '_systat' +'systemctl' '_systemctl' +'systemd-analyze' '_systemd-analyze' +'systemd-ask-password' '_systemd' +'systemd-cat' '_systemd' +'systemd-cgls' '_systemd' +'systemd-cgtop' '_systemd' +'systemd-delta' '_systemd-delta' +'systemd-detect-virt' '_systemd' +'systemd-id128' '_systemd-id128' +'systemd-inhibit' '_systemd-inhibit' +'systemd-machine-id-setup' '_systemd' +'systemd-notify' '_systemd' +'systemd-nspawn' '_systemd-nspawn' +'systemd-path' '_systemd-path' +'systemd-resolve' '_resolvectl' +'systemd-run' '_systemd-run' +'systemd-tmpfiles' '_systemd-tmpfiles' +'systemd-tty-ask-password-agent' '_systemd' +'system_profiler' '_system_profiler' +'sysupgrade' '_sysupgrade' +'tac' '_tac' +'tacker' '_openstack' +'tail' '_tail' +'tailscale' '_tailscale' +'talk' '_other_accounts' +'tar' '_tar' +'tardy' '_tardy' +'tcpdump' '_tcpdump' +'tcp_open' '_tcpsys' +'tcptraceroute' '_tcptraceroute' +'tcsh' '_sh' +'tda' '_devtodo' +'tdd' '_devtodo' +'tde' '_devtodo' +'tdr' '_devtodo' +'tee' '_tee' +'telnet' '_telnet' +'tex' '_tex' +'texi2any' '_texinfo' +'texi2dvi' '_texinfo' +'texi2pdf' '_texinfo' +'texindex' '_texinfo' +'tg' '_topgit' +'tidy' '_tidy' +'tig' '_git' +'-tilde-' '_tilde' +'time' '_precommand' +'timedatectl' '_timedatectl' +'timeout' '_timeout' +'times' '_nothing' +'tin' '_tin' +'tkconch' '_twisted' +'tkinfo' '_texinfo' +'tla' '_tla' +'tload' '_tload' +'tmux' '_tmux' +'todo' '_devtodo' +'todo.sh' '_todo.sh' +'toilet' '_toilet' +'top' '_top' +'totdconfig' '_totd' +'touch' '_touch' +'tpb' '_tpb' +'tpkg-debarch' '_toolchain-source' +'tpkg-install' '_toolchain-source' +'tpkg-install-libc' '_toolchain-source' +'tpkg-make' '_toolchain-source' +'tpkg-update' '_toolchain-source' +'tput' '_tput' +'tr' '_tr' +'tracepath' '_tracepath' +'tracepath6' '_tracepath' +'traceroute' '_hosts' +'transmission-remote' '_transmission' +'trap' '_trap' +'trash' '_trash' +'tree' '_tree' +'trial' '_twisted' +'trove' '_openstack' +'true' '_nothing' +'truncate' '_truncate' +'truss' '_truss' +'tryaffix' '_ispell' +'tty' '_tty' +'ttyctl' '_ttyctl' +'tunctl' '_uml' +'tune2fs' '_tune2fs' +'tunes2pod' '_gnupod' +'tunes2pod.pl' '_gnupod' +'twidge' '_twidge' +'twist' '_twisted' +'twistd' '_twisted' +'txt' '_hosts' +'type' '_which' +'typeset' '_typeset' +'udevadm' '_udevadm' +'udisksctl' '_udisks2' +'ulimit' '_ulimit' +'uml_mconsole' '_uml' +'uml_moo' '_uml' +'uml_switch' '_uml' +'umount' '_mount' +'unace' '_unace' +'unalias' '_aliases' +'uname' '_uname' +'uncompress' '_compress' +'unexpand' '_unexpand' +'unfunction' '_functions' +'unhash' '_unhash' +'uniq' '_uniq' +'unison' '_unison' +'units' '_units' +'unix2dos' '_dos2unix' +'unix2mac' '_dos2unix' +'unlimit' '_limits' +'unlz4' '_lz4' +'unlzma' '_xz' +'unpack' '_pack' +'unpigz' '_gzip' +'unrar' '_rar' +'unset' '_vars' +'unsetopt' '_setopt' +'unshare' '_unshare' +'unwrapdiff' '_patchutils' +'unxz' '_xz' +'unzip' '_zip' +'unzstd' '_zstd' +'update-alternatives' '_update-alternatives' +'update-rc.d' '_update-rc.d' +'upgradepkg' '_pkgtool' +'upower' '_upower' +'uptime' '_uptime' +'urpme' '_urpmi' +'urpmf' '_urpmi' +'urpmi' '_urpmi' +'urpmi.addmedia' '_urpmi' +'urpmi.removemedia' '_urpmi' +'urpmi.update' '_urpmi' +'urpmq' '_urpmi' +'urxvt' '_urxvt' +'urxvt256c' '_urxvt' +'urxvt256cc' '_urxvt' +'urxvt256c-ml' '_urxvt' +'urxvt256c-mlc' '_urxvt' +'urxvtc' '_urxvt' +'usbconfig' '_usbconfig' +'uscan' '_uscan' +'useradd' '_user_admin' +'userdbctl' '_userdbctl' +'userdel' '_users' +'usermod' '_user_admin' +'vacuumdb' '_postgresql' +'valgrind' '_valgrind' +'validatetrans' '_selinux' +'-value-' '_value' +'-value-,ADB_TRACE,-default-' '_adb' +'-value-,ANDROID_LOG_TAGS,-default-' '_adb' +'-value-,ANDROID_SERIAL,-default-' '_adb' +'-value-,ANSIBLE_INVENTORY_ENABLED,-default-' '_ansible' +'-value-,ANSIBLE_STDOUT_CALLBACK,-default-' '_ansible' +'-value-,ANT_ARGS,-default-' '_ant' +'-value-,CFLAGS,-default-' '_gcc' +'-value-,CPPFLAGS,-default-' '_gcc' +'-value-,CXXFLAGS,-default-' '_gcc' +'-value-,DBUS_SESSION_BUS_ADDRESS,-default-' '_sd_bus_address' +'-value-,DBUS_SYSTEM_BUS_ADDRESS,-default-' '_sd_bus_address' +'-value-,-default-,-command-' '_zargs' +'-value-,-default-,-default-' '_value' +'-value-,DISPLAY,-default-' '_x_display' +'-value-,GREP_OPTIONS,-default-' '_grep' +'-value-,GZIP,-default-' '_gzip' +'-value-,LANG,-default-' '_locales' +'-value-,LANGUAGE,-default-' '_locales' +'-value-,LD_DEBUG,-default-' '_ld_debug' +'-value-,LDFLAGS,-default-' '_gcc' +'-value-,LESSCHARSET,-default-' '_less' +'-value-,LESS,-default-' '_less' +'-value-,LOOPDEV_DEBUG,-default-' '_losetup' +'-value-,LPDEST,-default-' '_printers' +'-value-,MPD_HOST,-default' '_mpc' +'-value-,P4CLIENT,-default-' '_perforce' +'-value-,P4MERGE,-default-' '_perforce' +'-value-,P4PORT,-default-' '_perforce' +'-value-,P4USER,-default-' '_perforce' +'-value-,PERLDOC,-default-' '_perldoc' +'-value-,PRINTER,-default-' '_printers' +'-value-,PROMPT2,-default-' '_ps1234' +'-value-,PROMPT3,-default-' '_ps1234' +'-value-,PROMPT4,-default-' '_ps1234' +'-value-,PROMPT,-default-' '_ps1234' +'-value-,PS1,-default-' '_ps1234' +'-value-,PS2,-default-' '_ps1234' +'-value-,PS3,-default-' '_ps1234' +'-value-,PS4,-default-' '_ps1234' +'-value-,RPROMPT2,-default-' '_ps1234' +'-value-,RPROMPT,-default-' '_ps1234' +'-value-,RPS1,-default-' '_ps1234' +'-value-,RPS2,-default-' '_ps1234' +'-value-,SPROMPT,-default-' '_ps1234' +'-value-,TERM,-default-' '_terminals' +'-value-,TERMINFO_DIRS,-default-' '_dir_list' +'-value-,TZ,-default-' '_time_zone' +'-value-,VALGRIND_OPTS,-default-' '_valgrind' +'-value-,WWW_HOME,-default-' '_urls' +'-value-,XML_CATALOG_FILES,-default-' '_xmlsoft' +'-value-,XZ_DEFAULTS,-default-' '_xz' +'-value-,XZ_OPT,-default-' '_xz' +'-vared-' '_in_vared' +'vared' '_vared' +'varlinkctl' '_varlinkctl' +'vcs_info_hookadd' '_vcs_info' +'vcs_info_hookdel' '_vcs_info' +'vgcfgbackup' '_lvm2' +'vgcfgrestore' '_lvm2' +'vgchange' '_lvm2' +'vgck' '_lvm2' +'vgconvert' '_lvm2' +'vgcreate' '_lvm2' +'vgdisplay' '_lvm2' +'vgexport' '_lvm2' +'vgextend' '_lvm2' +'vgimport' '_lvm2' +'vgimportclone' '_lvm2' +'vgmerge' '_lvm2' +'vgmknodes' '_lvm2' +'vgreduce' '_lvm2' +'vgremove' '_lvm2' +'vgrename' '_lvm2' +'vgs' '_lvm2' +'vgscan' '_lvm2' +'vgsplit' '_lvm2' +'vi' '_vi' +'view' '_vi' +'vim' '_vim' +'vim-addons' '_vim-addons' +'vimdiff' '_vim' +'virsh' '_libvirt' +'virt-admin' '_libvirt' +'virt-host-validate' '_libvirt' +'virt-pki-validate' '_libvirt' +'virt-xml-validate' '_libvirt' +'visudo' '_visudo' +'vitrage' '_openstack' +'vmctl' '_vmctl' +'vmstat' '_vmstat' +'vncserver' '_vnc' +'vncviewer' '_vnc' +'vorbiscomment' '_vorbis' +'vpnc' '_vpnc' +'vpnc-connect' '_vpnc' +'vserver' '_vserver' +'w' '_w' +'w3m' '_w3m' +'wait' '_wait' +'wajig' '_wajig' +'watch' '_watch' +'watcher' '_openstack' +'wc' '_wc' +'wget' '_wget' +'whatis' '_man' +'whence' '_which' +'where' '_which' +'whereis' '_whereis' +'which' '_which' +'which-pkg-broke' '_which-pkg-broke' +'who' '_who' +'whoami' '_nothing' +'whois' '_whois' +'whom' '_mh' +'wiggle' '_wiggle' +'wipefs' '_wipefs' +'wl-copy' '_wl-copy' +'wlogout' '_wlogout' +'wl-paste' '_wl-paste' +'wodim' '_cdrecord' +'wpa_cli' '_wpa_cli' +'wpaperctl' '_wpaperctl' +'wpaperd' '_wpaperd' +'wpctl' '_wpctl' +'write' '_users_on' +'www' '_webbrowser' +'xargs' '_xargs' +'xattr' '_attr' +'xauth' '_xauth' +'xautolock' '_xautolock' +'xclip' '_xclip' +'xcode-select' '_xcode-select' +'xdpyinfo' '_x_utils' +'xdvi' '_xdvi' +'xelatex' '_tex' +'xetex' '_tex' +'xev' '_x_utils' +'xfconf-query' '_xfconf-query' +'xfd' '_x_utils' +'xfig' '_xfig' +'xfontsel' '_x_utils' +'xfreerdp' '_rdesktop' +'xhost' '_x_utils' +'xinput' '_xinput' +'xkill' '_x_utils' +'xli' '_xloadimage' +'xloadimage' '_xloadimage' +'xlsatoms' '_x_utils' +'xlsclients' '_x_utils' +'xml' '_xmlstarlet' +'xmllint' '_xmlsoft' +'xmlstarlet' '_xmlstarlet' +'xmms2' '_xmms2' +'xmodmap' '_xmodmap' +'xmosaic' '_webbrowser' +'xon' '_x_utils' +'xournal' '_xournal' +'xpdf' '_xpdf' +'xping' '_hosts' +'xprop' '_x_utils' +'xrandr' '_xrandr' +'xrdb' '_x_utils' +'xscreensaver-command' '_xscreensaver' +'xset' '_xset' +'xsetbg' '_xloadimage' +'xsetroot' '_x_utils' +'xsltproc' '_xmlsoft' +'xterm' '_xterm' +'xtightvncviewer' '_vnc' +'xtp' '_imagemagick' +'xv' '_xv' +'xview' '_xloadimage' +'xvnc4viewer' '_vnc' +'xvncviewer' '_vnc' +'xwd' '_x_utils' +'xwininfo' '_x_utils' +'xwit' '_xwit' +'xwud' '_x_utils' +'xxd' '_xxd' +'xz' '_xz' +'xzcat' '_xz' +'yafc' '_yafc' +'yash' '_sh' +'yast' '_yast' +'yast2' '_yast' +'ypbind' '_yp' +'ypcat' '_yp' +'ypmatch' '_yp' +'yppasswd' '_yp' +'yppoll' '_yp' +'yppush' '_yp' +'ypserv' '_yp' +'ypset' '_yp' +'ypwhich' '_yp' +'ypxfr' '_yp' +'ytalk' '_other_accounts' +'yum' '_yum' +'yumdb' '_yum' +'zargs' '_zargs' +'zcalc' '_zcalc' +'-zcalc-line-' '_zcalc_line' +'zcat' '_zcat' +'zcompile' '_zcompile' +'zcp' '_zmv' +'zdb' '_zfs' +'zdelattr' '_zattr' +'zdump' '_zdump' +'zeal' '_zeal' +'zed' '_zed' +'zegrep' '_grep' +'zen' '_webbrowser' +'zf_chgrp' '_chown' +'zf_chmod' '_chmod' +'zf_chown' '_chown' +'zfgrep' '_grep' +'zf_ln' '_ln' +'zf_mkdir' '_mkdir' +'zf_mv' '_mv' +'zf_rm' '_rm' +'zf_rmdir' '_rmdir' +'zfs' '_zfs' +'zgetattr' '_zattr' +'zgrep' '_grep' +'zip' '_zip' +'zipinfo' '_zip' +'zle' '_zle' +'zlistattr' '_zattr' +'zln' '_zmv' +'zlogin' '_zlogin' +'zmail' '_mail' +'zmodload' '_zmodload' +'zmv' '_zmv' +'zone' '_hosts' +'zoneadm' '_zoneadm' +'zparseopts' '_zparseopts' +'zpool' '_zfs' +'zpty' '_zpty' +'zsetattr' '_zattr' +'zsh' '_zsh' +'zsh-mime-handler' '_zsh-mime-handler' +'zsocket' '_zsocket' +'zstat' '_stat' +'zstd' '_zstd' +'zstdcat' '_zstd' +'zstdmt' '_zstd' +'zstream' '_zfs' +'zstyle' '_zstyle' +'ztodo' '_ztodo' +'zun' '_openstack' +'zxpdf' '_xpdf' +'zypper' '_zypper' +) + +_services=( +'bzcat' 'bunzip2' +'dch' 'debchange' +'gchgrp' 'chgrp' +'gchown' 'chown' +'gnupod_addsong.pl' 'gnupod_addsong' +'gnupod_check.pl' 'gnupod_check' +'gnupod_INIT.pl' 'gnupod_INIT' +'gnupod_search.pl' 'gnupod_search' +'gpg2' 'gpg' +'gzcat' 'gunzip' +'iceweasel' 'firefox' +'lzcat' 'unxz' +'lzma' 'xz' +'Mail' 'mail' +'mailx' 'mail' +'mktunes.pl' 'mktunes' +'nail' 'mail' +'ncl' 'nc' +'nedit-client' 'nc' +'nedit-nc' 'nc' +'pcat' 'unpack' +'-redirect-,<,bunzip2' 'bunzip2' +'-redirect-,<,bzip2' 'bzip2' +'-redirect-,>,bzip2' 'bunzip2' +'-redirect-,<,compress' 'compress' +'-redirect-,>,compress' 'uncompress' +'-redirect-,<,gunzip' 'gunzip' +'-redirect-,<,gzip' 'gzip' +'-redirect-,>,gzip' 'gunzip' +'-redirect-,<,uncompress' 'uncompress' +'-redirect-,<,unxz' 'unxz' +'-redirect-,<,unzstd' 'unzstd' +'-redirect-,<,xz' 'xz' +'-redirect-,>,xz' 'unxz' +'-redirect-,<,zstd' 'zstd' +'-redirect-,>,zstd' 'unzstd' +'remsh' 'rsh' +'slogin' 'ssh' +'svnadmin-static' 'svnadmin' +'svnlite' 'svn' +'svnliteadmin' 'svnadmin' +'tunes2pod.pl' 'tunes2pod' +'unlzma' 'unxz' +'xelatex' 'latex' +'xetex' 'tex' +'xzcat' 'unxz' +'zf_chgrp' 'chgrp' +'zf_chown' 'chown' +) + +_patcomps=( +'*/(init|rc[0-9S]#).d/*' '_init_d' +) + +_postpatcomps=( +'_*' '_compadd' +'c++-*' '_gcc' +'g++-*' '_gcc' +'gcc-*' '_gcc' +'gem[0-9.]#' '_gem' +'lua[0-9.-]##' '_lua' +'(p[bgpn]m*|*top[bgpn]m)' '_pbm' +'php[0-9.-]' '_php' +'pip[0-9.]#' '_pip' +'pydoc[0-9.]#' '_pydoc' +'python[0-9.]#' '_python' +'qemu(|-system-*)' '_qemu' +'(ruby|[ei]rb)[0-9.]#' '_ruby' +'shasum(|5).*' '_shasum' +'(texi(2*|ndex))' '_texi' +'(tiff*|*2tiff|pal2rgb)' '_tiff' +'-value-,(ftp|http(|s))_proxy,-default-' '_urls' +'-value-,LC_*,-default-' '_locales' +'-value-,*path,-default-' '_directories' +'-value-,*PATH,-default-' '_dir_list' +'-value-,RUBY(LIB|OPT|PATH),-default-' '_ruby' +'*/X11(|R<4->)/*' '_x_arguments' +'yodl(|2*)' '_yodl' +'zf*' '_zftp' +) + +_compautos=( +'_call_program' '+X' +) + +zle -C _bash_complete-word .complete-word _bash_completions +zle -C _bash_list-choices .list-choices _bash_completions +zle -C _complete_debug .complete-word _complete_debug +zle -C _complete_help .complete-word _complete_help +zle -C _complete_tag .complete-word _complete_tag +zle -C _correct_filename .complete-word _correct_filename +zle -C _correct_word .complete-word _correct_word +zle -C _expand_alias .complete-word _expand_alias +zle -C _expand_word .complete-word _expand_word +zle -C _history-complete-newer .complete-word _history_complete_word +zle -C _history-complete-older .complete-word _history_complete_word +zle -C _list_expansions .list-choices _expand_word +zle -C _most_recent_file .complete-word _most_recent_file +zle -C _next_tags .list-choices _next_tags +zle -C _read_comp .complete-word _read_comp +bindkey '^X^R' _read_comp +bindkey '^X?' _complete_debug +bindkey '^XC' _correct_filename +bindkey '^Xa' _expand_alias +bindkey '^Xc' _correct_word +bindkey '^Xd' _list_expansions +bindkey '^Xe' _expand_word +bindkey '^Xh' _complete_help +bindkey '^Xm' _most_recent_file +bindkey '^Xn' _next_tags +bindkey '^Xt' _complete_tag +bindkey '^X~' _bash_list-choices +bindkey '^[,' _history-complete-newer +bindkey '^[/' _history-complete-older +bindkey '^[~' _bash_complete-word + +autoload -Uz _bun _bat _devenv _docker _dunst \ + _dunstctl _dunstify _fastfetch _kitty _lsd \ + _mpv _opencode _playerctl _rg _tailscale \ + _wl-copy _wlogout _wl-paste _wpaperctl _wpaperd \ + _bluetoothctl _bootctl _busctl _coredumpctl _docker \ + _hostnamectl _hyprctl _hyprpm _journalctl _localectl \ + _loginctl _machinectl _networkctl _nix _nix-build \ + _nix-channel _nix-collect-garbage _nix-common-options _nix-copy-closure _nix-env \ + _nix-hash _nix-install-package _nix-instantiate _nixops _nixos-build-vms \ + _nixos-container _nixos-generate-config _nixos-install _nixos-option _nixos-rebuild \ + _nixos-version _nix-prefetch-url _nix-push _nix-shell _nix-store \ + _oomctl _resolvectl _rsvg-convert _run0 _sd_bus_address \ + _sd_hosts_or_user_at_host _sd_machines _sd_outputmodes _sd_unit_files _systemctl \ + _systemd _systemd-analyze _systemd-delta _systemd-id128 _systemd-inhibit \ + _systemd-nspawn _systemd-path _systemd-run _systemd-tmpfiles _tailscale \ + _timedatectl _udevadm _udisks2 _upower _userdbctl \ + _varlinkctl _wpctl _7zip _a2ps _a2utils \ + _aap _abcde _absolute_command_paths _ack _acpi \ + _acpiconf _acpitool _acroread _adb _add-zle-hook-widget \ + _add-zsh-hook _alias _aliases _all_labels _all_matches \ + _alsa-utils _alternative _analyseplugin _ansible _ant \ + _antiword _apachectl _apm _approximate _apt \ + _apt-file _aptitude _apt-move _apt-show-versions _arch_archives \ + _arch_namespace _arg_compile __arguments _arguments _arp \ + _arping _arrays _asciidoctor _asciinema _as_if \ + _assign _at _attr _augeas _auto-apt \ + _autocd _avahi _awk _axi-cache _base64 \ + _basename _basenc _bash _bash_completions _baudrates \ + _baz _beadm _bectl _beep _be_name \ + _bibtex _bind_addresses _bindkey _bison _bittorrent \ + _blkid _bogofilter _bpf_filters _bpython _brace_parameter \ + _brctl _bsdconfig _bsd_disks _bsdinstall _bsd_pkg \ + _btrfs _bts _bug _builtin _bzip2 \ + _bzr _cabal _cacaclock _cache_invalid _caffeinate \ + _cal _calendar _call_function _canonical_paths _capabilities \ + _cat _ccal _cd _cdbs-edit-patch _cdcd \ + _cdr _cdrdao _cdrecord _chattr _chdman \ + _chflags _chkconfig _chmod _choom _chown \ + _chroot _chrt _chsh _cksum _clay \ + _cmdambivalent _cmdstring _cmp _code _col \ + _column _combination _comm _command _command_names \ + _compadd _compdef _compinit _complete _complete_debug \ + _complete_help _complete_help_generic _completers _complete_tag _comp_locale \ + _composer _compress _condition _configure _coreadm \ + _correct _correct_filename _correct_word _cowsay _cp \ + _cpio _cplay _cpupower _crontab _cryptsetup \ + _cscope _csplit _cssh _csup _ctags \ + _ctags_tags _cu _curl _cut _cvs \ + _cvsup _cygcheck _cygpath _cygrunsrv _cygserver \ + _cygstart _dak _darcs _date _date_formats \ + _dates _dbus _dchroot _dchroot-dsa _dconf \ + _dcop _dcut _dd _deb_architectures _debbugs_bugnumber \ + _debchange _debcheckout _deb_codenames _debdiff _deb_files \ + _debfoster _debmany _deborphan _deb_packages _debsign \ + _debsnap _debuild _default _defaults _delimiters \ + _describe _description _devtodo _df _dhclient \ + _dhcpinfo _dhomepage _dict _dict_words _diff \ + _diff3 _diff_options _diffstat _dig _directories \ + _directory_stack _dir_list _dirs _disable _dispatch \ + _django _dladm _dlocate _dmesg _dmidecode \ + _dnf _dnf5 _dns_types _doas _domains \ + _dos2unix _dpatch-edit-patch _dpkg _dpkg-buildpackage _dpkg-cross \ + _dpkg-info _dpkg-repack _dpkg_source _dput _drill \ + _dropbox _dscverify _dsh _dtrace _dtruss \ + _du _dumpadm _dumper _dupload _dvi \ + _dynamic_directory_name _e2label _ecasound _echo _echotc \ + _echoti _ed _elfdump _elinks _email_addresses \ + _emulate _enable _enscript _entr _env \ + _eog _equal _espeak _etags _ethtool \ + _evince _exec _expand _expand_alias _expand_word \ + _extensions _external_pwds _fakeroot _fbsd_architectures _fbsd_device_types \ + _fc _feh _fetch _fetchmail _ffmpeg \ + _figlet _file_descriptors _file_flags _file_modes _files \ + _file_systems _find _findmnt _find_net_interfaces _finger \ + _fink _first _fish _flac _flex \ + _floppy _flowadm _fmadm _fmt _fold \ + _fortune _free _freebsd-update _fsh _fstat \ + _fs_usage _functions _fuse_arguments _fuser _fusermount \ + _fuse_values _fw_update _gcc _gcore _gdb \ + _geany _gem _generic _genisoimage _getclip \ + _getconf _getent _getfacl _getmail _getopt \ + _ghostscript _git _git-buildpackage _global _global_tags \ + _globflags _globqual_delims _globquals _gnome-gv _gnu_generic \ + _gnupod _gnutls _go _gpasswd _gpg \ + _gphoto2 _gprof _gqview _gradle _graphicsmagick \ + _grep _grep-excuses _groff _groups _growisofs \ + _gsettings _gstat _guard _guilt _gv \ + _gzip _hash _have_glob_qual _hdiutil _head \ + _hexdump _history _history_complete_word _history_modifiers _host \ + _hostname _hosts _htop _hwinfo _iconv \ + _iconvconfig _id _ifconfig _iftop _ignored \ + _imagemagick _inetadm _initctl _init_d _install \ + _in_vared _invoke-rc.d _ionice _iostat _ip \ + _ipadm _ipfw _ipsec _ipset _iptables \ + _irssi _ispell _iwconfig _jail _jails \ + _java _java_class _jexec _jls _jobs \ + _jobs_bg _jobs_builtin _jobs_fg _joe _join \ + _jot _jq _kdeconnect _kdump _kfmclient \ + _kill _killall _kld _knock _kpartx \ + _ktrace _ktrace_points _kvno _last _ldap \ + _ldap_attributes _ldap_filters _ldconfig _ldd _ld_debug \ + _less _lha _libvirt _lighttpd _limit \ + _limits _links _lintian _list _list_files \ + _lldb _ln _loadkeys _locale _localedef \ + _locales _locate _logger _logical_volumes _login_classes \ + _look _losetup _lp _ls _lsattr \ + _lsblk _lscfg _lsdev _lslv _lsns \ + _lsof _lspv _lsusb _lsvg _ltrace \ + _lua _luarocks _lvm2 _lynx _lz4 \ + _lzop _mac_applications _mac_files_for_application _madison _mail \ + _mailboxes _main_complete _make _make-kpkg _man \ + _mat _mat2 _match _math _math_params \ + _matlab _md5sum _mdadm _mdfind _mdls \ + _mdo _mdutil _members _mencal _menu \ + _mere _mergechanges _message _mh _mii-tool \ + _mime_types _mixerctl _mkdir _mkfifo _mknod \ + _mkshortcut _mktemp _mkzsh _module _module-assistant \ + _module_math_func _modutils _mondo _monotone _moosic \ + _mosh _most_recent_file _mount _mozilla _mpc \ + _mplayer _mt _mtools _mtr _multi_parts \ + _mupdf _mutt _mv _my_accounts _myrepos \ + _mysqldiff _mysql_utils _nano _nautilus _nbsd_architectures \ + _ncftp _nedit _netcat _net_interfaces _netscape \ + _netstat _nettop _networkmanager _networksetup _newsgroups \ + _next_label _next_tags _nginx _ngrep _nice \ + _nkf _nl _nm _nmap _normal \ + _nothing _npm _nsenter _nslookup _numbers \ + _numfmt _nvram _objdump _object_classes _object_files \ + _obsd_architectures _od _okular _oldlist _open \ + _openldap _openstack _opkg _options _options_set \ + _options_unset _opustools _osascript _osc _other_accounts \ + _otool _pack _pandoc _papers _parameter \ + _parameters _paste _patch _patchutils _path_commands \ + _path_files _pax _pbcopy _pbm _pbuilder \ + _pdf _pdftk _perf _perforce _perl \ + _perl_basepods _perlbrew _perldoc _perl_modules _pfctl \ + _pfexec _pgids _pgrep _php _physical_volumes \ + _pick_variant _picocom _pidof _pids _pine \ + _ping _pip _piuparts _pkg5 _pkgadd \ + _pkg-config _pkgin _pkginfo _pkg_instance _pkgrm \ + _pkgtool _plutil _pmap _pon _portaudit \ + _portlint _portmaster _ports _portsnap _postfix \ + _postgresql _postscript _powerd _pr _precommand \ + _prefix _print _printenv _printers _process_names \ + _procstat _prompt _prove _prstat _ps \ + _ps1234 _pscp _pspdf _psutils _ptree \ + _ptx _pump _putclip _pv _pwgen \ + _pydoc _python _python_module-http.server _python_module-json.tool _python_modules \ + _python_module-venv _qdbus _qemu _qiv _qtplay \ + _quilt _rake _ranlib _rar _rcctl \ + _rclone _rcs _rdesktop _read _read_comp \ + _readelf _readlink _readshortcut _rebootin _redirect \ + _regex_arguments _regex_words _remote_files _renice _reprepro \ + _requested _retrieve_cache _retrieve_mac_apps _ri _rlogin \ + _rm _rmdir _route _routing_domains _routing_tables \ + _rpm _rrdtool _rsync _rubber _ruby \ + _run-help _runit _samba _savecore _say \ + _sbuild _sccs _sched _schedtool _schroot \ + _scl _scons _screen _script _scselect \ + _sc_usage _scutil _seafile _sed _selinux \ + _selinux_contexts _selinux_roles _selinux_types _selinux_users _sep_parts \ + _seq _sequence _service _services _set \ + _set_command _setfacl _setopt _setpriv _setsid \ + _setup _setxkbmap _sh _shasum _shortcuts \ + _showmount _shred _shuf _shutdown _signals \ + _signify _sioyek _sisu _slabtop _slrn \ + _smartmontools _smit _snoop _socket _sockstat \ + _softwareupdate _sort _source _spamassassin _split \ + _sqlite _sqsh _ss _ssh _sshfs \ + _ssh_hosts _stat _stdbuf _store_cache _stow \ + _strace _strftime _strings _strip _stty \ + _su _sub_commands _sublimetext _subscript _subversion \ + _sudo _suffix_alias_files _surfraw _SUSEconfig _svcadm \ + _svccfg _svcprop _svcs _svcs_fmri _svn-buildpackage \ + _swaks _swanctl _swift _sw_vers _sys_calls \ + _sysclean _sysctl _sysmerge _syspatch _sysrc \ + _sysstat _systat _system_profiler _sysupgrade _tac \ + _tags _tail _tar _tar_archive _tardy \ + _tcpdump _tcpsys _tcptraceroute _tee _telnet \ + _terminals _tex _texi _texinfo _tidy \ + _tiff _tilde _tilde_files _timeout _time_zone \ + _time_zone.orig _tin _tla _tload _tmux \ + _todo.sh _toilet _toolchain-source _top _topgit \ + _totd _touch _tpb _tput _tr \ + _tracepath _transmission _trap _trash _tree \ + _truncate _truss _tty _ttyctl _ttys \ + _tune2fs _twidge _twisted _typeset _ulimit \ + _uml _umountable _unace _uname _unexpand \ + _unhash _uniq _unison _units _unshare \ + _update-alternatives _update-rc.d _uptime _urls _urpmi \ + _urxvt _usbconfig _uscan _user_admin _user_at_host \ + _user_expand _user_math_func _users _users_on _valgrind \ + _value _values _vared _vars _vcs_info \ + _vcs_info_hooks _vi _vim _vim-addons _visudo \ + _vmctl _vmstat _vnc _volume_groups _vorbis \ + _vpnc _vserver _w _w3m _wait \ + _wajig _wakeup_capable_devices _wanted _watch _watch-snoop \ + _wc _webbrowser _wget _whereis _which \ + _which-pkg-broke _who _whois _widgets _wiggle \ + _wipefs _wpa_cli _xargs _x_arguments _xauth \ + _xautolock _x_borderwidth _xclip _xcode-select _x_color \ + _x_colormapid _x_cursor _x_display _xdvi _x_extension \ + _xfconf-query _xfig _x_font _xft_fonts _x_geometry \ + _xinput _x_keysym _xloadimage _x_locale _xmlsoft \ + _xmlstarlet _xmms2 _x_modifier _xmodmap _x_name \ + _xournal _xpdf _xrandr _x_resource _xscreensaver \ + _x_selection_timeout _xset _xt_arguments _xterm _x_title \ + _xt_session_id _x_utils _xv _x_visual _x_window \ + _xwit _xxd _xz _yafc _yast \ + _yodl _yp _yum _zargs _zattr \ + _zcalc _zcalc_line _zcat _zcompile _zdump \ + _zeal _zed _zfs _zfs_dataset _zfs_pool \ + _zftp _zip _zle _zlogin _zmodload \ + _zmv _zoneadm _zones _zparseopts _zpty \ + _zsh _zsh-mime-handler _zsocket _zstd _zstyle \ + _ztodo _zypper _7zip _a2ps _a2utils \ + _aap _abcde _absolute_command_paths _ack _acpi \ + _acpiconf _acpitool _acroread _adb _add-zle-hook-widget \ + _add-zsh-hook _alias _aliases _all_labels _all_matches \ + _alsa-utils _alternative _analyseplugin _ansible _ant \ + _antiword _apachectl _apm _approximate _apt \ + _apt-file _aptitude _apt-move _apt-show-versions _arch_archives \ + _arch_namespace _arg_compile __arguments _arguments _arp \ + _arping _arrays _asciidoctor _asciinema _as_if \ + _assign _at _attr _augeas _auto-apt \ + _autocd _avahi _awk _axi-cache _base64 \ + _basename _basenc _bash _bash_completions _baudrates \ + _baz _beadm _bectl _beep _be_name \ + _bibtex _bind_addresses _bindkey _bison _bittorrent \ + _blkid _bogofilter _bpf_filters _bpython _brace_parameter \ + _brctl _bsdconfig _bsd_disks _bsdinstall _bsd_pkg \ + _btrfs _bts _bug _builtin _bzip2 \ + _bzr _cabal _cacaclock _cache_invalid _caffeinate \ + _cal _calendar _call_function _canonical_paths _capabilities \ + _cat _ccal _cd _cdbs-edit-patch _cdcd \ + _cdr _cdrdao _cdrecord _chattr _chdman \ + _chflags _chkconfig _chmod _choom _chown \ + _chroot _chrt _chsh _cksum _clay \ + _cmdambivalent _cmdstring _cmp _code _col \ + _column _combination _comm _command _command_names \ + _compadd _compdef _compinit _complete _complete_debug \ + _complete_help _complete_help_generic _completers _complete_tag _comp_locale \ + _composer _compress _condition _configure _coreadm \ + _correct _correct_filename _correct_word _cowsay _cp \ + _cpio _cplay _cpupower _crontab _cryptsetup \ + _cscope _csplit _cssh _csup _ctags \ + _ctags_tags _cu _curl _cut _cvs \ + _cvsup _cygcheck _cygpath _cygrunsrv _cygserver \ + _cygstart _dak _darcs _date _date_formats \ + _dates _dbus _dchroot _dchroot-dsa _dconf \ + _dcop _dcut _dd _deb_architectures _debbugs_bugnumber \ + _debchange _debcheckout _deb_codenames _debdiff _deb_files \ + _debfoster _debmany _deborphan _deb_packages _debsign \ + _debsnap _debuild _default _defaults _delimiters \ + _describe _description _devtodo _df _dhclient \ + _dhcpinfo _dhomepage _dict _dict_words _diff \ + _diff3 _diff_options _diffstat _dig _directories \ + _directory_stack _dir_list _dirs _disable _dispatch \ + _django _dladm _dlocate _dmesg _dmidecode \ + _dnf _dnf5 _dns_types _doas _domains \ + _dos2unix _dpatch-edit-patch _dpkg _dpkg-buildpackage _dpkg-cross \ + _dpkg-info _dpkg-repack _dpkg_source _dput _drill \ + _dropbox _dscverify _dsh _dtrace _dtruss \ + _du _dumpadm _dumper _dupload _dvi \ + _dynamic_directory_name _e2label _ecasound _echo _echotc \ + _echoti _ed _elfdump _elinks _email_addresses \ + _emulate _enable _enscript _entr _env \ + _eog _equal _espeak _etags _ethtool \ + _evince _exec _expand _expand_alias _expand_word \ + _extensions _external_pwds _fakeroot _fbsd_architectures _fbsd_device_types \ + _fc _feh _fetch _fetchmail _ffmpeg \ + _figlet _file_descriptors _file_flags _file_modes _files \ + _file_systems _find _findmnt _find_net_interfaces _finger \ + _fink _first _fish _flac _flex \ + _floppy _flowadm _fmadm _fmt _fold \ + _fortune _free _freebsd-update _fsh _fstat \ + _fs_usage _functions _fuse_arguments _fuser _fusermount \ + _fuse_values _fw_update _gcc _gcore _gdb \ + _geany _gem _generic _genisoimage _getclip \ + _getconf _getent _getfacl _getmail _getopt \ + _ghostscript _git _git-buildpackage _global _global_tags \ + _globflags _globqual_delims _globquals _gnome-gv _gnu_generic \ + _gnupod _gnutls _go _gpasswd _gpg \ + _gphoto2 _gprof _gqview _gradle _graphicsmagick \ + _grep _grep-excuses _groff _groups _growisofs \ + _gsettings _gstat _guard _guilt _gv \ + _gzip _hash _have_glob_qual _hdiutil _head \ + _hexdump _history _history_complete_word _history_modifiers _host \ + _hostname _hosts _htop _hwinfo _iconv \ + _iconvconfig _id _ifconfig _iftop _ignored \ + _imagemagick _inetadm _initctl _init_d _install \ + _in_vared _invoke-rc.d _ionice _iostat _ip \ + _ipadm _ipfw _ipsec _ipset _iptables \ + _irssi _ispell _iwconfig _jail _jails \ + _java _java_class _jexec _jls _jobs \ + _jobs_bg _jobs_builtin _jobs_fg _joe _join \ + _jot _jq _kdeconnect _kdump _kfmclient \ + _kill _killall _kld _knock _kpartx \ + _ktrace _ktrace_points _kvno _last _ldap \ + _ldap_attributes _ldap_filters _ldconfig _ldd _ld_debug \ + _less _lha _libvirt _lighttpd _limit \ + _limits _links _lintian _list _list_files \ + _lldb _ln _loadkeys _locale _localedef \ + _locales _locate _logger _logical_volumes _login_classes \ + _look _losetup _lp _ls _lsattr \ + _lsblk _lscfg _lsdev _lslv _lsns \ + _lsof _lspv _lsusb _lsvg _ltrace \ + _lua _luarocks _lvm2 _lynx _lz4 \ + _lzop _mac_applications _mac_files_for_application _madison _mail \ + _mailboxes _main_complete _make _make-kpkg _man \ + _mat _mat2 _match _math _math_params \ + _matlab _md5sum _mdadm _mdfind _mdls \ + _mdo _mdutil _members _mencal _menu \ + _mere _mergechanges _message _mh _mii-tool \ + _mime_types _mixerctl _mkdir _mkfifo _mknod \ + _mkshortcut _mktemp _mkzsh _module _module-assistant \ + _module_math_func _modutils _mondo _monotone _moosic \ + _mosh _most_recent_file _mount _mozilla _mpc \ + _mplayer _mt _mtools _mtr _multi_parts \ + _mupdf _mutt _mv _my_accounts _myrepos \ + _mysqldiff _mysql_utils _nano _nautilus _nbsd_architectures \ + _ncftp _nedit _netcat _net_interfaces _netscape \ + _netstat _nettop _networkmanager _networksetup _newsgroups \ + _next_label _next_tags _nginx _ngrep _nice \ + _nkf _nl _nm _nmap _normal \ + _nothing _npm _nsenter _nslookup _numbers \ + _numfmt _nvram _objdump _object_classes _object_files \ + _obsd_architectures _od _okular _oldlist _open \ + _openldap _openstack _opkg _options _options_set \ + _options_unset _opustools _osascript _osc _other_accounts \ + _otool _pack _pandoc _papers _parameter \ + _parameters _paste _patch _patchutils _path_commands \ + _path_files _pax _pbcopy _pbm _pbuilder \ + _pdf _pdftk _perf _perforce _perl \ + _perl_basepods _perlbrew _perldoc _perl_modules _pfctl \ + _pfexec _pgids _pgrep _php _physical_volumes \ + _pick_variant _picocom _pidof _pids _pine \ + _ping _pip _piuparts _pkg5 _pkgadd \ + _pkg-config _pkgin _pkginfo _pkg_instance _pkgrm \ + _pkgtool _plutil _pmap _pon _portaudit \ + _portlint _portmaster _ports _portsnap _postfix \ + _postgresql _postscript _powerd _pr _precommand \ + _prefix _print _printenv _printers _process_names \ + _procstat _prompt _prove _prstat _ps \ + _ps1234 _pscp _pspdf _psutils _ptree \ + _ptx _pump _putclip _pv _pwgen \ + _pydoc _python _python_module-http.server _python_module-json.tool _python_modules \ + _python_module-venv _qdbus _qemu _qiv _qtplay \ + _quilt _rake _ranlib _rar _rcctl \ + _rclone _rcs _rdesktop _read _read_comp \ + _readelf _readlink _readshortcut _rebootin _redirect \ + _regex_arguments _regex_words _remote_files _renice _reprepro \ + _requested _retrieve_cache _retrieve_mac_apps _ri _rlogin \ + _rm _rmdir _route _routing_domains _routing_tables \ + _rpm _rrdtool _rsync _rubber _ruby \ + _run-help _runit _samba _savecore _say \ + _sbuild _sccs _sched _schedtool _schroot \ + _scl _scons _screen _script _scselect \ + _sc_usage _scutil _seafile _sed _selinux \ + _selinux_contexts _selinux_roles _selinux_types _selinux_users _sep_parts \ + _seq _sequence _service _services _set \ + _set_command _setfacl _setopt _setpriv _setsid \ + _setup _setxkbmap _sh _shasum _shortcuts \ + _showmount _shred _shuf _shutdown _signals \ + _signify _sioyek _sisu _slabtop _slrn \ + _smartmontools _smit _snoop _socket _sockstat \ + _softwareupdate _sort _source _spamassassin _split \ + _sqlite _sqsh _ss _ssh _sshfs \ + _ssh_hosts _stat _stdbuf _store_cache _stow \ + _strace _strftime _strings _strip _stty \ + _su _sub_commands _sublimetext _subscript _subversion \ + _sudo _suffix_alias_files _surfraw _SUSEconfig _svcadm \ + _svccfg _svcprop _svcs _svcs_fmri _svn-buildpackage \ + _swaks _swanctl _swift _sw_vers _sys_calls \ + _sysclean _sysctl _sysmerge _syspatch _sysrc \ + _sysstat _systat _system_profiler _sysupgrade _tac \ + _tags _tail _tar _tar_archive _tardy \ + _tcpdump _tcpsys _tcptraceroute _tee _telnet \ + _terminals _tex _texi _texinfo _tidy \ + _tiff _tilde _tilde_files _timeout _time_zone \ + _time_zone.orig _tin _tla _tload _tmux \ + _todo.sh _toilet _toolchain-source _top _topgit \ + _totd _touch _tpb _tput _tr \ + _tracepath _transmission _trap _trash _tree \ + _truncate _truss _tty _ttyctl _ttys \ + _tune2fs _twidge _twisted _typeset _ulimit \ + _uml _umountable _unace _uname _unexpand \ + _unhash _uniq _unison _units _unshare \ + _update-alternatives _update-rc.d _uptime _urls _urpmi \ + _urxvt _usbconfig _uscan _user_admin _user_at_host \ + _user_expand _user_math_func _users _users_on _valgrind \ + _value _values _vared _vars _vcs_info \ + _vcs_info_hooks _vi _vim _vim-addons _visudo \ + _vmctl _vmstat _vnc _volume_groups _vorbis \ + _vpnc _vserver _w _w3m _wait \ + _wajig _wakeup_capable_devices _wanted _watch _watch-snoop \ + _wc _webbrowser _wget _whereis _which \ + _which-pkg-broke _who _whois _widgets _wiggle \ + _wipefs _wpa_cli _xargs _x_arguments _xauth \ + _xautolock _x_borderwidth _xclip _xcode-select _x_color \ + _x_colormapid _x_cursor _x_display _xdvi _x_extension \ + _xfconf-query _xfig _x_font _xft_fonts _x_geometry \ + _xinput _x_keysym _xloadimage _x_locale _xmlsoft \ + _xmlstarlet _xmms2 _x_modifier _xmodmap _x_name \ + _xournal _xpdf _xrandr _x_resource _xscreensaver \ + _x_selection_timeout _xset _xt_arguments _xterm _x_title \ + _xt_session_id _x_utils _xv _x_visual _x_window \ + _xwit _xxd _xz _yafc _yast \ + _yodl _yp _yum _zargs _zattr \ + _zcalc _zcalc_line _zcat _zcompile _zdump \ + _zeal _zed _zfs _zfs_dataset _zfs_pool \ + _zftp _zip _zle _zlogin _zmodload \ + _zmv _zoneadm _zones _zparseopts _zpty \ + _zsh _zsh-mime-handler _zsocket _zstd _zstyle \ + _ztodo _zypper +autoload -Uz +X _call_program + +typeset -gUa _comp_assocs +_comp_assocs=( '' ) diff --git a/.devenv/zsh/.zcompdump-HACKSTATION-5.9.1 b/.devenv/zsh/.zcompdump-HACKSTATION-5.9.1 new file mode 100644 index 0000000..a7eb973 --- /dev/null +++ b/.devenv/zsh/.zcompdump-HACKSTATION-5.9.1 @@ -0,0 +1,2467 @@ +#files: 2076 version: 5.9.1 + +_comps=( +'-' '_precommand' +'.' '_source' +'5g' '_go' +'5l' '_go' +'6g' '_go' +'6l' '_go' +'7z' '_7zip' +'7za' '_7zip' +'7zr' '_7zip' +'7zz' '_7zip' +'8g' '_go' +'8l' '_go' +'a2dismod' '_a2utils' +'a2dissite' '_a2utils' +'a2enmod' '_a2utils' +'a2ensite' '_a2utils' +'a2ps' '_a2ps' +'aaaa' '_hosts' +'aap' '_aap' +'abcde' '_abcde' +'ack' '_ack' +'ack2' '_ack' +'ack-grep' '_ack' +'ack-standalone' '_ack' +'acpi' '_acpi' +'acpiconf' '_acpiconf' +'acpitool' '_acpitool' +'acroread' '_acroread' +'adb' '_adb' +'add-zle-hook-widget' '_add-zle-hook-widget' +'add-zsh-hook' '_add-zsh-hook' +'ali' '_mh' +'alias' '_alias' +'amaya' '_webbrowser' +'analyseplugin' '_analyseplugin' +'animate' '_imagemagick' +'anno' '_mh' +'ansible' '_ansible' +'ansible-config' '_ansible' +'ansible-console' '_ansible' +'ansible-doc' '_ansible' +'ansible-galaxy' '_ansible' +'ansible-inventory' '_ansible' +'ansible-playbook' '_ansible' +'ansible-pull' '_ansible' +'ansible-vault' '_ansible' +'ant' '_ant' +'antiword' '_antiword' +'aodh' '_openstack' +'aoss' '_precommand' +'apache2ctl' '_apachectl' +'apachectl' '_apachectl' +'aplay' '_alsa-utils' +'apm' '_apm' +'appletviewer' '_java' +'apropos' '_man' +'apt' '_apt' +'apt-cache' '_apt' +'apt-cdrom' '_apt' +'apt-config' '_apt' +'apt-file' '_apt-file' +'apt-get' '_apt' +'aptitude' '_aptitude' +'apt-mark' '_apt' +'apt-move' '_apt-move' +'apt-show-versions' '_apt-show-versions' +'apvlv' '_pdf' +'arduino-ctags' '_ctags' +'arecord' '_alsa-utils' +'arena' '_webbrowser' +'_arguments' '__arguments' +'arp' '_arp' +'arping' '_arping' +'arptables' '_iptables' +'-array-value-' '_value' +'asciidoctor' '_asciidoctor' +'asciinema' '_asciinema' +'ash' '_sh' +'-assign-parameter-' '_assign' +'at' '_at' +'atq' '_at' +'atrm' '_at' +'attr' '_attr' +'audit2allow' '_selinux' +'audit2why' '_selinux' +'augtool' '_augeas' +'auto-apt' '_auto-apt' +'autoload' '_typeset' +'avahi-browse' '_avahi' +'avahi-browse-domains' '_avahi' +'avahi-resolve' '_avahi' +'avahi-resolve-address' '_avahi' +'avahi-resolve-host-name' '_avahi' +'avcstat' '_selinux' +'awk' '_awk' +'axi-cache' '_axi-cache' +'b2sum' '_md5sum' +'barbican' '_openstack' +'base32' '_base64' +'base64' '_base64' +'basename' '_basename' +'basenc' '_basenc' +'bash' '_bash' +'bat' '_bat' +'batch' '_at' +'baz' '_baz' +'beadm' '_beadm' +'bectl' '_bectl' +'beep' '_beep' +'bg' '_jobs_bg' +'bibtex' '_bibtex' +'bindkey' '_bindkey' +'bison' '_bison' +'blkid' '_blkid' +'bluetoothctl' '_bluetoothctl' +'bmake' '_make' +'bogofilter' '_bogofilter' +'bogotune' '_bogofilter' +'bogoutil' '_bogofilter' +'bootctl' '_bootctl' +'bpython' '_bpython' +'bpython2' '_bpython' +'bpython2-gtk' '_bpython' +'bpython2-urwid' '_bpython' +'bpython3' '_bpython' +'bpython3-gtk' '_bpython' +'bpython3-urwid' '_bpython' +'bpython-gtk' '_bpython' +'bpython-urwid' '_bpython' +'-brace-parameter-' '_brace_parameter' +'brctl' '_brctl' +'bsdconfig' '_bsdconfig' +'bsdgrep' '_grep' +'bsdinstall' '_bsdinstall' +'bsdtar' '_tar' +'btdownloadcurses' '_bittorrent' +'btdownloadgui' '_bittorrent' +'btdownloadheadless' '_bittorrent' +'btlaunchmany' '_bittorrent' +'btlaunchmanycurses' '_bittorrent' +'btmakemetafile' '_bittorrent' +'btreannounce' '_bittorrent' +'btrename' '_bittorrent' +'btrfs' '_btrfs' +'bts' '_bts' +'btshowmetainfo' '_bittorrent' +'bttrack' '_bittorrent' +'bug' '_bug' +'buildhash' '_ispell' +'builtin' '_builtin' +'bun' '_bun' +'bunzip2' '_bzip2' +'burst' '_mh' +'busctl' '_busctl' +'bzcat' '_bzip2' +'bzegrep' '_grep' +'bzfgrep' '_grep' +'bzgrep' '_grep' +'bzip2' '_bzip2' +'bzip2recover' '_bzip2' +'bzr' '_bzr' +'c++' '_gcc' +'cabal' '_cabal' +'cacaclock' '_cacaclock' +'caffeinate' '_caffeinate' +'cal' '_cal' +'calendar' '_calendar' +'cat' '_cat' +'catchsegv' '_precommand' +'cc' '_gcc' +'ccal' '_ccal' +'cd' '_cd' +'cdbs-edit-patch' '_cdbs-edit-patch' +'cdcd' '_cdcd' +'cdr' '_cdr' +'cdrdao' '_cdrdao' +'cdrecord' '_cdrecord' +'ceilometer' '_openstack' +'certtool' '_gnutls' +'cftp' '_twisted' +'chage' '_users' +'chattr' '_chattr' +'chcon' '_selinux' +'chdir' '_cd' +'chdman' '_chdman' +'checkmodule' '_selinux' +'checkpolicy' '_selinux' +'chflags' '_chflags' +'chfn' '_users' +'chgrp' '_chown' +'chimera' '_webbrowser' +'chkconfig' '_chkconfig' +'chkstow' '_stow' +'chmod' '_chmod' +'choom' '_choom' +'chown' '_chown' +'chpass' '_chsh' +'chroot' '_chroot' +'chrt' '_chrt' +'chsh' '_chsh' +'ci' '_rcs' +'cifsiostat' '_sysstat' +'cinder' '_openstack' +'ckeygen' '_twisted' +'cksum' '_cksum' +'clang' '_gcc' +'clang++' '_gcc' +'clay' '_clay' +'clear' '_nothing' +'cloudkitty' '_openstack' +'clusterdb' '_postgresql' +'cmp' '_cmp' +'co' '_rcs' +'code' '_code' +'col' '_col' +'column' '_column' +'combine' '_imagemagick' +'combinediff' '_patchutils' +'comm' '_comm' +'-command-' '_autocd' +'command' '_command' +'-command-line-' '_normal' +'comp' '_mh' +'compadd' '_compadd' +'compdef' '_compdef' +'compinit' '_compinit' +'composer' '_composer' +'composer.phar' '_composer' +'composite' '_imagemagick' +'compress' '_compress' +'conch' '_twisted' +'-condition-' '_condition' +'config.status' '_configure' +'configure' '_configure' +'convert' '_imagemagick' +'coreadm' '_coreadm' +'coredumpctl' '_coredumpctl' +'cowsay' '_cowsay' +'cowthink' '_cowsay' +'cp' '_cp' +'cpio' '_cpio' +'cplay' '_cplay' +'cpupower' '_cpupower' +'createdb' '_postgresql' +'createuser' '_postgresql' +'crontab' '_crontab' +'crsh' '_cssh' +'cryptsetup' '_cryptsetup' +'cscope' '_cscope' +'csh' '_sh' +'csplit' '_csplit' +'cssh' '_cssh' +'csup' '_csup' +'ctags' '_ctags' +'ctags-exuberant' '_ctags' +'ctags-universal' '_ctags' +'cu' '_cu' +'curl' '_curl' +'cut' '_cut' +'cvs' '_cvs' +'cvsup' '_cvsup' +'cygcheck' '_cygcheck' +'cygcheck.exe' '_cygcheck' +'cygpath' '_cygpath' +'cygpath.exe' '_cygpath' +'cygrunsrv' '_cygrunsrv' +'cygrunsrv.exe' '_cygrunsrv' +'cygserver' '_cygserver' +'cygserver.exe' '_cygserver' +'cygstart' '_cygstart' +'cygstart.exe' '_cygstart' +'dak' '_dak' +'darcs' '_darcs' +'dash' '_sh' +'date' '_date' +'dbus-launch' '_dbus' +'dbus-monitor' '_dbus' +'dbus-send' '_dbus' +'dch' '_debchange' +'dchroot' '_dchroot' +'dchroot-dsa' '_dchroot-dsa' +'dconf' '_dconf' +'dcop' '_dcop' +'dcopclient' '_dcop' +'dcopfind' '_dcop' +'dcopobject' '_dcop' +'dcopref' '_dcop' +'dcopstart' '_dcop' +'dcut' '_dcut' +'dd' '_dd' +'debchange' '_debchange' +'debcheckout' '_debcheckout' +'debdiff' '_debdiff' +'debfoster' '_debfoster' +'debmany' '_debmany' +'deborphan' '_deborphan' +'debsign' '_debsign' +'debsnap' '_debsnap' +'debuild' '_debuild' +'declare' '_typeset' +'-default-' '_default' +'defaults' '_defaults' +'designate' '_openstack' +'devenv' '_devenv' +'devtodo' '_devtodo' +'df' '_df' +'dhclient' '_dhclient' +'dhclient3' '_dhclient' +'dhcpinfo' '_dhcpinfo' +'dhomepage' '_dhomepage' +'dict' '_dict' +'diff' '_diff' +'diff3' '_diff3' +'diffstat' '_diffstat' +'dig' '_dig' +'dillo' '_webbrowser' +'dircmp' '_directories' +'dirs' '_dirs' +'disable' '_disable' +'disown' '_jobs_fg' +'display' '_imagemagick' +'dist' '_mh' +'django-admin' '_django' +'django-admin.py' '_django' +'dladm' '_dladm' +'dlocate' '_dlocate' +'dmake' '_make' +'dmesg' '_dmesg' +'dmidecode' '_dmidecode' +'dnctl' '_ipfw' +'dnf' '_dnf' +'dnf-2' '_dnf' +'dnf-3' '_dnf' +'dnf4' '_dnf' +'dnf5' '_dnf5' +'doas' '_doas' +'docker' '_docker' +'domainname' '_yp' +'dos2unix' '_dos2unix' +'dosdel' '_floppy' +'dosread' '_floppy' +'dpatch-edit-patch' '_dpatch-edit-patch' +'dpkg' '_dpkg' +'dpkg-buildpackage' '_dpkg-buildpackage' +'dpkg-cross' '_dpkg-cross' +'dpkg-deb' '_dpkg' +'dpkg-info' '_dpkg-info' +'dpkg-query' '_dpkg' +'dpkg-reconfigure' '_dpkg' +'dpkg-repack' '_dpkg-repack' +'dpkg-source' '_dpkg_source' +'dput' '_dput' +'drill' '_drill' +'dropbox' '_dropbox' +'dropdb' '_postgresql' +'dropuser' '_postgresql' +'dscverify' '_dscverify' +'dsh' '_dsh' +'dtrace' '_dtrace' +'dtruss' '_dtruss' +'du' '_du' +'dumpadm' '_dumpadm' +'dumper' '_dumper' +'dumper.exe' '_dumper' +'_dunst' '_dunst' +'dunst' '_dunst' +'_dunstctl' '_dunstctl' +'dunstctl' '_dunstctl' +'_dunstify' '_dunstify' +'dunstify' '_dunstify' +'dupload' '_dupload' +'dvibook' '_dvi' +'dviconcat' '_dvi' +'dvicopy' '_dvi' +'dvidvi' '_dvi' +'dvipdf' '_dvi' +'dvips' '_dvi' +'dviselect' '_dvi' +'dvitodvi' '_dvi' +'dvitype' '_dvi' +'dwb' '_webbrowser' +'e2label' '_e2label' +'eatmydata' '_precommand' +'ebtables' '_iptables' +'ecasound' '_ecasound' +'echo' '_echo' +'echotc' '_echotc' +'echoti' '_echoti' +'ed' '_ed' +'egrep' '_grep' +'elfdump' '_elfdump' +'elinks' '_elinks' +'emulate' '_emulate' +'enable' '_enable' +'enscript' '_enscript' +'entr' '_entr' +'env' '_env' +'eog' '_eog' +'epdfview' '_pdf' +'epsffit' '_psutils' +'-equal-' '_equal' +'erb' '_ruby' +'espeak' '_espeak' +'etags' '_etags' +'ethtool' '_ethtool' +'eu-nm' '_nm' +'eu-objdump' '_objdump' +'eu-readelf' '_readelf' +'eu-strings' '_strings' +'eval' '_precommand' +'eview' '_vim' +'evim' '_vim' +'evince' '_evince' +'ex' '_vi' +'exec' '_exec' +'expand' '_unexpand' +'explodepkg' '_pkgtool' +'export' '_typeset' +'express' '_webbrowser' +'extcheck' '_java' +'extractres' '_psutils' +'fakeroot' '_fakeroot' +'false' '_nothing' +'fastfetch' '_fastfetch' +'fc' '_fc' +'fc-list' '_xft_fonts' +'fc-match' '_xft_fonts' +'feh' '_feh' +'fetch' '_fetch' +'fetchmail' '_fetchmail' +'ffmpeg' '_ffmpeg' +'fg' '_jobs_fg' +'fgrep' '_grep' +'figlet' '_figlet' +'filterdiff' '_patchutils' +'find' '_find' +'findaffix' '_ispell' +'findmnt' '_findmnt' +'finger' '_finger' +'fink' '_fink' +'firefox' '_mozilla' +'-first-' '_first' +'fish' '_fish' +'fixdlsrps' '_psutils' +'fixfiles' '_selinux' +'fixfmps' '_psutils' +'fixmacps' '_psutils' +'fixpsditps' '_psutils' +'fixpspps' '_psutils' +'fixscribeps' '_psutils' +'fixtpps' '_psutils' +'fixwfwps' '_psutils' +'fixwpps' '_psutils' +'fixwwps' '_psutils' +'flac' '_flac' +'flex' '_flex' +'flex++' '_flex' +'flipdiff' '_patchutils' +'flist' '_mh' +'flists' '_mh' +'float' '_typeset' +'flowadm' '_flowadm' +'flua' '_lua' +'fmadm' '_fmadm' +'fmt' '_fmt' +'fmttest' '_mh' +'fned' '_zed' +'fnext' '_mh' +'fold' '_fold' +'folder' '_mh' +'folders' '_mh' +'fortune' '_fortune' +'forw' '_mh' +'fprev' '_mh' +'free' '_free' +'freebsd-make' '_make' +'freebsd-update' '_freebsd-update' +'freezer' '_openstack' +'fsh' '_fsh' +'fstat' '_fstat' +'fs_usage' '_fs_usage' +'ftp' '_hosts' +'functions' '_typeset' +'fuser' '_fuser' +'fusermount' '_fusermount' +'fusermount3' '_fusermount' +'fwhois' '_whois' +'fw_update' '_fw_update' +'g++' '_gcc' +'galeon' '_webbrowser' +'gawk' '_awk' +'gb2sum' '_md5sum' +'gbase32' '_base64' +'gbase64' '_base64' +'gbasename' '_basename' +'gcat' '_cat' +'gcc' '_gcc' +'gccgo' '_go' +'gchgrp' '_chown' +'gchmod' '_chmod' +'gchown' '_chown' +'gchroot' '_chroot' +'gcksum' '_cksum' +'gcmp' '_cmp' +'gcomm' '_comm' +'gcore' '_gcore' +'gcp' '_cp' +'gcut' '_cut' +'gdate' '_date' +'gdb' '_gdb' +'gdd' '_dd' +'gdf' '_df' +'gdiff' '_diff' +'gdu' '_du' +'geany' '_geany' +'gecho' '_echo' +'gegrep' '_grep' +'gem' '_gem' +'genisoimage' '_genisoimage' +'genv' '_env' +'getafm' '_psutils' +'getclip' '_getclip' +'getclip.exe' '_getclip' +'getconf' '_getconf' +'getent' '_getent' +'getfacl' '_getfacl' +'getfacl.exe' '_getfacl' +'getfattr' '_attr' +'getmail' '_getmail' +'getopt' '_getopt' +'getopts' '_vars' +'getpidprevcon' '_selinux' +'getsebool' '_selinux' +'gex' '_vim' +'gexpand' '_unexpand' +'gfgrep' '_grep' +'gfind' '_find' +'gfmt' '_fmt' +'gfold' '_fold' +'ggetopt' '_getopt' +'ggrep' '_grep' +'ggv' '_gnome-gv' +'ghead' '_head' +'ghostscript' '_ghostscript' +'ghostview' '_pspdf' +'gid' '_id' +'ginstall' '_install' +'git' '_git' +'git-buildpackage' '_git-buildpackage' +'git-cvsserver' '_git' +'gitk' '_git' +'git-receive-pack' '_git' +'git-shell' '_git' +'git-upload-archive' '_git' +'git-upload-pack' '_git' +'gjoin' '_join' +'glance' '_openstack' +'gln' '_ln' +'global' '_global' +'glocate' '_locate' +'gls' '_ls' +'gm' '_graphicsmagick' +'gmake' '_make' +'gmd5sum' '_md5sum' +'gmkdir' '_mkdir' +'gmkfifo' '_mkfifo' +'gmknod' '_mknod' +'gmktemp' '_mktemp' +'gmplayer' '_mplayer' +'gmv' '_mv' +'gnl' '_nl' +'gnocchi' '_openstack' +'gnome-gv' '_gnome-gv' +'gnumake' '_make' +'gnumfmt' '_numfmt' +'gnupod_addsong' '_gnupod' +'gnupod_addsong.pl' '_gnupod' +'gnupod_check' '_gnupod' +'gnupod_check.pl' '_gnupod' +'gnupod_INIT' '_gnupod' +'gnupod_INIT.pl' '_gnupod' +'gnupod_search' '_gnupod' +'gnupod_search.pl' '_gnupod' +'gnutls-cli' '_gnutls' +'gnutls-cli-debug' '_gnutls' +'gnutls-serv' '_gnutls' +'god' '_od' +'gofmt' '_go' +'gpasswd' '_gpasswd' +'gpaste' '_paste' +'gpatch' '_patch' +'gpg' '_gpg' +'gpg2' '_gpg' +'gpgv' '_gpg' +'gpg-zip' '_gpg' +'gphoto2' '_gphoto2' +'gprintenv' '_printenv' +'gprof' '_gprof' +'gqview' '_gqview' +'gradle' '_gradle' +'gradlew' '_gradle' +'grail' '_webbrowser' +'greadlink' '_readlink' +'grep' '_grep' +'grepdiff' '_patchutils' +'grep-excuses' '_grep-excuses' +'grm' '_rm' +'grmdir' '_rmdir' +'groff' '_groff' +'groupadd' '_user_admin' +'groupdel' '_groups' +'groupmod' '_user_admin' +'groups' '_users' +'growisofs' '_growisofs' +'gs' '_ghostscript' +'gsbj' '_pspdf' +'gsdj' '_pspdf' +'gsdj500' '_pspdf' +'gsed' '_sed' +'gseq' '_seq' +'gsettings' '_gsettings' +'gsha1sum' '_md5sum' +'gsha224sum' '_md5sum' +'gsha256sum' '_md5sum' +'gsha384sum' '_md5sum' +'gsha512sum' '_md5sum' +'gshred' '_shred' +'gshuf' '_shuf' +'gslj' '_pspdf' +'gslp' '_pspdf' +'gsnd' '_ghostscript' +'gsort' '_sort' +'gsplit' '_split' +'gstat' '_gstat' +'gstdbuf' '_stdbuf' +'gstrings' '_strings' +'gstty' '_stty' +'gsum' '_cksum' +'gtac' '_tac' +'gtail' '_tail' +'gtar' '_tar' +'gtee' '_tee' +'gtimeout' '_timeout' +'gtouch' '_touch' +'gtr' '_tr' +'gtty' '_tty' +'guilt' '_guilt' +'guilt-add' '_guilt' +'guilt-applied' '_guilt' +'guilt-delete' '_guilt' +'guilt-files' '_guilt' +'guilt-fold' '_guilt' +'guilt-fork' '_guilt' +'guilt-header' '_guilt' +'guilt-help' '_guilt' +'guilt-import' '_guilt' +'guilt-import-commit' '_guilt' +'guilt-init' '_guilt' +'guilt-new' '_guilt' +'guilt-next' '_guilt' +'guilt-patchbomb' '_guilt' +'guilt-pop' '_guilt' +'guilt-prev' '_guilt' +'guilt-push' '_guilt' +'guilt-rebase' '_guilt' +'guilt-refresh' '_guilt' +'guilt-rm' '_guilt' +'guilt-series' '_guilt' +'guilt-status' '_guilt' +'guilt-top' '_guilt' +'guilt-unapplied' '_guilt' +'guname' '_uname' +'gunexpand' '_unexpand' +'guniq' '_uniq' +'gunzip' '_gzip' +'guptime' '_uptime' +'gv' '_gv' +'gview' '_vim' +'gvim' '_vim' +'gvimdiff' '_vim' +'gwc' '_wc' +'gwho' '_who' +'gxargs' '_xargs' +'gzcat' '_gzip' +'gzegrep' '_grep' +'gzfgrep' '_grep' +'gzgrep' '_grep' +'gzilla' '_webbrowser' +'gzip' '_gzip' +'hash' '_hash' +'hd' '_hexdump' +'hdiutil' '_hdiutil' +'head' '_head' +'heat' '_openstack' +'hexdump' '_hexdump' +'hilite' '_precommand' +'histed' '_zed' +'history' '_fc' +'host' '_host' +'hostname' '_hostname' +'hostnamectl' '_hostnamectl' +'hotjava' '_webbrowser' +'htop' '_htop' +'hwinfo' '_hwinfo' +'hyprctl' '_hyprctl' +'hyprpm' '_hyprpm' +'iceweasel' '_mozilla' +'icombine' '_ispell' +'iconv' '_iconv' +'iconvconfig' '_iconvconfig' +'id' '_id' +'identify' '_imagemagick' +'ifconfig' '_ifconfig' +'ifdown' '_net_interfaces' +'iftop' '_iftop' +'ifup' '_net_interfaces' +'ijoin' '_ispell' +'import' '_imagemagick' +'inc' '_mh' +'includeres' '_psutils' +'inetadm' '_inetadm' +'info' '_texinfo' +'infocmp' '_terminals' +'initctl' '_initctl' +'initdb' '_postgresql' +'insmod' '_modutils' +'install' '_install' +'install-info' '_texinfo' +'installpkg' '_pkgtool' +'integer' '_typeset' +'interdiff' '_patchutils' +'invoke-rc.d' '_invoke-rc.d' +'ionice' '_ionice' +'iostat' '_iostat' +'ip' '_ip' +'ip6tables' '_iptables' +'ip6tables-restore' '_iptables' +'ip6tables-save' '_iptables' +'ipadm' '_ipadm' +'ipfw' '_ipfw' +'ipkg' '_opkg' +'ipsec' '_ipsec' +'ipset' '_ipset' +'iptables' '_iptables' +'iptables-restore' '_iptables' +'iptables-save' '_iptables' +'irb' '_ruby' +'ironic' '_openstack' +'irssi' '_irssi' +'isag' '_sysstat' +'ispell' '_ispell' +'iwconfig' '_iwconfig' +'jadetex' '_tex' +'jail' '_jail' +'jar' '_java' +'jarsigner' '_java' +'java' '_java' +'javac' '_java' +'javadoc' '_java' +'javah' '_java' +'javap' '_java' +'jdb' '_java' +'jexec' '_jexec' +'jls' '_jls' +'jobs' '_jobs_builtin' +'joe' '_joe' +'join' '_join' +'jot' '_jot' +'journalctl' '_journalctl' +'jq' '_jq' +'kdeconnect-cli' '_kdeconnect' +'kdump' '_kdump' +'keystone' '_openstack' +'keytool' '_java' +'kfmclient' '_kfmclient' +'kill' '_kill' +'killall' '_killall' +'killall5' '_killall' +'kioclient' '_kfmclient' +'kitty' '_kitty' +'kldload' '_kld' +'kldunload' '_kld' +'knock' '_knock' +'konqueror' '_webbrowser' +'kpartx' '_kpartx' +'kpdf' '_pdf' +'ksh' '_sh' +'ksh88' '_sh' +'ksh93' '_sh' +'ktrace' '_ktrace' +'kvno' '_kvno' +'last' '_last' +'lastb' '_last' +'latex' '_tex' +'latexmk' '_tex' +'ldap' '_ldap' +'ldapadd' '_openldap' +'ldapcompare' '_openldap' +'ldapdelete' '_openldap' +'ldapexop' '_openldap' +'ldapmodify' '_openldap' +'ldapmodrdn' '_openldap' +'ldappasswd' '_openldap' +'ldapsearch' '_openldap' +'ldapurl' '_openldap' +'ldapwhoami' '_openldap' +'ldconfig' '_ldconfig' +'ldconfig.real' '_ldconfig' +'ldd' '_ldd' +'less' '_less' +'let' '_math' +'lftp' '_ncftp' +'lha' '_lha' +'light' '_webbrowser' +'lighty-disable-mod' '_lighttpd' +'lighty-enable-mod' '_lighttpd' +'limit' '_limit' +'links' '_links' +'links2' '_links' +'lintian' '_lintian' +'lintian-info' '_lintian' +'linux' '_uml' +'lldb' '_lldb' +'llvm-g++' '_gcc' +'llvm-gcc' '_gcc' +'llvm-objdump' '_objdump' +'llvm-otool' '_otool' +'ln' '_ln' +'loadkeys' '_loadkeys' +'local' '_typeset' +'locale' '_locale' +'localectl' '_localectl' +'localedef' '_localedef' +'locate' '_locate' +'log' '_nothing' +'logger' '_logger' +'loginctl' '_loginctl' +'logname' '_nothing' +'look' '_look' +'losetup' '_losetup' +'lp' '_lp' +'lpadmin' '_lp' +'lpinfo' '_lp' +'lpoptions' '_lp' +'lpq' '_lp' +'lpr' '_lp' +'lprm' '_lp' +'lpstat' '_lp' +'ls' '_ls' +'lsattr' '_lsattr' +'lsblk' '_lsblk' +'lscfg' '_lscfg' +'lsd' '_lsd' +'lsdev' '_lsdev' +'lsdiff' '_patchutils' +'lslv' '_lslv' +'lsmod' '_modutils' +'lsns' '_lsns' +'lsof' '_lsof' +'lspv' '_lspv' +'lsusb' '_lsusb' +'lsvg' '_lsvg' +'ltrace' '_ltrace' +'lua' '_lua' +'lualatex' '_tex' +'luarocks' '_luarocks' +'lvchange' '_lvm2' +'lvconvert' '_lvm2' +'lvcreate' '_lvm2' +'lvdisplay' '_lvm2' +'lvextend' '_lvm2' +'lvm' '_lvm2' +'lvmconfig' '_lvm2' +'lvmdiskscan' '_lvm2' +'lvmdump' '_lvm2' +'lvreduce' '_lvm2' +'lvremove' '_lvm2' +'lvrename' '_lvm2' +'lvresize' '_lvm2' +'lvs' '_lvm2' +'lvscan' '_lvm2' +'lynx' '_lynx' +'lz4' '_lz4' +'lz4c' '_lz4' +'lz4c32' '_lz4' +'lz4cat' '_lz4' +'lzcat' '_xz' +'lzma' '_xz' +'lzop' '_lzop' +'m-a' '_module-assistant' +'mac2unix' '_dos2unix' +'machinectl' '_machinectl' +'madison' '_madison' +'magnum' '_openstack' +'mail' '_mail' +'Mail' '_mail' +'mailx' '_mail' +'make' '_make' +'makeinfo' '_texinfo' +'make-kpkg' '_make-kpkg' +'makepkg' '_pkgtool' +'man' '_man' +'manage.py' '_django' +'manila' '_openstack' +'mark' '_mh' +'mat' '_mat' +'mat2' '_mat2' +'matchpathcon' '_selinux' +'-math-' '_math' +'matlab' '_matlab' +'mattrib' '_mtools' +'mcd' '_mtools' +'mcopy' '_mtools' +'md2' '_cksum' +'md4' '_cksum' +'md5' '_cksum' +'md5sum' '_md5sum' +'mdadm' '_mdadm' +'mdel' '_mtools' +'mdeltree' '_mtools' +'mdfind' '_mdfind' +'mdir' '_mtools' +'mdls' '_mdls' +'mdo' '_mdo' +'mdu' '_mtools' +'mdutil' '_mdutil' +'members' '_members' +'mencal' '_mencal' +'mere' '_mere' +'merge' '_rcs' +'mergechanges' '_mergechanges' +'metaflac' '_flac' +'mformat' '_mtools' +'mgv' '_pspdf' +'mhfixmsg' '_mh' +'mhlist' '_mh' +'mhmail' '_mh' +'mhn' '_mh' +'mhparam' '_mh' +'mhpath' '_mh' +'mhshow' '_mh' +'mhstore' '_mh' +'mii-tool' '_mii-tool' +'mistral' '_openstack' +'mixerctl' '_mixerctl' +'mkdir' '_mkdir' +'mkfifo' '_mkfifo' +'mkisofs' '_growisofs' +'mknod' '_mknod' +'mksh' '_sh' +'mkshortcut' '_mkshortcut' +'mkshortcut.exe' '_mkshortcut' +'mktemp' '_mktemp' +'mktunes' '_gnupod' +'mktunes.pl' '_gnupod' +'mkzsh' '_mkzsh' +'mkzsh.exe' '_mkzsh' +'mlabel' '_mtools' +'mlocate' '_locate' +'mmd' '_mtools' +'mmm' '_webbrowser' +'mmount' '_mtools' +'mmove' '_mtools' +'modinfo' '_modutils' +'modprobe' '_modutils' +'module' '_module' +'module-assistant' '_module-assistant' +'mogrify' '_imagemagick' +'monasca' '_openstack' +'mondoarchive' '_mondo' +'montage' '_imagemagick' +'moosic' '_moosic' +'Mosaic' '_webbrowser' +'mosh' '_mosh' +'mount' '_mount' +'mozilla' '_mozilla' +'mozilla-firefox' '_mozilla' +'mozilla-xremote-client' '_mozilla' +'mpc' '_mpc' +'mplayer' '_mplayer' +'mpstat' '_sysstat' +'mpv' '_mpv' +'mr' '_myrepos' +'mrd' '_mtools' +'mread' '_mtools' +'mren' '_mtools' +'msgchk' '_mh' +'mt' '_mt' +'mtn' '_monotone' +'mtoolstest' '_mtools' +'mtr' '_mtr' +'mtype' '_mtools' +'munchlist' '_ispell' +'mupdf' '_mupdf' +'murano' '_openstack' +'mush' '_mail' +'mutt' '_mutt' +'mv' '_mv' +'mvim' '_vim' +'mx' '_hosts' +'mysql' '_mysql_utils' +'mysqladmin' '_mysql_utils' +'mysqldiff' '_mysqldiff' +'mysqldump' '_mysql_utils' +'mysqlimport' '_mysql_utils' +'mysqlshow' '_mysql_utils' +'nail' '_mail' +'nano' '_nano' +'native2ascii' '_java' +'nautilus' '_nautilus' +'nawk' '_awk' +'nc' '_netcat' +'ncal' '_cal' +'ncftp' '_ncftp' +'ncl' '_nedit' +'nedit' '_nedit' +'nedit-client' '_nedit' +'nedit-nc' '_nedit' +'neomutt' '_mutt' +'netcat' '_netcat' +'netrik' '_webbrowser' +'netscape' '_netscape' +'netstat' '_netstat' +'nettop' '_nettop' +'networkctl' '_networkctl' +'networksetup' '_networksetup' +'neutron' '_openstack' +'new' '_mh' +'newgrp' '_groups' +'newrole' '_selinux' +'next' '_mh' +'nginx' '_nginx' +'ngrep' '_ngrep' +'nice' '_nice' +'nix' '_nix' +'nix-build' '_nix-build' +'nix-channel' '_nix-channel' +'nix-collect-garbage' '_nix-collect-garbage' +'nix-copy-closure' '_nix-copy-closure' +'nix-env' '_nix-env' +'nix-hash' '_nix-hash' +'nix-install-package' '_nix-install-package' +'nix-instantiate' '_nix-instantiate' +'nixops' '_nixops' +'nixos-build-vms' '_nixos-build-vms' +'nixos-container' '_nixos-container' +'nixos-generate-config' '_nixos-generate-config' +'nixos-install' '_nixos-install' +'nixos-option' '_nixos-option' +'nixos-rebuild' '_nixos-rebuild' +'nixos-version' '_nixos-version' +'nix-prefetch-url' '_nix-prefetch-url' +'nix-push' '_nix-push' +'nix-shell' '_nix-shell' +'nix-store' '_nix-store' +'nkf' '_nkf' +'nl' '_nl' +'nm' '_nm' +'nmap' '_nmap' +'nmblookup' '_samba' +'nmcli' '_networkmanager' +'nocorrect' '_precommand' +'noglob' '_precommand' +'nohup' '_precommand' +'nova' '_openstack' +'npm' '_npm' +'ns' '_hosts' +'nsenter' '_nsenter' +'nslookup' '_nslookup' +'ntalk' '_other_accounts' +'numfmt' '_numfmt' +'nvim' '_vim' +'nvram' '_nvram' +'objdump' '_objdump' +'od' '_od' +'odme' '_object_classes' +'odmget' '_object_classes' +'odmshow' '_object_classes' +'ogg123' '_vorbis' +'oggdec' '_vorbis' +'oggenc' '_vorbis' +'ogginfo' '_vorbis' +'oksh' '_sh' +'okular' '_okular' +'oomctl' '_oomctl' +'open' '_open' +'opencode' '_opencode' +'openstack' '_openstack' +'opera' '_webbrowser' +'opera-next' '_webbrowser' +'opkg' '_opkg' +'opusdec' '_opustools' +'opusenc' '_opustools' +'opusinfo' '_opustools' +'osascript' '_osascript' +'osc' '_osc' +'otool' '_otool' +'p4' '_perforce' +'p4d' '_perforce' +'pack' '_pack' +'packf' '_mh' +'pandoc' '_pandoc' +'papers' '_papers' +'-parameter-' '_parameter' +'parsehdlist' '_urpmi' +'passwd' '_users' +'paste' '_paste' +'patch' '_patch' +'pax' '_pax' +'pbcopy' '_pbcopy' +'pbpaste' '_pbcopy' +'pbuilder' '_pbuilder' +'pcat' '_pack' +'pcp-htop' '_htop' +'pcred' '_pids' +'pdf2dsc' '_pdf' +'pdf2ps' '_pdf' +'pdffonts' '_pdf' +'pdfimages' '_pdf' +'pdfinfo' '_pdf' +'pdfjadetex' '_tex' +'pdflatex' '_tex' +'pdfopt' '_pdf' +'pdftex' '_tex' +'pdftexi2dvi' '_texinfo' +'pdftk' '_pdftk' +'pdftopbm' '_pdf' +'pdftops' '_pdf' +'pdftotext' '_pdf' +'pdksh' '_sh' +'perf' '_perf' +'perl' '_perl' +'perlbrew' '_perlbrew' +'perldoc' '_perldoc' +'pfctl' '_pfctl' +'pfexec' '_pfexec' +'pfiles' '_pids' +'pflags' '_pids' +'pg_config' '_postgresql' +'pg_ctl' '_postgresql' +'pg_dump' '_postgresql' +'pg_dumpall' '_postgresql' +'pg_isready' '_postgresql' +'pgrep' '_pgrep' +'pg_restore' '_postgresql' +'pg_upgrade' '_postgresql' +'php' '_php' +'pick' '_mh' +'picocom' '_picocom' +'pidof' '_pidof' +'pidstat' '_sysstat' +'pigz' '_gzip' +'pine' '_pine' +'pinef' '_pine' +'pinfo' '_texinfo' +'ping' '_ping' +'ping6' '_ping' +'piuparts' '_piuparts' +'pkg' '_pkg5' +'pkg_add' '_bsd_pkg' +'pkgadd' '_pkgadd' +'pkg-config' '_pkg-config' +'pkg_create' '_bsd_pkg' +'pkg_delete' '_bsd_pkg' +'pkgin' '_pkgin' +'pkg_info' '_bsd_pkg' +'pkginfo' '_pkginfo' +'pkgrm' '_pkgrm' +'pkgtool' '_pkgtool' +'pkill' '_pgrep' +'playerctl' '_playerctl' +'pldd' '_pids' +'plutil' '_plutil' +'pmake' '_make' +'pman' '_perl_modules' +'pmap' '_pmap' +'pmcat' '_perl_modules' +'pmdesc' '_perl_modules' +'pmeth' '_perl_modules' +'pmexp' '_perl_modules' +'pmfunc' '_perl_modules' +'pmload' '_perl_modules' +'pmls' '_perl_modules' +'pmpath' '_perl_modules' +'pmvers' '_perl_modules' +'podgrep' '_perl_modules' +'podpath' '_perl_modules' +'podtoc' '_perl_modules' +'poff' '_pon' +'policytool' '_java' +'pon' '_pon' +'popd' '_directory_stack' +'portaudit' '_portaudit' +'portlint' '_portlint' +'portmaster' '_portmaster' +'portsnap' '_portsnap' +'postconf' '_postfix' +'postgres' '_postgresql' +'postmaster' '_postgresql' +'postqueue' '_postfix' +'postsuper' '_postfix' +'powerd' '_powerd' +'pr' '_pr' +'prev' '_mh' +'print' '_print' +'printenv' '_printenv' +'printf' '_print' +'procstat' '_procstat' +'prompt' '_prompt' +'prove' '_prove' +'prstat' '_prstat' +'prun' '_pids' +'ps' '_ps' +'ps2ascii' '_pspdf' +'ps2epsi' '_postscript' +'ps2pdf' '_postscript' +'ps2pdf12' '_postscript' +'ps2pdf13' '_postscript' +'ps2pdf14' '_postscript' +'ps2pdfwr' '_postscript' +'ps2ps' '_postscript' +'psbook' '_psutils' +'pscp' '_pscp' +'pscp.exe' '_pscp' +'psed' '_sed' +'psig' '_pids' +'psmerge' '_psutils' +'psmulti' '_postscript' +'psnup' '_psutils' +'psql' '_postgresql' +'psresize' '_psutils' +'psselect' '_psutils' +'pstack' '_pids' +'pstoedit' '_pspdf' +'pstop' '_pids' +'pstops' '_psutils' +'pstotgif' '_pspdf' +'pswrap' '_postscript' +'ptree' '_ptree' +'ptx' '_ptx' +'pump' '_pump' +'pushd' '_cd' +'putclip' '_putclip' +'putclip.exe' '_putclip' +'pv' '_pv' +'pvchange' '_lvm2' +'pvck' '_lvm2' +'pvcreate' '_lvm2' +'pvdisplay' '_lvm2' +'pvmove' '_lvm2' +'pvremove' '_lvm2' +'pvresize' '_lvm2' +'pvs' '_lvm2' +'pvscan' '_lvm2' +'pwait' '_pids' +'pwdx' '_pids' +'pwgen' '_pwgen' +'pyhtmlizer' '_twisted' +'qdbus' '_qdbus' +'qiv' '_qiv' +'qtplay' '_qtplay' +'querybts' '_bug' +'quilt' '_quilt' +'r' '_fc' +'rake' '_rake' +'ranlib' '_ranlib' +'rar' '_rar' +'rc' '_sh' +'rcctl' '_rcctl' +'rclone' '_rclone' +'rcp' '_rlogin' +'rcs' '_rcs' +'rcsdiff' '_rcs' +'rdesktop' '_rdesktop' +'read' '_read' +'readelf' '_readelf' +'readlink' '_readlink' +'readonly' '_typeset' +'readshortcut' '_readshortcut' +'readshortcut.exe' '_readshortcut' +'rebootin' '_rebootin' +'-redirect-' '_redirect' +'-redirect-,<,bunzip2' '_bzip2' +'-redirect-,<,bzip2' '_bzip2' +'-redirect-,>,bzip2' '_bzip2' +'-redirect-,<,compress' '_compress' +'-redirect-,>,compress' '_compress' +'-redirect-,-default-,-default-' '_files' +'-redirect-,<,gunzip' '_gzip' +'-redirect-,<,gzip' '_gzip' +'-redirect-,>,gzip' '_gzip' +'-redirect-,<,uncompress' '_compress' +'-redirect-,<,unxz' '_xz' +'-redirect-,<,unzstd' '_zstd' +'-redirect-,<,xz' '_xz' +'-redirect-,>,xz' '_xz' +'-redirect-,<,zstd' '_zstd' +'-redirect-,>,zstd' '_zstd' +'refile' '_mh' +'rehash' '_hash' +'reindexdb' '_postgresql' +'reload' '_initctl' +'removepkg' '_pkgtool' +'remsh' '_rlogin' +'renice' '_renice' +'repl' '_mh' +'reportbug' '_bug' +'reprepro' '_reprepro' +'resolvectl' '_resolvectl' +'restart' '_initctl' +'restorecon' '_selinux' +'retawq' '_webbrowser' +'rg' '_rg' +'rgrep' '_grep' +'rgview' '_vim' +'rgvim' '_vim' +'ri' '_ri' +'rlogin' '_rlogin' +'rm' '_rm' +'rmadison' '_madison' +'rmd160' '_cksum' +'rmdir' '_rmdir' +'rmf' '_mh' +'rmic' '_java' +'rmid' '_java' +'rmiregistry' '_java' +'rmm' '_mh' +'rmmod' '_modutils' +'rnano' '_nano' +'route' '_route' +'rpm' '_rpm' +'rpmbuild' '_rpm' +'rpmkeys' '_rpm' +'rpmquery' '_rpm' +'rpmsign' '_rpm' +'rpmspec' '_rpm' +'rpmverify' '_rpm' +'rrdtool' '_rrdtool' +'rsh' '_rlogin' +'rsvg-convert' '_rsvg-convert' +'rsync' '_rsync' +'rtin' '_tin' +'rubber' '_rubber' +'rubber-info' '_rubber' +'rubber-pipe' '_rubber' +'ruby' '_ruby' +'ruby-mri' '_ruby' +'run0' '_run0' +'runcon' '_selinux' +'run-help' '_run-help' +'rup' '_hosts' +'rusage' '_precommand' +'rview' '_vim' +'rvim' '_vim' +'rwho' '_hosts' +'rxvt' '_urxvt' +'s2p' '_sed' +'sadf' '_sysstat' +'sahara' '_openstack' +'sar' '_sysstat' +'savecore' '_savecore' +'say' '_say' +'sbuild' '_sbuild' +'scan' '_mh' +'sccs' '_sccs' +'sccsdiff' '_sccs' +'sched' '_sched' +'schedtool' '_schedtool' +'schroot' '_schroot' +'scl' '_scl' +'scons' '_scons' +'scp' '_ssh' +'screen' '_screen' +'script' '_script' +'scriptreplay' '_script' +'scselect' '_scselect' +'sc_usage' '_sc_usage' +'scutil' '_scutil' +'seaf-cli' '_seafile' +'sealert' '_selinux' +'secon' '_selinux' +'sed' '_sed' +'sedismod' '_selinux' +'sedta' '_selinux' +'seinfo' '_selinux' +'selinuxconlist' '_selinux' +'selinuxdefcon' '_selinux' +'selinuxexeccon' '_selinux' +'semanage' '_selinux' +'semodule' '_selinux' +'semodule_unpackage' '_selinux' +'senlin' '_openstack' +'sepolgen' '_selinux' +'sepolicy' '_selinux' +'seq' '_seq' +'serialver' '_java' +'service' '_service' +'sesearch' '_selinux' +'sestatus' '_selinux' +'set' '_set' +'setenforce' '_selinux' +'setfacl' '_setfacl' +'setfacl.exe' '_setfacl' +'setfattr' '_attr' +'setopt' '_setopt' +'setpriv' '_setpriv' +'setsebool' '_selinux' +'setsid' '_setsid' +'setxkbmap' '_setxkbmap' +'sftp' '_ssh' +'sh' '_sh' +'sha1' '_cksum' +'sha1sum' '_md5sum' +'sha224sum' '_md5sum' +'sha256' '_cksum' +'sha256sum' '_md5sum' +'sha384' '_cksum' +'sha384sum' '_md5sum' +'sha512' '_cksum' +'sha512sum' '_md5sum' +'sha512t256' '_cksum' +'shasum' '_shasum' +'shift' '_arrays' +'shortcuts' '_shortcuts' +'show' '_mh' +'showchar' '_psutils' +'showmount' '_showmount' +'shred' '_shred' +'shuf' '_shuf' +'shutdown' '_shutdown' +'signify' '_signify' +'sioyek' '_sioyek' +'sisu' '_sisu' +'skein1024' '_cksum' +'skein256' '_cksum' +'skein512' '_cksum' +'skipstone' '_webbrowser' +'slabtop' '_slabtop' +'slitex' '_tex' +'slocate' '_locate' +'slogin' '_ssh' +'slrn' '_slrn' +'smartctl' '_smartmontools' +'smbclient' '_samba' +'smbcontrol' '_samba' +'smbstatus' '_samba' +'smit' '_smit' +'smitty' '_smit' +'snoop' '_snoop' +'soa' '_hosts' +'socket' '_socket' +'sockstat' '_sockstat' +'softwareupdate' '_softwareupdate' +'sort' '_sort' +'sortm' '_mh' +'source' '_source' +'spamassassin' '_spamassassin' +'split' '_split' +'splitdiff' '_patchutils' +'sqlite' '_sqlite' +'sqlite3' '_sqlite' +'sqsh' '_sqsh' +'sr' '_surfraw' +'srptool' '_gnutls' +'ss' '_ss' +'ssh' '_ssh' +'ssh-add' '_ssh' +'ssh-agent' '_ssh' +'ssh-copy-id' '_ssh' +'sshfs' '_sshfs' +'ssh-keygen' '_ssh' +'ssh-keyscan' '_ssh' +'star' '_tar' +'start' '_initctl' +'stat' '_stat' +'status' '_initctl' +'stdbuf' '_stdbuf' +'stop' '_initctl' +'stow' '_stow' +'strace' '_strace' +'strace64' '_strace' +'strftime' '_strftime' +'strings' '_strings' +'strip' '_strip' +'strongswan' '_ipsec' +'stty' '_stty' +'su' '_su' +'subl' '_sublimetext' +'-subscript-' '_subscript' +'sudo' '_sudo' +'sudoedit' '_sudo' +'sum' '_cksum' +'surfraw' '_surfraw' +'SuSEconfig' '_SUSEconfig' +'sv' '_runit' +'svcadm' '_svcadm' +'svccfg' '_svccfg' +'svcprop' '_svcprop' +'svcs' '_svcs' +'svn' '_subversion' +'svnadmin' '_subversion' +'svnadmin-static' '_subversion' +'svn-buildpackage' '_svn-buildpackage' +'svnlite' '_subversion' +'svnliteadmin' '_subversion' +'swaks' '_swaks' +'swanctl' '_swanctl' +'swift' '_swift' +'swiftc' '_swift' +'sw_vers' '_sw_vers' +'sync' '_nothing' +'sysclean' '_sysclean' +'sysctl' '_sysctl' +'sysmerge' '_sysmerge' +'syspatch' '_syspatch' +'sysrc' '_sysrc' +'systat' '_systat' +'systemctl' '_systemctl' +'systemd-analyze' '_systemd-analyze' +'systemd-ask-password' '_systemd' +'systemd-cat' '_systemd' +'systemd-cgls' '_systemd' +'systemd-cgtop' '_systemd' +'systemd-delta' '_systemd-delta' +'systemd-detect-virt' '_systemd' +'systemd-id128' '_systemd-id128' +'systemd-inhibit' '_systemd-inhibit' +'systemd-machine-id-setup' '_systemd' +'systemd-notify' '_systemd' +'systemd-nspawn' '_systemd-nspawn' +'systemd-path' '_systemd-path' +'systemd-resolve' '_resolvectl' +'systemd-run' '_systemd-run' +'systemd-tmpfiles' '_systemd-tmpfiles' +'systemd-tty-ask-password-agent' '_systemd' +'system_profiler' '_system_profiler' +'sysupgrade' '_sysupgrade' +'tac' '_tac' +'tacker' '_openstack' +'tail' '_tail' +'tailscale' '_tailscale' +'talk' '_other_accounts' +'tar' '_tar' +'tardy' '_tardy' +'tcpdump' '_tcpdump' +'tcp_open' '_tcpsys' +'tcptraceroute' '_tcptraceroute' +'tcsh' '_sh' +'tda' '_devtodo' +'tdd' '_devtodo' +'tde' '_devtodo' +'tdr' '_devtodo' +'tee' '_tee' +'telnet' '_telnet' +'tex' '_tex' +'texi2any' '_texinfo' +'texi2dvi' '_texinfo' +'texi2pdf' '_texinfo' +'texindex' '_texinfo' +'tg' '_topgit' +'tidy' '_tidy' +'tig' '_git' +'-tilde-' '_tilde' +'time' '_precommand' +'timedatectl' '_timedatectl' +'timeout' '_timeout' +'times' '_nothing' +'tin' '_tin' +'tkconch' '_twisted' +'tkinfo' '_texinfo' +'tla' '_tla' +'tload' '_tload' +'tmux' '_tmux' +'todo' '_devtodo' +'todo.sh' '_todo.sh' +'toilet' '_toilet' +'top' '_top' +'totdconfig' '_totd' +'touch' '_touch' +'tpb' '_tpb' +'tpkg-debarch' '_toolchain-source' +'tpkg-install' '_toolchain-source' +'tpkg-install-libc' '_toolchain-source' +'tpkg-make' '_toolchain-source' +'tpkg-update' '_toolchain-source' +'tput' '_tput' +'tr' '_tr' +'tracepath' '_tracepath' +'tracepath6' '_tracepath' +'traceroute' '_hosts' +'transmission-remote' '_transmission' +'trap' '_trap' +'trash' '_trash' +'tree' '_tree' +'trial' '_twisted' +'trove' '_openstack' +'true' '_nothing' +'truncate' '_truncate' +'truss' '_truss' +'tryaffix' '_ispell' +'tty' '_tty' +'ttyctl' '_ttyctl' +'tunctl' '_uml' +'tune2fs' '_tune2fs' +'tunes2pod' '_gnupod' +'tunes2pod.pl' '_gnupod' +'twidge' '_twidge' +'twist' '_twisted' +'twistd' '_twisted' +'txt' '_hosts' +'type' '_which' +'typeset' '_typeset' +'udevadm' '_udevadm' +'udisksctl' '_udisks2' +'ulimit' '_ulimit' +'uml_mconsole' '_uml' +'uml_moo' '_uml' +'uml_switch' '_uml' +'umount' '_mount' +'unace' '_unace' +'unalias' '_aliases' +'uname' '_uname' +'uncompress' '_compress' +'unexpand' '_unexpand' +'unfunction' '_functions' +'unhash' '_unhash' +'uniq' '_uniq' +'unison' '_unison' +'units' '_units' +'unix2dos' '_dos2unix' +'unix2mac' '_dos2unix' +'unlimit' '_limits' +'unlz4' '_lz4' +'unlzma' '_xz' +'unpack' '_pack' +'unpigz' '_gzip' +'unrar' '_rar' +'unset' '_vars' +'unsetopt' '_setopt' +'unshare' '_unshare' +'unwrapdiff' '_patchutils' +'unxz' '_xz' +'unzip' '_zip' +'unzstd' '_zstd' +'update-alternatives' '_update-alternatives' +'update-rc.d' '_update-rc.d' +'upgradepkg' '_pkgtool' +'upower' '_upower' +'uptime' '_uptime' +'urpme' '_urpmi' +'urpmf' '_urpmi' +'urpmi' '_urpmi' +'urpmi.addmedia' '_urpmi' +'urpmi.removemedia' '_urpmi' +'urpmi.update' '_urpmi' +'urpmq' '_urpmi' +'urxvt' '_urxvt' +'urxvt256c' '_urxvt' +'urxvt256cc' '_urxvt' +'urxvt256c-ml' '_urxvt' +'urxvt256c-mlc' '_urxvt' +'urxvtc' '_urxvt' +'usbconfig' '_usbconfig' +'uscan' '_uscan' +'useradd' '_user_admin' +'userdbctl' '_userdbctl' +'userdel' '_users' +'usermod' '_user_admin' +'vacuumdb' '_postgresql' +'valgrind' '_valgrind' +'validatetrans' '_selinux' +'-value-' '_value' +'-value-,ADB_TRACE,-default-' '_adb' +'-value-,ANDROID_LOG_TAGS,-default-' '_adb' +'-value-,ANDROID_SERIAL,-default-' '_adb' +'-value-,ANSIBLE_INVENTORY_ENABLED,-default-' '_ansible' +'-value-,ANSIBLE_STDOUT_CALLBACK,-default-' '_ansible' +'-value-,ANT_ARGS,-default-' '_ant' +'-value-,CFLAGS,-default-' '_gcc' +'-value-,CPPFLAGS,-default-' '_gcc' +'-value-,CXXFLAGS,-default-' '_gcc' +'-value-,DBUS_SESSION_BUS_ADDRESS,-default-' '_sd_bus_address' +'-value-,DBUS_SYSTEM_BUS_ADDRESS,-default-' '_sd_bus_address' +'-value-,-default-,-command-' '_zargs' +'-value-,-default-,-default-' '_value' +'-value-,DISPLAY,-default-' '_x_display' +'-value-,GREP_OPTIONS,-default-' '_grep' +'-value-,GZIP,-default-' '_gzip' +'-value-,LANG,-default-' '_locales' +'-value-,LANGUAGE,-default-' '_locales' +'-value-,LD_DEBUG,-default-' '_ld_debug' +'-value-,LDFLAGS,-default-' '_gcc' +'-value-,LESSCHARSET,-default-' '_less' +'-value-,LESS,-default-' '_less' +'-value-,LOOPDEV_DEBUG,-default-' '_losetup' +'-value-,LPDEST,-default-' '_printers' +'-value-,MPD_HOST,-default' '_mpc' +'-value-,P4CLIENT,-default-' '_perforce' +'-value-,P4MERGE,-default-' '_perforce' +'-value-,P4PORT,-default-' '_perforce' +'-value-,P4USER,-default-' '_perforce' +'-value-,PERLDOC,-default-' '_perldoc' +'-value-,PRINTER,-default-' '_printers' +'-value-,PROMPT2,-default-' '_ps1234' +'-value-,PROMPT3,-default-' '_ps1234' +'-value-,PROMPT4,-default-' '_ps1234' +'-value-,PROMPT,-default-' '_ps1234' +'-value-,PS1,-default-' '_ps1234' +'-value-,PS2,-default-' '_ps1234' +'-value-,PS3,-default-' '_ps1234' +'-value-,PS4,-default-' '_ps1234' +'-value-,RPROMPT2,-default-' '_ps1234' +'-value-,RPROMPT,-default-' '_ps1234' +'-value-,RPS1,-default-' '_ps1234' +'-value-,RPS2,-default-' '_ps1234' +'-value-,SPROMPT,-default-' '_ps1234' +'-value-,TERM,-default-' '_terminals' +'-value-,TERMINFO_DIRS,-default-' '_dir_list' +'-value-,TZ,-default-' '_time_zone' +'-value-,VALGRIND_OPTS,-default-' '_valgrind' +'-value-,WWW_HOME,-default-' '_urls' +'-value-,XML_CATALOG_FILES,-default-' '_xmlsoft' +'-value-,XZ_DEFAULTS,-default-' '_xz' +'-value-,XZ_OPT,-default-' '_xz' +'-vared-' '_in_vared' +'vared' '_vared' +'varlinkctl' '_varlinkctl' +'vcs_info_hookadd' '_vcs_info' +'vcs_info_hookdel' '_vcs_info' +'vgcfgbackup' '_lvm2' +'vgcfgrestore' '_lvm2' +'vgchange' '_lvm2' +'vgck' '_lvm2' +'vgconvert' '_lvm2' +'vgcreate' '_lvm2' +'vgdisplay' '_lvm2' +'vgexport' '_lvm2' +'vgextend' '_lvm2' +'vgimport' '_lvm2' +'vgimportclone' '_lvm2' +'vgmerge' '_lvm2' +'vgmknodes' '_lvm2' +'vgreduce' '_lvm2' +'vgremove' '_lvm2' +'vgrename' '_lvm2' +'vgs' '_lvm2' +'vgscan' '_lvm2' +'vgsplit' '_lvm2' +'vi' '_vi' +'view' '_vi' +'vim' '_vim' +'vim-addons' '_vim-addons' +'vimdiff' '_vim' +'virsh' '_libvirt' +'virt-admin' '_libvirt' +'virt-host-validate' '_libvirt' +'virt-pki-validate' '_libvirt' +'virt-xml-validate' '_libvirt' +'visudo' '_visudo' +'vitrage' '_openstack' +'vmctl' '_vmctl' +'vmstat' '_vmstat' +'vncserver' '_vnc' +'vncviewer' '_vnc' +'vorbiscomment' '_vorbis' +'vpnc' '_vpnc' +'vpnc-connect' '_vpnc' +'vserver' '_vserver' +'w' '_w' +'w3m' '_w3m' +'wait' '_wait' +'wajig' '_wajig' +'watch' '_watch' +'watcher' '_openstack' +'wc' '_wc' +'wget' '_wget' +'whatis' '_man' +'whence' '_which' +'where' '_which' +'whereis' '_whereis' +'which' '_which' +'which-pkg-broke' '_which-pkg-broke' +'who' '_who' +'whoami' '_nothing' +'whois' '_whois' +'whom' '_mh' +'wiggle' '_wiggle' +'wipefs' '_wipefs' +'wl-copy' '_wl-copy' +'wlogout' '_wlogout' +'wl-paste' '_wl-paste' +'wodim' '_cdrecord' +'wpa_cli' '_wpa_cli' +'wpaperctl' '_wpaperctl' +'wpaperd' '_wpaperd' +'wpctl' '_wpctl' +'write' '_users_on' +'www' '_webbrowser' +'xargs' '_xargs' +'xattr' '_attr' +'xauth' '_xauth' +'xautolock' '_xautolock' +'xclip' '_xclip' +'xcode-select' '_xcode-select' +'xdpyinfo' '_x_utils' +'xdvi' '_xdvi' +'xelatex' '_tex' +'xetex' '_tex' +'xev' '_x_utils' +'xfconf-query' '_xfconf-query' +'xfd' '_x_utils' +'xfig' '_xfig' +'xfontsel' '_x_utils' +'xfreerdp' '_rdesktop' +'xhost' '_x_utils' +'xinput' '_xinput' +'xkill' '_x_utils' +'xli' '_xloadimage' +'xloadimage' '_xloadimage' +'xlsatoms' '_x_utils' +'xlsclients' '_x_utils' +'xml' '_xmlstarlet' +'xmllint' '_xmlsoft' +'xmlstarlet' '_xmlstarlet' +'xmms2' '_xmms2' +'xmodmap' '_xmodmap' +'xmosaic' '_webbrowser' +'xon' '_x_utils' +'xournal' '_xournal' +'xpdf' '_xpdf' +'xping' '_hosts' +'xprop' '_x_utils' +'xrandr' '_xrandr' +'xrdb' '_x_utils' +'xscreensaver-command' '_xscreensaver' +'xset' '_xset' +'xsetbg' '_xloadimage' +'xsetroot' '_x_utils' +'xsltproc' '_xmlsoft' +'xterm' '_xterm' +'xtightvncviewer' '_vnc' +'xtp' '_imagemagick' +'xv' '_xv' +'xview' '_xloadimage' +'xvnc4viewer' '_vnc' +'xvncviewer' '_vnc' +'xwd' '_x_utils' +'xwininfo' '_x_utils' +'xwit' '_xwit' +'xwud' '_x_utils' +'xxd' '_xxd' +'xz' '_xz' +'xzcat' '_xz' +'yafc' '_yafc' +'yash' '_sh' +'yast' '_yast' +'yast2' '_yast' +'ypbind' '_yp' +'ypcat' '_yp' +'ypmatch' '_yp' +'yppasswd' '_yp' +'yppoll' '_yp' +'yppush' '_yp' +'ypserv' '_yp' +'ypset' '_yp' +'ypwhich' '_yp' +'ypxfr' '_yp' +'ytalk' '_other_accounts' +'yum' '_yum' +'yumdb' '_yum' +'zargs' '_zargs' +'zcalc' '_zcalc' +'-zcalc-line-' '_zcalc_line' +'zcat' '_zcat' +'zcompile' '_zcompile' +'zcp' '_zmv' +'zdb' '_zfs' +'zdelattr' '_zattr' +'zdump' '_zdump' +'zeal' '_zeal' +'zed' '_zed' +'zegrep' '_grep' +'zen' '_webbrowser' +'zf_chgrp' '_chown' +'zf_chmod' '_chmod' +'zf_chown' '_chown' +'zfgrep' '_grep' +'zf_ln' '_ln' +'zf_mkdir' '_mkdir' +'zf_mv' '_mv' +'zf_rm' '_rm' +'zf_rmdir' '_rmdir' +'zfs' '_zfs' +'zgetattr' '_zattr' +'zgrep' '_grep' +'zip' '_zip' +'zipinfo' '_zip' +'zle' '_zle' +'zlistattr' '_zattr' +'zln' '_zmv' +'zlogin' '_zlogin' +'zmail' '_mail' +'zmodload' '_zmodload' +'zmv' '_zmv' +'zone' '_hosts' +'zoneadm' '_zoneadm' +'zparseopts' '_zparseopts' +'zpool' '_zfs' +'zpty' '_zpty' +'zsetattr' '_zattr' +'zsh' '_zsh' +'zsh-mime-handler' '_zsh-mime-handler' +'zsocket' '_zsocket' +'zstat' '_stat' +'zstd' '_zstd' +'zstdcat' '_zstd' +'zstdmt' '_zstd' +'zstream' '_zfs' +'zstyle' '_zstyle' +'ztodo' '_ztodo' +'zun' '_openstack' +'zxpdf' '_xpdf' +'zypper' '_zypper' +) + +_services=( +'bzcat' 'bunzip2' +'dch' 'debchange' +'gchgrp' 'chgrp' +'gchown' 'chown' +'gnupod_addsong.pl' 'gnupod_addsong' +'gnupod_check.pl' 'gnupod_check' +'gnupod_INIT.pl' 'gnupod_INIT' +'gnupod_search.pl' 'gnupod_search' +'gpg2' 'gpg' +'gzcat' 'gunzip' +'iceweasel' 'firefox' +'lzcat' 'unxz' +'lzma' 'xz' +'Mail' 'mail' +'mailx' 'mail' +'mktunes.pl' 'mktunes' +'nail' 'mail' +'ncl' 'nc' +'nedit-client' 'nc' +'nedit-nc' 'nc' +'pcat' 'unpack' +'-redirect-,<,bunzip2' 'bunzip2' +'-redirect-,<,bzip2' 'bzip2' +'-redirect-,>,bzip2' 'bunzip2' +'-redirect-,<,compress' 'compress' +'-redirect-,>,compress' 'uncompress' +'-redirect-,<,gunzip' 'gunzip' +'-redirect-,<,gzip' 'gzip' +'-redirect-,>,gzip' 'gunzip' +'-redirect-,<,uncompress' 'uncompress' +'-redirect-,<,unxz' 'unxz' +'-redirect-,<,unzstd' 'unzstd' +'-redirect-,<,xz' 'xz' +'-redirect-,>,xz' 'unxz' +'-redirect-,<,zstd' 'zstd' +'-redirect-,>,zstd' 'unzstd' +'remsh' 'rsh' +'slogin' 'ssh' +'svnadmin-static' 'svnadmin' +'svnlite' 'svn' +'svnliteadmin' 'svnadmin' +'tunes2pod.pl' 'tunes2pod' +'unlzma' 'unxz' +'xelatex' 'latex' +'xetex' 'tex' +'xzcat' 'unxz' +'zf_chgrp' 'chgrp' +'zf_chown' 'chown' +) + +_patcomps=( +'*/(init|rc[0-9S]#).d/*' '_init_d' +) + +_postpatcomps=( +'_*' '_compadd' +'c++-*' '_gcc' +'g++-*' '_gcc' +'gcc-*' '_gcc' +'gem[0-9.]#' '_gem' +'lua[0-9.-]##' '_lua' +'(p[bgpn]m*|*top[bgpn]m)' '_pbm' +'php[0-9.-]' '_php' +'pip[0-9.]#' '_pip' +'pydoc[0-9.]#' '_pydoc' +'python[0-9.]#' '_python' +'qemu(|-system-*)' '_qemu' +'(ruby|[ei]rb)[0-9.]#' '_ruby' +'shasum(|5).*' '_shasum' +'(texi(2*|ndex))' '_texi' +'(tiff*|*2tiff|pal2rgb)' '_tiff' +'-value-,(ftp|http(|s))_proxy,-default-' '_urls' +'-value-,LC_*,-default-' '_locales' +'-value-,*path,-default-' '_directories' +'-value-,*PATH,-default-' '_dir_list' +'-value-,RUBY(LIB|OPT|PATH),-default-' '_ruby' +'*/X11(|R<4->)/*' '_x_arguments' +'yodl(|2*)' '_yodl' +'zf*' '_zftp' +) + +_compautos=( +'_call_program' '+X' +) + +zle -C _bash_complete-word .complete-word _bash_completions +zle -C _bash_list-choices .list-choices _bash_completions +zle -C _complete_debug .complete-word _complete_debug +zle -C _complete_help .complete-word _complete_help +zle -C _complete_tag .complete-word _complete_tag +zle -C _correct_filename .complete-word _correct_filename +zle -C _correct_word .complete-word _correct_word +zle -C _expand_alias .complete-word _expand_alias +zle -C _expand_word .complete-word _expand_word +zle -C _history-complete-newer .complete-word _history_complete_word +zle -C _history-complete-older .complete-word _history_complete_word +zle -C _list_expansions .list-choices _expand_word +zle -C _most_recent_file .complete-word _most_recent_file +zle -C _next_tags .list-choices _next_tags +zle -C _read_comp .complete-word _read_comp +bindkey '^X^R' _read_comp +bindkey '^X?' _complete_debug +bindkey '^XC' _correct_filename +bindkey '^Xa' _expand_alias +bindkey '^Xc' _correct_word +bindkey '^Xd' _list_expansions +bindkey '^Xe' _expand_word +bindkey '^Xh' _complete_help +bindkey '^Xm' _most_recent_file +bindkey '^Xn' _next_tags +bindkey '^Xt' _complete_tag +bindkey '^X~' _bash_list-choices +bindkey '^[,' _history-complete-newer +bindkey '^[/' _history-complete-older +bindkey '^[~' _bash_complete-word + +autoload -Uz _bun _bat _devenv _docker _dunst \ + _dunstctl _dunstify _fastfetch _kitty _lsd \ + _mpv _opencode _playerctl _rg _tailscale \ + _wl-copy _wlogout _wl-paste _wpaperctl _wpaperd \ + _bluetoothctl _bootctl _busctl _coredumpctl _docker \ + _hostnamectl _hyprctl _hyprpm _journalctl _localectl \ + _loginctl _machinectl _networkctl _nix _nix-build \ + _nix-channel _nix-collect-garbage _nix-common-options _nix-copy-closure _nix-env \ + _nix-hash _nix-install-package _nix-instantiate _nixops _nixos-build-vms \ + _nixos-container _nixos-generate-config _nixos-install _nixos-option _nixos-rebuild \ + _nixos-version _nix-prefetch-url _nix-push _nix-shell _nix-store \ + _oomctl _resolvectl _rsvg-convert _run0 _sd_bus_address \ + _sd_hosts_or_user_at_host _sd_machines _sd_outputmodes _sd_unit_files _systemctl \ + _systemd _systemd-analyze _systemd-delta _systemd-id128 _systemd-inhibit \ + _systemd-nspawn _systemd-path _systemd-run _systemd-tmpfiles _tailscale \ + _timedatectl _udevadm _udisks2 _upower _userdbctl \ + _varlinkctl _wpctl _7zip _a2ps _a2utils \ + _aap _abcde _absolute_command_paths _ack _acpi \ + _acpiconf _acpitool _acroread _adb _add-zle-hook-widget \ + _add-zsh-hook _alias _aliases _all_labels _all_matches \ + _alsa-utils _alternative _analyseplugin _ansible _ant \ + _antiword _apachectl _apm _approximate _apt \ + _apt-file _aptitude _apt-move _apt-show-versions _arch_archives \ + _arch_namespace _arg_compile __arguments _arguments _arp \ + _arping _arrays _asciidoctor _asciinema _as_if \ + _assign _at _attr _augeas _auto-apt \ + _autocd _avahi _awk _axi-cache _base64 \ + _basename _basenc _bash _bash_completions _baudrates \ + _baz _beadm _bectl _beep _be_name \ + _bibtex _bind_addresses _bindkey _bison _bittorrent \ + _blkid _bogofilter _bpf_filters _bpython _brace_parameter \ + _brctl _bsdconfig _bsd_disks _bsdinstall _bsd_pkg \ + _btrfs _bts _bug _builtin _bzip2 \ + _bzr _cabal _cacaclock _cache_invalid _caffeinate \ + _cal _calendar _call_function _canonical_paths _capabilities \ + _cat _ccal _cd _cdbs-edit-patch _cdcd \ + _cdr _cdrdao _cdrecord _chattr _chdman \ + _chflags _chkconfig _chmod _choom _chown \ + _chroot _chrt _chsh _cksum _clay \ + _cmdambivalent _cmdstring _cmp _code _col \ + _column _combination _comm _command _command_names \ + _compadd _compdef _compinit _complete _complete_debug \ + _complete_help _complete_help_generic _completers _complete_tag _comp_locale \ + _composer _compress _condition _configure _coreadm \ + _correct _correct_filename _correct_word _cowsay _cp \ + _cpio _cplay _cpupower _crontab _cryptsetup \ + _cscope _csplit _cssh _csup _ctags \ + _ctags_tags _cu _curl _cut _cvs \ + _cvsup _cygcheck _cygpath _cygrunsrv _cygserver \ + _cygstart _dak _darcs _date _date_formats \ + _dates _dbus _dchroot _dchroot-dsa _dconf \ + _dcop _dcut _dd _deb_architectures _debbugs_bugnumber \ + _debchange _debcheckout _deb_codenames _debdiff _deb_files \ + _debfoster _debmany _deborphan _deb_packages _debsign \ + _debsnap _debuild _default _defaults _delimiters \ + _describe _description _devtodo _df _dhclient \ + _dhcpinfo _dhomepage _dict _dict_words _diff \ + _diff3 _diff_options _diffstat _dig _directories \ + _directory_stack _dir_list _dirs _disable _dispatch \ + _django _dladm _dlocate _dmesg _dmidecode \ + _dnf _dnf5 _dns_types _doas _domains \ + _dos2unix _dpatch-edit-patch _dpkg _dpkg-buildpackage _dpkg-cross \ + _dpkg-info _dpkg-repack _dpkg_source _dput _drill \ + _dropbox _dscverify _dsh _dtrace _dtruss \ + _du _dumpadm _dumper _dupload _dvi \ + _dynamic_directory_name _e2label _ecasound _echo _echotc \ + _echoti _ed _elfdump _elinks _email_addresses \ + _emulate _enable _enscript _entr _env \ + _eog _equal _espeak _etags _ethtool \ + _evince _exec _expand _expand_alias _expand_word \ + _extensions _external_pwds _fakeroot _fbsd_architectures _fbsd_device_types \ + _fc _feh _fetch _fetchmail _ffmpeg \ + _figlet _file_descriptors _file_flags _file_modes _files \ + _file_systems _find _findmnt _find_net_interfaces _finger \ + _fink _first _fish _flac _flex \ + _floppy _flowadm _fmadm _fmt _fold \ + _fortune _free _freebsd-update _fsh _fstat \ + _fs_usage _functions _fuse_arguments _fuser _fusermount \ + _fuse_values _fw_update _gcc _gcore _gdb \ + _geany _gem _generic _genisoimage _getclip \ + _getconf _getent _getfacl _getmail _getopt \ + _ghostscript _git _git-buildpackage _global _global_tags \ + _globflags _globqual_delims _globquals _gnome-gv _gnu_generic \ + _gnupod _gnutls _go _gpasswd _gpg \ + _gphoto2 _gprof _gqview _gradle _graphicsmagick \ + _grep _grep-excuses _groff _groups _growisofs \ + _gsettings _gstat _guard _guilt _gv \ + _gzip _hash _have_glob_qual _hdiutil _head \ + _hexdump _history _history_complete_word _history_modifiers _host \ + _hostname _hosts _htop _hwinfo _iconv \ + _iconvconfig _id _ifconfig _iftop _ignored \ + _imagemagick _inetadm _initctl _init_d _install \ + _in_vared _invoke-rc.d _ionice _iostat _ip \ + _ipadm _ipfw _ipsec _ipset _iptables \ + _irssi _ispell _iwconfig _jail _jails \ + _java _java_class _jexec _jls _jobs \ + _jobs_bg _jobs_builtin _jobs_fg _joe _join \ + _jot _jq _kdeconnect _kdump _kfmclient \ + _kill _killall _kld _knock _kpartx \ + _ktrace _ktrace_points _kvno _last _ldap \ + _ldap_attributes _ldap_filters _ldconfig _ldd _ld_debug \ + _less _lha _libvirt _lighttpd _limit \ + _limits _links _lintian _list _list_files \ + _lldb _ln _loadkeys _locale _localedef \ + _locales _locate _logger _logical_volumes _login_classes \ + _look _losetup _lp _ls _lsattr \ + _lsblk _lscfg _lsdev _lslv _lsns \ + _lsof _lspv _lsusb _lsvg _ltrace \ + _lua _luarocks _lvm2 _lynx _lz4 \ + _lzop _mac_applications _mac_files_for_application _madison _mail \ + _mailboxes _main_complete _make _make-kpkg _man \ + _mat _mat2 _match _math _math_params \ + _matlab _md5sum _mdadm _mdfind _mdls \ + _mdo _mdutil _members _mencal _menu \ + _mere _mergechanges _message _mh _mii-tool \ + _mime_types _mixerctl _mkdir _mkfifo _mknod \ + _mkshortcut _mktemp _mkzsh _module _module-assistant \ + _module_math_func _modutils _mondo _monotone _moosic \ + _mosh _most_recent_file _mount _mozilla _mpc \ + _mplayer _mt _mtools _mtr _multi_parts \ + _mupdf _mutt _mv _my_accounts _myrepos \ + _mysqldiff _mysql_utils _nano _nautilus _nbsd_architectures \ + _ncftp _nedit _netcat _net_interfaces _netscape \ + _netstat _nettop _networkmanager _networksetup _newsgroups \ + _next_label _next_tags _nginx _ngrep _nice \ + _nkf _nl _nm _nmap _normal \ + _nothing _npm _nsenter _nslookup _numbers \ + _numfmt _nvram _objdump _object_classes _object_files \ + _obsd_architectures _od _okular _oldlist _open \ + _openldap _openstack _opkg _options _options_set \ + _options_unset _opustools _osascript _osc _other_accounts \ + _otool _pack _pandoc _papers _parameter \ + _parameters _paste _patch _patchutils _path_commands \ + _path_files _pax _pbcopy _pbm _pbuilder \ + _pdf _pdftk _perf _perforce _perl \ + _perl_basepods _perlbrew _perldoc _perl_modules _pfctl \ + _pfexec _pgids _pgrep _php _physical_volumes \ + _pick_variant _picocom _pidof _pids _pine \ + _ping _pip _piuparts _pkg5 _pkgadd \ + _pkg-config _pkgin _pkginfo _pkg_instance _pkgrm \ + _pkgtool _plutil _pmap _pon _portaudit \ + _portlint _portmaster _ports _portsnap _postfix \ + _postgresql _postscript _powerd _pr _precommand \ + _prefix _print _printenv _printers _process_names \ + _procstat _prompt _prove _prstat _ps \ + _ps1234 _pscp _pspdf _psutils _ptree \ + _ptx _pump _putclip _pv _pwgen \ + _pydoc _python _python_module-http.server _python_module-json.tool _python_modules \ + _python_module-venv _qdbus _qemu _qiv _qtplay \ + _quilt _rake _ranlib _rar _rcctl \ + _rclone _rcs _rdesktop _read _read_comp \ + _readelf _readlink _readshortcut _rebootin _redirect \ + _regex_arguments _regex_words _remote_files _renice _reprepro \ + _requested _retrieve_cache _retrieve_mac_apps _ri _rlogin \ + _rm _rmdir _route _routing_domains _routing_tables \ + _rpm _rrdtool _rsync _rubber _ruby \ + _run-help _runit _samba _savecore _say \ + _sbuild _sccs _sched _schedtool _schroot \ + _scl _scons _screen _script _scselect \ + _sc_usage _scutil _seafile _sed _selinux \ + _selinux_contexts _selinux_roles _selinux_types _selinux_users _sep_parts \ + _seq _sequence _service _services _set \ + _set_command _setfacl _setopt _setpriv _setsid \ + _setup _setxkbmap _sh _shasum _shortcuts \ + _showmount _shred _shuf _shutdown _signals \ + _signify _sioyek _sisu _slabtop _slrn \ + _smartmontools _smit _snoop _socket _sockstat \ + _softwareupdate _sort _source _spamassassin _split \ + _sqlite _sqsh _ss _ssh _sshfs \ + _ssh_hosts _stat _stdbuf _store_cache _stow \ + _strace _strftime _strings _strip _stty \ + _su _sub_commands _sublimetext _subscript _subversion \ + _sudo _suffix_alias_files _surfraw _SUSEconfig _svcadm \ + _svccfg _svcprop _svcs _svcs_fmri _svn-buildpackage \ + _swaks _swanctl _swift _sw_vers _sys_calls \ + _sysclean _sysctl _sysmerge _syspatch _sysrc \ + _sysstat _systat _system_profiler _sysupgrade _tac \ + _tags _tail _tar _tar_archive _tardy \ + _tcpdump _tcpsys _tcptraceroute _tee _telnet \ + _terminals _tex _texi _texinfo _tidy \ + _tiff _tilde _tilde_files _timeout _time_zone \ + _time_zone.orig _tin _tla _tload _tmux \ + _todo.sh _toilet _toolchain-source _top _topgit \ + _totd _touch _tpb _tput _tr \ + _tracepath _transmission _trap _trash _tree \ + _truncate _truss _tty _ttyctl _ttys \ + _tune2fs _twidge _twisted _typeset _ulimit \ + _uml _umountable _unace _uname _unexpand \ + _unhash _uniq _unison _units _unshare \ + _update-alternatives _update-rc.d _uptime _urls _urpmi \ + _urxvt _usbconfig _uscan _user_admin _user_at_host \ + _user_expand _user_math_func _users _users_on _valgrind \ + _value _values _vared _vars _vcs_info \ + _vcs_info_hooks _vi _vim _vim-addons _visudo \ + _vmctl _vmstat _vnc _volume_groups _vorbis \ + _vpnc _vserver _w _w3m _wait \ + _wajig _wakeup_capable_devices _wanted _watch _watch-snoop \ + _wc _webbrowser _wget _whereis _which \ + _which-pkg-broke _who _whois _widgets _wiggle \ + _wipefs _wpa_cli _xargs _x_arguments _xauth \ + _xautolock _x_borderwidth _xclip _xcode-select _x_color \ + _x_colormapid _x_cursor _x_display _xdvi _x_extension \ + _xfconf-query _xfig _x_font _xft_fonts _x_geometry \ + _xinput _x_keysym _xloadimage _x_locale _xmlsoft \ + _xmlstarlet _xmms2 _x_modifier _xmodmap _x_name \ + _xournal _xpdf _xrandr _x_resource _xscreensaver \ + _x_selection_timeout _xset _xt_arguments _xterm _x_title \ + _xt_session_id _x_utils _xv _x_visual _x_window \ + _xwit _xxd _xz _yafc _yast \ + _yodl _yp _yum _zargs _zattr \ + _zcalc _zcalc_line _zcat _zcompile _zdump \ + _zeal _zed _zfs _zfs_dataset _zfs_pool \ + _zftp _zip _zle _zlogin _zmodload \ + _zmv _zoneadm _zones _zparseopts _zpty \ + _zsh _zsh-mime-handler _zsocket _zstd _zstyle \ + _ztodo _zypper _7zip _a2ps _a2utils \ + _aap _abcde _absolute_command_paths _ack _acpi \ + _acpiconf _acpitool _acroread _adb _add-zle-hook-widget \ + _add-zsh-hook _alias _aliases _all_labels _all_matches \ + _alsa-utils _alternative _analyseplugin _ansible _ant \ + _antiword _apachectl _apm _approximate _apt \ + _apt-file _aptitude _apt-move _apt-show-versions _arch_archives \ + _arch_namespace _arg_compile __arguments _arguments _arp \ + _arping _arrays _asciidoctor _asciinema _as_if \ + _assign _at _attr _augeas _auto-apt \ + _autocd _avahi _awk _axi-cache _base64 \ + _basename _basenc _bash _bash_completions _baudrates \ + _baz _beadm _bectl _beep _be_name \ + _bibtex _bind_addresses _bindkey _bison _bittorrent \ + _blkid _bogofilter _bpf_filters _bpython _brace_parameter \ + _brctl _bsdconfig _bsd_disks _bsdinstall _bsd_pkg \ + _btrfs _bts _bug _builtin _bzip2 \ + _bzr _cabal _cacaclock _cache_invalid _caffeinate \ + _cal _calendar _call_function _canonical_paths _capabilities \ + _cat _ccal _cd _cdbs-edit-patch _cdcd \ + _cdr _cdrdao _cdrecord _chattr _chdman \ + _chflags _chkconfig _chmod _choom _chown \ + _chroot _chrt _chsh _cksum _clay \ + _cmdambivalent _cmdstring _cmp _code _col \ + _column _combination _comm _command _command_names \ + _compadd _compdef _compinit _complete _complete_debug \ + _complete_help _complete_help_generic _completers _complete_tag _comp_locale \ + _composer _compress _condition _configure _coreadm \ + _correct _correct_filename _correct_word _cowsay _cp \ + _cpio _cplay _cpupower _crontab _cryptsetup \ + _cscope _csplit _cssh _csup _ctags \ + _ctags_tags _cu _curl _cut _cvs \ + _cvsup _cygcheck _cygpath _cygrunsrv _cygserver \ + _cygstart _dak _darcs _date _date_formats \ + _dates _dbus _dchroot _dchroot-dsa _dconf \ + _dcop _dcut _dd _deb_architectures _debbugs_bugnumber \ + _debchange _debcheckout _deb_codenames _debdiff _deb_files \ + _debfoster _debmany _deborphan _deb_packages _debsign \ + _debsnap _debuild _default _defaults _delimiters \ + _describe _description _devtodo _df _dhclient \ + _dhcpinfo _dhomepage _dict _dict_words _diff \ + _diff3 _diff_options _diffstat _dig _directories \ + _directory_stack _dir_list _dirs _disable _dispatch \ + _django _dladm _dlocate _dmesg _dmidecode \ + _dnf _dnf5 _dns_types _doas _domains \ + _dos2unix _dpatch-edit-patch _dpkg _dpkg-buildpackage _dpkg-cross \ + _dpkg-info _dpkg-repack _dpkg_source _dput _drill \ + _dropbox _dscverify _dsh _dtrace _dtruss \ + _du _dumpadm _dumper _dupload _dvi \ + _dynamic_directory_name _e2label _ecasound _echo _echotc \ + _echoti _ed _elfdump _elinks _email_addresses \ + _emulate _enable _enscript _entr _env \ + _eog _equal _espeak _etags _ethtool \ + _evince _exec _expand _expand_alias _expand_word \ + _extensions _external_pwds _fakeroot _fbsd_architectures _fbsd_device_types \ + _fc _feh _fetch _fetchmail _ffmpeg \ + _figlet _file_descriptors _file_flags _file_modes _files \ + _file_systems _find _findmnt _find_net_interfaces _finger \ + _fink _first _fish _flac _flex \ + _floppy _flowadm _fmadm _fmt _fold \ + _fortune _free _freebsd-update _fsh _fstat \ + _fs_usage _functions _fuse_arguments _fuser _fusermount \ + _fuse_values _fw_update _gcc _gcore _gdb \ + _geany _gem _generic _genisoimage _getclip \ + _getconf _getent _getfacl _getmail _getopt \ + _ghostscript _git _git-buildpackage _global _global_tags \ + _globflags _globqual_delims _globquals _gnome-gv _gnu_generic \ + _gnupod _gnutls _go _gpasswd _gpg \ + _gphoto2 _gprof _gqview _gradle _graphicsmagick \ + _grep _grep-excuses _groff _groups _growisofs \ + _gsettings _gstat _guard _guilt _gv \ + _gzip _hash _have_glob_qual _hdiutil _head \ + _hexdump _history _history_complete_word _history_modifiers _host \ + _hostname _hosts _htop _hwinfo _iconv \ + _iconvconfig _id _ifconfig _iftop _ignored \ + _imagemagick _inetadm _initctl _init_d _install \ + _in_vared _invoke-rc.d _ionice _iostat _ip \ + _ipadm _ipfw _ipsec _ipset _iptables \ + _irssi _ispell _iwconfig _jail _jails \ + _java _java_class _jexec _jls _jobs \ + _jobs_bg _jobs_builtin _jobs_fg _joe _join \ + _jot _jq _kdeconnect _kdump _kfmclient \ + _kill _killall _kld _knock _kpartx \ + _ktrace _ktrace_points _kvno _last _ldap \ + _ldap_attributes _ldap_filters _ldconfig _ldd _ld_debug \ + _less _lha _libvirt _lighttpd _limit \ + _limits _links _lintian _list _list_files \ + _lldb _ln _loadkeys _locale _localedef \ + _locales _locate _logger _logical_volumes _login_classes \ + _look _losetup _lp _ls _lsattr \ + _lsblk _lscfg _lsdev _lslv _lsns \ + _lsof _lspv _lsusb _lsvg _ltrace \ + _lua _luarocks _lvm2 _lynx _lz4 \ + _lzop _mac_applications _mac_files_for_application _madison _mail \ + _mailboxes _main_complete _make _make-kpkg _man \ + _mat _mat2 _match _math _math_params \ + _matlab _md5sum _mdadm _mdfind _mdls \ + _mdo _mdutil _members _mencal _menu \ + _mere _mergechanges _message _mh _mii-tool \ + _mime_types _mixerctl _mkdir _mkfifo _mknod \ + _mkshortcut _mktemp _mkzsh _module _module-assistant \ + _module_math_func _modutils _mondo _monotone _moosic \ + _mosh _most_recent_file _mount _mozilla _mpc \ + _mplayer _mt _mtools _mtr _multi_parts \ + _mupdf _mutt _mv _my_accounts _myrepos \ + _mysqldiff _mysql_utils _nano _nautilus _nbsd_architectures \ + _ncftp _nedit _netcat _net_interfaces _netscape \ + _netstat _nettop _networkmanager _networksetup _newsgroups \ + _next_label _next_tags _nginx _ngrep _nice \ + _nkf _nl _nm _nmap _normal \ + _nothing _npm _nsenter _nslookup _numbers \ + _numfmt _nvram _objdump _object_classes _object_files \ + _obsd_architectures _od _okular _oldlist _open \ + _openldap _openstack _opkg _options _options_set \ + _options_unset _opustools _osascript _osc _other_accounts \ + _otool _pack _pandoc _papers _parameter \ + _parameters _paste _patch _patchutils _path_commands \ + _path_files _pax _pbcopy _pbm _pbuilder \ + _pdf _pdftk _perf _perforce _perl \ + _perl_basepods _perlbrew _perldoc _perl_modules _pfctl \ + _pfexec _pgids _pgrep _php _physical_volumes \ + _pick_variant _picocom _pidof _pids _pine \ + _ping _pip _piuparts _pkg5 _pkgadd \ + _pkg-config _pkgin _pkginfo _pkg_instance _pkgrm \ + _pkgtool _plutil _pmap _pon _portaudit \ + _portlint _portmaster _ports _portsnap _postfix \ + _postgresql _postscript _powerd _pr _precommand \ + _prefix _print _printenv _printers _process_names \ + _procstat _prompt _prove _prstat _ps \ + _ps1234 _pscp _pspdf _psutils _ptree \ + _ptx _pump _putclip _pv _pwgen \ + _pydoc _python _python_module-http.server _python_module-json.tool _python_modules \ + _python_module-venv _qdbus _qemu _qiv _qtplay \ + _quilt _rake _ranlib _rar _rcctl \ + _rclone _rcs _rdesktop _read _read_comp \ + _readelf _readlink _readshortcut _rebootin _redirect \ + _regex_arguments _regex_words _remote_files _renice _reprepro \ + _requested _retrieve_cache _retrieve_mac_apps _ri _rlogin \ + _rm _rmdir _route _routing_domains _routing_tables \ + _rpm _rrdtool _rsync _rubber _ruby \ + _run-help _runit _samba _savecore _say \ + _sbuild _sccs _sched _schedtool _schroot \ + _scl _scons _screen _script _scselect \ + _sc_usage _scutil _seafile _sed _selinux \ + _selinux_contexts _selinux_roles _selinux_types _selinux_users _sep_parts \ + _seq _sequence _service _services _set \ + _set_command _setfacl _setopt _setpriv _setsid \ + _setup _setxkbmap _sh _shasum _shortcuts \ + _showmount _shred _shuf _shutdown _signals \ + _signify _sioyek _sisu _slabtop _slrn \ + _smartmontools _smit _snoop _socket _sockstat \ + _softwareupdate _sort _source _spamassassin _split \ + _sqlite _sqsh _ss _ssh _sshfs \ + _ssh_hosts _stat _stdbuf _store_cache _stow \ + _strace _strftime _strings _strip _stty \ + _su _sub_commands _sublimetext _subscript _subversion \ + _sudo _suffix_alias_files _surfraw _SUSEconfig _svcadm \ + _svccfg _svcprop _svcs _svcs_fmri _svn-buildpackage \ + _swaks _swanctl _swift _sw_vers _sys_calls \ + _sysclean _sysctl _sysmerge _syspatch _sysrc \ + _sysstat _systat _system_profiler _sysupgrade _tac \ + _tags _tail _tar _tar_archive _tardy \ + _tcpdump _tcpsys _tcptraceroute _tee _telnet \ + _terminals _tex _texi _texinfo _tidy \ + _tiff _tilde _tilde_files _timeout _time_zone \ + _time_zone.orig _tin _tla _tload _tmux \ + _todo.sh _toilet _toolchain-source _top _topgit \ + _totd _touch _tpb _tput _tr \ + _tracepath _transmission _trap _trash _tree \ + _truncate _truss _tty _ttyctl _ttys \ + _tune2fs _twidge _twisted _typeset _ulimit \ + _uml _umountable _unace _uname _unexpand \ + _unhash _uniq _unison _units _unshare \ + _update-alternatives _update-rc.d _uptime _urls _urpmi \ + _urxvt _usbconfig _uscan _user_admin _user_at_host \ + _user_expand _user_math_func _users _users_on _valgrind \ + _value _values _vared _vars _vcs_info \ + _vcs_info_hooks _vi _vim _vim-addons _visudo \ + _vmctl _vmstat _vnc _volume_groups _vorbis \ + _vpnc _vserver _w _w3m _wait \ + _wajig _wakeup_capable_devices _wanted _watch _watch-snoop \ + _wc _webbrowser _wget _whereis _which \ + _which-pkg-broke _who _whois _widgets _wiggle \ + _wipefs _wpa_cli _xargs _x_arguments _xauth \ + _xautolock _x_borderwidth _xclip _xcode-select _x_color \ + _x_colormapid _x_cursor _x_display _xdvi _x_extension \ + _xfconf-query _xfig _x_font _xft_fonts _x_geometry \ + _xinput _x_keysym _xloadimage _x_locale _xmlsoft \ + _xmlstarlet _xmms2 _x_modifier _xmodmap _x_name \ + _xournal _xpdf _xrandr _x_resource _xscreensaver \ + _x_selection_timeout _xset _xt_arguments _xterm _x_title \ + _xt_session_id _x_utils _xv _x_visual _x_window \ + _xwit _xxd _xz _yafc _yast \ + _yodl _yp _yum _zargs _zattr \ + _zcalc _zcalc_line _zcat _zcompile _zdump \ + _zeal _zed _zfs _zfs_dataset _zfs_pool \ + _zftp _zip _zle _zlogin _zmodload \ + _zmv _zoneadm _zones _zparseopts _zpty \ + _zsh _zsh-mime-handler _zsocket _zstd _zstyle \ + _ztodo _zypper +autoload -Uz +X _call_program + +typeset -gUa _comp_assocs +_comp_assocs=( '' ) + +#omz revision: +#omz fpath: /nix/store/zjxd2rbflv02rsfdrsay5wmv05vf8691-oh-my-zsh-2026-02-19/share/oh-my-zsh/plugins/history /nix/store/zjxd2rbflv02rsfdrsay5wmv05vf8691-oh-my-zsh-2026-02-19/share/oh-my-zsh/plugins/dirhistory /nix/store/zjxd2rbflv02rsfdrsay5wmv05vf8691-oh-my-zsh-2026-02-19/share/oh-my-zsh/plugins/git /nix/store/zjxd2rbflv02rsfdrsay5wmv05vf8691-oh-my-zsh-2026-02-19/share/oh-my-zsh/functions /nix/store/zjxd2rbflv02rsfdrsay5wmv05vf8691-oh-my-zsh-2026-02-19/share/oh-my-zsh/completions /nix/store/zjxd2rbflv02rsfdrsay5wmv05vf8691-oh-my-zsh-2026-02-19/share/oh-my-zsh/custom/functions /nix/store/zjxd2rbflv02rsfdrsay5wmv05vf8691-oh-my-zsh-2026-02-19/share/oh-my-zsh/custom/completions /home/user01/.cache/oh-my-zsh/completions /nix/store/z7jz33yvsqvfv3qxpy2r9mp3mh0ngcvg-devenv-profile/share/zsh/site-functions /home/user01/.nix-profile/share/zsh/site-functions /home/user01/.nix-profile/share/zsh/5.9.1/functions /home/user01/.nix-profile/share/zsh/vendor-completions /nix/profile/share/zsh/site-functions /nix/profile/share/zsh/5.9.1/functions /nix/profile/share/zsh/vendor-completions /home/user01/.local/state/nix/profile/share/zsh/site-functions /home/user01/.local/state/nix/profile/share/zsh/5.9.1/functions /home/user01/.local/state/nix/profile/share/zsh/vendor-completions /etc/profiles/per-user/user01/share/zsh/site-functions /etc/profiles/per-user/user01/share/zsh/5.9.1/functions /etc/profiles/per-user/user01/share/zsh/vendor-completions /nix/var/nix/profiles/default/share/zsh/site-functions /nix/var/nix/profiles/default/share/zsh/5.9.1/functions /nix/var/nix/profiles/default/share/zsh/vendor-completions /run/current-system/sw/share/zsh/site-functions /run/current-system/sw/share/zsh/5.9.1/functions /run/current-system/sw/share/zsh/vendor-completions /nix/store/4wvhzvwmv2rnwgcg0sadhs769hky28xk-zsh-5.9.1/share/zsh/5.9.1/functions diff --git a/.devenv/zsh/.zcompdump-HACKSTATION-5.9.1.zwc b/.devenv/zsh/.zcompdump-HACKSTATION-5.9.1.zwc new file mode 100644 index 0000000..8884f0f Binary files /dev/null and b/.devenv/zsh/.zcompdump-HACKSTATION-5.9.1.zwc differ diff --git a/.devenv/zsh/.zshenv b/.devenv/zsh/.zshenv new file mode 100644 index 0000000..e9b786e --- /dev/null +++ b/.devenv/zsh/.zshenv @@ -0,0 +1,6 @@ +# devenv zsh .zshenv - runs before /etc/zshrc. +# Prepend devenv profile site-functions so the system compinit (often +# called from /etc/zshrc on nix-darwin, Debian, etc.) picks them up. +if [ -n "$DEVENV_PROFILE" ] && [ -d "$DEVENV_PROFILE/share/zsh/site-functions" ]; then + fpath=("$DEVENV_PROFILE/share/zsh/site-functions" $fpath) +fi diff --git a/.devenv/zsh/.zshrc b/.devenv/zsh/.zshrc new file mode 100644 index 0000000..284b0a1 --- /dev/null +++ b/.devenv/zsh/.zshrc @@ -0,0 +1,200 @@ +# devenv zsh init - restore ZDOTDIR and source user's .zshrc + +if [ -n "$_DEVENV_REAL_ZDOTDIR" ]; then + ZDOTDIR="$_DEVENV_REAL_ZDOTDIR" + unset _DEVENV_REAL_ZDOTDIR + [ -f "$ZDOTDIR/.zshenv" ] && source "$ZDOTDIR/.zshenv" + [ -f "$ZDOTDIR/.zshrc" ] && source "$ZDOTDIR/.zshrc" +else + unset ZDOTDIR + [ -f "$HOME/.zshenv" ] && source "$HOME/.zshenv" + [ -f "$HOME/.zshrc" ] && source "$HOME/.zshrc" +fi + +# Restore devenv PATH after user's .zshrc may have modified it +export PATH="$_DEVENV_PATH" + +# Set devenv prompt prefix +PROMPT="(devenv) ${PROMPT}" + +# Hot-reload hook + +autoload -Uz add-zsh-hook + +__devenv_reload_apply() { + # Source new environment if a reload is pending + if [ -f "/tmp/devenv-reload-6816.sh" ]; then + # Shell out to bash to handle the env diff (bash syntax) + local reload_output + reload_output=$(bash -c ' + +# Environment diff helpers (inspired by direnv) +# Diff is stored in _DEVENV_DIFF env var (not a file) so each shell has its own state +# Uses gzip+base64 encoding for compact storage + +# Variables to ignore in diff (shell internals that change dynamically) +__devenv_ignored_var() { + case "$1" in + _*|PWD|OLDPWD|SHLVL|SHELL|SHELLOPTS|BASHOPTS|BASH_*|HISTCMD|HISTFILE) + return 0 ;; + PS1|PS2|PS3|PS4|PROMPT|PROMPT_COMMAND|PROMPT_DIRTRIM) + return 0 ;; + COMP_*|READLINE_*|MAILCHECK|COLUMNS|LINES|RANDOM|SECONDS|LINENO|EPOCHSECONDS|EPOCHREALTIME|SRANDOM) + return 0 ;; + STARSHIP_*|__fish*|DIRENV_*|nix_saved_*) + return 0 ;; + *) + return 1 ;; + esac +} + +__devenv_capture_env() { + # Capture exported variables using declare -p for proper escaping + declare -p -x 2>/dev/null | LC_ALL=C sort +} + +__devenv_serialize_diff() { + # Serialize diff (stdin) to base64-encoded gzip + gzip -c | base64 -w0 +} + +__devenv_deserialize_diff() { + # Deserialize diff from base64-encoded gzip to stdout + echo "$1" | base64 -d | gzip -d 2>/dev/null +} + +__devenv_compute_diff() { + # Compare before ($1) and current env, return diff via _DEVENV_DIFF env var + local before_file="$1" + + # Create temp files + local after_file diff_content + after_file=$(mktemp) + diff_content=$(mktemp) + __devenv_capture_env > "$after_file" + + # Build associative arrays for before/after + local -A before_vars after_vars + while IFS= read -r line; do + [[ "$line" != declare\ -x\ * ]] && continue + local vardef="${line#declare -x }" + local var="${vardef%%=*}" + [[ -z "$var" ]] && continue + __devenv_ignored_var "$var" && continue + before_vars["$var"]="$line" + done < "$before_file" + + while IFS= read -r line; do + [[ "$line" != declare\ -x\ * ]] && continue + local vardef="${line#declare -x }" + local var="${vardef%%=*}" + [[ -z "$var" ]] && continue + __devenv_ignored_var "$var" && continue + after_vars["$var"]="$line" + done < "$after_file" + + # Find PREV entries (vars that were modified or removed) + for var in "${!before_vars[@]}"; do + if [[ "${after_vars[$var]}" != "${before_vars[$var]}" ]]; then + echo "P:${before_vars[$var]}" >> "$diff_content" + fi + done + + # Find NEXT entries (vars that were added or modified) + for var in "${!after_vars[@]}"; do + if [[ -z "${before_vars[$var]+x}" ]]; then + echo "N:$var" >> "$diff_content" + elif [[ "${after_vars[$var]}" != "${before_vars[$var]}" ]]; then + echo "N:$var" >> "$diff_content" + fi + done + + # Serialize and store in env var + _DEVENV_DIFF=$(__devenv_serialize_diff < "$diff_content") + export _DEVENV_DIFF + + rm -f "$after_file" "$diff_content" +} + +__devenv_apply_reverse_diff() { + # Reverse the diff: restore PREV values, unset NEXT-only vars + [[ -z "$_DEVENV_DIFF" ]] && return + + local -A prev_vars + local diff_content + diff_content=$(__devenv_deserialize_diff "$_DEVENV_DIFF") + + # First pass: collect and restore PREV declarations + while IFS= read -r line; do + if [[ "$line" == P:declare\ * ]]; then + local decl="${line#P:}" + local var="${decl#declare -x }" + var="${var%%=*}" + prev_vars["$var"]=1 + # Use export instead of evaluating the declare statement directly, + # because declare -x inside a function creates a local variable + # in bash 5.0+. + eval "export ${decl#declare -x }" 2>/dev/null + fi + done <<< "$diff_content" + + # Second pass: unset NEXT vars that were not in PREV (added vars) + while IFS= read -r line; do + if [[ "$line" == N:* ]]; then + local var="${line#N:}" + if [[ -z "${prev_vars[$var]+x}" ]]; then + unset "$var" + fi + fi + done <<< "$diff_content" +} + + +# Reverse previous diff +__devenv_apply_reverse_diff + +# Capture env before sourcing new devenv +_before=$(mktemp) +__devenv_capture_env > "$_before" + +# Source new devenv environment +source "/tmp/devenv-reload-6816.sh" +rm -f "/tmp/devenv-reload-6816.sh" + +# Compute new diff +__devenv_compute_diff "$_before" +rm -f "$_before" + +# Output current environment for the calling shell to parse +export -p + ' 2>/dev/null) + + # Apply the environment changes + if [ -n "$reload_output" ]; then + eval "$reload_output" + fi + + # Update saved PATH + _DEVENV_PATH="$PATH" + fi +} + +__devenv_restore_path() { + # Restore devenv PATH (in case direnv or other tools modified it) + export PATH="$_DEVENV_PATH" +} + +__devenv_precmd_hook() { + __devenv_reload_apply + __devenv_restore_path +} +add-zsh-hook precmd __devenv_precmd_hook + +# Keybinding for manual reload +__devenv_reload_widget() { + __devenv_reload_apply + zle reset-prompt +} +zle -N __devenv_reload_widget +bindkey "${DEVENV_RELOAD_KEYBIND:-\\e\\C-r}" __devenv_reload_widget + diff --git a/cases.md b/cases.md deleted file mode 100644 index 2d38683..0000000 --- a/cases.md +++ /dev/null @@ -1,5 +0,0 @@ -# Cases for players or something -- player who didnt show up -- player draws -- events with multiple attempts (best / average) -- how actual points are decided diff --git a/devenv.lock b/devenv.lock new file mode 100644 index 0000000..ce7414e --- /dev/null +++ b/devenv.lock @@ -0,0 +1,65 @@ +{ + "nodes": { + "devenv": { + "locked": { + "dir": "src/modules", + "lastModified": 1781981587, + "narHash": "sha256-xkBPfggcaDdbBl4fhHnhgVv2XPmzM2CtNBCpSwlK4fY=", + "owner": "cachix", + "repo": "devenv", + "rev": "1ad4a4a03466826fc43127211c341d268efab21b", + "type": "github" + }, + "original": { + "dir": "src/modules", + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "nixpkgs": { + "inputs": { + "nixpkgs-src": "nixpkgs-src" + }, + "locked": { + "lastModified": 1781620901, + "narHash": "sha256-UF6scQlG+6lRkZBUpn/3KNavhOo5G8kDWhjVHcno8uc=", + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "2df109b343d3c68efd752e32a444a1d9b9f89afa", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "nixpkgs-src": { + "flake": false, + "locked": { + "lastModified": 1781454065, + "narHash": "sha256-d2xfDjnfRuf/xYGdu9VVRHiav/2w5hDL/5cw2TuVAXw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9eac87a12312b8f60dd52e1c6e1a265f6fc7f5fc", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} \ No newline at end of file diff --git a/devenv.nix b/devenv.nix new file mode 100644 index 0000000..5408edc --- /dev/null +++ b/devenv.nix @@ -0,0 +1,11 @@ +{ pkgs, config, ... }: { + languages.typescript.enable = true; + packages = with pkgs; [ + bun + eslint_d + ]; + env.DEVSHELL_NAME = "󰏖 devenv/#fab387| Bun/yellow"; + processes = { + server.exec = "bun run dev"; + }; +} diff --git a/devenv.yaml b/devenv.yaml new file mode 100644 index 0000000..e69de29 diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 4447854..0000000 --- a/flake.lock +++ /dev/null @@ -1,61 +0,0 @@ -{ - "nodes": { - "nixpkgs": { - "locked": { - "lastModified": 1777578337, - "narHash": "sha256-Ad49moKWeXtKBJNy2ebiTQUEgdLyvGmTeykAQ9xM+Z4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "15f4ee454b1dce334612fa6843b3e05cf546efab", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "nixpkgs": "nixpkgs", - "utils": "utils" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 71e947f..0000000 --- a/flake.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - description = "A simple Rust development environment"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - utils.url = "github:numtide/flake-utils"; - }; - - outputs = - { - self, - nixpkgs, - utils, - }: - utils.lib.eachDefaultSystem ( - system: - let - pkgs = import nixpkgs { inherit system; }; - in - { - devShells.default = pkgs.mkShell { - - name = "flake-bunshell"; - - buildInputs = with pkgs; [ - bun - eslint_d - ]; - - # Environment variables - shellHook = '' - export DEVSHELL_NAME="󱄅 flake/#89dceb| Bun/yellow" - - # Trigger zsh - if [[ -z "$ZSH_VERSION" ]]; then - exec zsh - fi - ''; - }; - } - ); -}