mirror of
https://github.com/elitak/nixos-infect.git
synced 2024-12-22 16:18:29 +03:00
Merge pull request #10 from obadz/swap-cleanup
Cleanup Swap files & add README.md
This commit is contained in:
commit
75342d0e38
2 changed files with 60 additions and 46 deletions
48
README.md
Normal file
48
README.md
Normal file
|
@ -0,0 +1,48 @@
|
|||
This script aims to install NixOS on Digital Ocean droplets
|
||||
(starting from one of the distros that Digital Ocean supports out of the box)
|
||||
|
||||
These are the only supported Digital Ocean images:
|
||||
|
||||
- Fedora 24 x64
|
||||
- Ubuntu 16.04 x64
|
||||
- Debian 8.5 x64
|
||||
|
||||
YMMV with any other hoster + image combination.
|
||||
|
||||
nixos-infect is so named because of the high likelihood of rendering a system
|
||||
inoperable. Use with caution and preferably only on newly-provisioned
|
||||
systems.
|
||||
|
||||
*WARNING NB*: This script wipes out the targeted host's root filesystem when it
|
||||
runs to completion. Any errors halt execution. It's advised to run with
|
||||
`bash -x` to help debug, as often a failed run leaves the system in an
|
||||
inconsistent state, requiring a rebuild (in DigitalOcean panel: Droplet
|
||||
Settings -> "Destroy" -> "Rebuild from original").
|
||||
|
||||
*TO USE:*
|
||||
- Add any custom config you want (see notes below)
|
||||
- Deploy the droplet indicated at the top of the file, enable ipv6, add your ssh key
|
||||
- cat customConfig.optional nixos-infect | ssh root@targethost
|
||||
|
||||
Alternatively, use the user data mechamism by supplying the lines between the following
|
||||
cat and EOF in the Digital Ocean Web UI (or HTTP API):
|
||||
|
||||
```yaml
|
||||
#cloud-config
|
||||
|
||||
runcmd:
|
||||
- curl https://raw.githubusercontent.com/elitak/nixos-infect/master/nixos-infect | NIX_CHANNEL=nixos-16.09 bash 2>&1 | tee /tmp/infect.log
|
||||
```
|
||||
Potential tweaks:
|
||||
- `/etc/nixos/{,hardware-}configuration.nix`: rudimentary mostly static config
|
||||
- `/etc/nixos/networking.nix`, networking settings determined at runtime tweak
|
||||
if no ipv6, different number of adapters, etc.
|
||||
|
||||
Motivation for this script: nixos-assimilate should supplant this script
|
||||
entirely, if it's ever completed. nixos-in-place was quite broken when I
|
||||
tried it, and also took a pretty janky approach that was substantially more
|
||||
complex than this (although it supported more platforms): it didn't install
|
||||
to root (/nixos instead), left dregs of the old filesystem (almost always
|
||||
unnecessary since starting from a fresh deployment), and most importantly,
|
||||
simply didn't work for me! (old system was being because grub wasnt properly
|
||||
reinstalled)
|
58
nixos-infect
58
nixos-infect
|
@ -1,49 +1,6 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
# These are the only supported Digital Ocean images:
|
||||
#
|
||||
# Fedora 24 x64
|
||||
# Ubuntu 16.04 x64
|
||||
# Debian 8.5 x64
|
||||
#
|
||||
# YMMV with any other hoster + image combination.
|
||||
|
||||
# nixos-infect is so named because of the high likelihood of rendering a system
|
||||
# inoperable. Use with caution and preferably only on newly-provisioned
|
||||
# systems.
|
||||
#
|
||||
# WARNING NB This script wipes out the targeted host's root filesystem when it
|
||||
# runs to completion. Any errors halt execution. It's advised to run with
|
||||
# `bash -x` to help debug, as often a failed run leaves the system in an
|
||||
# inconsistent state, requiring a rebuild (in DigitalOcean panel: Droplet
|
||||
# Settings -> "Destroy" -> "Rebuild from original").
|
||||
#
|
||||
# TO USE:
|
||||
# - Add any custom config you want (see notes below)
|
||||
# - Deploy the droplet indicated at the top of the file, enable ipv6, add your ssh key
|
||||
# - cat customConfig.optional nixos-infect | ssh root@targethost
|
||||
#
|
||||
# Alternatively, use the user data mechamism by supplying the following lines (without >)
|
||||
# in the Digital Ocean Web UI (or HTTP API):
|
||||
#
|
||||
# > #cloud-config
|
||||
# >
|
||||
# > runcmd:
|
||||
# > - curl https://raw.githubusercontent.com/elitak/nixos-infect/master/nixos-infect | bash 2>&1 | tee /tmp/infect.log
|
||||
#
|
||||
# Potential tweaks:
|
||||
# /etc/nixos/{,hardware-}configuration.nix : rudimentary mostly static config
|
||||
# /etc/nixos/networking.nix, networking settings determined at runtime
|
||||
# tweak if no ipv6, different number of adapters, etc.
|
||||
#
|
||||
# Motivation for this script: nixos-assimilate should supplant this script
|
||||
# entirely, if it's ever completed. nixos-in-place was quite broken when I
|
||||
# tried it, and also took a pretty janky approach that was substantially more
|
||||
# complex than this (although it supported more platforms): it didn't install
|
||||
# to root (/nixos instead), left dregs of the old filesystem (almost always
|
||||
# unnecessary since starting from a fresh deployment), and most importantly,
|
||||
# simply didn't work for me! (old system was being because grub wasnt properly
|
||||
# reinstalled)
|
||||
# More info at: https://github.com/elitak/nixos-infect
|
||||
|
||||
set -e -o pipefail
|
||||
|
||||
|
@ -145,11 +102,19 @@ EOF
|
|||
|
||||
makeSwap() {
|
||||
# TODO check currently available swapspace first
|
||||
swapFile=`mktemp`
|
||||
swapFile=`mktemp /tmp/nixos-infect.XXXXX.swp`
|
||||
dd if=/dev/zero of=$swapFile bs=1M count=$((1*1024))
|
||||
chmod 0600 $swapFile
|
||||
mkswap $swapFile
|
||||
swapon $swapFile
|
||||
swapon -v $swapFile
|
||||
}
|
||||
|
||||
removeSwap() {
|
||||
for swapFile in /tmp/nixos-infect.*.swp
|
||||
do
|
||||
swapoff -v $swapFile
|
||||
rm -vf $swapFile
|
||||
done
|
||||
}
|
||||
|
||||
prepareEnv() {
|
||||
|
@ -260,4 +225,5 @@ checkEnv
|
|||
makeConf
|
||||
makeSwap # smallest (512MB) droplet needs extra memory!
|
||||
infect
|
||||
removeSwap
|
||||
reboot
|
||||
|
|
Loading…
Reference in a new issue