Files
linuxcnc-nix/modules/linuxcnc.nix
2023-10-24 16:58:32 +03:00

29 lines
918 B
Nix

{ config, lib, pkgs, ... }:
let
cfg = config.local.packages.linuxcnc;
inherit (builtins) filter map pathExists listToAttrs;
linuxcncWithEC = pkgs.linuxcnc.overrideAttrs (oldAttrs: {
buildInputs = oldAttrs.buildInputs ++ [ pkgs.linuxcnc-ethercat pkgs.hal-cia402 ];
});
linuxcncEnv = pkgs.buildEnv {
name = "linuxcnc-env";
paths = with pkgs; [ linuxcncWithEC hal-cia402 linuxcnc-ethercat ];
};
in {
options.local.packages.linuxcnc.enable = lib.mkEnableOption "Enable linuxcnc";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [ linuxcncEnv ];
security.wrappers = listToAttrs (map (f: {
name = f;
value = {
setuid = true;
owner = "root";
group = "root";
source = "${linuxcncWithEC}/bin/${f}-nosetuid";
};
}) (filter (f: pathExists "${linuxcncWithEC}/bin/${f}-nosetuid") linuxcncWithEC.setuidApps));
};
}