Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: nixos/vagrant-virtualbox-image: init #76071

Closed
wants to merge 3 commits into from

Conversation

zimbatm
Copy link
Member

@zimbatm zimbatm commented Dec 19, 2019

Introduce a new vagrant profile

Build vagrant boxes directly out of nixos configurations instead of using packer like in nix-community/nixbox project.

This is untested for now as I don't have a virtualbox setup at the moment.

Motivation for this change
Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.
Notify maintainers

cc @

Introduce a new vagrant profile
zimbatm added a commit to zimbatm/nixos-generators that referenced this pull request Dec 19, 2019
zimbatm added a commit to zimbatm/nixos-generators that referenced this pull request Dec 19, 2019
This will ultimately replace the nix-community/nixbox project.

Change the configuration.nix to not include the installation ISO to
something like this:

```nix
{ config, lib, pkgs, modulesPath, ... }:
{
  documentation.man.enable = false;
  documentation.nixos.enable = false;
  sound.enable = false;
}
```

See nix-community/nixbox#38

Depends on NixOS/nixpkgs#76071
nixos/modules/virtualisation/vagrant-guest.nix Outdated Show resolved Hide resolved
# 4. move the ovf to the fixed location
mv *.ovf box.ovf

# TODO: fix the checksum file instead of removing it
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How is it computed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't looked into it, which is why it was easier to remove :)

Co-Authored-By: Jörg Thalheim <Mic92@users.noreply.github.com>
@stale
Copy link

stale bot commented Sep 28, 2020

Hello, I'm a bot and I thank you in the name of the community for your contributions.

Nixpkgs is a busy repository, and unfortunately sometimes PRs get left behind for too long. Nevertheless, we'd like to help committers reach the PRs that are still important. This PR has had no activity for 180 days, and so I marked it as stale, but you can rest assured it will never be closed by a non-human.

If this is still important to you and you'd like to remove the stale label, we ask that you leave a comment. Your comment can be as simple as "still important to me". But there's a bit more you can do:

If you received an approval by an unprivileged maintainer and you are just waiting for a merge, you can @ mention someone with merge permissions and ask them to help. You might be able to find someone relevant by using Git blame on the relevant files, or via GitHub's web interface. You can see if someone's a member of the nixpkgs-committers team, by hovering with the mouse over their username on the web interface, or by searching them directly on the list.

If your PR wasn't reviewed at all, it might help to find someone who's perhaps a user of the package or module you are changing, or alternatively, ask once more for a review by the maintainer of the package/module this is about. If you don't know any, you can use Git blame on the relevant files, or GitHub's web interface to find someone who touched the relevant files in the past.

If your PR has had reviews and nevertheless got stale, make sure you've responded to all of the reviewer's requests / questions. Usually when PR authors show responsibility and dedication, reviewers (privileged or not) show dedication as well. If you've pushed a change, it's possible the reviewer wasn't notified about your push via email, so you can always officially request them for a review, or just @ mention them and say you've addressed their comments.

Lastly, you can always ask for help at our Discourse Forum, or more specifically, at this thread or at #nixos' IRC channel.

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Sep 28, 2020
@nixos-discourse
Copy link

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/building-openstack-images-and-development-vms-from-a-macos-host/9522/5

@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Oct 18, 2020
@joseph-long
Copy link
Contributor

To test:

cd
git clone --depth=1 https://github.com/NixOS/nixpkgs
cd ~/nixpkgs
git fetch --depth=1 origin pull/76071/head:vagrant-virtualbox-image
git checkout vagrant-virtualbox-image
nix-env -f https://github.com/zimbatm/nixos-generators/archive/vagrant-virtualbox.tar.gz -i
cd
vim ex.nix

ex.nix:

{ config, lib, pkgs, modulesPath, ... }:
{
  documentation.man.enable = false;
  documentation.nixos.enable = false;
  sound.enable = false;
}
NIX_PATH=nixpkgs=~/nixpkgs/ nixos-generate -f vagrant-virtualbox -c ex.nix

Starting in Vagrant

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box './dwn9q0skkayiq8jmjfi8a5vdiyrs8v16-virtualbox-vagrant.box' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Box file was not detected as metadata. Adding it directly...
==> default: Adding box './dwn9q0skkayiq8jmjfi8a5vdiyrs8v16-virtualbox-vagrant.box' (v0) for provider: virtualbox
    default: Unpacking necessary files from: file:///Users/josephlong/devel/dap_infrastructure/apphost/dwn9q0skkayiq8jmjfi8a5vdiyrs8v16-virtualbox-vagrant.box
==> default: Successfully added box './dwn9q0skkayiq8jmjfi8a5vdiyrs8v16-virtualbox-vagrant.box' (v0) for 'virtualbox'!
==> default: Importing base box './dwn9q0skkayiq8jmjfi8a5vdiyrs8v16-virtualbox-vagrant.box'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: apphost_default_1603052536171_30324
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "0ada89ef-4748-4756-b3b6-b449365884eb", "--type", "headless"]

Stderr: VBoxManage: error: Implementation of the USB 2.0 controller not found!
VBoxManage: error: Because the USB 2.0 controller state is part of the saved VM state, the VM cannot be started. To fix this problem, either install the 'Oracle VM VirtualBox Extension Pack' or disable USB 2.0 support in the VM settings.
VBoxManage: error: Note! This error could also mean that an incompatible version of the 'Oracle VM VirtualBox Extension Pack' is installed (VERR_NOT_FOUND)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole

@joseph-long
Copy link
Contributor

Starts after VBoxManage modifyvm c9a1e597-123b-4fdc-998a-a6f4cca03c29 --usb off, but missing passwordless sudo.

Rebuilt with a config including security.sudo.wheelNeedsPassword = false;, applied the same modifyvm command, and successfully booted!

It's not clear to me how to modify

--usb on --usbehci on --mouse usbtablet
to share code with this target without adding (imo) unnecessary USB and audio support

@zimbatm
Copy link
Member Author

zimbatm commented Oct 19, 2020

Awesome. Do you want to take this PR to the finish line?

@joseph-long
Copy link
Contributor

My Nix-fu is weak, so I would appreciate some advice on how to make an acceptable modification to the existing virtualbox expression to make the usb and audio stuff optional. Some kind of map of options with defaults?

Alternatively, I could copy the guts of the virtualbox script into the vagrant virtualbox instead of including it. I’m worried it would be rejected for code duplication though 😄

@joseph-long joseph-long mentioned this pull request Oct 20, 2020
10 tasks
@joseph-long
Copy link
Contributor

It looks like be25539 took care of that for me. I'll update my PR to match.

@zimbatm
Copy link
Member Author

zimbatm commented Oct 20, 2020

Replaced by #101120

@zimbatm zimbatm closed this Oct 20, 2020
@zimbatm zimbatm deleted the vagant-virtualbox-image branch October 20, 2020 09:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants