Files
tasklist/flake.nix
2023-10-05 19:10:37 +02:00

87 lines
2.3 KiB
Nix

{
description = "A very basic flake";
#nixpkgs for testing framework
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
outputs = { self, nixpkgs, ... }: let
forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" ];
in
{
packages.x86_64-linux.tasklist = nixpkgs.legacyPackages.x86_64-linux.buildGoModule rec {
pname = "tasklist";
version = "1.0";
vendorHash = "sha256-olHQNClxU4sykBlhlbvTL6wCUYkMxnaQdLnRwvuJffw=";
src = ./.;
postInstall = ''
cp forms.html $out/
'';
};
nixosModules.malobeo-tasklist = { config, lib, pkgs, ... }:
let
cfg = config.services.malobeo-tasklist;
tasklist-pkg = self.packages.x86_64-linux.tasklist;
pkgs = nixpkgs.legacyPackages."x86_64-linux";
in
{
options = {
services.malobeo-tasklist = {
enable = lib.mkOption {
default = false;
type = lib.types.bool;
description = lib.mdDoc ''
Enables tasklist
'';
};
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ tasklist-pkg ];
users = {
groups.malobeo-tasklist = {};
users.malobeo-tasklist = {
description = "malobeo tasklist user";
group = "malobeo-tasklist";
isNormalUser = true;
};
};
systemd.services.malobeo-tasklist = {
description = "malobeo tasklist daemon";
serviceConfig = {
Type = "simple";
ExecStart = "${tasklist-pkg}/bin/tasklist -d /var/lib/malobeo-tasklist/tasklist.db -f ${tasklist-pkg}/forms.html";
Restart = "on-failure";
};
preStart = ''
mkdir -m 0770 -p "/var/lib/malobeo-tasklist"
chown malobeo-tasklist:malobeo-tasklist "/var/lib/malobeo-tasklist"
'';
wantedBy = [ "default.target" ];
environment = {
USER = "malobeo-tasklist";
HOME = "/var/lib/malobeo-tasklist";
};
};
};
};
checks = forAllSystems (system: let
checkArgs = {
pkgs = nixpkgs.legacyPackages.${system};
inherit self;
};
in {
malobeo-tasklist = import ./test/test.nix checkArgs;
});
};
}