Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions default.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{pkgs ? import <nixpkgs> {
inherit system;
}, system ? builtins.currentSystem, noDev ? false}:
}, system ? builtins.currentSystem, noDev ? false, packageOverrides ? {}}:

let
composerEnv = import ./src/Composer2Nix/composer-env.nix {
inherit (pkgs) stdenv lib writeTextFile fetchurl php unzip phpPackages;
};
in
import ./php-packages.nix {
inherit composerEnv noDev;
inherit composerEnv noDev packageOverrides;
inherit (pkgs) fetchurl fetchgit fetchhg fetchsvn;
}
4 changes: 2 additions & 2 deletions php-packages.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{composerEnv, fetchurl, fetchgit ? null, fetchhg ? null, fetchsvn ? null, noDev ? false}:
{composerEnv, fetchurl, fetchgit ? null, fetchhg ? null, fetchsvn ? null, noDev ? false, packageOverrides}:

let
packages = {
Expand Down Expand Up @@ -547,7 +547,7 @@ let
};
in
composerEnv.buildPackage {
inherit packages devPackages noDev;
inherit packages devPackages packageOverrides noDev;
name = "svanderburg-composer2nix";
src = ./.;
executable = true;
Expand Down
5 changes: 4 additions & 1 deletion src/Composer2Nix/Expressions/CompositionExpression.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
use PNDP\NixGenerator;
use PNDP\AST\NixAttrReference;
use PNDP\AST\NixASTNode;
use PNDP\AST\NixAttrSet;
use PNDP\AST\NixExpression;
use PNDP\AST\NixFunction;
use PNDP\AST\NixFunInvocation;
Expand Down Expand Up @@ -74,7 +75,8 @@ public function toNixAST()
"system" => new NixInherit()
)),
"system" => new NixAttrReference(new NixExpression("builtins"), new NixExpression("currentSystem")),
"noDev" => false
"noDev" => false,
"packageOverrides" => new NixAttrSet(array())
), new NixLet(array(
"composerEnv" => new NixFunInvocation(new NixImport(new NixFile($this->prefixRelativePath($this->composerEnvFile))), array(
"stdenv" => new NixInherit("pkgs"),
Expand All @@ -88,6 +90,7 @@ public function toNixAST()
), new NixFunInvocation(new NixImport(new NixFile($this->prefixRelativePath($this->outputFile))), array(
"composerEnv" => new NixInherit(),
"noDev" => new NixInherit(),
"packageOverrides" => new NixInherit(),
"fetchurl" => new NixInherit("pkgs"),
"fetchgit" => new NixInherit("pkgs"),
"fetchhg" => new NixInherit("pkgs"),
Expand Down
3 changes: 2 additions & 1 deletion src/Composer2Nix/Expressions/PackagesExpression.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ public function toNixAST()
"fetchgit" => null,
"fetchhg" => null,
"fetchsvn" => null,
"noDev" => false
"noDev" => false,
"packageOverrides" => new NixNoDefault()
), new NixLet($this->sourcesCache->toNixAST(), $this->package));
}
}
Expand Down
1 change: 1 addition & 0 deletions src/Composer2Nix/Package.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ public function toNixAST()
"executable" => $this->executable,
"packages" => new NixInherit(),
"devPackages" => new NixInherit(),
"packageOverrides" => new NixInherit(),
"noDev" => new NixInherit(),
"symlinkDependencies" => $this->symlinkDependencies,
"meta" => $this->generatePackageMetaDataAST()
Expand Down
12 changes: 9 additions & 3 deletions src/Composer2Nix/composer-env.nix
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ let
, src
, packages ? {}
, devPackages ? {}
, packageOverrides
, buildInputs ? []
, symlinkDependencies ? false
, executable ? false
Expand Down Expand Up @@ -133,7 +134,12 @@ let
''}
'') (builtins.attrNames dependencies);

extraArgs = removeAttrs args [ "name" "packages" "devPackages" "buildInputs" ];
extraArgs = removeAttrs args [ "name" "packages" "devPackages" "packageOverrides" "buildInputs" ];

overridePackages = ps:
let applicableOverrides = builtins.intersectAttrs ps packageOverrides;
applyOverride = name: f: ps.${name} // { src = f ps.${name}.src; };
in ps // builtins.mapAttrs applyOverride applicableOverrides;
in
stdenv.mkDerivation ({
name = "composer-${name}";
Expand Down Expand Up @@ -179,8 +185,8 @@ let

# Copy or symlink the provided dependencies
cd vendor
${bundleDependencies packages}
${lib.optionalString (!noDev) (bundleDependencies devPackages)}
${bundleDependencies (overridePackages packages)}
${lib.optionalString (!noDev) (bundleDependencies (overridePackages devPackages))}
cd ..

# Reconstruct autoload scripts
Expand Down
4 changes: 2 additions & 2 deletions tests/dependencies/default.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{pkgs ? import <nixpkgs> {
inherit system;
}, system ? builtins.currentSystem, noDev ? false}:
}, system ? builtins.currentSystem, noDev ? false, packageOverrides ? {}}:

let
composerEnv = import ../../src/Composer2Nix/composer-env.nix {
inherit (pkgs) stdenv lib writeTextFile fetchurl php unzip phpPackages;
};
in
import ./php-packages.nix {
inherit composerEnv noDev;
inherit composerEnv noDev packageOverrides;
inherit (pkgs) fetchurl fetchgit fetchhg fetchsvn;
}
4 changes: 2 additions & 2 deletions tests/dependencies/php-packages.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{composerEnv, fetchurl, fetchgit ? null, fetchhg ? null, fetchsvn ? null, noDev ? false}:
{composerEnv, fetchurl, fetchgit ? null, fetchhg ? null, fetchsvn ? null, noDev ? false, packageOverrides}:

let
packages = {
Expand Down Expand Up @@ -795,7 +795,7 @@ let
devPackages = {};
in
composerEnv.buildPackage {
inherit packages devPackages noDev;
inherit packages devPackages packageOverrides noDev;
name = "dependencies";
src = ./.;
executable = false;
Expand Down
4 changes: 2 additions & 2 deletions tests/enduser/default.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{pkgs ? import <nixpkgs> {
inherit system;
}, system ? builtins.currentSystem, noDev ? false}:
}, system ? builtins.currentSystem, noDev ? false, packageOverrides ? {}}:

let
composerEnv = import ../../src/Composer2Nix/composer-env.nix {
inherit (pkgs) stdenv lib writeTextFile fetchurl php unzip phpPackages;
};
in
import ./php-packages.nix {
inherit composerEnv noDev;
inherit composerEnv noDev packageOverrides;
inherit (pkgs) fetchurl fetchgit fetchhg fetchsvn;
}
4 changes: 2 additions & 2 deletions tests/enduser/php-packages.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{composerEnv, fetchurl, fetchgit ? null, fetchhg ? null, fetchsvn ? null, noDev ? false}:
{composerEnv, fetchurl, fetchgit ? null, fetchhg ? null, fetchsvn ? null, noDev ? false, packageOverrides}:

let
packages = {
Expand Down Expand Up @@ -306,7 +306,7 @@ let
devPackages = {};
in
composerEnv.buildPackage {
inherit packages devPackages noDev;
inherit packages devPackages packageOverrides noDev;
name = "phpunit-phpunit";
src = ./.;
executable = true;
Expand Down