When your NixOS store outgrows you...
I’m running around on TOA2017 and I just did something stupid. It all started with me being in the process of installing all of the tooling necessary to deal with the Estonian digital bureaucracy from my NixOS :snowflake: machine…
Psyched! 😝😆 That moment you decide light may be a good idea and find out the lamps 🛋️ have no bulbs💡@TOABerlin @99chairs #TOA17 pic.twitter.com/sTXs5O81cJ
— David Asabina (@vidbina) July 13, 2017
After noticing that I could build chrome with WideVine support, which I needed anyways for Netflix :unamused: I managed to trigger the most rigorous build on my nix setup to date. DAMN.
Apparently, WideVine support on Nix requires a lot of shit to be pulled and compiled from scratch. So much so that a 40 gig partition with about 20 percent of free space will not suffice to pull you through the experience.
So what happens when NixOS runs on a box without any storage left on the
/
partition? It chokes :angry:. Getting past the display manager has been
one of my failings over the past hours. Good thing that I always walk with
a bootable NixOS stick for exactly these occassions.
Fortunately enough, I had anticipated the potential need to do something rather rigorous to my machine, which prompted me to keep the user directory safely on a seperate partition allowing me to change my OS without risking my files :wink:.
Let’s run through the circus :snowflake:
The instructions on the NixOS page are pretty straightforward when it comes to partitioning. I will not provide any real help here since gparted makes creating, removing and modifying partitions a breeze.
nix-shell -p gparted
gparted
It’s my LVM and LUKS setup that required a bit more thought. I had formerly created a volume group with two logical volumes – a 40 gig btrfs volume and a 10 gig swap volume. With both volumes mounted into the system I had to
- reconfigure Nix to boot without the swap volume
- reboot to system such that the swap volume is not utilised
- remove the swap volume
- resize the root volume to fill the entire drive
- resize the btrfs partition to utilize the full size of the volume
TL;DR
So Tech Open Air has been pretty cool so far, I’ve
- played around with tools for building chatbots (wasn’t really impressive, anyways I learned something there)
- witnessed a classical mini concert mixed with a perfume experience that was quite meditative,
- learned about another innovation in mobility that rises from inventive minds in Karlsruhe
- got some inside scoop and lessons from a bunch of cool people including
- Gadi from NewDealDesign (one of the bright minds behind Fitbit),
- Ryan from Floodgate Fund (one of the bright minds behind Beats by Dre),
- a couple of professors working on some cool interactive work-out setups backed by the Max-Planck Institute and
- a plethora of AI-heads working on a number of different problems.
Meanwhile I’m dealing with my little machine fuck-up :rage:
Great talks from the makers of Fitbit and Beats by Dre, cool art experiences, chats about politics, AI and an army of cool folks. 🤘 #TOA17 pic.twitter.com/ALWkjZNQbh
— David Asabina (@vidbina) July 13, 2017
Basically /etc/nixos/hardware-configuration.nix contains a listing of the disk configuration that is currently in effect. Since I had another swap partition taking up the space that I needed to expand my logical volume to accomodate my growing needs, I I needed to remove the line referencing the device that bears the uuid to the LVM mapping for my swap drive in order to avoid mounting it at boot :wink:.
In my case realpath /dev/disk/by-uuid/UUID_OF_SWAP_B
pointed to /dev/dm-N
which is the path for a mapped device so out it went.
swapDevices = [
{ device = "/dev/disk/by-uuid/UUID_OF SWAP_A"; }
# { device = "/dev/disk/by-uuid/UUID_OF_SWAP_B"; }
];
After a reboot, I was able to remove the swap partition with
sudo lvremove /dev/vg/swap
and subsequently extend the logical volume using
sudo lvextend -l 100%FREE /dev/vg/root
That is all :wink: and all done within a few minutes.
After that I proceeded to nixos-rebuild test
. The google-chrome
package with
WideVine is still building. A full day of occassionally plugging in to build has
not been enough :hourglass_flowing_sand:.
It’s about time to leave the premises. Something with a raft is next :rowboat: :metal:.
So I’ll sudo systemctl hibernate
and continue this busy work later… Well busy-work
for the machine… I basically just read papers, chat with cool people including my
Startupbus family and of course… chill :grin:
Debugging :frown:
🛳@TOABerlin in a 🌰shell : #deeplearning for #bots, @Google #coffee @ClubMate_UK #tech #android 👓#AI #building @Crowdcube #product ON A BOAT pic.twitter.com/a9j9dSRYzQ
— mahoney turnbull 马甜甜 (@mahoneyjkt) July 13, 2017
Learnings
- install your home directory to a seperate partition… you’ll be glad you did someday
- do encrypt your :shit: (just because…)
- use LVM… It’s convenient to be able to stitch LV’s together if you ever run out of space :wink:
- read up on how to clean your Nix store