From 618144c7ac6e5546158b3d69ac6b7480f4c90aaa Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Sat, 24 Aug 2024 10:33:53 +0200 Subject: [PATCH] Add docker --- hosts/voyager/default.nix | 2 ++ options/system/default.nix | 14 +++++++++++--- system/shared/services/default.nix | 1 + system/shared/services/docker.nix | 16 ++++++++++++++++ 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 system/shared/services/docker.nix diff --git a/hosts/voyager/default.nix b/hosts/voyager/default.nix index b05972d..1fd0ade 100644 --- a/hosts/voyager/default.nix +++ b/hosts/voyager/default.nix @@ -37,6 +37,7 @@ username = "itsdrike"; sound.enable = true; + docker.enable = true; impermanence = { root = { @@ -48,6 +49,7 @@ extraDirectories = [ "/var/log" + "/var/lib/docker" ]; }; diff --git a/options/system/default.nix b/options/system/default.nix index 2b66816..37cc37a 100644 --- a/options/system/default.nix +++ b/options/system/default.nix @@ -1,6 +1,5 @@ -{lib, ...}: -with lib; let - inherit (lib) mkOption; +{lib, ...}: let + inherit (lib) mkOption mkEnableOption types; in { imports = [ ./boot @@ -21,5 +20,14 @@ in { sound = { enable = mkEnableOption "sound related programs and audio-dependent programs"; }; + + docker = { + enable = mkEnableOption "docker virtualisation platform"; + data-root = mkOption { + type = types.str; + description = "Path to the directory where docker data should be stored"; + default = "/var/lib/docker"; + }; + }; }; } diff --git a/system/shared/services/default.nix b/system/shared/services/default.nix index b0a0fe2..2b4d446 100644 --- a/system/shared/services/default.nix +++ b/system/shared/services/default.nix @@ -7,5 +7,6 @@ _: { ./thermald.nix ./journald.nix ./fstrim.nix + ./docker.nix ]; } diff --git a/system/shared/services/docker.nix b/system/shared/services/docker.nix new file mode 100644 index 0000000..1873a13 --- /dev/null +++ b/system/shared/services/docker.nix @@ -0,0 +1,16 @@ +{ + lib, + config, + ... +}: let + cfg = config.myOptions.system.docker; +in { + config = lib.mkIf cfg.enable { + virtualisation.docker = { + enable = true; + storageDriver = "btrfs"; + + daemon.settings.data-root = cfg.data-root; + }; + }; +}