Skip to content

Instantly share code, notes, and snippets.

@ikidd
Last active December 6, 2018 20:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ikidd/ff2d2d33fa5ff877f44c4df5f33c229c to your computer and use it in GitHub Desktop.
Save ikidd/ff2d2d33fa5ff877f44c4df5f33c229c to your computer and use it in GitHub Desktop.
NixOS on ZFS: not mounting on reboot
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Use the GRUB 2 boot loader.
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
# boot.loader.grub.efiSupport = true;
# boot.loader.grub.efiInstallAsRemovable = true;
# boot.loader.efi.efiSysMountPoint = "/boot/efi";
# Define on which hard drive you want to install Grub.
boot.loader.grub.devices = ["/dev/vda" "/dev/vdb"]; # or "nodev" for efi only
boot.supportedFilesystems = ["zfs"];
boot.zfs.enableUnstable = true;
# Load additional hardware stuff
hardware = {
# Hardware settings
cpu.intel.updateMicrocode = true;
enableAllFirmware = true;
};
networking.hostName = "nixos"; # Define your hostname.
networking.hostId = "8425e349";
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
services.dbus.enable = true;
nixpkgs.config.allowUnfree = true;
# Select internationalisation properties.
i18n = {
consoleFont = "Lat2-Terminus16";
consoleKeyMap = "us";
defaultLocale = "en_US.UTF-8";
};
# Set your time zone.
time.timeZone = "Americas/Denver";
# Enable the X11 windowing system.
services.xserver = {
enable = true;
#videoDrivers = [ "intel" ];
layout = "us";
#xkbOptions = "eurosign:e";
#synaptics = {
# enable = true;
#};
# Enable the KDE Desktop Environment.
displayManager.sddm = {
enable = true;
# autoLogin = {
# enable = true;
# user = "${mySecrets.user}";
# };
};
desktopManager.plasma5.enable = true;
};
# Use KDE5 unstable
nixpkgs.config.packageOverrides = super: let self = super.pkgs; in {
plasma5_stable = self.plasma5_latest;
kdeApps_stable = self.kdeApps_latest;
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
wget
vim
curl
firefox
vlc
partition-manager
wirelesstools
ark
dolphin
kdeFrameworks.kdesu
kate
okular
oxygen
oxygen-icons5
oxygenfonts
plasma-desktop
plasma-nm
plasma-workspace
spectacle
kdeApplications.kdialog
manpages
mkpasswd
nox
qt5Full
smplayer
spice
sudo
];
security.sudo = {
enable = true;
wheelNeedsPassword = true;
};
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = { enable = true; enableSSHSupport = true; };
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
networking.firewall.enable = false;
networking.networkmanager.enable=true;
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# sound.enable = true;
# hardware.pulseaudio.enable = true;
# Enable touchpad support.
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with ‘passwd’.
# users.users.guest = {
# isNormalUser = true;
# uid = 1000;
# };
users.extraUsers.ikidd = {
isNormalUser = true;
extraGroups = ["wheel" "networkmanager"];
};
# This value determines the NixOS release with which your system is to be
# compatible, in order to avoid breaking some software such as database
# servers. You should change this only after NixOS release notes say you
# should.
system.stateVersion = "18.09"; # Did you read the comment?
}
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, ... }:
{
imports =
[ <nixpkgs/nixos/modules/profiles/qemu-guest.nix>
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk" ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "rpool/root/nixos";
fsType = "zfs";
};
fileSystems."/home" =
{ device = "rpool/home";
fsType = "zfs";
};
fileSystems."/boot" =
{ device = "/dev/md127";
fsType = "ext4";
};
swapDevices = [ ];
nix.maxJobs = lib.mkDefault 2;
}
[root@nixos:~]# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 4.80G 18.3G 96K /rpool
rpool/home 96K 18.3G 96K legacy
rpool/root 4.80G 18.3G 96K none
rpool/root/nixos 4.80G 18.3G 4.80G legacy
[root@nixos:~]# zpool status
pool: rpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
vda2 ONLINE 0 0 0
vdb2 ONLINE 0 0 0
errors: No known data errors
[root@nixos:~]# cat /mnt/etc/hostid | od -A none -t x4
8425e349
[root@nixos:~]# cat /etc/hostid | od -A none -t x4
8425e349
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment