aboutsummaryrefslogtreecommitdiff
path: root/programs/colima.nix
diff options
context:
space:
mode:
authorChristian Segundo2024-02-24 11:59:44 +0100
committerChristian Segundo2024-02-24 12:24:35 +0100
commit5c765e068bf16ca063b9a16f5c1e8ba996d07426 (patch)
tree7d66ae5b65587b1dc806e90f0a01286f8c619b1c /programs/colima.nix
parent08a637a6aa6bc856eadb73b6754af12a9b899c2d (diff)
downloadhm-extra-5c765e068bf16ca063b9a16f5c1e8ba996d07426.tar.gz
Add Colima and Docker
Diffstat (limited to 'programs/colima.nix')
-rw-r--r--programs/colima.nix53
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
+ '';
+ };
+}