1
{
2
description = "furpoll";
3
4
inputs = {
5
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
6
fenix = {
7
url = "github:nix-community/fenix";
8
inputs.nixpkgs.follows = "nixpkgs";
9
};
10
};
11
12
outputs =
13
{
14
self,
15
nixpkgs,
16
fenix,
17
}:
18
let
19
systems = [
20
"aarch64-darwin"
21
"aarch64-linux"
22
"x86_64-darwin"
23
"x86_64-linux"
24
];
25
eachSystem = nixpkgs.lib.genAttrs systems;
26
in
27
{
28
formatter = eachSystem (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style);
29
30
packages = eachSystem (
31
system:
32
let
33
pkgs = nixpkgs.legacyPackages.${system};
34
35
furpoll = pkgs.rustPlatform.buildRustPackage {
36
pname = "furpoll";
37
version = "0.1.0";
38
39
nativeBuildInputs = [ pkgs.pkg-config ];
40
buildInputs = [ pkgs.openssl ];
41
42
src = ./.;
43
44
cargoLock.lockFile = ./Cargo.lock;
45
};
46
47
dockerPaths = [
48
furpoll
49
pkgs.openssl
50
pkgs.dockerTools.caCertificates
51
];
52
53
dockerPathsToLink = [
54
"/bin"
55
"/etc"
56
];
57
58
dockerSpec = {
59
name = "nossa.ee/talya/furpoll";
60
tag = self.rev or "dev";
61
config = {
62
Cmd = [ "/bin/furpoll" ];
63
User = "1000:1000";
64
};
65
};
66
in
67
{
68
default = furpoll;
69
70
inherit furpoll;
71
72
furpoll-docker-build = pkgs.dockerTools.buildImage (
73
dockerSpec
74
// {
75
copyToRoot = pkgs.buildEnv {
76
name = "furpoll-root";
77
paths = dockerPaths;
78
pathsToLink = dockerPathsToLink;
79
};
80
}
81
);
82
83
furpoll-docker-stream-layered = pkgs.dockerTools.streamLayeredImage (
84
dockerSpec
85
// {
86
contents = dockerPaths;
87
maxLayers = 120;
88
}
89
);
90
}
91
);
92
93
devShells = eachSystem (
94
system:
95
let
96
pkgs = nixpkgs.legacyPackages.${system};
97
in
98
{
99
default = pkgs.mkShell {
100
name = "furpoll";
101
102
packages = [
103
(fenix.packages.${system}.stable.withComponents [
104
"cargo"
105
"rustc"
106
"rust-analyzer"
107
"clippy"
108
"rustfmt"
109
"rust-src"
110
])
111
pkgs.pkg-config
112
pkgs.openssl
113
];
114
};
115
}
116
);
117
};
118
}
119