From deb28cf0b1af905f007a9219e1e11da6859faede Mon Sep 17 00:00:00 2001 From: Jaka Hudoklin Date: Thu, 11 Dec 2014 22:58:17 +0100 Subject: nixos: container tarball release - Create container nixos profile - Create lxc-container nixos config using container nixos profile - Docker nixos image, use nixos profile for its base config --- nixos/modules/virtualisation/docker-image.nix | 60 +++------------------------ 1 file changed, 6 insertions(+), 54 deletions(-) (limited to 'nixos/modules/virtualisation/docker-image.nix') diff --git a/nixos/modules/virtualisation/docker-image.nix b/nixos/modules/virtualisation/docker-image.nix index cabb1712b6c0..0195ca5c6dce 100644 --- a/nixos/modules/virtualisation/docker-image.nix +++ b/nixos/modules/virtualisation/docker-image.nix @@ -1,67 +1,19 @@ -{ config, lib, pkgs, ... }: +{ config, pkgs, ... }: -with lib; - -let - pkgs2storeContents = l : map (x: { object = x; symlink = "none"; }) l; - -in { - # Create the tarball - system.build.dockerImage = import ../../lib/make-system-tarball.nix { - inherit (pkgs) stdenv perl xz pathsFromGraph; - - contents = []; - extraArgs = "--owner=0"; - storeContents = [ - { object = config.system.build.toplevel + "/init"; - symlink = "/bin/init"; - } - ] ++ (pkgs2storeContents [ pkgs.stdenv ]); - }; +{ + imports = [ + ../profiles/container.nix + ]; boot.postBootCommands = '' - # After booting, register the contents of the Nix store in the Nix - # database. - if [ -f /nix-path-registration ]; then - ${config.nix.package}/bin/nix-store --load-db < /nix-path-registration && - rm /nix-path-registration - fi - - # nixos-rebuild also requires a "system" profile and an - # /etc/NIXOS tag. - touch /etc/NIXOS - ${config.nix.package}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system - # Set virtualisation to docker - echo "docker" > /run/systemd/container + echo "docker" > /run/systemd/container ''; - - # Docker image config. - imports = [ - ../installer/cd-dvd/channel.nix - ../profiles/minimal.nix - ../profiles/clone-config.nix - ]; - - boot.isContainer = true; - # Iptables do not work in Docker. networking.firewall.enable = false; - services.openssh.enable = true; - # Socket activated ssh presents problem in Docker. services.openssh.startWhenNeeded = false; - - # Allow the user to login as root without password. - users.extraUsers.root.initialHashedPassword = mkOverride 150 ""; - - # Some more help text. - services.mingetty.helpLine = - '' - - Log in as "root" with an empty password. - ''; } -- cgit 1.4.1