From 27993a5f78682b605ca80b28cf3fd2d471e9aa96 Mon Sep 17 00:00:00 2001 From: Chris Farmiloe Date: Sat, 1 Feb 2014 20:04:09 +0000 Subject: [PATCH] use custom nixpkgs and fix virtualbox --- keys/install.key | 27 ----------------- keys/install.key.pub | 1 - keys/vagrant.key | 27 +++++++++++++++++ keys/vagrant.pub | 1 + nixos/basic.nix | 34 --------------------- nixos/configuration.nix | 62 +++++++++----------------------------- nixos/guest-virtualbox.nix | 19 ++++++++++++ nixos/sdk.nix | 5 --- nixos/vagrant.nix | 39 ++++++++++++++++++++++++ scripts/postinstall.sh | 4 +-- template.json | 15 ++++----- 11 files changed, 107 insertions(+), 127 deletions(-) delete mode 100644 keys/install.key delete mode 100644 keys/install.key.pub create mode 100644 keys/vagrant.key create mode 100644 keys/vagrant.pub delete mode 100644 nixos/basic.nix create mode 100644 nixos/guest-virtualbox.nix delete mode 100644 nixos/sdk.nix create mode 100644 nixos/vagrant.nix diff --git a/keys/install.key b/keys/install.key deleted file mode 100644 index 6e9cddd..0000000 --- a/keys/install.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAr2QdWgfsKKXCPIjrPHZ0YRzsqEcIjj2Apg62qylsh4DPZ2tw -XV3mtJVj9QchOHoeDiD1l4jUeebmijkYGCi/NkiO3pl6mM6LvVhfWSaCu3tlEzwI -XLxLR5W+wGgUs+Tkxd3QTLuHCCKwu9mxH6luoH5iNuZ9ZcfP131DEX6xLIOKjenr -NbIb8famtiF4GhzjeQ/hTYCQk5vYxcI1+O5UOV3eyjVqo0b4WugdNMZERT5ZwyN2 -rKWA1FumngCNsMh1demYj+ii/lxn6scOBHy9uTyLWrTt/H2U117XcK0jrGLSQTnY -Jqu1vlr/0Vp0xQgemPHZftm5OZPvVvwYWprsYwIDAQABAoIBAQCGMuMmfQNcgqAh -M15ScAxSNhB6HYfVVge2h3GLe3GYKJ4JcrKSLgQVTm0iEaeAkCepBd0EamSxNVRW -lKLz8VGFFnWCqwqcGwXfBdxG2WmUTDElS3zWgBhVmKVQkRKuJshJAZSc8au7NNfn -lASrxjdoQ+ugODHgi8djCWwk2bx04pexVh6k3iMtzQ3kF5aureh3PdTVqudpwGPy -BuRJeMSLCrYvJtJayoYoV/i4NpLYmXHCpGlZ2R+Ig+JdAX6C6Nf3vBrnyEksV/Rc -5ls2zN5bprJi5ESImQTAuweJUo3SvyWQU/4TtOu+taYMLgo9UBdSr4+g08fY4kiO -aITPwYpBAoGBAOfNfaa3K2f+pYztWD13dNq/M9ljl7oLEU7JT/Ft1JhF8578X5nc -7NGyQyWGMytZUQE7M7mnCJ0W1jLtoL9xrUap757eEQ4vHoOAFlOCfq3ccjjeICAr -WGe1ccZgV/RL8vtYR1wTBEAjcefk/eBMXkf0+8Al2hk9OdRdBq/ivcEDAoGBAMGz -H/XWrHC3IWY73rka4XYw2t8kHXzLxxAJRC56Ew0o/3PXjOU7ue9YO1iGyx3JNIky -yTrbyeZxXCBADjojPDBCTzVcFDdGKAsj8akzS6EmB3eJgmcV+HvPWcKPNjIfLBY8 -ysY/H/hm8Ahbwa0OYG7FdQSFhiIX5iDf3ZdaWVkhAoGAVrdMC0M4zMW5nvfna881 -euPOfMPCLgoX5nZvHq1su65njhFxnjjEq0nZzr7eg5f9Ms238vrmwQWbCiBVY2ke -XnISP0dp7/l2m9EeCQ2nYFk4rceDEyXEA8AgGQtPvAdxlc+Xmn1OuMPJx+ulgfRv -zNF8IIzIg2qhKK3IY6IaRIsCgYAKpuMXDdslx6xahuhUnZnQehdPNhk5B6vGwfux -4pyxmJOTt0LUSFiNRPjegWsiFDKDaPuP9Q5BUfKTA3LE17MzpDHe6VVjRMRm+G8N -svhxwDmg5Tr6mEa16E0zWdTNJNGz11v/UvFbI64Hh6Q69BNxhAJPYVhi/5V0MVtq -O1m2gQKBgQDVip9tC4WVD9H342Ijf9FnUrXtdhTrceo6vPdYpaEkWfmW8+T7v4W7 -qzgyMseGPleh2jNID7xLLLJLXVJ4Whcg5PDWCYu14bs2mxm29pmqyZsLMPY512NM -10i562nONoR+rvOUQCBF1omv/JHB4FhHSQasSrnS0eZhyuaVRwVfTw== ------END RSA PRIVATE KEY----- diff --git a/keys/install.key.pub b/keys/install.key.pub deleted file mode 100644 index d09c34e..0000000 --- a/keys/install.key.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvZB1aB+wopcI8iOs8dnRhHOyoRwiOPYCmDrarKWyHgM9na3BdXea0lWP1ByE4eh4OIPWXiNR55uaKORgYKL82SI7emXqYzou9WF9ZJoK7e2UTPAhcvEtHlb7AaBSz5OTF3dBMu4cIIrC72bEfqW6gfmI25n1lx8/XfUMRfrEsg4qN6es1shvx9qa2IXgaHON5D+FNgJCTm9jFwjX47lQ5Xd7KNWqjRvha6B00xkRFPlnDI3aspYDUW6aeAI2wyHV16ZiP6KL+XGfqxw4EfL25PItatO38fZTXXtdwrSOsYtJBOdgmq7W+Wv/RWnTFCB6Y8dl+2bk5k+9W/Bhamuxj public@installkey diff --git a/keys/vagrant.key b/keys/vagrant.key new file mode 100644 index 0000000..7cf1a37 --- /dev/null +++ b/keys/vagrant.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI +w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP +kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2 +hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO +Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW +yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd +ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1 +Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf +TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK +iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A +sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf +4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP +cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk +EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN +CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX +3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG +YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj +3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+ +dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz +6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC +P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF +llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ +kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH ++vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ +NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/keys/vagrant.pub b/keys/vagrant.pub new file mode 100644 index 0000000..e026dfe --- /dev/null +++ b/keys/vagrant.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key \ No newline at end of file diff --git a/nixos/basic.nix b/nixos/basic.nix deleted file mode 100644 index 6f9312b..0000000 --- a/nixos/basic.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ config, pkgs, ... }: - -# -# This file is only used for the inital install. It is a bare-bones -# system configuration with just grub and openssh. -# -# This file should be removed by the postinstall scripts. -# - -{ - imports =[ ./hardware-configuration.nix ]; - - # Use the GRUB 2 boot loader. - boot.loader.grub.enable = true; - boot.loader.grub.version = 2; - boot.loader.grub.device = "/dev/sda"; - - # hostname - networking.hostName = "CycleSDK"; - - # Enable the OpenSSH daemon. - services.openssh.enable = true; - services.openssh.permitRootLogin = "yes"; - users.extraUsers.root.openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvZB1aB+wopcI8iOs8dnRhHOyoRwiOPYCmDrarKWyHgM9na3BdXea0lWP1ByE4eh4OIPWXiNR55uaKORgYKL82SI7emXqYzou9WF9ZJoK7e2UTPAhcvEtHlb7AaBSz5OTF3dBMu4cIIrC72bEfqW6gfmI25n1lx8/XfUMRfrEsg4qN6es1shvx9qa2IXgaHON5D+FNgJCTm9jFwjX47lQ5Xd7KNWqjRvha6B00xkRFPlnDI3aspYDUW6aeAI2wyHV16ZiP6KL+XGfqxw4EfL25PItatO38fZTXXtdwrSOsYtJBOdgmq7W+Wv/RWnTFCB6Y8dl+2bk5k+9W/Bhamuxj public@installkey" ]; - - # Enable DBus - services.dbus.enable = true; - - # Default packages - environment.systemPackages = with pkgs; [ - git - ]; - -} diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 2415568..a0e893f 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -1,60 +1,26 @@ { config, pkgs, ... }: +# +# This file should only be a list of imports managed by whichever provisioner +# is building the environment. +# +# You should not be editing this by hand. +# + { imports = [ ./hardware-configuration.nix - ./sdk.nix + ./guest.nix + ./vagrant.nix ]; - # Use the GRUB 2 boot loader. - boot.loader.grub.enable = true; - boot.loader.grub.version = 2; - boot.loader.grub.device = "/dev/sda"; + # we want our nixpkgs repo to take priority + environment.shellInit = '' + export NIX_PATH='nixpkgs=/etc/nixos/nixpkgs:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels/nixos' + ''; - # hostname - networking.hostName = "CycleSDK"; - - # Enable the OpenSSH daemon. - services.openssh.enable = true; - - # Virtualbox guest - services.virtualbox.enable = true; - - # Enable DBus - services.dbus.enable = true; - - - # Default packages - environment.systemPackages = with pkgs; [ + environment.systemPackages = with pkgs; [ git ]; - # Creates a "vagrant" users with password-less sudo access - users = { - extraGroups = [ { name = "vagrant"; } { name = "vboxsf"; } ]; - extraUsers = [ { - description = "Vagrant User"; - name = "vagrant"; - group = "vagrant"; - extraGroups = [ "users" "vboxsf" "wheel" ]; - password = "vagrant"; - home = "/home/vagrant"; - createHome = true; - useDefaultShell = true; - openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key" - ]; - } ]; - }; - - security.sudo.configFile = '' - Defaults:root,%wheel env_keep+=LOCALE_ARCHIVE - Defaults:root,%wheel env_keep+=NIX_PATH - Defaults:root,%wheel env_keep+=TERMINFO_DIRS - Defaults env_keep+=SSH_AUTH_SOCK - Defaults lecture = never - root ALL=(ALL) SETENV: ALL - %wheel ALL=(ALL) NOPASSWD: ALL, SETENV: ALL - ''; - } diff --git a/nixos/guest-virtualbox.nix b/nixos/guest-virtualbox.nix new file mode 100644 index 0000000..c08c1cd --- /dev/null +++ b/nixos/guest-virtualbox.nix @@ -0,0 +1,19 @@ +{ config, pkgs, ... }: + +# +# This file contains configuration specific to running OS as a virtualbox guest. +# + +{ + + # Use the GRUB 2 boot loader. + boot.loader.grub.enable = true; + boot.loader.grub.version = 2; + boot.loader.grub.device = "/dev/sda"; + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + services.openssh.permitRootLogin = "yes"; + users.extraUsers.root.openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key" ]; + +} diff --git a/nixos/sdk.nix b/nixos/sdk.nix deleted file mode 100644 index 5d9daf2..0000000 --- a/nixos/sdk.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ config, pkgs, ... }: - -{ - # add sdk configure here -} \ No newline at end of file diff --git a/nixos/vagrant.nix b/nixos/vagrant.nix new file mode 100644 index 0000000..9911101 --- /dev/null +++ b/nixos/vagrant.nix @@ -0,0 +1,39 @@ +{ config, pkgs, ... }: + +# +# This file configures the OS for use with vagrant by setting up the +# vagrant user, keys etc. +# + +{ + + # Creates a "vagrant" users with password-less sudo access + users = { + extraGroups = [ { name = "vagrant"; } { name = "vboxsf"; } ]; + extraUsers = [ { + description = "Vagrant User"; + name = "vagrant"; + group = "vagrant"; + extraGroups = [ "users" "vboxsf" "wheel" ]; + password = "vagrant"; + home = "/home/vagrant"; + createHome = true; + useDefaultShell = true; + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key" + ]; + } ]; + }; + + security.sudo.wheelNeedsPassword = false; + security.sudo.configFile = '' + Defaults:root,%wheel env_keep+=LOCALE_ARCHIVE + Defaults:root,%wheel env_keep+=NIX_PATH + Defaults:root,%wheel env_keep+=TERMINFO_DIRS + Defaults env_keep+=SSH_AUTH_SOCK + Defaults lecture = never + root ALL=(ALL) SETENV: ALL + %wheel ALL=(ALL) NOPASSWD: ALL, SETENV: ALL + ''; + +} diff --git a/scripts/postinstall.sh b/scripts/postinstall.sh index efd0d4f..ddca1c8 100755 --- a/scripts/postinstall.sh +++ b/scripts/postinstall.sh @@ -2,11 +2,9 @@ set -e -# Switch to unstable channel +# rebuild (which should now use our nixpkgs) nix-channel --remove nixos nix-channel --add http://nixos.org/channels/nixos-unstable nixos - -# Update and initialize our new configuration nixos-rebuild switch --upgrade # Cleanup any previous generations and delete old packa diff --git a/template.json b/template.json index 05d2fd6..c5337bb 100644 --- a/template.json +++ b/template.json @@ -16,8 +16,10 @@ "mkfs.ext4 -j -L nixos /dev/sda1", "mount LABEL=nixos /mnt", "nixos-generate-config --root /mnt", - "curl http://{{ .HTTPIP }}:{{ .HTTPPort }}/basic.nix > /mnt/etc/nixos/configuration.nix", - "nixos-install && reboot" + "curl http://{{ .HTTPIP }}:{{ .HTTPPort }}/configuration.nix > /mnt/etc/nixos/configuration.nix", + "curl http://{{ .HTTPIP }}:{{ .HTTPPort }}/guest-virtualbox.nix > /mnt/etc/nixos/guest.nix", + "curl http://{{ .HTTPIP }}:{{ .HTTPPort }}/vagrant.nix > /mnt/etc/nixos/vagrant.nix", + "nix-env -i git && (cd /mnt/etc/nixos && git clone git://github.com/oxdi/nixpkgs.git) && nixos-install && reboot" ], "guest_additions_mode": "disable", "guest_os_type": "Linux_64", @@ -27,8 +29,8 @@ "iso_url": "http://releases.nixos.org/nixos/unstable/nixos-14.02pre38596.1dd0e05/nixos-minimal-14.02pre38596.1dd0e05-x86_64-linux.iso", "shutdown_command": "sudo shutdown -h now", "ssh_username": "root", - "ssh_key_path": "keys/install.key", - "ssh_wait_timeout": "10m", + "ssh_key_path": "keys/vagrant.key", + "ssh_wait_timeout": "20m", "virtualbox_version_file": ".vbox_version", "vboxmanage": [ ["modifyvm", "{{.Name}}", "--memory", "2048"], @@ -37,11 +39,6 @@ } ], "provisioners": [ - { - "type": "file", - "source": "nixos/", - "destination": "/etc/nixos" - }, { "type": "shell", "execute_command": "sudo sh '{{.Path}}'",