flake: module

This commit is contained in:
Jonas Rabenstein 2026-03-12 22:20:06 +01:00
commit 28a03bde35

View file

@ -1,8 +1,8 @@
{ {
outputs = { nixpkgs, ... }: let outputs = { nixpkgs, ... }: let
spond = { rustPlatform, rustfmt, clippy, pkg-config, openssl, ... }: rustPlatform.buildRustPackage { spond = { rustPlatform, rustfmt, clippy, pkg-config, openssl, ... }: rustPlatform.buildRustPackage {
pname = "spond"; pname = "tb-spond-rs";
version = "0.0.0"; version = "0.1.0";
src = ./.; src = ./.;
cargoLock.lockFile = ./Cargo.lock; cargoLock.lockFile = ./Cargo.lock;
@ -14,18 +14,19 @@
]; ];
}; };
allpkgs = system: pkgs: pkgs.extend (_: _: nixpkgs.lib.attrsets.filterAttrs (name: _: name != "default") (packages system pkgs)); allpkgs = pkgs: pkgs.extend (_: _: nixpkgs.lib.attrsets.filterAttrs (name: _: name != "default") (packages' pkgs));
packages = system: pkgs': let packages = system: packages';
pkgs = allpkgs system pkgs'; packages' = pkgs': let
pkgs = allpkgs pkgs';
in { in {
default = pkgs.spond; default = pkgs.spond;
spond = pkgs.callPackage spond {}; spond = pkgs.callPackage spond {};
}; };
devShells = system: pkgs': let devShells = system: pkgs': let
pkgs = allpkgs system pkgs'; pkgs = allpkgs pkgs';
in builtins.mapAttrs (devShell pkgs) (packages system pkgs'); in builtins.mapAttrs (devShell pkgs) (packages pkgs');
devShell = pkgs: name: pkg: pkgs.mkShell { devShell = pkgs: name: pkg: pkgs.mkShell {
buildInputs = with pkgs; [ buildInputs = with pkgs; [
@ -57,8 +58,48 @@
printf 'Dev shell for %s ready!\n' '${pkg.name}' 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 { in {
packages = builtins.mapAttrs packages nixpkgs.legacyPackages; packages = builtins.mapAttrs packages nixpkgs.legacyPackages;
devShells = builtins.mapAttrs devShells nixpkgs.legacyPackages; devShells = builtins.mapAttrs devShells nixpkgs.legacyPackages;
nixosModules = {
default = nixosModule;
spond = nixosModule;
}
}; };
} }