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