Files
frajtano/flake.nix
2024-09-21 16:12:04 +01:00

73 lines
1.9 KiB
Nix

{
description = "frajtano: an ssh agent multiplexer";
outputs = {
self,
nixpkgs,
systems,
}: let
inherit (nixpkgs) lib;
eachSystem = f:
lib.genAttrs (import systems) (system:
f {
inherit system;
pkgs = nixpkgs.legacyPackages.${system};
ownPkgs = self.packages.${system};
});
in {
devShells = eachSystem ({
pkgs,
ownPkgs,
...
}: {
default = pkgs.beam.packages.erlang_26.callPackage ./shell.nix {
inherit ownPkgs;
};
});
packages = eachSystem ({pkgs, ...}: {
default = pkgs.beam.packages.erlang_26.callPackage ./default.nix {};
});
homeModules.default = {
config,
lib,
pkgs,
...
}: let
cfg = config.bluepython508.frajtano;
in {
options.bluepython508.frajtano = {
enable = lib.mkEnableOption "frajtano";
dir = lib.mkOption {
description = "directory in which to place the listening socket";
default = "${config.home.homeDirectory}/.ssh/frajtano";
};
};
config = lib.mkIf cfg.enable {
home.sessionVariables.FRAJTANO_DIR = cfg.dir;
home.packages = [self.packages.${pkgs.system}.default];
systemd.user.services.frajtano = {
Unit.Description = "frajtano";
Unit.After = ["default.target"];
Service.Environment = "'FRAJTANO_DIR=${cfg.dir}'";
Service.ExecStart = "${self.packages.${pkgs.system}.default}/bin/frajtano start";
Install.WantedBy = ["default.target"];
};
launchd.agents.frajtano = {
enable = true;
config = {
EnvironmentVariables = {
FRAJTANO_DIR = cfg.dir;
};
ProgramArguments = ["${lib.getExe self.packages.${pkgs.system}.default}/bin/frajtano" "start"];
RunAtLoad = true;
KeepAlive = true;
};
};
};
};
};
}