-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
94 lines (84 loc) · 2.72 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
{
description = "filesd-gend";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
docker-tools.url = "github:ZentriaMC/docker-tools";
docker-tools.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, flake-utils, docker-tools }:
let
supportedSystems = [
"aarch64-darwin"
"aarch64-linux"
"x86_64-darwin"
"x86_64-linux"
];
in
flake-utils.lib.eachSystem supportedSystems (system:
let
rev = self.rev or "dirty";
pkgs = nixpkgs.legacyPackages.${system};
in
rec {
packages.filesd-gend = pkgs.callPackage ./default.nix {
inherit rev;
};
packages.dockerImage = pkgs.callPackage
({ lib, runCommandNoCC, dockerTools, dumb-init, cacert, tzdata, filesd-gend, name ? "filesd-gend", tag ? filesd-gend.version }: dockerTools.buildLayeredImage {
inherit name tag;
config = {
Env = [
"PATH=/usr/bin"
];
ExposedPorts = {
"5555/tcp" = { };
};
Labels = {
"org.opencontainers.image.source" = "https://github.com/ZentriaMC/filesd-gend";
};
Entrypoint = [ "/usr/bin/dumb-init" "--" ];
Cmd = [ "filesd-gend" ];
};
contents =
let
inherit (docker-tools.lib) setupFHSScript symlinkCACerts;
fhsScript = setupFHSScript {
inherit pkgs;
targetDir = "$out/usr";
paths = {
bin = [
dumb-init
filesd-gend
];
};
};
in
[
(runCommandNoCC "filesd-gend-nix-base" { } ''
${fhsScript}
ln -s usr/bin $out/bin
ln -s bin $out/usr/sbin
ln -s usr/bin $out/sbin
ln -s usr/lib $out/lib
ln -s usr/lib $out/lib64
${symlinkCACerts { inherit cacert; targetDir = "$out"; }}
ln -s ${tzdata}/share/zoneinfo $out/etc/zoneinfo
ln -s /etc/zoneinfo/UTC $out/etc/localtime
echo "ID=distroless" > $out/etc/os-release
'')
];
})
{
inherit (packages) filesd-gend;
};
defaultPackage = packages.filesd-gend;
devShell = pkgs.mkShell {
buildInputs = [
pkgs.go_1_19
pkgs.golangci-lint
pkgs.gopls
];
};
});
}