From 200f41350fe39589242b78d7b5ce067e94e54b9d Mon Sep 17 00:00:00 2001 From: Marek Fajkus Date: Sun, 29 Nov 2020 16:23:10 +0100 Subject: [PATCH 01/35] elmPackages.elm-review: Init at 2.3.3 --- pkgs/development/compilers/elm/default.nix | 14 +- .../elm/packages/generate-node-packages.sh | 4 +- .../elm/packages/node-composition.nix | 4 +- .../compilers/elm/packages/node-env.nix | 542 +++++++++ .../compilers/elm/packages/node-packages.json | 23 +- .../compilers/elm/packages/node-packages.nix | 1048 ++++++++++++----- 6 files changed, 1330 insertions(+), 305 deletions(-) create mode 100644 pkgs/development/compilers/elm/packages/node-env.nix diff --git a/pkgs/development/compilers/elm/default.nix b/pkgs/development/compilers/elm/default.nix index 369ea862620..0dbf1a3306f 100644 --- a/pkgs/development/compilers/elm/default.nix +++ b/pkgs/development/compilers/elm/default.nix @@ -74,6 +74,12 @@ let inherit (hsPkgs.elmPkgs) elm; }; + elmRustPackages = { + elm-json = import ./packages/elm-json.nix { + inherit rustPlatform fetchurl openssl stdenv pkg-config; + }; + }; + elmNodePackages = with elmLib; let nodePkgs = import ./packages/node-composition.nix { @@ -110,6 +116,9 @@ let create-elm-app = patchNpmElm (patchBinwrap [elmi-to-json] nodePkgs.create-elm-app); + elm-review = patchBinwrap [elmRustPackages.elm-json] + nodePkgs.elm-review; + elm-language-server = nodePkgs."@elm-tooling/elm-language-server"; elm-optimize-level-2 = nodePkgs."elm-optimize-level-2"; @@ -117,9 +126,6 @@ let inherit (nodePkgs) elm-doc-preview elm-live elm-upgrade elm-xref elm-analyse; }; -in hsPkgs.elmPkgs // elmNodePackages // { - elm-json = import ./packages/elm-json.nix { - inherit rustPlatform fetchurl openssl stdenv pkg-config; - }; +in hsPkgs.elmPkgs // elmNodePackages // elmRustPackages // { lib = elmLib; } diff --git a/pkgs/development/compilers/elm/packages/generate-node-packages.sh b/pkgs/development/compilers/elm/packages/generate-node-packages.sh index 0ffa56eae90..d805fe3827d 100755 --- a/pkgs/development/compilers/elm/packages/generate-node-packages.sh +++ b/pkgs/development/compilers/elm/packages/generate-node-packages.sh @@ -10,4 +10,6 @@ $(nix-build $ROOT -A nodePackages.node2nix --no-out-link)/bin/node2nix \ -i node-packages.json \ -o node-packages.nix \ -c node-composition.nix \ - --no-copy-node-env -e ../../../node-packages/node-env.nix + # TODO: Switch to the commented out version once nodejs package set gets updated to new node2nix + -e node-env.nix + # --no-copy-node-env -e ../../../node-packages/node-env.nix diff --git a/pkgs/development/compilers/elm/packages/node-composition.nix b/pkgs/development/compilers/elm/packages/node-composition.nix index 1b2e11782cd..c970861a86f 100644 --- a/pkgs/development/compilers/elm/packages/node-composition.nix +++ b/pkgs/development/compilers/elm/packages/node-composition.nix @@ -5,8 +5,8 @@ }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}: let - nodeEnv = import ../../../node-packages/node-env.nix { - inherit (pkgs) stdenv python2 util-linux runCommand writeTextFile; + nodeEnv = import ./node-env.nix { + inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile; inherit nodejs; libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null; }; diff --git a/pkgs/development/compilers/elm/packages/node-env.nix b/pkgs/development/compilers/elm/packages/node-env.nix new file mode 100644 index 00000000000..e1abf530493 --- /dev/null +++ b/pkgs/development/compilers/elm/packages/node-env.nix @@ -0,0 +1,542 @@ +# This file originates from node2nix + +{stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}: + +let + python = if nodejs ? python then nodejs.python else python2; + + # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise + tarWrapper = runCommand "tarWrapper" {} '' + mkdir -p $out/bin + + cat > $out/bin/tar <> $out/nix-support/hydra-build-products + ''; + }; + + includeDependencies = {dependencies}: + stdenv.lib.optionalString (dependencies != []) + (stdenv.lib.concatMapStrings (dependency: + '' + # Bundle the dependencies of the package + mkdir -p node_modules + cd node_modules + + # Only include dependencies if they don't exist. They may also be bundled in the package. + if [ ! -e "${dependency.name}" ] + then + ${composePackage dependency} + fi + + cd .. + '' + ) dependencies); + + # Recursively composes the dependencies of a package + composePackage = { name, packageName, src, dependencies ? [], ... }@args: + builtins.addErrorContext "while evaluating node package '${packageName}'" '' + DIR=$(pwd) + cd $TMPDIR + + unpackFile ${src} + + # Make the base dir in which the target dependency resides first + mkdir -p "$(dirname "$DIR/${packageName}")" + + if [ -f "${src}" ] + then + # Figure out what directory has been unpacked + packageDir="$(find . -maxdepth 1 -type d | tail -1)" + + # Restore write permissions to make building work + find "$packageDir" -type d -exec chmod u+x {} \; + chmod -R u+w "$packageDir" + + # Move the extracted tarball into the output folder + mv "$packageDir" "$DIR/${packageName}" + elif [ -d "${src}" ] + then + # Get a stripped name (without hash) of the source directory. + # On old nixpkgs it's already set internally. + if [ -z "$strippedName" ] + then + strippedName="$(stripHash ${src})" + fi + + # Restore write permissions to make building work + chmod -R u+w "$strippedName" + + # Move the extracted directory into the output folder + mv "$strippedName" "$DIR/${packageName}" + fi + + # Unset the stripped name to not confuse the next unpack step + unset strippedName + + # Include the dependencies of the package + cd "$DIR/${packageName}" + ${includeDependencies { inherit dependencies; }} + cd .. + ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} + ''; + + pinpointDependencies = {dependencies, production}: + let + pinpointDependenciesFromPackageJSON = writeTextFile { + name = "pinpointDependencies.js"; + text = '' + var fs = require('fs'); + var path = require('path'); + + function resolveDependencyVersion(location, name) { + if(location == process.env['NIX_STORE']) { + return null; + } else { + var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json"); + + if(fs.existsSync(dependencyPackageJSON)) { + var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON)); + + if(dependencyPackageObj.name == name) { + return dependencyPackageObj.version; + } + } else { + return resolveDependencyVersion(path.resolve(location, ".."), name); + } + } + } + + function replaceDependencies(dependencies) { + if(typeof dependencies == "object" && dependencies !== null) { + for(var dependency in dependencies) { + var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency); + + if(resolvedVersion === null) { + process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n"); + } else { + dependencies[dependency] = resolvedVersion; + } + } + } + } + + /* Read the package.json configuration */ + var packageObj = JSON.parse(fs.readFileSync('./package.json')); + + /* Pinpoint all dependencies */ + replaceDependencies(packageObj.dependencies); + if(process.argv[2] == "development") { + replaceDependencies(packageObj.devDependencies); + } + replaceDependencies(packageObj.optionalDependencies); + + /* Write the fixed package.json file */ + fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2)); + ''; + }; + in + '' + node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"} + + ${stdenv.lib.optionalString (dependencies != []) + '' + if [ -d node_modules ] + then + cd node_modules + ${stdenv.lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies} + cd .. + fi + ''} + ''; + + # Recursively traverses all dependencies of a package and pinpoints all + # dependencies in the package.json file to the versions that are actually + # being used. + + pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args: + '' + if [ -d "${packageName}" ] + then + cd "${packageName}" + ${pinpointDependencies { inherit dependencies production; }} + cd .. + ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} + fi + ''; + + # Extract the Node.js source code which is used to compile packages with + # native bindings + nodeSources = runCommand "node-sources" {} '' + tar --no-same-owner --no-same-permissions -xf ${nodejs.src} + mv node-* $out + ''; + + # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty) + addIntegrityFieldsScript = writeTextFile { + name = "addintegrityfields.js"; + text = '' + var fs = require('fs'); + var path = require('path'); + + function augmentDependencies(baseDir, dependencies) { + for(var dependencyName in dependencies) { + var dependency = dependencies[dependencyName]; + + // Open package.json and augment metadata fields + var packageJSONDir = path.join(baseDir, "node_modules", dependencyName); + var packageJSONPath = path.join(packageJSONDir, "package.json"); + + if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored + console.log("Adding metadata fields to: "+packageJSONPath); + var packageObj = JSON.parse(fs.readFileSync(packageJSONPath)); + + if(dependency.integrity) { + packageObj["_integrity"] = dependency.integrity; + } else { + packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads. + } + + if(dependency.resolved) { + packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided + } else { + packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories. + } + + if(dependency.from !== undefined) { // Adopt from property if one has been provided + packageObj["_from"] = dependency.from; + } + + fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2)); + } + + // Augment transitive dependencies + if(dependency.dependencies !== undefined) { + augmentDependencies(packageJSONDir, dependency.dependencies); + } + } + } + + if(fs.existsSync("./package-lock.json")) { + var packageLock = JSON.parse(fs.readFileSync("./package-lock.json")); + + if(packageLock.lockfileVersion !== 1) { + process.stderr.write("Sorry, I only understand lock file version 1!\n"); + process.exit(1); + } + + if(packageLock.dependencies !== undefined) { + augmentDependencies(".", packageLock.dependencies); + } + } + ''; + }; + + # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes + reconstructPackageLock = writeTextFile { + name = "addintegrityfields.js"; + text = '' + var fs = require('fs'); + var path = require('path'); + + var packageObj = JSON.parse(fs.readFileSync("package.json")); + + var lockObj = { + name: packageObj.name, + version: packageObj.version, + lockfileVersion: 1, + requires: true, + dependencies: {} + }; + + function augmentPackageJSON(filePath, dependencies) { + var packageJSON = path.join(filePath, "package.json"); + if(fs.existsSync(packageJSON)) { + var packageObj = JSON.parse(fs.readFileSync(packageJSON)); + dependencies[packageObj.name] = { + version: packageObj.version, + integrity: "sha1-000000000000000000000000000=", + dependencies: {} + }; + processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies); + } + } + + function processDependencies(dir, dependencies) { + if(fs.existsSync(dir)) { + var files = fs.readdirSync(dir); + + files.forEach(function(entry) { + var filePath = path.join(dir, entry); + var stats = fs.statSync(filePath); + + if(stats.isDirectory()) { + if(entry.substr(0, 1) == "@") { + // When we encounter a namespace folder, augment all packages belonging to the scope + var pkgFiles = fs.readdirSync(filePath); + + pkgFiles.forEach(function(entry) { + if(stats.isDirectory()) { + var pkgFilePath = path.join(filePath, entry); + augmentPackageJSON(pkgFilePath, dependencies); + } + }); + } else { + augmentPackageJSON(filePath, dependencies); + } + } + }); + } + } + + processDependencies("node_modules", lockObj.dependencies); + + fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2)); + ''; + }; + + prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}: + let + forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com"; + in + '' + # Pinpoint the versions of all dependencies to the ones that are actually being used + echo "pinpointing versions of dependencies..." + source $pinpointDependenciesScriptPath + + # Patch the shebangs of the bundled modules to prevent them from + # calling executables outside the Nix store as much as possible + patchShebangs . + + # Deploy the Node.js package by running npm install. Since the + # dependencies have been provided already by ourselves, it should not + # attempt to install them again, which is good, because we want to make + # it Nix's responsibility. If it needs to install any dependencies + # anyway (e.g. because the dependency parameters are + # incomplete/incorrect), it fails. + # + # The other responsibilities of NPM are kept -- version checks, build + # steps, postprocessing etc. + + export HOME=$TMPDIR + cd "${packageName}" + runHook preRebuild + + ${stdenv.lib.optionalString bypassCache '' + ${stdenv.lib.optionalString reconstructLock '' + if [ -f package-lock.json ] + then + echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!" + echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!" + rm package-lock.json + else + echo "No package-lock.json file found, reconstructing..." + fi + + node ${reconstructPackageLock} + ''} + + node ${addIntegrityFieldsScript} + ''} + + npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild + + if [ "''${dontNpmInstall-}" != "1" ] + then + # NPM tries to download packages even when they already exist if npm-shrinkwrap is used. + rm -f npm-shrinkwrap.json + + npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install + fi + ''; + + # Builds and composes an NPM package including all its dependencies + buildNodePackage = + { name + , packageName + , version + , dependencies ? [] + , buildInputs ? [] + , production ? true + , npmFlags ? "" + , dontNpmInstall ? false + , bypassCache ? false + , reconstructLock ? false + , preRebuild ? "" + , dontStrip ? true + , unpackPhase ? "true" + , buildPhase ? "true" + , ... }@args: + + let + extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ]; + in + stdenv.mkDerivation ({ + name = "node_${name}-${version}"; + buildInputs = [ tarWrapper python nodejs ] + ++ stdenv.lib.optional (stdenv.isLinux) utillinux + ++ stdenv.lib.optional (stdenv.isDarwin) libtool + ++ buildInputs; + + inherit nodejs; + + inherit dontStrip; # Stripping may fail a build for some package deployments + inherit dontNpmInstall preRebuild unpackPhase buildPhase; + + compositionScript = composePackage args; + pinpointDependenciesScript = pinpointDependenciesOfPackage args; + + passAsFile = [ "compositionScript" "pinpointDependenciesScript" ]; + + installPhase = '' + # Create and enter a root node_modules/ folder + mkdir -p $out/lib/node_modules + cd $out/lib/node_modules + + # Compose the package and all its dependencies + source $compositionScriptPath + + ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }} + + # Create symlink to the deployed executable folder, if applicable + if [ -d "$out/lib/node_modules/.bin" ] + then + ln -s $out/lib/node_modules/.bin $out/bin + fi + + # Create symlinks to the deployed manual page folders, if applicable + if [ -d "$out/lib/node_modules/${packageName}/man" ] + then + mkdir -p $out/share + for dir in "$out/lib/node_modules/${packageName}/man/"* + do + mkdir -p $out/share/man/$(basename "$dir") + for page in "$dir"/* + do + ln -s $page $out/share/man/$(basename "$dir") + done + done + fi + + # Run post install hook, if provided + runHook postInstall + ''; + } // extraArgs); + + # Builds a development shell + buildNodeShell = + { name + , packageName + , version + , src + , dependencies ? [] + , buildInputs ? [] + , production ? true + , npmFlags ? "" + , dontNpmInstall ? false + , bypassCache ? false + , reconstructLock ? false + , dontStrip ? true + , unpackPhase ? "true" + , buildPhase ? "true" + , ... }@args: + + let + extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ]; + + nodeDependencies = stdenv.mkDerivation ({ + name = "node-dependencies-${name}-${version}"; + + buildInputs = [ tarWrapper python nodejs ] + ++ stdenv.lib.optional (stdenv.isLinux) utillinux + ++ stdenv.lib.optional (stdenv.isDarwin) libtool + ++ buildInputs; + + inherit dontStrip; # Stripping may fail a build for some package deployments + inherit dontNpmInstall unpackPhase buildPhase; + + includeScript = includeDependencies { inherit dependencies; }; + pinpointDependenciesScript = pinpointDependenciesOfPackage args; + + passAsFile = [ "includeScript" "pinpointDependenciesScript" ]; + + installPhase = '' + mkdir -p $out/${packageName} + cd $out/${packageName} + + source $includeScriptPath + + # Create fake package.json to make the npm commands work properly + cp ${src}/package.json . + chmod 644 package.json + ${stdenv.lib.optionalString bypassCache '' + if [ -f ${src}/package-lock.json ] + then + cp ${src}/package-lock.json . + fi + ''} + + # Go to the parent folder to make sure that all packages are pinpointed + cd .. + ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} + + ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }} + + # Expose the executables that were installed + cd .. + ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} + + mv ${packageName} lib + ln -s $out/lib/node_modules/.bin $out/bin + ''; + } // extraArgs); + in + stdenv.mkDerivation { + name = "node-shell-${name}-${version}"; + + buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs; + buildCommand = '' + mkdir -p $out/bin + cat > $out/bin/shell < Date: Wed, 3 Jun 2020 12:36:58 -0700 Subject: [PATCH 02/35] rbenv: init at 1.1.2 Add new derivation for rbenv -- a ruby environment manager. Apply suggestions from code review Co-authored-by: Sandro --- .../ruby-modules/rbenv/default.nix | 41 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 43 insertions(+) create mode 100644 pkgs/development/ruby-modules/rbenv/default.nix diff --git a/pkgs/development/ruby-modules/rbenv/default.nix b/pkgs/development/ruby-modules/rbenv/default.nix new file mode 100644 index 00000000000..dd6b1d95b4b --- /dev/null +++ b/pkgs/development/ruby-modules/rbenv/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchFromGitHub, bash, installShellFiles }: + +stdenv.mkDerivation rec { + pname = "rbenv"; + version = "1.1.2"; + + nativeBuildInputs = [ installShellFiles ]; + + src = fetchFromGitHub { + owner = "rbenv"; + repo = "rbenv"; + rev = "v${version}"; + sha256 = "12i050vs35iiblxga43zrj7xwbaisv3mq55y9ikagkr8pj1vmq53"; + }; + + postPatch = '' + patchShebangs src/configure + pushd src + ''; + + installPhase = '' + popd + mkdir -p $out/bin + mv libexec $out + ln -s $out/libexec/rbenv $out/bin/rbenv + + installShellCompletion completions/rbenv.{bash,zsh} + ''; + + meta = with stdenv.lib; { + description = "Groom your app’s Ruby environment"; + longDescription = '' + Use rbenv to pick a Ruby version for your application and guarantee that your development environment matches production. + Put rbenv to work with Bundler for painless Ruby upgrades and bulletproof deployments. + ''; + homepage = "https://github.com/rbenv/rbenv"; + license = licenses.mit; + maintainers = with maintainers; [ fzakaria ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1e0c31ce621..4504c4e1bdd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10646,6 +10646,8 @@ in solargraph = callPackage ../development/ruby-modules/solargraph { }; + rbenv = callPackage ../development/ruby-modules/rbenv { }; + inherit (callPackage ../development/interpreters/ruby { inherit (darwin) libiconv libobjc libunwind; inherit (darwin.apple_sdk.frameworks) Foundation; From eedee46f2fff823147d1b9aaa767397737bdea11 Mon Sep 17 00:00:00 2001 From: Luis Hebendanz Date: Sun, 28 Jun 2020 15:55:07 +0200 Subject: [PATCH 03/35] Adding nix firefox extension support --- .../networking/browsers/firefox/wrapper.nix | 196 +++++++++++++++++- 1 file changed, 194 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index cc6cc72e27b..5f4ce80bd7a 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -1,4 +1,6 @@ -{ stdenv, lib, makeDesktopItem, makeWrapper, lndir, config +{ stdenv, lib, makeDesktopItem, makeWrapper, lndir, config, + +replace, fetchurl, zip, unzip, jq ## various stuff that can be plugged in , flashplayer, hal-flash @@ -31,6 +33,12 @@ let , forceWayland ? false , useGlvnd ? true , cfg ? config.${browserName} or {} + + ## Following options are needed for extra prefs & policies + , extraPrefs ? "" + , extraPolicies ? {} + , firefoxLibName ? "firefox" + , extraExtensions ? [ ] }: assert forceWayland -> (browser ? gtk3); # Can only use the wayland backend if gtk3 is being used @@ -81,6 +89,88 @@ let ++ pkcs11Modules; gtk_modules = [ libcanberra-gtk2 ]; + ######################### + # # + # EXTRA PREF CHANGES # + # # + ######################### + policiesJson = builtins.toFile "policies.json" + (builtins.toJSON enterprisePolicies); + + extensions = builtins.map (a: + if ! (builtins.hasAttr "name" a) || ! (builtins.isString a.name) then + throw "Firefox addon needs a name attribute" + else if ! (builtins.hasAttr "url" a) || ! (builtins.isString a.url) then + throw "Addon ${a.pname} needs an url" + else if ! (builtins.hasAttr "sha256" a) || ! (builtins.isString a.sha256) then + throw "Addon ${a.pname} needs an sha256 checksum" + else stdenv.mkDerivation rec { + pname = a.name; + version = "1.0"; + src = fetchurl { + url = a.url; + sha256 = a.sha256; + }; + + phases = [ "buildPhase" ]; + + extid = "${a.sha256}@${a.name}"; + + buildInputs = [ zip unzip jq ]; + + buildPhase = '' + UUID="${extid}" + mkdir -p "$out/$UUID" + unzip -q ${src} -d "$out/$UUID" + NEW_MANIFEST=$(jq '. + {"applications": { "gecko": { "id": "${extid}" }}, "browser_specific_settings":{"gecko":{"id": "${extid}"}}}' "$out/$UUID/manifest.json") + echo "$NEW_MANIFEST" > "$out/$UUID/manifest.json" + cd "$out/$UUID" + zip -r -q -FS "$out/$UUID.xpi" * + rm -r "$out/$UUID" + ''; + } + ) extraExtensions; + + enterprisePolicies = + { + policies = { + DisableAppUpdate = true; + } // + { + ExtensionSettings = { + "*" = { + blocked_install_message = "You can't have manual extension mixed with nix extensions"; + installation_mode = "blocked"; + }; + + } // lib.foldr (e: ret: + ret // { + "${e.extid}" = { + installation_mode = "allowed"; + }; + } + ) {} extensions; + } + // extraPolicies; + }; + + mozillaCfg = builtins.toFile "mozilla.cfg" '' +// First line must be a comment + + // Disables addon signature checking + // to be able to install addons that do not have an extid + // Security is maintained because only user whitelisted addons + // with a checksum can be installed + lockPref("xpinstall.signatures.required", false); + ${extraPrefs} + ''; + + ############################# + # # + # END EXTRA PREF CHANGES # + # # + ############################# + in stdenv.mkDerivation { inherit pname version; @@ -106,6 +196,7 @@ let nativeBuildInputs = [ makeWrapper lndir ]; buildInputs = lib.optional (browser ? gtk3) browser.gtk3; + buildCommand = lib.optionalString stdenv.isDarwin '' mkdir -p $out/Applications cp -R --no-preserve=mode,ownership ${browser}/Applications/${browserName}.app $out/Applications @@ -117,7 +208,66 @@ let exit 1 fi - makeWrapper "$(readlink -v --canonicalize-existing "${browser}${browser.execdir or "/bin"}/${browserName}")" \ + ######################### + # # + # EXTRA PREF CHANGES # + # # + ######################### + # Link the runtime. The executable itself has to be copied, + # because it will resolve paths relative to its true location. + # Any symbolic links have to be replicated as well. + cd "${browser}" + find . -type d -exec mkdir -p "$out"/{} \; + + find . -type f \( -not -name "${browserName}" \) -exec ln -sT "${browser}"/{} "$out"/{} \; + + find . -type f -name "${browserName}" -print0 | while read -d $'\0' f; do + cp -P --no-preserve=mode,ownership "${browser}/$f" "$out/$f" + chmod a+rwx "$out/$f" + done + + # fix links and absolute references + cd "${browser}" + + find . -type l -print0 | while read -d $'\0' l; do + target="$(readlink "$l" | ${replace}/bin/replace-literal -es -- "${browser}" "$out")" + ln -sfT "$target" "$out/$l" + done + + # This will not patch binaries, only "text" files. + # Its there for the wrapper mostly. + cd "$out" + ${replace}/bin/replace-literal -esfR -- "${browser}" "$out" + + # create the wrapper + + executablePrefix="$out${browser.execdir or "/bin"}" + executablePath="$executablePrefix/${browserName}" + + if [ ! -x "$executablePath" ] + then + echo "cannot find executable file \`${browser}${browser.execdir or "/bin"}/${browserName}'" + exit 1 + fi + + if [ ! -L "$executablePath" ] + then + # Careful here, the file at executablePath may already be + # a wrapper. That is why we postfix it with -old instead + # of -wrapped. + oldExe="$executablePrefix"/".${browserName}"-old + mv "$executablePath" "$oldExe" + else + oldExe="$(readlink -v --canonicalize-existing "$executablePath")" + fi + + if [ ! -x "${browser}${browser.execdir or "/bin"}/${browserName}" ] + then + echo "cannot find executable file \`${browser}${browser.execdir or "/bin"}/${browserName}'" + exit 1 + fi + + makeWrapper "$oldExe" \ "$out${browser.execdir or "/bin"}/${browserName}${nameSuffix}" \ --suffix-each MOZ_PLUGIN_PATH ':' "$plugins" \ --suffix LD_LIBRARY_PATH ':' "$libs" \ @@ -137,6 +287,11 @@ let --suffix XDG_DATA_DIRS : '${gnome3.adwaita-icon-theme}/share' '' } + ############################# + # # + # END EXTRA PREF CHANGES # + # # + ############################# if [ -e "${browser}/share/icons" ]; then mkdir -p "$out/share" @@ -166,6 +321,43 @@ let # For manpages, in case the program supplies them mkdir -p $out/nix-support echo ${browser} > $out/nix-support/propagated-user-env-packages + + + ######################### + # # + # EXTRA PREF CHANGES # + # # + ######################### + # user customization + mkdir -p $out/lib/${firefoxLibName} + + # creating policies.json + mkdir -p "$out/lib/${firefoxLibName}/distribution" + + POL_PATH="$out/lib/${firefoxLibName}/distribution/policies.json" + rm -f "$POL_PATH" + cat ${policiesJson} >> "$POL_PATH" + + # preparing for autoconfig + mkdir -p "$out/lib/${firefoxLibName}/defaults/pref" + + cat > "$out/lib/${firefoxLibName}/defaults/pref/autoconfig.js" < "$out/lib/${firefoxLibName}/mozilla.cfg" < ${mozillaCfg} + + mkdir -p $out/lib/${firefoxLibName}/distribution/extensions + + for i in ${toString extensions}; do + ln -s -t $out/lib/${firefoxLibName}/distribution/extensions $i/* + done + ############################# + # # + # END EXTRA PREF CHANGES # + # # + ############################# ''; preferLocalBuild = true; From 397597f731de70130ee3949a22c99c6236c16c06 Mon Sep 17 00:00:00 2001 From: Luis Hebendanz Date: Mon, 30 Nov 2020 16:30:46 +0100 Subject: [PATCH 04/35] Added fetchfirefoxaddon --- .../networking/browsers/firefox/wrapper.nix | 41 ++++--------------- .../fetchfirefoxaddon/default.nix | 38 +++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 49 insertions(+), 32 deletions(-) create mode 100644 pkgs/build-support/fetchfirefoxaddon/default.nix diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index 5f4ce80bd7a..a95e871b306 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -35,9 +35,13 @@ let , cfg ? config.${browserName} or {} ## Following options are needed for extra prefs & policies + # For more information about anti tracking (german website) + # vist https://wiki.kairaven.de/open/app/firefo , extraPrefs ? "" + # For more information about policies visit + # https://github.com/mozilla/policy-templates#enterprisepoliciesenabled , extraPolicies ? {} - , firefoxLibName ? "firefox" + , firefoxLibName ? "firefox" # Important for tor package or the like , extraExtensions ? [ ] }: @@ -98,37 +102,10 @@ let (builtins.toJSON enterprisePolicies); extensions = builtins.map (a: - if ! (builtins.hasAttr "name" a) || ! (builtins.isString a.name) then - throw "Firefox addon needs a name attribute" - else if ! (builtins.hasAttr "url" a) || ! (builtins.isString a.url) then - throw "Addon ${a.pname} needs an url" - else if ! (builtins.hasAttr "sha256" a) || ! (builtins.isString a.sha256) then - throw "Addon ${a.pname} needs an sha256 checksum" - else stdenv.mkDerivation rec { - pname = a.name; - version = "1.0"; - src = fetchurl { - url = a.url; - sha256 = a.sha256; - }; - - phases = [ "buildPhase" ]; - - extid = "${a.sha256}@${a.name}"; - - buildInputs = [ zip unzip jq ]; - - buildPhase = '' - UUID="${extid}" - mkdir -p "$out/$UUID" - unzip -q ${src} -d "$out/$UUID" - NEW_MANIFEST=$(jq '. + {"applications": { "gecko": { "id": "${extid}" }}, "browser_specific_settings":{"gecko":{"id": "${extid}"}}}' "$out/$UUID/manifest.json") - echo "$NEW_MANIFEST" > "$out/$UUID/manifest.json" - cd "$out/$UUID" - zip -r -q -FS "$out/$UUID.xpi" * - rm -r "$out/$UUID" - ''; - } + if ! (builtins.hasAttr "extid" a) then + throw "extraExtensions has an invalid entry. Missing extid attribute. Please use fetchfirefoxaddon" + else + a ) extraExtensions; enterprisePolicies = diff --git a/pkgs/build-support/fetchfirefoxaddon/default.nix b/pkgs/build-support/fetchfirefoxaddon/default.nix new file mode 100644 index 00000000000..b199a46e793 --- /dev/null +++ b/pkgs/build-support/fetchfirefoxaddon/default.nix @@ -0,0 +1,38 @@ +{stdenv, lib, coreutils, unzip, jq, zip, fetchurl,writeScript, ...}: +let + +in + { name, + url, + sha256, +}: + +stdenv.mkDerivation rec { + + inherit name; + extid = "${sha256}@${name}"; + passthru = { + exitd=extid; + }; + + builder = writeScript "xpibuilder" '' + source $stdenv/setup + + header "firefox addon $name into $out" + + UUID="${extid}" + mkdir -p "$out/$UUID" + unzip -q ${src} -d "$out/$UUID" + NEW_MANIFEST=$(jq '. + {"applications": { "gecko": { "id": "${extid}" }}, "browser_specific_settings":{"gecko":{"id": "${extid}"}}}' "$out/$UUID/manifest.json") + echo "$NEW_MANIFEST" > "$out/$UUID/manifest.json" + cd "$out/$UUID" + zip -r -q -FS "$out/$UUID.xpi" * + rm -r "$out/$UUID" + ''; + src = fetchurl { + url = url; + sha256 = sha256; + }; + nativeBuildInputs = [ coreutils unzip zip jq ]; +} + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ac6bd3343a5..d0c6cb7ecd6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -365,6 +365,8 @@ in fetchhg = callPackage ../build-support/fetchhg { }; + fetchfirefoxaddon = callPackage ../build-support/fetchfirefoxaddon {}; + # `fetchurl' downloads a file from the network. fetchurl = if stdenv.buildPlatform != stdenv.hostPlatform then buildPackages.fetchurl # No need to do special overrides twice, From 5f8eca5461297a11b4ef42d5f93f47974a300117 Mon Sep 17 00:00:00 2001 From: Luis Hebendanz Date: Mon, 30 Nov 2020 18:49:29 +0100 Subject: [PATCH 05/35] Added missing sha1 and sha512 flags --- pkgs/build-support/fetchfirefoxaddon/default.nix | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pkgs/build-support/fetchfirefoxaddon/default.nix b/pkgs/build-support/fetchfirefoxaddon/default.nix index b199a46e793..c232e4cdace 100644 --- a/pkgs/build-support/fetchfirefoxaddon/default.nix +++ b/pkgs/build-support/fetchfirefoxaddon/default.nix @@ -2,15 +2,19 @@ let in - { name, - url, - sha256, + { + name +, url +, md5 ? "" +, sha1 ? "" +, sha256 ? "" +, sha512 ? "" }: stdenv.mkDerivation rec { inherit name; - extid = "${sha256}@${name}"; + extid = "${src.outputHash}@${name}"; passthru = { exitd=extid; }; @@ -31,7 +35,7 @@ stdenv.mkDerivation rec { ''; src = fetchurl { url = url; - sha256 = sha256; + inherit md5 sha1 sha256 sha512; }; nativeBuildInputs = [ coreutils unzip zip jq ]; } From cc421679e2640f08ef2433504c03fedc3eaac857 Mon Sep 17 00:00:00 2001 From: Luis Hebendanz Date: Tue, 1 Dec 2020 22:07:34 +0100 Subject: [PATCH 06/35] Update pkgs/applications/networking/browsers/firefox/wrapper.nix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jörg Thalheim --- pkgs/applications/networking/browsers/firefox/wrapper.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index a95e871b306..674ca3c86c9 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -36,7 +36,7 @@ let ## Following options are needed for extra prefs & policies # For more information about anti tracking (german website) - # vist https://wiki.kairaven.de/open/app/firefo + # visit https://wiki.kairaven.de/open/app/firefox , extraPrefs ? "" # For more information about policies visit # https://github.com/mozilla/policy-templates#enterprisepoliciesenabled From b89c0fcebd6ed64e84bd26e15379fd4c22b01b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 2 Dec 2020 09:48:42 +0100 Subject: [PATCH 07/35] fetchFirefoxAddon: rename to use camelCase --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d0c6cb7ecd6..a8061f8c19e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -365,7 +365,7 @@ in fetchhg = callPackage ../build-support/fetchhg { }; - fetchfirefoxaddon = callPackage ../build-support/fetchfirefoxaddon {}; + fetchFirefoxAddon = callPackage ../build-support/fetchfirefoxaddon {}; # `fetchurl' downloads a file from the network. fetchurl = if stdenv.buildPlatform != stdenv.hostPlatform From 9712bbdf7454be4f35a290bc2be23042dff8c60d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 2 Dec 2020 09:50:59 +0100 Subject: [PATCH 08/35] firefoxaddon: formatting nitpicks --- pkgs/applications/networking/browsers/firefox/wrapper.nix | 5 ++--- pkgs/build-support/fetchfirefoxaddon/default.nix | 7 +------ 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index 674ca3c86c9..f9b7f2bb8a2 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -1,6 +1,5 @@ -{ stdenv, lib, makeDesktopItem, makeWrapper, lndir, config, - -replace, fetchurl, zip, unzip, jq +{ stdenv, lib, makeDesktopItem, makeWrapper, lndir, config +, replace, fetchurl, zip, unzip, jq ## various stuff that can be plugged in , flashplayer, hal-flash diff --git a/pkgs/build-support/fetchfirefoxaddon/default.nix b/pkgs/build-support/fetchfirefoxaddon/default.nix index c232e4cdace..3426743b2cf 100644 --- a/pkgs/build-support/fetchfirefoxaddon/default.nix +++ b/pkgs/build-support/fetchfirefoxaddon/default.nix @@ -1,16 +1,11 @@ {stdenv, lib, coreutils, unzip, jq, zip, fetchurl,writeScript, ...}: -let - -in - { - name +{ name , url , md5 ? "" , sha1 ? "" , sha256 ? "" , sha512 ? "" }: - stdenv.mkDerivation rec { inherit name; From 7c8994e40e411d5b0a151b3891a57a73006d0e8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 2 Dec 2020 09:49:43 +0100 Subject: [PATCH 09/35] doc/firefox: initial documentation --- doc/builders/packages/firefox.section.md | 40 ++++++++++++++++++++++++ doc/builders/packages/index.xml | 1 + 2 files changed, 41 insertions(+) create mode 100644 doc/builders/packages/firefox.section.md diff --git a/doc/builders/packages/firefox.section.md b/doc/builders/packages/firefox.section.md new file mode 100644 index 00000000000..2f89da2d459 --- /dev/null +++ b/doc/builders/packages/firefox.section.md @@ -0,0 +1,40 @@ +# Firefox + +## Build wrapped Firefox with extensions and policies + +The `wrapFirefox` function allows to pass policies, preferences and extension that are available to firefox. With the help of `fetchFirefoxAddon` this allows build a firefox version that already comes with addons pre-installed: + +```nix +{ + myFirefox = wrapFirefox firefox-unwrapped { + extraExtensions = [ + (fetchFirefoxAddon { + name = "ublock"; + url = "https://addons.mozilla.org/firefox/downloads/file/3679754/ublock_origin-1.31.0-an+fx.xpi"; + sha256 = "1h768ljlh3pi23l27qp961v1hd0nbj2vasgy11bmcrlqp40zgvnr"; + }) + ]; + + extraPolicies = { + CaptivePortal = false; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + DisableFirefoxAccounts = true; + FirefoxHome = { + Pocket = false; + Snippets = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + }; + + extraPrefs = '' + // Show more ssl cert infos + lockPref("security.identityblock.show_extended_validation", true); + ''; + }; +} +``` diff --git a/doc/builders/packages/index.xml b/doc/builders/packages/index.xml index 3c9a56a81b7..6d7537bb36d 100644 --- a/doc/builders/packages/index.xml +++ b/doc/builders/packages/index.xml @@ -10,6 +10,7 @@ + From b7348e56f7d8b6358f57e7602a5efd164c6f1861 Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Wed, 2 Dec 2020 17:19:30 +0000 Subject: [PATCH 10/35] libewf: 20171104 -> 20201129 --- pkgs/development/libraries/libewf/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/libewf/default.nix b/pkgs/development/libraries/libewf/default.nix index 4ebf0835351..ff644599b8a 100644 --- a/pkgs/development/libraries/libewf/default.nix +++ b/pkgs/development/libraries/libewf/default.nix @@ -1,12 +1,12 @@ { fetchurl, stdenv, zlib, openssl, libuuid, pkgconfig }: stdenv.mkDerivation rec { - version = "20171104"; + version = "20201129"; pname = "libewf"; src = fetchurl { url = "https://github.com/libyal/libewf/releases/download/${version}/libewf-experimental-${version}.tar.gz"; - sha256 = "0h7036gpj5cryvh17aq6i2cpnbpwg5yswmfydxbbwvd9yfxd6dng"; + sha256 = "168k1az9hm0lajh57zlbknsq5m8civ1rzp81zz4sd7v64xilzxdk"; }; nativeBuildInputs = [ pkgconfig ]; From 3a19b028187f7974d259bafc86d2d740972920e6 Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Wed, 2 Dec 2020 19:36:41 +0000 Subject: [PATCH 11/35] mtools: 4.0.25 -> 4.0.26 --- pkgs/tools/filesystems/mtools/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/filesystems/mtools/default.nix b/pkgs/tools/filesystems/mtools/default.nix index 5ebf82ea91f..d2930598c35 100644 --- a/pkgs/tools/filesystems/mtools/default.nix +++ b/pkgs/tools/filesystems/mtools/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl }: stdenv.mkDerivation rec { - name = "mtools-4.0.25"; + name = "mtools-4.0.26"; src = fetchurl { url = "mirror://gnu/mtools/${name}.tar.bz2"; - sha256 = "059cirrarizvcxv8zyp6ykaz45rymljpgdkdjc9kvadp7gn1w5px"; + sha256 = "06pabnjc4r2vv3dzfm6q97g6jbp2k5bhmcdwv2cf25ka8y5ir7sk"; }; patches = stdenv.lib.optional stdenv.isDarwin ./UNUSED-darwin.patch; From 106a31efb394756cd61e68449104a402fc8e7e68 Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Wed, 2 Dec 2020 19:56:08 +0000 Subject: [PATCH 12/35] mellowplayer: 3.6.6 -> 3.6.7 --- pkgs/applications/audio/mellowplayer/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/audio/mellowplayer/default.nix b/pkgs/applications/audio/mellowplayer/default.nix index 26736ea3e8a..37c38496773 100644 --- a/pkgs/applications/audio/mellowplayer/default.nix +++ b/pkgs/applications/audio/mellowplayer/default.nix @@ -14,13 +14,13 @@ mkDerivation rec { pname = "MellowPlayer"; - version = "3.6.6"; + version = "3.6.7"; src = fetchFromGitLab { owner = "ColinDuquesnoy"; repo = "MellowPlayer"; rev = version; - sha256 = "14y175fl6wg04fz0fhx553r8z3nwqrs2lr3rdls70bhwx5x6lavw"; + sha256 = "1p0z8hkbxaxrqjmknjwxb0mpf3xdssik3m5cwrsv1881k1x2x5qs"; }; nativeBuildInputs = [ cmake pkgconfig ]; From 11ee54305298de16df4bfde14dc27e220bea5417 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 2 Dec 2020 21:48:02 +0100 Subject: [PATCH 13/35] sd-image: fix resizing if root is not the second partition. --- nixos/modules/installer/cd-dvd/sd-image.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nixos/modules/installer/cd-dvd/sd-image.nix b/nixos/modules/installer/cd-dvd/sd-image.nix index d9799aa69c9..c8c5a46dfb8 100644 --- a/nixos/modules/installer/cd-dvd/sd-image.nix +++ b/nixos/modules/installer/cd-dvd/sd-image.nix @@ -223,9 +223,10 @@ in # Figure out device names for the boot device and root filesystem. rootPart=$(${pkgs.util-linux}/bin/findmnt -n -o SOURCE /) bootDevice=$(lsblk -npo PKNAME $rootPart) + partNum=$(lsblk -npo MAJ:MIN $rootPart | awk -F: '{print $2}') # Resize the root partition and the filesystem to fit the disk - echo ",+," | sfdisk -N2 --no-reread $bootDevice + echo ",+," | sfdisk -N$partNum --no-reread $bootDevice ${pkgs.parted}/bin/partprobe ${pkgs.e2fsprogs}/bin/resize2fs $rootPart From fc2fa9000c9b2d67559c99fda2c8fe672b0556b4 Mon Sep 17 00:00:00 2001 From: Adam Scott Date: Wed, 2 Dec 2020 16:07:13 -0500 Subject: [PATCH 14/35] tilt: 0.17.12 -> 0.17.13 --- pkgs/applications/networking/cluster/tilt/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/cluster/tilt/default.nix b/pkgs/applications/networking/cluster/tilt/default.nix index d362500ff59..40ba3530c8a 100644 --- a/pkgs/applications/networking/cluster/tilt/default.nix +++ b/pkgs/applications/networking/cluster/tilt/default.nix @@ -5,13 +5,13 @@ buildGoModule rec { /* Do not use "dev" as a version. If you do, Tilt will consider itself running in development environment and try to serve assets from the source tree, which is not there once build completes. */ - version = "0.17.12"; + version = "0.17.13"; src = fetchFromGitHub { owner = "tilt-dev"; repo = pname; rev = "v${version}"; - sha256 = "0l70nmxvk30h56bs46cgakddzdf3laj1y88d0jchij0yy7ixa61f"; + sha256 = "sha256-x3U5OF8T3z9kHcYe7SwKVEKNiEsi8AEvA1rlOma4y+8="; }; vendorSha256 = null; From 5a2abecc68ffa6f6f1c519acdc7af1d8ebd74079 Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Thu, 3 Dec 2020 01:17:49 +0000 Subject: [PATCH 15/35] nco: 4.9.5 -> 4.9.6 --- pkgs/development/libraries/nco/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/nco/default.nix b/pkgs/development/libraries/nco/default.nix index 0d98142a075..5f6c85411b1 100644 --- a/pkgs/development/libraries/nco/default.nix +++ b/pkgs/development/libraries/nco/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchzip, netcdf, netcdfcxx4, gsl, udunits, antlr, which, curl, flex, coreutils }: stdenv.mkDerivation rec { - version = "4.9.5"; + version = "4.9.6"; pname = "nco"; nativeBuildInputs = [ flex which ]; @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { src = fetchzip { url = "https://github.com/nco/nco/archive/${version}.tar.gz"; - sha256 = "0xp377rsamn2hwhzaf0ih70wd5274flpz74grys1b7rpbvbyf1bw"; + sha256 = "0f8vf66700dcr48jqd371bbldc61xkrilby13xp8j5l9q4xal808"; }; prePatch = '' From 6e36faa8cbfc8e2ab4b3f0dce52ac344b0bb6d61 Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Thu, 3 Dec 2020 01:48:49 +0000 Subject: [PATCH 16/35] oil: 0.8.4 -> 0.8.5 --- pkgs/shells/oil/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/shells/oil/default.nix b/pkgs/shells/oil/default.nix index 3dbe95f35b6..0896b8a5046 100644 --- a/pkgs/shells/oil/default.nix +++ b/pkgs/shells/oil/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "oil"; - version = "0.8.4"; + version = "0.8.5"; src = fetchurl { url = "https://www.oilshell.org/download/oil-${version}.tar.xz"; - sha256 = "0ydqwyghnkgbpsdi49vnrx2khs3y0d0bzdzcvjjr999ycmnirz88"; + sha256 = "1z0p08q4808h78bp6nwdszpfavhr4y7n313bp0gg5qdbssnciq1v"; }; postPatch = '' From f0e25ca1580d81208f4f509d0e52315481706865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= Date: Thu, 3 Dec 2020 11:02:41 +0900 Subject: [PATCH 17/35] thermald: 2.3 -> 2.4.1 --- pkgs/tools/system/thermald/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/system/thermald/default.nix b/pkgs/tools/system/thermald/default.nix index ae9e29b6f1d..4c076db7b8c 100644 --- a/pkgs/tools/system/thermald/default.nix +++ b/pkgs/tools/system/thermald/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { pname = "thermald"; - version = "2.3"; + version = "2.4.1"; outputs = [ "out" "devdoc" ]; @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { owner = "intel"; repo = "thermal_daemon"; rev = "v${version}"; - sha256 = "0cisaca2c2z1x9xvxc4lr6nl6yqx5bww6brh73m0p1n643jgq1dl"; + sha256 = "0rlac7v1b59m7gh767hkd8a0r4p001nd24786fnmryygbxynd2s6"; }; nativeBuildInputs = [ From 05bd810d5fe850186eb9efb94407d81429da89dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= Date: Thu, 3 Dec 2020 11:02:51 +0900 Subject: [PATCH 18/35] thermald: Always enable adaptive mode. There was some issues with the fallback to passive mode on 2.3, but on 2.4 adaptive mode is always enabled upstream and thermald will fallback to passive if necessary. https://github.com/intel/thermal_daemon/blob/a6e68a65b53a3d7a023c9b45db31ceffbd7e5dfb/data/thermald.service.in#L9 --- nixos/modules/services/hardware/thermald.nix | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/nixos/modules/services/hardware/thermald.nix b/nixos/modules/services/hardware/thermald.nix index b7be0e89d0c..241490c5aae 100644 --- a/nixos/modules/services/hardware/thermald.nix +++ b/nixos/modules/services/hardware/thermald.nix @@ -23,15 +23,6 @@ in { default = null; description = "the thermald manual configuration file."; }; - - adaptive = mkOption { - type = types.bool; - default = false; - description = '' - Whether to enable adaptive mode, only working on kernel versions greater than 5.8. - Thermald will detect this itself, safe to enable on kernel versions below 5.8. - ''; - }; }; }; @@ -48,8 +39,8 @@ in { --no-daemon \ ${optionalString cfg.debug "--loglevel=debug"} \ ${optionalString (cfg.configFile != null) "--config-file ${cfg.configFile}"} \ - ${optionalString cfg.adaptive "--adaptive"} \ --dbus-enable + --adaptive ''; }; }; From 873be872c64f2a8b869febf892ccbc946c724ec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= Date: Thu, 3 Dec 2020 11:07:37 +0900 Subject: [PATCH 19/35] maintainers: add archseer --- maintainers/maintainer-list.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 54a97f2b7a3..e56e50deb95 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -652,6 +652,12 @@ githubId = 56009; name = "Arcadio Rubio García"; }; + archseer = { + email = "blaz@mxxn.io"; + github = "archseer"; + githubId = 1372918; + name = "Blaž Hrastnik"; + }; arcnmx = { email = "arcnmx@users.noreply.github.com"; github = "arcnmx"; From 4d90ff89755288581a2239cd28e029423afe4c43 Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Thu, 3 Dec 2020 04:57:07 +0000 Subject: [PATCH 20/35] oxipng: 4.0.1 -> 4.0.2 --- pkgs/tools/graphics/oxipng/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/graphics/oxipng/default.nix b/pkgs/tools/graphics/oxipng/default.nix index 6e63b578812..1c89a1574c5 100644 --- a/pkgs/tools/graphics/oxipng/default.nix +++ b/pkgs/tools/graphics/oxipng/default.nix @@ -1,15 +1,15 @@ { stdenv, fetchCrate, rustPlatform }: rustPlatform.buildRustPackage rec { - version = "4.0.1"; + version = "4.0.2"; pname = "oxipng"; src = fetchCrate { inherit version pname; - sha256 = "0mgd33cb112yg1bz8jhsbk2w8p2gdiw510bfv4z82b2mg6pl6b9r"; + sha256 = "0m36af9w1l6pc71fjbgyzcsszizwayvcv5d750zz2bnj23c77m69"; }; - cargoSha256 = "01g3qansrvvv85b1kxg4609lnj3bizavg3r7651hn03cnlychj2n"; + cargoSha256 = "16fby8ncdq0dyg9r0glrqwi04sja34br306c5sj22cq1dm3bb64q"; doCheck = !stdenv.isAarch64 && !stdenv.isDarwin; From 4aabd257ead0b9fffdab5271dbcd8087249f32bd Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Thu, 3 Dec 2020 05:27:35 +0000 Subject: [PATCH 21/35] postsrsd: 1.6 -> 1.7 --- pkgs/servers/mail/postsrsd/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/mail/postsrsd/default.nix b/pkgs/servers/mail/postsrsd/default.nix index 845c4237432..5a543ed8ba3 100644 --- a/pkgs/servers/mail/postsrsd/default.nix +++ b/pkgs/servers/mail/postsrsd/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "postsrsd"; - version = "1.6"; + version = "1.7"; src = fetchFromGitHub { owner = "roehling"; repo = "postsrsd"; rev = version; - sha256 = "1dza22f0zlzsvr2dpnmsg8m8mj9rgdk0pzm1wvxrcfwyi8899ggm"; + sha256 = "11yr557m60a62m4wxi20lr8kmagjrgndmnwlxzr241bwb20ba96x"; }; cmakeFlags = [ "-DGENERATE_SRS_SECRET=OFF" "-DINIT_FLAVOR=systemd" ]; From d642818aed7d9147e6d2652d24788feca994ff89 Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Thu, 3 Dec 2020 05:56:34 +0000 Subject: [PATCH 22/35] php73Packages.phpstan: 0.12.57 -> 0.12.58 --- pkgs/development/php-packages/phpstan/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/php-packages/phpstan/default.nix b/pkgs/development/php-packages/phpstan/default.nix index 1cbcdb9a73d..7ac33ab3c15 100644 --- a/pkgs/development/php-packages/phpstan/default.nix +++ b/pkgs/development/php-packages/phpstan/default.nix @@ -1,14 +1,14 @@ { mkDerivation, fetchurl, pkgs, lib, php }: let pname = "phpstan"; - version = "0.12.57"; + version = "0.12.58"; in mkDerivation { inherit pname version; src = pkgs.fetchurl { url = "https://github.com/phpstan/phpstan/releases/download/${version}/phpstan.phar"; - sha256 = "0i1ycfmi638myl9840k4rl0z9klk0q25l8ykkkfg20kx5mdidvgc"; + sha256 = "1509z783rhrnlx32a3yg58sy81971dv1sf8nzs8am2m9qnpmdcll"; }; phases = [ "installPhase" ]; From 069e414aad3c8ca3f0640152b056f16abee33c63 Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Thu, 3 Dec 2020 06:05:11 +0000 Subject: [PATCH 23/35] pounce: 2.0 -> 2.1p1 --- pkgs/servers/pounce/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/pounce/default.nix b/pkgs/servers/pounce/default.nix index 62d576ffc6d..4a55a2c6562 100644 --- a/pkgs/servers/pounce/default.nix +++ b/pkgs/servers/pounce/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "pounce"; - version = "2.0"; + version = "2.1p1"; src = fetchzip { url = "https://git.causal.agency/pounce/snapshot/pounce-${version}.tar.gz"; - sha256 = "0vr42s8l617k6893zq7qn9wz7kcdchmr99ivbkrmvd38qrhsa02l"; + sha256 = "1gphia45swj4ws6nrklqg1hvjrc6yw921v0pf29cvjhwrfl6dl0h"; }; buildInputs = [ libressl ]; From bc35b79f3753c2634ab1cfc75fff35740baf2bfe Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Thu, 3 Dec 2020 06:43:44 +0000 Subject: [PATCH 24/35] php73Extensions.yaml: 2.1.0 -> 2.2.0 --- pkgs/development/php-packages/yaml/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/php-packages/yaml/default.nix b/pkgs/development/php-packages/yaml/default.nix index 603fd3ddd5b..6ad3b778f82 100644 --- a/pkgs/development/php-packages/yaml/default.nix +++ b/pkgs/development/php-packages/yaml/default.nix @@ -3,8 +3,8 @@ buildPecl { pname = "yaml"; - version = "2.1.0"; - sha256 = "0rmn2irzny24ivzc09ss46s2s48i0zy2cww7ikphljqbfx6zdjss"; + version = "2.2.0"; + sha256 = "1d65cf5vnr7brhxmy1pi2axjiyvdhmpcnq0qlx5spwlgkv6hnyml"; configureFlags = [ "--with-yaml=${pkgs.libyaml}" ]; From 04d1ad32208f2d584985e7c944a5c3dc7ab01a2e Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Thu, 3 Dec 2020 06:49:29 +0000 Subject: [PATCH 25/35] playerctl: 2.2.1 -> 2.3.1 --- pkgs/tools/audio/playerctl/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/audio/playerctl/default.nix b/pkgs/tools/audio/playerctl/default.nix index c1cddf12b65..7ef9557b42a 100644 --- a/pkgs/tools/audio/playerctl/default.nix +++ b/pkgs/tools/audio/playerctl/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "playerctl"; - version = "2.2.1"; + version = "2.3.1"; src = fetchFromGitHub { owner = "acrisci"; repo = "playerctl"; rev = "v${version}"; - sha256 = "17hi33sw3663qz5v54bqqil31sgkrlxkb2l5bgqk87pac6x2wnbz"; + sha256 = "00z5c6amlxd3q42l7x8i0ngl627dxglgg5vikbbhjp9ms34xbxdn"; }; nativeBuildInputs = [ meson ninja pkgconfig gtk-doc docbook_xsl gobject-introspection ]; From 19f9b87e511a31480b5c20bcf52cbf6d05195cd0 Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Sat, 28 Nov 2020 10:01:27 +0100 Subject: [PATCH 26/35] ocamlPackages.mirage-types: init at 3.9.0 --- .../ocaml-modules/mirage/types.nix | 19 +++++++++++++++++++ pkgs/top-level/ocaml-packages.nix | 2 ++ 2 files changed, 21 insertions(+) create mode 100644 pkgs/development/ocaml-modules/mirage/types.nix diff --git a/pkgs/development/ocaml-modules/mirage/types.nix b/pkgs/development/ocaml-modules/mirage/types.nix new file mode 100644 index 00000000000..f30a9e263bb --- /dev/null +++ b/pkgs/development/ocaml-modules/mirage/types.nix @@ -0,0 +1,19 @@ +{ lib, buildDunePackage, mirage +, mirage-block, mirage-channel, mirage-clock, mirage-console, mirage-device +, mirage-flow, mirage-fs, mirage-kv, mirage-net, mirage-protocols, mirage-random +, mirage-stack, mirage-time +}: + +buildDunePackage { + pname = "mirage-types"; + inherit (mirage) src version useDune2; + + propagatedBuildInputs = [ mirage-block mirage-channel mirage-clock + mirage-console mirage-device mirage-flow mirage-fs mirage-kv mirage-net + mirage-protocols mirage-random mirage-stack mirage-time + ]; + + meta = mirage.meta // { + description = "Module type definitions for MirageOS applications"; + }; +} diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index c7d805d4c74..d74a81eb3f2 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -599,6 +599,8 @@ let mirage-time-unix = callPackage ../development/ocaml-modules/mirage-time/unix.nix { }; + mirage-types = callPackage ../development/ocaml-modules/mirage/types.nix { }; + mirage-unix = callPackage ../development/ocaml-modules/mirage-unix { }; mlgmp = callPackage ../development/ocaml-modules/mlgmp { }; From 4dfe04a9ecdf39b9755deba5220c0d57d7384a37 Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Sat, 28 Nov 2020 10:01:33 +0100 Subject: [PATCH 27/35] ocamlPackages.mirage-types-lwt: init at 3.9.0 --- pkgs/development/ocaml-modules/mirage/types-lwt.nix | 13 +++++++++++++ pkgs/top-level/ocaml-packages.nix | 2 ++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/ocaml-modules/mirage/types-lwt.nix diff --git a/pkgs/development/ocaml-modules/mirage/types-lwt.nix b/pkgs/development/ocaml-modules/mirage/types-lwt.nix new file mode 100644 index 00000000000..ac232b0be6e --- /dev/null +++ b/pkgs/development/ocaml-modules/mirage/types-lwt.nix @@ -0,0 +1,13 @@ +{ lib, buildDunePackage, mirage-types +}: + +buildDunePackage { + pname = "mirage-types-lwt"; + inherit (mirage-types) version src useDune2; + + propagatedBuildInputs = [ mirage-types ]; + + meta = mirage-types.meta // { + description = "Lwt module type definitions for MirageOS applications"; + }; +} diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index d74a81eb3f2..793b7b78b0e 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -601,6 +601,8 @@ let mirage-types = callPackage ../development/ocaml-modules/mirage/types.nix { }; + mirage-types-lwt = callPackage ../development/ocaml-modules/mirage/types-lwt.nix { }; + mirage-unix = callPackage ../development/ocaml-modules/mirage-unix { }; mlgmp = callPackage ../development/ocaml-modules/mlgmp { }; From a7786e29da13d306a206cedaa67f45e28bf64eb2 Mon Sep 17 00:00:00 2001 From: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> Date: Wed, 2 Dec 2020 18:40:53 +0100 Subject: [PATCH 28/35] ocamlPackages.mirage{,-runtime}: 3.9.0 -> 3.10.0 --- pkgs/development/ocaml-modules/mirage/runtime.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/ocaml-modules/mirage/runtime.nix b/pkgs/development/ocaml-modules/mirage/runtime.nix index 9c9a479d529..700065ba8e0 100644 --- a/pkgs/development/ocaml-modules/mirage/runtime.nix +++ b/pkgs/development/ocaml-modules/mirage/runtime.nix @@ -3,7 +3,7 @@ buildDunePackage rec { pname = "mirage-runtime"; - version = "3.9.0"; + version = "3.10.0"; useDune2 = true; @@ -11,7 +11,7 @@ buildDunePackage rec { src = fetchurl { url = "https://github.com/mirage/mirage/releases/download/v${version}/mirage-v${version}.tbz"; - sha256 = "1hznh49v1jlkwww6xi9f2f4yjzlh9qfvdrrdzvddnwsh3g00flla"; + sha256 = "01nq358bilsvvwrvyavc5gik1csjljn4rb3k8yx94gxvbj5vx4h2"; }; propagatedBuildInputs = [ ipaddr functoria-runtime fmt logs ocaml_lwt ]; From 82a0381340875beeaf2bcb0411f9139f983bb026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Thu, 3 Dec 2020 08:52:48 +0100 Subject: [PATCH 29/35] mtools: Switch to pname, version --- pkgs/tools/filesystems/mtools/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/filesystems/mtools/default.nix b/pkgs/tools/filesystems/mtools/default.nix index d2930598c35..5f78b3c379d 100644 --- a/pkgs/tools/filesystems/mtools/default.nix +++ b/pkgs/tools/filesystems/mtools/default.nix @@ -1,10 +1,11 @@ { stdenv, fetchurl }: stdenv.mkDerivation rec { - name = "mtools-4.0.26"; + pname = "mtools"; + version = "4.0.26"; src = fetchurl { - url = "mirror://gnu/mtools/${name}.tar.bz2"; + url = "mirror://gnu/mtools/${pname}-${version}.tar.bz2"; sha256 = "06pabnjc4r2vv3dzfm6q97g6jbp2k5bhmcdwv2cf25ka8y5ir7sk"; }; From b8d28c8238d5f785f534fe32b0b345025cabc878 Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Thu, 3 Dec 2020 09:11:47 +0000 Subject: [PATCH 30/35] python37Packages.cupy: 8.1.0 -> 8.2.0 --- pkgs/development/python-modules/cupy/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/cupy/default.nix b/pkgs/development/python-modules/cupy/default.nix index 5c9a5b76d10..91fd7ba11d4 100644 --- a/pkgs/development/python-modules/cupy/default.nix +++ b/pkgs/development/python-modules/cupy/default.nix @@ -6,12 +6,12 @@ buildPythonPackage rec { pname = "cupy"; - version = "8.1.0"; + version = "8.2.0"; disabled = !isPy3k; src = fetchPypi { inherit pname version; - sha256 = "4dfa4a0cd0a752d980347c816cab2169f0938c1d37275311810396dcf3c27912"; + sha256 = "8e4bc8428fb14309d73194e19bc4b47e1d6a330678a200e36d9d4b932f1be2e8"; }; checkInputs = [ From 17da448013e464a67a8f0717ec86b5e15d81ff88 Mon Sep 17 00:00:00 2001 From: r-burns <52847440+r-burns@users.noreply.github.com> Date: Thu, 3 Dec 2020 01:26:21 -0800 Subject: [PATCH 31/35] dolphinEmu: install udev rules on linux (#105749) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jörg Thalheim --- pkgs/misc/emulators/dolphin-emu/default.nix | 4 ++++ pkgs/misc/emulators/dolphin-emu/master.nix | 2 ++ 2 files changed, 6 insertions(+) diff --git a/pkgs/misc/emulators/dolphin-emu/default.nix b/pkgs/misc/emulators/dolphin-emu/default.nix index 0053079d992..65484aab18e 100644 --- a/pkgs/misc/emulators/dolphin-emu/default.nix +++ b/pkgs/misc/emulators/dolphin-emu/default.nix @@ -108,6 +108,10 @@ stdenv.mkDerivation rec { sfml ]; + postInstall = lib.optionalString stdenv.hostPlatform.isLinux '' + install -D $src/Data/51-usb-device.rules $out/etc/udev/rules.d/51-usb-device.rules + ''; + meta = with lib; { homepage = "https://dolphin-emu.org/"; description = "Gamecube/Wii/Triforce emulator for x86_64 and ARMv8"; diff --git a/pkgs/misc/emulators/dolphin-emu/master.nix b/pkgs/misc/emulators/dolphin-emu/master.nix index 8ef7b610a25..270ffde38bc 100644 --- a/pkgs/misc/emulators/dolphin-emu/master.nix +++ b/pkgs/misc/emulators/dolphin-emu/master.nix @@ -71,6 +71,8 @@ in stdenv.mkDerivation rec { postInstall = '' cp -r ${desktopItem}/share/applications $out/share ln -sf $out/bin/dolphin-emu $out/bin/dolphin-emu-master + '' + lib.optionalString stdenv.hostPlatform.isLinux '' + install -D $src/Data/51-usb-device.rules $out/etc/udev/rules.d/51-usb-device.rules ''; meta = with lib; { From ae1f466248adf24f3204779e94d346510e4fa73a Mon Sep 17 00:00:00 2001 From: zowoq <59103226+zowoq@users.noreply.github.com> Date: Thu, 3 Dec 2020 06:11:26 +1000 Subject: [PATCH 32/35] libslirp: 4.3.1 -> 4.4.0 https://gitlab.freedesktop.org/slirp/libslirp/-/releases/v4.4.0 --- pkgs/development/libraries/libslirp/default.nix | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/pkgs/development/libraries/libslirp/default.nix b/pkgs/development/libraries/libslirp/default.nix index 2f3abbaff50..af6d26bc22b 100644 --- a/pkgs/development/libraries/libslirp/default.nix +++ b/pkgs/development/libraries/libslirp/default.nix @@ -1,6 +1,5 @@ { stdenv , fetchFromGitLab -, fetchpatch , meson , ninja , pkg-config @@ -9,25 +8,16 @@ stdenv.mkDerivation rec { pname = "libslirp"; - version = "4.3.1"; + version = "4.4.0"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "slirp"; repo = pname; rev = "v${version}"; - sha256 = "0pzgjj2x2vrjshrzrl2x39xp5lgwg4b4y9vs8xvadh1ycl10v3fv"; + sha256 = "0abh337jvij664w65zszjql42n720zzfap0ab0amr4qcvkzw7bjx"; }; - patches = [ - # remove >4.3.1 - (fetchpatch { - name = "CVE-2020-29129_CVE-2020-29130.patch"; - url = "https://gitlab.freedesktop.org/slirp/libslirp/-/commit/2e1dcbc0c2af64fcb17009eaf2ceedd81be2b27f.patch"; - sha256 = "01vbjqgnc0kp881l5p6b31cyyirhwhavm6x36hlgkymswvl3wh9w"; - }) - ]; - nativeBuildInputs = [ meson ninja pkg-config ]; buildInputs = [ glib ]; @@ -41,6 +31,6 @@ stdenv.mkDerivation rec { homepage = "https://gitlab.freedesktop.org/slirp/libslirp"; license = licenses.bsd3; maintainers = with maintainers; [ orivej ]; - platforms = platforms.linux; + platforms = platforms.unix; }; } From 1e5a7a913514a8746ae94819c9591e13ed8f21f7 Mon Sep 17 00:00:00 2001 From: Sascha Grunert Date: Thu, 3 Dec 2020 10:07:11 +0100 Subject: [PATCH 33/35] slirp4netns: 1.1.7 -> 1.1.8 Signed-off-by: Sascha Grunert --- pkgs/tools/networking/slirp4netns/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/networking/slirp4netns/default.nix b/pkgs/tools/networking/slirp4netns/default.nix index 143b25849de..c0c64405c0d 100644 --- a/pkgs/tools/networking/slirp4netns/default.nix +++ b/pkgs/tools/networking/slirp4netns/default.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation rec { pname = "slirp4netns"; - version = "1.1.7"; + version = "1.1.8"; src = fetchFromGitHub { owner = "rootless-containers"; repo = "slirp4netns"; rev = "v${version}"; - sha256 = "1zvmsin7pgfwafj5qr8fcixg01xfq1xhjd93klyxhmacfxirhkgw"; + sha256 = "06813k8a1gpakgykz5h75qpdlhrci9r39309n3qqh34ynbjil468"; }; nativeBuildInputs = [ autoreconfHook pkg-config ]; From bcc196cae87dace4cb358a0e87f25145232771ba Mon Sep 17 00:00:00 2001 From: Vika Date: Mon, 30 Nov 2020 20:00:29 +0300 Subject: [PATCH 34/35] nixos/tests/cloud-init: fix the erroring out The test was broken for a 1.5 months apparently? Well, now it passes. Also apparently it's not flaky anymore. --- nixos/tests/cloud-init.nix | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/nixos/tests/cloud-init.nix b/nixos/tests/cloud-init.nix index a127be6dd85..d59d222974b 100644 --- a/nixos/tests/cloud-init.nix +++ b/nixos/tests/cloud-init.nix @@ -51,29 +51,31 @@ in makeTest { networking.hostName = ""; }; testScript = '' - machine.wait_for_unit("cloud-init.service") - machine.succeed("cat /tmp/cloudinit-write-file | grep -q 'cloudinit'") + # To wait until cloud-init terminates its run + unnamed.wait_for_unit("cloud-final.service") + + unnamed.succeed("cat /tmp/cloudinit-write-file | grep -q 'cloudinit'") # install snakeoil ssh key and provision .ssh/config file - machine.succeed("mkdir -p ~/.ssh") - machine.succeed( + unnamed.succeed("mkdir -p ~/.ssh") + unnamed.succeed( "cat ${snakeOilPrivateKey} > ~/.ssh/id_snakeoil" ) - machine.succeed("chmod 600 ~/.ssh/id_snakeoil") + unnamed.succeed("chmod 600 ~/.ssh/id_snakeoil") - machine.wait_for_unit("sshd.service") + unnamed.wait_for_unit("sshd.service") # we should be able to log in as the root user, as well as the created nixos user - machine.succeed( + unnamed.succeed( "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/id_snakeoil root@localhost 'true'" ) - machine.succeed( + unnamed.succeed( "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/id_snakeoil nixos@localhost 'true'" ) # test changing hostname via cloud-init worked assert ( - machine.succeed( + unnamed.succeed( "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentityFile=~/.ssh/id_snakeoil nixos@localhost 'hostname'" ).strip() == "test" From 594ee544b61ff8a026d3d98af90b46d60e67769c Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Thu, 3 Dec 2020 11:59:19 +0100 Subject: [PATCH 35/35] Revert "python3Packages.sphinx_rtd_theme: 0.4.3 -> 0.5.0" Revert again as we did before. This wants to fetch from the web with npm. https://github.com/readthedocs/sphinx_rtd_theme/issues/1014 This reverts commit 24d78e70a8cb0249b8242e0d3ad88cfaf5122a87. --- pkgs/development/python-modules/sphinx_rtd_theme/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/sphinx_rtd_theme/default.nix b/pkgs/development/python-modules/sphinx_rtd_theme/default.nix index b22cdac81df..bb9fcb293da 100644 --- a/pkgs/development/python-modules/sphinx_rtd_theme/default.nix +++ b/pkgs/development/python-modules/sphinx_rtd_theme/default.nix @@ -8,11 +8,11 @@ buildPythonPackage rec { pname = "sphinx_rtd_theme"; - version = "0.5.0"; + version = "0.4.3"; src = fetchPypi { inherit pname version; - sha256 = "22c795ba2832a169ca301cd0a083f7a434e09c538c70beb42782c073651b707d"; + sha256 = "728607e34d60456d736cc7991fd236afb828b21b82f956c5ea75f94c8414040a"; }; propagatedBuildInputs = [ sphinx ];