GitHub PushEvent at 2014-02-28 06:59:46
Repository: nixpkgs
Actor: vcunat
Payload: {"shas":[["0d4a9e3aa68da5f82fff724baee9168b50a485c8","2ad57049e5a4c55c398e1a2fc9bf3e78fb5d7c3a@shealevy.com","Allow httpd subservices to set the document root\n\nOnly the main service OR one of the subservices can set the document\nroot. This is used by mediawiki when it is hosted at the root of the\nvhost.","Shea Levy",false],["793328e1eee25513c974fc491af5e32fc38f40d8","2ad57049e5a4c55c398e1a2fc9bf3e78fb5d7c3a@shealevy.com","Mediawiki: Add some needed rewrites","Shea Levy",false],["1f42fa7cc0bfd89975ba3193414fb1caed36e76f","2ad57049e5a4c55c398e1a2fc9bf3e78fb5d7c3a@shealevy.com","Add hspec-expectations-lens haskell package","Shea Levy",false],["9ef06bd3871c9452badb6f1c71f1609c6787e84b","2ad57049e5a4c55c398e1a2fc9bf3e78fb5d7c3a@shealevy.com","Add libjenkins haskell package","Shea Levy",false],["c11f32acdf736614b5df7a76b93c3b690038df25","2ad57049e5a4c55c398e1a2fc9bf3e78fb5d7c3a@shealevy.com","scotty: jailbreak\n\nNeeded when overriding aeson to the new version, which in turn is needed\nif using scotty on a project that also uses lens 4.0.","Shea Levy",false],["276b72fb93d60ae0e59088ea0e0029da87e6f31c","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm: Introduce new Windows VM installer for Cygwin.\n\nAfter quite a lot of fighting against Windows and its various\nlimitations, this new is the base architecture for installing and\naccessing the Windows VM and thus the Cygwin environment inside it:\n\n                .------------.\n          .---> | vde_switch |\n          |     `-[#]----[#]-'\n          |        |      |\n         ,'       .'      `---.___\n       ,'    192.168.0.1          `.\n       |          |            192.168.0.2\n      ,'    _____[#]____           |\n    ,'     |            |   ______[#]______\n    |      | Windows VM |  |    .--'       |\n    |      |____________|  |    |          |\n    |             |  /|\\   |  .-|          |\n    | .---------. |   |    |  | |          |\n  .-|-| manager |-'   |    |  | |          |\n  | | `---------'     |    |  | |          |\n  | |                 |    |  | |          |\n  | | .-------------. |    | Samba         |\n  | | | BOOTSTRAP   | |    |  | |          |\n  | | |-------------| |    |  | |   .------|\n  | `-| spawn VMs   |-+--> |  | `---| xchg | <-------.\n  |   |-------------|      |  | .---^------|         |\n  |   | install     |---.  |  `-| nixstore | <----.  |\n  |   |-------------|   |  |    `----------|      |  |\n  |---| suspend VM  |   |  |               |      |  |\n  |   `------.------'   |  | Controller VM |      |  |\n  |          |          |  |_______________|      |  |\n  |       .--'          |         /|\\            VirtIO\n  |       |           __|__________:____________  |  |\n  |      \\|/         |  |          `.           | |  |\n  | .------------.   |  |           :           | |  |\n  | | REAL BUILD |   |  |   .-------^--------.  | |  |\n  | |------------|   |  `-> | serial console |  | |  |\n  `-| revive VM  |   |      `----------------'  | |  |\n    |------------|   |------------.             | |  |\n    | build      |-->| /nix/store >>>-----------|-'  |\n    |------------|   |------------|             |    |\n    | collect    |<--| xchg       >>>-----------|----'\n    `-----.------'   |------------'             |\n          |          |                          |\n         \\|/         |    |  |  __   ___  |     |\n                     |    |--| |  | (__  -|-    |\n    F I N I S H E D  |    |  | |__| ___)  |     |\n                     |__________________________|\n\nThis might look a bit overwhelming, but let me try to explain:\n\nWe're starting at the base derivation (\"BOOTSTRAP\" above), where we\nactually install the Cygwin envirenment. Over there we basically fire up\na vde_switch process and two virtual machines: One is the Windows\nmachine, the other is a NixOS machine, which serves as some kind of\nproxy between the host and the Windows machine.\n\nThe reason we're doing this, is because we don't have a lot of options\nfor sharing files between a stock Windows machine and the host. In\nearlier experiments, I've tried to communicate with the Windows guest by\nusing pipes and OpenSSH, but obviously this wasn't a big speed rush (or\nto say it bluntly: It was fucking slow).\n\nUsing TCP/IP directly for accessing the guest would have been another\noption, but it could lead to possible errors when the port or a range of\nports are in use at the Host system. Also, we would need to punch a hole\ninto the sandbox of the Nix builder (as it doesn't allow networking),\nwhich in turn will possibly undermine deterministic builds/runs (well,\nat least as deterministic as it can be, we're running Windows,\nremember?).\n\nSo, let's continue: The responsibility of the NixOS (controller) VM is\nto just wait until an SSH port becomes available on the Windows VM,\nwhereas the Windows VM itself is installed using an unattended\ninstallation file provided via a virtual floppy image.\n\nWith the installation of the basic Windows OS, we directly install\nCygwin and start up an OpenSSH service.\n\nAt this point the bootstrapping is almost finished and as soon as the\nport is available, the controller VM sets up Samba shares and makes it\navailable as drive letters within Windows and as bind mounts (for\nexample /nix/store) within Cygwin.\n\nFinally we're making a snapshot of the memory of the Windows VM in order\nto revive it within a few seconds when we want to build something.\n\nNow, the build process itself is fairly straightforward: Revive VM and\nbuild based on existing store derivations and collect the result _and_\nthe exit code from the xchg share/directory.\n\nConclusion: This architecture may sound a bit complicated, but we're\ntrying to achieve deterministic and reproducable builds and/or test\nruns.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["4e21215d52025be5338e89020874b5ed7c903e19","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Move the installer into install/.\n\nAt least the largest portion of the installer, because in the end we\ndon't want the installer to *actually* save the state but only prepare\nthe base image.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["9b1862ca1fad149275e4d3e9241579b9aec9b952","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Move creating SSH key into install/.\n\nThis SSH key is specifically only for accessing the installed Cygwin\nwithin the Windows VM, so we only need to expose the private key. Yes,\nyou heard right, the private key. It's not security-relevant because the\nmachine is completely read-only, only exposed to the filesystem and\nnetworking is not available.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["5105e7f0bfc3a9131df5a8f3bf4d899a01b0106b","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Update sha256 of Cygwin's setup.ini.\n\nThis is kinda stupid to do every little time the file is automatically\nregenerated upstream. But let's see how often that happens and whether\nit will become a major annoyance or not, and if yes, we might be forced\nto include it in our source tree.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["c731467e2c83f3df0b59c44575616e6241a63c7d","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Split install into several stages.\n\nThese stages are in particular:\n\n * Install of the bare Windows VM with Cygwin and shut down.\n * Boot up the same VM again without the installation media and dump the\n   VMs memory to state.gz.\n * Resume from state.gz and build whatever we want to build.\n\nEvery single stage involves a new \"controller\", which is more like an\nabstraction on the Nix side that constructs the madness described in\n276b72fb93d60ae0e59088ea0e0029da87e6f31c.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["3e91192f079c2eac4bd15d564bb2fd4702506b36","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Wait for VDE switch to startup.\n\nThis could possibly cause flapping whenever qemu is too fast in starting\nup. As we are running with the shell's -e flag, the socat check also\nensures that the VDE switch is properly started and causes the whole\nbuild to fail, should it not start up within 20 seconds.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["cfa859d79222d034a9fe493192150b80faae4ee8","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Don't init /nix/store on install.\n\nWe're going to do this during the suspendedVM phase, so we're able to\nmore easily change the shares without reinstalling the whole VM.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["aa65a7057f3abba32726ed17853090bcb86992f9","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Properly escape shell command.\n\nSecurity-wise it's not a big issue because we're still sandboxed, but I\nreally don't want to write something like \\\\\\\\\\\\\\\\192.168.0.2\\\\\\\\share\nin order to set up network shares.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["0ce1fd07fe7e59115af60dd33a9e668cbb1ebd4c","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Reintroduce setting up /nix/store.\n\nNow we're doing this at the point where we're saving the VM state.\nUnfortunately it's not quite right, because the controller VM is shut\ndown _before_ we're saving the state, so the share gets disconnected\ndespite autodisconnect being deactivated during setup.\n\nWe can get around this issue by finally introducing the xchg share,\nwhich is the last item to be implemented before we can merge to master.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["fedf13e6cfb94bad00df71aba66f0b6fea233e0f","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Implement and use \"xchg\" share.\n\nThis now finally introduces our xchg share and also uses it for\nexchanging state while suspending a VM. However, accessing the _real_\nNix store still isn't possible because we're shadowing the directory in\nthe initrd.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["a1d7974acd1a6c7d527dd0adc9fe711983990074","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Remove Samba from installMode.\n\nThis should trim down possible dependencies on the base installation and\nhereby reduce the need for reinstallation of the damn VM to only changes\nthat affect the Windows installation and the base Cygwin + OpenSSH\nsetup.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["5241bb1d5e088ec3906cbc32afcdeb68953badef","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Avoid shadowing the Nix store.\n\nThis is done by putting the non-initrd /nix/store into a subdirectory,\nwhich we then chroot to and pass along the SSH command.\n\nAlso, we now collect the exit code after the chroot command and power\noff the VM thereafter, because the store is no longer shadowed and we\nhave still access to the busybox inside the initrd.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["084238c6ec740d61f2e5f30e2c4ceb663dd1770f","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Fix perms of the Samba shares.\n\nWe now map all guest accounts to the root user, because in the end the\npermissions of the current user boil down to the build user of the Nix\nbuilder of the host. That way it's not possible to gain more permissions\nat all and just makes the VM communication a lot easier.\n\nHowever, setting \"writable\" to yes instead of \"read only\" to no doesn't\nchange anything here, I just found it to be clearer.\n\nAlso, we now no longer need to have a \"nobody\" user.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["d16dae8d3215c82070132694d82a1309d140f124","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Use &&, not set -e in runAndSuspend.\n\nWe now have proper quoting, so we no longer need the workaround using\n\"set -e\".\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false],["5258bbe4c97113dfa663a32408691fc93ee2dd9b","ee1aa092358634f9c53f01b5a783726c9e21b35a@redmoonstudios.org","vm/windows: Create fstab entries in suspended VM.\n\nCygwin initializes mounts on _every_ login via SSH and doesn't keep them\nconsistently like on Unix systems, that's why we need to also add fstab\nentries for the bind mounts to the store and xchg shares.\n\nSigned-off-by: aszlig <aszlig@redmoonstudios.org>","aszlig",false]],"size":64,"ref":"refs/heads/master","head":"5e091757657b0dea0a0988f47ad1aa45190f238d"}