tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
lxd: move to by-name and format
Adam Stephens
2 years ago
20ab4593
5ebdf63b
+148
-124
3 changed files
expand all
collapse all
unified
split
pkgs
by-name
lx
lxd
package.nix
tools
admin
lxd
wrapper.nix
top-level
all-packages.nix
+148
pkgs/by-name/lx/lxd/package.nix
···
1
1
+
{
2
2
+
lib,
3
3
+
lxd-unwrapped,
4
4
+
linkFarm,
5
5
+
makeWrapper,
6
6
+
stdenv,
7
7
+
symlinkJoin,
8
8
+
writeShellScriptBin,
9
9
+
acl,
10
10
+
apparmor-parser,
11
11
+
apparmor-profiles,
12
12
+
attr,
13
13
+
bash,
14
14
+
btrfs-progs,
15
15
+
cdrkit,
16
16
+
criu,
17
17
+
dnsmasq,
18
18
+
e2fsprogs,
19
19
+
getent,
20
20
+
gnutar,
21
21
+
gptfdisk,
22
22
+
gzip,
23
23
+
iproute2,
24
24
+
iptables,
25
25
+
kmod,
26
26
+
lvm2,
27
27
+
minio,
28
28
+
nftables,
29
29
+
OVMF,
30
30
+
qemu_kvm,
31
31
+
qemu-utils,
32
32
+
rsync,
33
33
+
spice-gtk,
34
34
+
squashfsTools,
35
35
+
thin-provisioning-tools,
36
36
+
util-linux,
37
37
+
virtiofsd,
38
38
+
xz,
39
39
+
}:
40
40
+
let
41
41
+
binPath = lib.makeBinPath [
42
42
+
acl
43
43
+
attr
44
44
+
bash
45
45
+
btrfs-progs
46
46
+
cdrkit
47
47
+
criu
48
48
+
dnsmasq
49
49
+
e2fsprogs
50
50
+
getent
51
51
+
gnutar
52
52
+
gptfdisk
53
53
+
gzip
54
54
+
iproute2
55
55
+
iptables
56
56
+
kmod
57
57
+
lvm2
58
58
+
minio
59
59
+
nftables
60
60
+
qemu_kvm
61
61
+
qemu-utils
62
62
+
rsync
63
63
+
squashfsTools
64
64
+
thin-provisioning-tools
65
65
+
util-linux
66
66
+
virtiofsd
67
67
+
xz
68
68
+
69
69
+
(writeShellScriptBin "apparmor_parser" ''
70
70
+
exec '${apparmor-parser}/bin/apparmor_parser' -I '${apparmor-profiles}/etc/apparmor.d' "$@"
71
71
+
'')
72
72
+
];
73
73
+
74
74
+
clientBinPath = [ spice-gtk ];
75
75
+
76
76
+
ovmf-2mb = OVMF.override {
77
77
+
secureBoot = true;
78
78
+
fdSize2MB = true;
79
79
+
};
80
80
+
81
81
+
ovmf-4mb = OVMF.override {
82
82
+
secureBoot = true;
83
83
+
fdSize4MB = true;
84
84
+
};
85
85
+
86
86
+
ovmf-prefix = if stdenv.hostPlatform.isAarch64 then "AAVMF" else "OVMF";
87
87
+
88
88
+
# mimic ovmf from https://github.com/canonical/lxd-pkg-snap/blob/3abebe1dfeb20f9b7729556960c7e9fe6ad5e17c/snapcraft.yaml#L378
89
89
+
# also found in /snap/lxd/current/share/qemu/ on a snap install
90
90
+
ovmf = linkFarm "lxd-ovmf" [
91
91
+
{
92
92
+
name = "OVMF_CODE.2MB.fd";
93
93
+
path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd";
94
94
+
}
95
95
+
{
96
96
+
name = "OVMF_CODE.4MB.fd";
97
97
+
path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_CODE.fd";
98
98
+
}
99
99
+
{
100
100
+
name = "OVMF_CODE.fd";
101
101
+
path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd";
102
102
+
}
103
103
+
104
104
+
{
105
105
+
name = "OVMF_VARS.2MB.fd";
106
106
+
path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd";
107
107
+
}
108
108
+
{
109
109
+
name = "OVMF_VARS.2MB.ms.fd";
110
110
+
path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd";
111
111
+
}
112
112
+
{
113
113
+
name = "OVMF_VARS.4MB.fd";
114
114
+
path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd";
115
115
+
}
116
116
+
{
117
117
+
name = "OVMF_VARS.4MB.ms.fd";
118
118
+
path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd";
119
119
+
}
120
120
+
{
121
121
+
name = "OVMF_VARS.fd";
122
122
+
path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd";
123
123
+
}
124
124
+
{
125
125
+
name = "OVMF_VARS.ms.fd";
126
126
+
path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd";
127
127
+
}
128
128
+
];
129
129
+
in
130
130
+
symlinkJoin {
131
131
+
name = "lxd-${lxd-unwrapped.version}";
132
132
+
133
133
+
paths = [ lxd-unwrapped ];
134
134
+
135
135
+
nativeBuildInputs = [ makeWrapper ];
136
136
+
137
137
+
postBuild = ''
138
138
+
wrapProgram $out/bin/lxd --prefix PATH : ${lib.escapeShellArg binPath}:${qemu_kvm}/libexec:$out/bin --set LXD_OVMF_PATH ${ovmf}
139
139
+
140
140
+
wrapProgram $out/bin/lxc --prefix PATH : ${lib.makeBinPath clientBinPath}
141
141
+
'';
142
142
+
143
143
+
passthru = {
144
144
+
inherit (lxd-unwrapped) tests ui;
145
145
+
};
146
146
+
147
147
+
inherit (lxd-unwrapped) meta pname version;
148
148
+
}
-122
pkgs/tools/admin/lxd/wrapper.nix
···
1
1
-
{ lib
2
2
-
, lxd-unwrapped
3
3
-
, linkFarm
4
4
-
, makeWrapper
5
5
-
, stdenv
6
6
-
, symlinkJoin
7
7
-
, writeShellScriptBin
8
8
-
, acl
9
9
-
, apparmor-parser
10
10
-
, apparmor-profiles
11
11
-
, attr
12
12
-
, bash
13
13
-
, btrfs-progs
14
14
-
, cdrkit
15
15
-
, criu
16
16
-
, dnsmasq
17
17
-
, e2fsprogs
18
18
-
, getent
19
19
-
, gnutar
20
20
-
, gptfdisk
21
21
-
, gzip
22
22
-
, iproute2
23
23
-
, iptables
24
24
-
, kmod
25
25
-
, lvm2
26
26
-
, minio
27
27
-
, nftables
28
28
-
, OVMF
29
29
-
, qemu_kvm
30
30
-
, qemu-utils
31
31
-
, rsync
32
32
-
, spice-gtk
33
33
-
, squashfsTools
34
34
-
, thin-provisioning-tools
35
35
-
, util-linux
36
36
-
, virtiofsd
37
37
-
, xz
38
38
-
}:
39
39
-
let
40
40
-
binPath = lib.makeBinPath [
41
41
-
acl
42
42
-
attr
43
43
-
bash
44
44
-
btrfs-progs
45
45
-
cdrkit
46
46
-
criu
47
47
-
dnsmasq
48
48
-
e2fsprogs
49
49
-
getent
50
50
-
gnutar
51
51
-
gptfdisk
52
52
-
gzip
53
53
-
iproute2
54
54
-
iptables
55
55
-
kmod
56
56
-
lvm2
57
57
-
minio
58
58
-
nftables
59
59
-
qemu_kvm
60
60
-
qemu-utils
61
61
-
rsync
62
62
-
squashfsTools
63
63
-
thin-provisioning-tools
64
64
-
util-linux
65
65
-
virtiofsd
66
66
-
xz
67
67
-
68
68
-
(writeShellScriptBin "apparmor_parser" ''
69
69
-
exec '${apparmor-parser}/bin/apparmor_parser' -I '${apparmor-profiles}/etc/apparmor.d' "$@"
70
70
-
'')
71
71
-
];
72
72
-
73
73
-
clientBinPath = [
74
74
-
spice-gtk
75
75
-
];
76
76
-
77
77
-
ovmf-2mb = OVMF.override {
78
78
-
secureBoot = true;
79
79
-
fdSize2MB = true;
80
80
-
};
81
81
-
82
82
-
ovmf-4mb = OVMF.override {
83
83
-
secureBoot = true;
84
84
-
fdSize4MB = true;
85
85
-
};
86
86
-
87
87
-
ovmf-prefix = if stdenv.hostPlatform.isAarch64 then "AAVMF" else "OVMF";
88
88
-
89
89
-
# mimic ovmf from https://github.com/canonical/lxd-pkg-snap/blob/3abebe1dfeb20f9b7729556960c7e9fe6ad5e17c/snapcraft.yaml#L378
90
90
-
# also found in /snap/lxd/current/share/qemu/ on a snap install
91
91
-
ovmf = linkFarm "lxd-ovmf" [
92
92
-
{ name = "OVMF_CODE.2MB.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd"; }
93
93
-
{ name = "OVMF_CODE.4MB.fd"; path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_CODE.fd"; }
94
94
-
{ name = "OVMF_CODE.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd"; }
95
95
-
96
96
-
{ name = "OVMF_VARS.2MB.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
97
97
-
{ name = "OVMF_VARS.2MB.ms.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
98
98
-
{ name = "OVMF_VARS.4MB.fd"; path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
99
99
-
{ name = "OVMF_VARS.4MB.ms.fd"; path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
100
100
-
{ name = "OVMF_VARS.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
101
101
-
{ name = "OVMF_VARS.ms.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
102
102
-
];
103
103
-
in
104
104
-
symlinkJoin {
105
105
-
name = "lxd-${lxd-unwrapped.version}";
106
106
-
107
107
-
paths = [ lxd-unwrapped ];
108
108
-
109
109
-
nativeBuildInputs = [ makeWrapper ];
110
110
-
111
111
-
postBuild = ''
112
112
-
wrapProgram $out/bin/lxd --prefix PATH : ${lib.escapeShellArg binPath}:${qemu_kvm}/libexec:$out/bin --set LXD_OVMF_PATH ${ovmf}
113
113
-
114
114
-
wrapProgram $out/bin/lxc --prefix PATH : ${lib.makeBinPath clientBinPath}
115
115
-
'';
116
116
-
117
117
-
passthru = {
118
118
-
inherit (lxd-unwrapped) tests ui;
119
119
-
};
120
120
-
121
121
-
inherit (lxd-unwrapped) meta pname version;
122
122
-
}
-2
pkgs/top-level/all-packages.nix
···
10576
10576
10577
10577
lxc = callPackage ../os-specific/linux/lxc { };
10578
10578
10579
10579
-
lxd = callPackage ../tools/admin/lxd/wrapper.nix { };
10580
10580
-
10581
10579
lxd-image-server = callPackage ../tools/virtualization/lxd-image-server { };
10582
10580
10583
10581
lzfse = callPackage ../tools/compression/lzfse { };