aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/virtualisation/google-compute-image.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/virtualisation/google-compute-image.nix')
-rw-r--r--nixpkgs/nixos/modules/virtualisation/google-compute-image.nix61
1 files changed, 61 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/virtualisation/google-compute-image.nix b/nixpkgs/nixos/modules/virtualisation/google-compute-image.nix
new file mode 100644
index 00000000000..d172ae38fdc
--- /dev/null
+++ b/nixpkgs/nixos/modules/virtualisation/google-compute-image.nix
@@ -0,0 +1,61 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+let
+ cfg = config.virtualisation.googleComputeImage;
+ defaultConfigFile = pkgs.writeText "configuration.nix" ''
+ { ... }:
+ {
+ imports = [
+ <nixpkgs/nixos/modules/virtualisation/google-compute-image.nix>
+ ];
+ }
+ '';
+in
+{
+
+ imports = [ ./google-compute-config.nix ];
+
+ options = {
+ virtualisation.googleComputeImage.diskSize = mkOption {
+ type = with types; int;
+ default = 1536;
+ description = ''
+ Size of disk image. Unit is MB.
+ '';
+ };
+
+ virtualisation.googleComputeImage.configFile = mkOption {
+ type = with types; nullOr str;
+ default = null;
+ description = ''
+ A path to a configuration file which will be placed at `/etc/nixos/configuration.nix`
+ and be used when switching to a new configuration.
+ If set to `null`, a default configuration is used, where the only import is
+ `<nixpkgs/nixos/modules/virtualisation/google-compute-image.nix>`.
+ '';
+ };
+ };
+
+ #### implementation
+ config = {
+
+ system.build.googleComputeImage = import ../../lib/make-disk-image.nix {
+ name = "google-compute-image";
+ postVM = ''
+ PATH=$PATH:${with pkgs; stdenv.lib.makeBinPath [ gnutar gzip ]}
+ pushd $out
+ mv $diskImage disk.raw
+ tar -Szcf nixos-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.raw.tar.gz disk.raw
+ rm $out/disk.raw
+ popd
+ '';
+ format = "raw";
+ configFile = if cfg.configFile == null then defaultConfigFile else cfg.configFile;
+ inherit (cfg) diskSize;
+ inherit config lib pkgs;
+ };
+
+ };
+
+}