Skip to content

Commit

Permalink
feat: enable KVM on Linux if available
Browse files Browse the repository at this point in the history
  • Loading branch information
sandydoo committed Nov 22, 2023
1 parent a56e3a8 commit fe19c91
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ To install Nix from any commit, go to [the corresponding installer_test action](

- `nix_path`: set `NIX_PATH` environment variable, for example `nixpkgs=channel:nixos-unstable`

- `enable_kvm`: whether to enable KVM for hardware-accelerated virtualization on Linux. Enabled by default if available.

---

## FAQ
Expand Down
5 changes: 5 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ inputs:
description: 'Additional installer flags passed to the installer script.'
nix_path:
description: 'Set NIX_PATH environment variable.'
enable_kvm:
description: 'Enable KVM for hardware-accelerated virtualization on Linux, if available.'
required: false
default: true
branding:
color: 'blue'
icon: 'sun'
Expand All @@ -26,4 +30,5 @@ runs:
INPUT_INSTALL_OPTIONS: ${{ inputs.install_options }}
INPUT_INSTALL_URL: ${{ inputs.install_url }}
INPUT_NIX_PATH: ${{ inputs.nix_path }}
INPUT_ENABLE_KVM: ${{ inputs.enable_kvm }}
GITHUB_TOKEN: ${{ github.token }}
11 changes: 11 additions & 0 deletions install-nix.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,17 @@ if nix_path="$(type -p nix)" ; then
exit
fi

if [[ ($OSTYPE =~ linux) && ($INPUT_ENABLE_KVM == 'true') ]]; then
enable_kvm() {
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-install-nix-action-kvm.rules
sudo udevadm control --reload-rules && sudo udevadm trigger --name-match=kvm
}

echo '::group::Enabling KVM support'
enable_kvm && echo 'Enabled KVM' || echo 'KVM is not available'
echo '::endgroup::'
fi

# GitHub command to put the following log messages into a group which is collapsed by default
echo "::group::Installing Nix"

Expand Down

0 comments on commit fe19c91

Please sign in to comment.