105 lines
2.8 KiB
Nix
105 lines
2.8 KiB
Nix
{
|
|
outputs = { nixpkgs, ... }: let
|
|
spond = { rustPlatform, rustfmt, clippy, pkg-config, openssl, ... }: rustPlatform.buildRustPackage {
|
|
pname = "tb-spond-rs";
|
|
version = "0.1.0";
|
|
|
|
src = ./.;
|
|
cargoLock.lockFile = ./Cargo.lock;
|
|
nativeBuildInputs = [
|
|
pkg-config
|
|
];
|
|
propagatedBuildInputs = [
|
|
openssl.dev
|
|
];
|
|
};
|
|
|
|
allpkgs = pkgs: pkgs.extend (_: _: nixpkgs.lib.attrsets.filterAttrs (name: _: name != "default") (packages' pkgs));
|
|
|
|
packages = system: packages';
|
|
packages' = pkgs': let
|
|
pkgs = allpkgs pkgs';
|
|
in {
|
|
default = pkgs.spond;
|
|
spond = pkgs.callPackage spond {};
|
|
};
|
|
|
|
devShells = system: pkgs': let
|
|
pkgs = allpkgs pkgs';
|
|
in builtins.mapAttrs (devShell pkgs) (packages pkgs');
|
|
|
|
devShell = pkgs: name: pkg: pkgs.mkShell {
|
|
buildInputs = with pkgs; [
|
|
cargo
|
|
cargo-bloat
|
|
cargo-machete
|
|
cargo-workspaces
|
|
cargo-unused-features
|
|
cargo-udeps
|
|
cargo-audit
|
|
cargo-diet
|
|
cargo-duplicates
|
|
cargo-expand
|
|
cargo-flamegraph
|
|
clippy
|
|
lldb
|
|
gdb
|
|
|
|
(python3.withPackages (py: [ py.pyyaml ]))
|
|
|
|
rustc
|
|
rustfmt
|
|
openssl.dev
|
|
] ++ pkg.buildInputs;
|
|
|
|
nativeBuildInputs = pkg.nativeBuildInputs;
|
|
|
|
shellHook = ''
|
|
printf 'Dev shell for %s ready!\n' '${pkg.name}'
|
|
'';
|
|
};
|
|
|
|
nixosModule = { pkgs, lib, config, ... }: let
|
|
cli = lib.getExe (packages' pkgs).spond;
|
|
in {
|
|
config.systemd.timers."tb-spond-rs" = {
|
|
description = "[TB] choose who is allowed to participate this week.";
|
|
timerConfig.OnCalendar = "Sat 18:00:00";
|
|
wantedBy = [ "timers.target" ];
|
|
};
|
|
config.systemd.services."tb-spond-rs" = {
|
|
description = "[TB] choose who is allowed to participate this week.";
|
|
after = [ "network.target" ];
|
|
wants = [ "network.target" ];
|
|
|
|
serviceConfig = {
|
|
Type = "simple";
|
|
ExecStart = lib.escapeShellArgs [
|
|
cli
|
|
"--email" "jonas.rabenstein@web.de"
|
|
"--heading" "Schwimmtraining Donnerstag"
|
|
];
|
|
EnvironmentFile=[ "%d/environment" ];
|
|
User = "tb-spond-rs";
|
|
Group = "tb-spond-rs";
|
|
DynamicUser = true;
|
|
RuntimeDirectory = "tb-spond-rs";
|
|
StateDirectory = "tb-spond-rs";
|
|
ProtectSystem = "full";
|
|
ProtectHome = true;
|
|
NoNewPrivileges = true;
|
|
PrivateTmp = true;
|
|
PrivateDevices = true;
|
|
};
|
|
};
|
|
};
|
|
in {
|
|
packages = builtins.mapAttrs packages nixpkgs.legacyPackages;
|
|
devShells = builtins.mapAttrs devShells nixpkgs.legacyPackages;
|
|
|
|
nixosModules = {
|
|
default = nixosModule;
|
|
spond = nixosModule;
|
|
}
|
|
};
|
|
}
|