# Global configuration for spacefm. { config, lib, pkgs, ... }: with lib; let cfg = config.programs.spacefm; in { ###### interface options = { programs.spacefm = { enable = mkOption { type = types.bool; default = false; description = '' Whether to install SpaceFM and create /etc/spacefm/spacefm.conf. ''; }; settings = mkOption { type = types.attrs; default = { tmp_dir = "/tmp"; terminal_su = "${pkgs.sudo}/bin/sudo"; graphical_su = "${pkgs.gksu}/bin/gksu"; }; example = literalExample ''{ tmp_dir = "/tmp"; terminal_su = "''${pkgs.sudo}/bin/sudo"; graphical_su = "''${pkgs.gksu}/bin/gksu"; }''; description = '' The system-wide spacefm configuration. Parameters to be written to /etc/spacefm/spacefm.conf. Refer to the relevant entry in the SpaceFM manual. ''; }; }; }; ###### implementation config = mkIf cfg.enable { environment.systemPackages = [ pkgs.spaceFM ]; environment.etc."spacefm/spacefm.conf".text = concatStrings (mapAttrsToList (n: v: "${n}=${toString v}\n") cfg.settings); }; }