diff options
Diffstat (limited to 'programs/colima.nix')
-rw-r--r-- | programs/colima.nix | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/programs/colima.nix b/programs/colima.nix new file mode 100644 index 0000000..44c86f9 --- /dev/null +++ b/programs/colima.nix @@ -0,0 +1,53 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.programs.colima; + yamlFormat = pkgs.formats.yaml { }; + settingsType = lib.types.submodule { + freeformType = yamlFormat.type; + }; +in +{ + options.programs.colima = { + enable = lib.mkEnableOption "Container runtimes on macOS"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.colima; + defaultText = lib.literalExpression "pkgs.colima"; + description = "Package providing {command}`colima`."; + }; + + settings = lib.mkOption { + type = settingsType; + default = { }; + description = + "Configuration written to {file}`$XDG_CONFIG_HOME/.colima/default/colima.yaml`."; + example = lib.literalExpression '' + { + cpu = 2; + disk = 60; + memory = 2; + }; + ''; + }; + }; + + config = + let + colimaConfig = pkgs.writeTextFile { + name = "colima.yaml"; + text = (lib.generators.toYAML { } cfg.settings); + }; + in + lib.mkIf cfg.enable { + home.packages = [ cfg.package ]; + + # because Colima writes to this file on startup + home.activation.colimaConfig = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + mkdir -p ~/.colima/default + cp -f "${colimaConfig}" ~/.colima/default/colima.yaml + chmod 644 ~/.colima/default/colima.yaml + ''; + }; +} |