File tree 3 files changed +32
-35
lines changed
3 files changed +32
-35
lines changed Original file line number Diff line number Diff line change 32
32
then l . head meta . tags
33
33
else null ,
34
34
setup ? [ ] ,
35
+ extraSetupLinks ? "" ,
35
36
layers ? [ ] ,
36
37
runtimeInputs ? [ ] ,
37
38
uid ? "65534" ,
45
46
setupLinks = cell . ops . mkSetup "links" [ ] ''
46
47
mkdir -p $out/bin
47
48
ln -s ${ l . getExe entrypoint } $out/bin/entrypoint
49
+ ${ extraSetupLinks }
48
50
'' ;
49
51
52
+ root = nixpkgs . buildEnv {
53
+ name = "root" ;
54
+ paths =
55
+ setup
56
+ ++ [
57
+ # trick `buildEnv` and prevent the $out`/bin` to be a symlink
58
+ ( nixpkgs . runCommand "setupDirs" { } "mkdir -p $out/bin" )
59
+ setupLinks
60
+ ] ;
61
+ } ;
62
+
50
63
image =
51
64
l . throwIf ( args ? tag && meta ? tags )
52
65
"mkOCI/mkStandardOCI/mkDevOCI: use of `tag` and `meta.tags` arguments are not supported together. Remove the former."
73
86
++ layers ;
74
87
75
88
maxLayers = 25 ;
76
- copyToRoot =
77
- [
78
- ( nixpkgs . buildEnv {
79
- name = "root" ;
80
- paths =
81
- setup
82
- ++ [
83
- # trick `buildEnv` and prevent the $out`/bin` to be a symlink
84
- ( nixpkgs . runCommand "setupDirs" { }
85
- ''
86
- mkdir -p $out/bin
87
- '' )
88
- setupLinks
89
- ] ;
90
- } )
91
- ]
92
- ++ options . copyToRoot or [ ] ;
89
+ copyToRoot = [ root ] ++ options . copyToRoot or [ ] ;
93
90
94
91
config = l . recursiveUpdate config {
95
92
User = uid ;
99
96
} ;
100
97
101
98
# Setup tasks can include permissions via the passthru.perms attribute
102
- perms = l . flatten ( ( l . map ( s : l . optionalAttrs ( s ? passthru && s . passthru ? perms ) s . passthru . perms ) ) setup ) ++ perms ;
99
+ perms =
100
+ l . flatten ( ( l . map (
101
+ s :
102
+ l . optionals ( s ? passthru && s . passthru ? perms )
103
+ ( l . map ( p : p // { path = root ; } ) s . passthru . perms )
104
+ ) )
105
+ setup )
106
+ ++ perms ;
103
107
}
104
108
) ;
105
109
in let
Original file line number Diff line number Diff line change 15
15
*/
16
16
name : perms : contents : let
17
17
setup = nixpkgs . runCommand "oci-setup-${ name } " { } contents ;
18
- perms' = l . map ( p : p // { path = setup ; } ) perms ;
19
18
in
20
19
setup
21
- // l . optionalAttrs ( perms != [ ] ) { passthru . perms = perms' ; }
20
+ // l . optionalAttrs ( perms != [ ] ) { passthru = { inherit perms ; } ; }
Original file line number Diff line number Diff line change 73
73
else operable ;
74
74
75
75
inherit ( nixpkgs . dockerTools ) caCertificates ;
76
- setupLinks =
77
- cell . ops . mkSetup "links" [
78
- {
79
- regex = "/bin" ;
80
- mode = "0555" ;
81
- }
82
- ] ''
83
- mkdir -p $out/bin
84
- ${ runtimeEntryLink }
85
- ${ debugEntryLink }
86
- ${ livenessLink }
87
- ${ readinessLink }
88
- '' ;
76
+ extraSetupLinks = ''
77
+ ${ runtimeEntryLink }
78
+ ${ debugEntryLink }
79
+ ${ livenessLink }
80
+ ${ readinessLink }
81
+ '' ;
89
82
90
83
users = cell . ops . mkUser {
91
84
inherit uid gid ;
128
121
++ ( l . optionals hasReadinessProbe [ ( nix2container . buildLayer { deps = [ readinessProbe ] ; } ) ] ) ;
129
122
} )
130
123
] ;
131
- setup = prepend [ setupLinks users nss ] ;
132
- options . copyToRoot = append [ tmp caCertificates ] ;
124
+ setup = prepend [ users nss caCertificates ] ;
125
+ inherit extraSetupLinks ;
126
+ options . copyToRoot = append [ tmp ] ;
133
127
perms = prepend [
134
128
{
135
129
path = tmp ;
You can’t perform that action at this time.
0 commit comments