Skip to content

Commit 654cae4

Browse files
committed
Make all functions overridable
Currently, most functions take `pkgs` as an argument, and fail to use some of their other arguments, effectively replacing them with `pkgs.[blah]`. This commit fixes that.
1 parent 8537c2d commit 654cae4

File tree

6 files changed

+106
-98
lines changed

6 files changed

+106
-98
lines changed

crate2nix/Cargo.nix

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@
44
# See https://github.com/kolloch/crate2nix for more info.
55

66
{ nixpkgs ? ../nix/nixpkgs.nix
7-
, pkgs ? import nixpkgs { config = {}; }
7+
, pkgs ? import nixpkgs { }
88
, fetchurl ? pkgs.fetchurl
9+
, fetchgit ? pkgs.fetchgit
10+
, callPackage ? pkgs.callPackage
911
, lib ? pkgs.lib
12+
, buildPackages ? pkgs.buildPackages
1013
, stdenv ? pkgs.stdenv
14+
, stdenvNoCC ? pkgs.stdenvNoCC
15+
, symlinkJoin ? pkgs.symlinkJoin
16+
, runCommand ? pkgs.runCommand
1117
, buildRustCrateForPkgs ? pkgs: pkgs.buildRustCrate
1218
# This is used as the `crateOverrides` argument for `buildRustCrate`.
1319
, defaultCrateOverrides ? pkgs.defaultCrateOverrides
@@ -24,7 +30,7 @@
2430
# Additional crate2nix configuration if it exists.
2531
, crateConfig
2632
? if builtins.pathExists ./crate-config.nix
27-
then pkgs.callPackage ./crate-config.nix {}
33+
then callPackage ./crate-config.nix {}
2834
else {}
2935
}:
3036

@@ -65,7 +71,7 @@ rec {
6571

6672

6773
# A derivation that joins the outputs of all workspace members together.
68-
allWorkspaceMembers = pkgs.symlinkJoin {
74+
allWorkspaceMembers = symlinkJoin {
6975
name = "all-workspace-members";
7076
paths =
7177
let members = builtins.attrValues workspaceMembers;
@@ -3286,15 +3292,15 @@ rec {
32863292
# If the user hasn't set any pre/post commands, we don't want to
32873293
# insert empty lines. This means that any existing users of crate2nix
32883294
# don't get a spurious rebuild unless they set these explicitly.
3289-
testCommand = pkgs.lib.concatStringsSep "\n" (
3290-
pkgs.lib.filter (s: s != "") [
3295+
testCommand = lib.concatStringsSep "\n" (
3296+
lib.filter (s: s != "") [
32913297
testPreRun
32923298
"$f $testCrateFlags 2>&1 | tee -a $out"
32933299
testPostRun
32943300
]
32953301
);
32963302
in
3297-
pkgs.stdenvNoCC.mkDerivation {
3303+
stdenvNoCC.mkDerivation {
32983304
name = "run-tests-${testCrate.name}";
32993305

33003306
inherit (crate) src;
@@ -3330,7 +3336,7 @@ rec {
33303336
'';
33313337
};
33323338
in
3333-
pkgs.runCommand "${crate.name}-linked"
3339+
runCommand "${crate.name}-linked"
33343340
{
33353341
inherit (crate) outputs crateName;
33363342
passthru = (crate.passthru or { }) // {
@@ -3377,15 +3383,10 @@ rec {
33773383
if buildRustCrateForPkgsFunc != null then
33783384
buildRustCrateForPkgsFunc
33793385
else
3380-
(
3381-
if crateOverrides == pkgs.defaultCrateOverrides then
3382-
buildRustCrateForPkgs
3383-
else
3384-
pkgs:
3385-
(buildRustCrateForPkgs pkgs).override {
3386-
defaultCrateOverrides = crateOverrides;
3387-
}
3388-
);
3386+
pkgs:
3387+
(buildRustCrateForPkgs pkgs).override {
3388+
defaultCrateOverrides = crateOverrides;
3389+
};
33893390
builtRustCrates = builtRustCratesWithFeatures {
33903391
inherit packageId features;
33913392
buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
@@ -3469,7 +3470,7 @@ rec {
34693470
)
34703471
crateConfigs;
34713472
target = makeTarget stdenv.hostPlatform;
3472-
build = mkBuiltByPackageIdByPkgs pkgs.buildPackages;
3473+
build = mkBuiltByPackageIdByPkgs buildPackages;
34733474
};
34743475
in
34753476
self;

crate2nix/templates/Cargo.nix.tera

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,16 @@
66
# See https://github.com/kolloch/crate2nix for more info.
77

88
{ nixpkgs ? {{config.nixpkgs_path | safe}}
9-
, pkgs ? import nixpkgs { config = {}; }
9+
, pkgs ? import nixpkgs { }
1010
, fetchurl ? pkgs.fetchurl
11+
, fetchgit ? pkgs.fetchgit
12+
, callPackage ? pkgs.callPackage
1113
, lib ? pkgs.lib
14+
, buildPackages ? pkgs.buildPackages
1215
, stdenv ? pkgs.stdenv
16+
, stdenvNoCC ? pkgs.stdenvNoCC
17+
, symlinkJoin ? pkgs.symlinkJoin
18+
, runCommand ? pkgs.runCommand
1319
, buildRustCrateForPkgs ? pkgs: pkgs.buildRustCrate
1420
# This is used as the `crateOverrides` argument for `buildRustCrate`.
1521
, defaultCrateOverrides ? pkgs.defaultCrateOverrides
@@ -26,7 +32,7 @@
2632
# Additional crate2nix configuration if it exists.
2733
, crateConfig
2834
? if builtins.pathExists ./crate-config.nix
29-
then pkgs.callPackage ./crate-config.nix {}
35+
then callPackage ./crate-config.nix {}
3036
else {}
3137
}:
3238

@@ -74,15 +80,15 @@ rec {
7480
registries = {
7581
{%- for name, hash in registries %}
7682
{{name}} = builtins.fromJSON (builtins.readFile (fetchurl {
77-
url = "{{name | safe}}/config.json";
83+
url = "{{name | trim_end_matches(pat="/") | safe}}/config.json";
7884
sha256 = {{hash}};
7985
}));
8086
{%- endfor %}
8187
};
8288
{%- endif %}
8389

8490
# A derivation that joins the outputs of all workspace members together.
85-
allWorkspaceMembers = pkgs.symlinkJoin {
91+
allWorkspaceMembers = symlinkJoin {
8692
name = "all-workspace-members";
8793
paths =
8894
let members = builtins.attrValues workspaceMembers;
@@ -147,16 +153,16 @@ rec {
147153
{%- elif crate.source.Nix.file.import and crate.source.Nix.attr %}
148154
src = (import {{crate.source.Nix.file.import | safe}}).{{crate.source.Nix.attr | safe}};
149155
{%- elif crate.source.Nix.file.package and crate.source.Nix.attr %}
150-
src = (pkgs.callPackage {{crate.source.Nix.file.package | safe}} {}).{{crate.source.Nix.attr | safe}};
156+
src = (callPackage {{crate.source.Nix.file.package | safe}} {}).{{crate.source.Nix.attr | safe}};
151157
{%- elif crate.source.Nix.file.import %}
152158
src = import {{crate.source.Nix.file.import | safe}};
153159
{%- elif crate.source.Nix.file.package %}
154-
src = pkgs.callPackage {{crate.source.Nix.file.package | safe}} {};
160+
src = callPackage {{crate.source.Nix.file.package | safe}} {};
155161
{%- elif crate.source.LocalDirectory.path %}
156162
src = lib.cleanSourceWith { filter = sourceFilter; src = {{crate.source.LocalDirectory.path | safe}}; };
157163
{%- elif crate.source.Git %}
158164
workspace_member = null;
159-
src = pkgs.fetchgit {
165+
src = fetchgit {
160166
url = {{crate.source.Git.url}};
161167
rev = {{crate.source.Git.rev}};
162168
{%- if crate.source.Git.sha256 %}

crate2nix/templates/nix/crate2nix/default.nix

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
#
22
# crate2nix/default.nix (excerpt start)
33
#{#
4-
{ pkgs
5-
, lib
4+
{ lib
5+
, pkgs
66
, stdenv
7+
, stdenvNoCC
78
, buildRustCrate
89
, buildRustCrateForPkgs ? if buildRustCrate != null then
910
lib.warn "`buildRustCrate` is deprecated, use `buildRustCrateForPkgs` instead" (_: buildRustCrate)
1011
else
1112
pkgs: pkgs.buildRustCrate
13+
, buildPackages
1214
, defaultCrateOverrides
15+
, runCommand
1316
, strictDeprecation ? true
1417
, crates ? { }
1518
, rootFeatures ? [ ]
@@ -157,15 +160,15 @@ rec {
157160
# If the user hasn't set any pre/post commands, we don't want to
158161
# insert empty lines. This means that any existing users of crate2nix
159162
# don't get a spurious rebuild unless they set these explicitly.
160-
testCommand = pkgs.lib.concatStringsSep "\n" (
161-
pkgs.lib.filter (s: s != "") [
163+
testCommand = lib.concatStringsSep "\n" (
164+
lib.filter (s: s != "") [
162165
testPreRun
163166
"$f $testCrateFlags 2>&1 | tee -a $out"
164167
testPostRun
165168
]
166169
);
167170
in
168-
pkgs.stdenvNoCC.mkDerivation {
171+
stdenvNoCC.mkDerivation {
169172
name = "run-tests-${testCrate.name}";
170173

171174
inherit (crate) src;
@@ -201,7 +204,7 @@ rec {
201204
'';
202205
};
203206
in
204-
pkgs.runCommand "${crate.name}-linked"
207+
runCommand "${crate.name}-linked"
205208
{
206209
inherit (crate) outputs crateName;
207210
passthru = (crate.passthru or { }) // {
@@ -248,15 +251,10 @@ rec {
248251
if buildRustCrateForPkgsFunc != null then
249252
buildRustCrateForPkgsFunc
250253
else
251-
(
252-
if crateOverrides == pkgs.defaultCrateOverrides then
253-
buildRustCrateForPkgs
254-
else
255-
pkgs:
256-
(buildRustCrateForPkgs pkgs).override {
257-
defaultCrateOverrides = crateOverrides;
258-
}
259-
);
254+
pkgs:
255+
(buildRustCrateForPkgs pkgs).override {
256+
defaultCrateOverrides = crateOverrides;
257+
};
260258
builtRustCrates = builtRustCratesWithFeatures {
261259
inherit packageId features;
262260
buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
@@ -340,7 +338,7 @@ rec {
340338
)
341339
crateConfigs;
342340
target = makeTarget stdenv.hostPlatform;
343-
build = mkBuiltByPackageIdByPkgs pkgs.buildPackages;
341+
build = mkBuiltByPackageIdByPkgs buildPackages;
344342
};
345343
in
346344
self;

sample_projects/bin_with_git_submodule_dep/Cargo.nix

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@
44
# See https://github.com/kolloch/crate2nix for more info.
55

66
{ nixpkgs ? <nixpkgs>
7-
, pkgs ? import nixpkgs { config = {}; }
7+
, pkgs ? import nixpkgs { }
88
, fetchurl ? pkgs.fetchurl
9+
, fetchgit ? pkgs.fetchgit
10+
, callPackage ? pkgs.callPackage
911
, lib ? pkgs.lib
12+
, buildPackages ? pkgs.buildPackages
1013
, stdenv ? pkgs.stdenv
14+
, stdenvNoCC ? pkgs.stdenvNoCC
15+
, symlinkJoin ? pkgs.symlinkJoin
16+
, runCommand ? pkgs.runCommand
1117
, buildRustCrateForPkgs ? pkgs: pkgs.buildRustCrate
1218
# This is used as the `crateOverrides` argument for `buildRustCrate`.
1319
, defaultCrateOverrides ? pkgs.defaultCrateOverrides
@@ -24,7 +30,7 @@
2430
# Additional crate2nix configuration if it exists.
2531
, crateConfig
2632
? if builtins.pathExists ./crate-config.nix
27-
then pkgs.callPackage ./crate-config.nix {}
33+
then callPackage ./crate-config.nix {}
2834
else {}
2935
}:
3036

@@ -65,7 +71,7 @@ rec {
6571

6672

6773
# A derivation that joins the outputs of all workspace members together.
68-
allWorkspaceMembers = pkgs.symlinkJoin {
74+
allWorkspaceMembers = symlinkJoin {
6975
name = "all-workspace-members";
7076
paths =
7177
let members = builtins.attrValues workspaceMembers;
@@ -485,7 +491,7 @@ rec {
485491
edition = "2018";
486492
links = "rocksdb";
487493
workspace_member = null;
488-
src = pkgs.fetchgit {
494+
src = fetchgit {
489495
url = "https://github.com/rust-rocksdb/rust-rocksdb";
490496
rev = "66f04df013b6e6bd42b5a8c353406e09a7c7da2a";
491497
sha256 = "1rchvjrjamdaznx26gy4bmjj10rrf00mgc1wvkc489r9z1nh4h1h";
@@ -837,7 +843,7 @@ rec {
837843
version = "0.21.0";
838844
edition = "2018";
839845
workspace_member = null;
840-
src = pkgs.fetchgit {
846+
src = fetchgit {
841847
url = "https://github.com/rust-rocksdb/rust-rocksdb";
842848
rev = "66f04df013b6e6bd42b5a8c353406e09a7c7da2a";
843849
sha256 = "1rchvjrjamdaznx26gy4bmjj10rrf00mgc1wvkc489r9z1nh4h1h";
@@ -1504,15 +1510,15 @@ rec {
15041510
# If the user hasn't set any pre/post commands, we don't want to
15051511
# insert empty lines. This means that any existing users of crate2nix
15061512
# don't get a spurious rebuild unless they set these explicitly.
1507-
testCommand = pkgs.lib.concatStringsSep "\n" (
1508-
pkgs.lib.filter (s: s != "") [
1513+
testCommand = lib.concatStringsSep "\n" (
1514+
lib.filter (s: s != "") [
15091515
testPreRun
15101516
"$f $testCrateFlags 2>&1 | tee -a $out"
15111517
testPostRun
15121518
]
15131519
);
15141520
in
1515-
pkgs.stdenvNoCC.mkDerivation {
1521+
stdenvNoCC.mkDerivation {
15161522
name = "run-tests-${testCrate.name}";
15171523

15181524
inherit (crate) src;
@@ -1548,7 +1554,7 @@ rec {
15481554
'';
15491555
};
15501556
in
1551-
pkgs.runCommand "${crate.name}-linked"
1557+
runCommand "${crate.name}-linked"
15521558
{
15531559
inherit (crate) outputs crateName;
15541560
passthru = (crate.passthru or { }) // {
@@ -1595,15 +1601,10 @@ rec {
15951601
if buildRustCrateForPkgsFunc != null then
15961602
buildRustCrateForPkgsFunc
15971603
else
1598-
(
1599-
if crateOverrides == pkgs.defaultCrateOverrides then
1600-
buildRustCrateForPkgs
1601-
else
1602-
pkgs:
1603-
(buildRustCrateForPkgs pkgs).override {
1604-
defaultCrateOverrides = crateOverrides;
1605-
}
1606-
);
1604+
pkgs:
1605+
(buildRustCrateForPkgs pkgs).override {
1606+
defaultCrateOverrides = crateOverrides;
1607+
};
16071608
builtRustCrates = builtRustCratesWithFeatures {
16081609
inherit packageId features;
16091610
buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
@@ -1687,7 +1688,7 @@ rec {
16871688
)
16881689
crateConfigs;
16891690
target = makeTarget stdenv.hostPlatform;
1690-
build = mkBuiltByPackageIdByPkgs pkgs.buildPackages;
1691+
build = mkBuiltByPackageIdByPkgs buildPackages;
16911692
};
16921693
in
16931694
self;

0 commit comments

Comments
 (0)