r/o
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
inherit (pkgs) pkgsStatic;
35
36
furpoll = pkgsStatic.rustPlatform.buildRustPackage {
37
pname = "furpoll";
38
version = "0.1.0";
39
40
nativeBuildInputs = [ pkgs.pkg-config ];
41
# Including it in buildInputs works too, but then you get things like the actual
42
# OpenSSL binary included in the result (and +30MiB).
43
PKG_CONFIG_PATH = "${pkgsStatic.openssl.dev}/lib/pkgconfig";
44
45
src = ./.;
46
47
cargoLock.lockFile = ./Cargo.lock;
48
};
49
50
dockerPaths = [
51
furpoll
52
pkgs.dockerTools.caCertificates
53
];
54
55
dockerPathsToLink = [
56
"/bin"
57
"/etc"
58
];
59
60
dockerSpec = {
61
name = "nossa.ee/talya/furpoll";
62
tag = self.rev or "dev";
63
config = {
64
Cmd = [ "/bin/furpoll" ];
65
User = "1000:1000";
66
};
67
};
68
in
69
{
70
default = furpoll;
71
72
inherit furpoll;
73
74
furpoll-docker-build = pkgs.dockerTools.buildImage (
75
dockerSpec
76
// {
77
copyToRoot = pkgs.buildEnv {
78
name = "furpoll-root";
79
paths = dockerPaths;
80
pathsToLink = dockerPathsToLink;
81
};
82
}
83
);
84
85
furpoll-docker-stream-layered = pkgs.dockerTools.streamLayeredImage (
86
dockerSpec
87
// {
88
contents = dockerPaths;
89
maxLayers = 120;
90
}
91
);
92
}
93
);
94
95
devShells = eachSystem (
96
system:
97
let
98
pkgs = nixpkgs.legacyPackages.${system};
99
in
100
{
101
default = pkgs.mkShell {
102
name = "furpoll";
103
104
packages = [
105
(fenix.packages.${system}.stable.withComponents [
106
"cargo"
107
"rustc"
108
"rust-analyzer"
109
"clippy"
110
"rustfmt"
111
"rust-src"
112
])
113
pkgs.pkg-config
114
pkgs.openssl
115
];
116
};
117
}
118
);
119
};
120
}
121