tvl-depot/users/tazjin/nixos/tverskoy/default.nix
Vincent Ambo e653366153 feat(tazjin/tverskoy): Configure impermanence module
This module is responsible for mounting persistent storage into the
ephemeral root disk of this machine.

Currently only very basic configuration and data are retained, and
hopefully that won't change.

Change-Id: If800cbee60b7b3c5b8c457b9b332a0c05c33f20e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2621
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
2021-03-21 00:55:58 +00:00

220 lines
4.4 KiB
Nix

{ depot, lib, ... }:
config: let
# add google-c-style here because other machines get it from, eh,
# elsewhere.
emacs = (depot.users.tazjin.emacs.overrideEmacs(epkgs: epkgs ++ [
depot.third_party.emacsPackages.google-c-style
]));
nixpkgs = import depot.third_party.nixpkgsSrc {
config.allowUnfree = true;
};
quasselClient = depot.third_party.quassel.override {
client = true;
enableDaemon = false;
monolithic = false;
};
in lib.fix(self: {
imports = [
"${depot.third_party.impermanence}/nixos.nix"
];
boot = {
initrd.availableKernelModules = [ "nvme" "ehci_pci" "xhci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
initrd.kernelModules = [ ];
kernelModules = [ "kvm-amd" ];
extraModulePackages = [ ];
kernelPackages = nixpkgs.linuxPackages_latest;
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
};
fileSystems = {
"/" = {
device = "tmpfs";
fsType = "tmpfs";
options = [ "defaults" "size=4G" "mode=755" ];
};
"/home" = {
device = "zpool/ephemeral/home";
fsType = "zfs";
};
"/nix" = {
device = "zpool/local/nix";
fsType = "zfs";
};
"/depot" = {
device = "zpool/safe/depot";
fsType = "zfs";
};
"/persist" = {
device = "zpool/safe/persist";
fsType = "zfs";
neededForBoot = true;
};
"/boot" = {
device = "/dev/disk/by-uuid/BF4F-388B";
fsType = "vfat";
};
};
hardware = {
cpu.amd.updateMicrocode = true;
enableRedistributableFirmware = true;
bluetooth.enable = true;
bluetooth.hsphfpd.enable = true;
};
networking = {
hostName = "tverskoy";
hostId = "3c91827f";
useDHCP = false;
networkmanager.enable = true;
nameservers = [
"8.8.8.8"
"8.8.4.4"
];
};
fonts = {
fonts = with nixpkgs; [
corefonts
dejavu_fonts
jetbrains-mono
noto-fonts-cjk
noto-fonts-emoji
];
fontconfig = {
hinting.enable = true;
subpixel.lcdfilter = "light";
defaultFonts = {
monospace = [ "JetBrains Mono" ];
};
};
};
environment.persistence."/persist" = {
directories = [
"/var/log"
"/var/lib/bluetooth"
"/var/lib/systemd/coredump"
"/etc/NetworkManager/system-connections"
];
files = [
"/etc/machine-id"
];
};
security.rtkit.enable = true;
services = {
pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
# redshift.enable = true;
blueman.enable = true;
xserver = {
enable = true;
layout = "us";
xkbOptions = "caps:super";
videoDrivers = [ "amdgpu" ];
libinput.enable = true;
displayManager = {
# Give EXWM permission to control the session.
sessionCommands = "${nixpkgs.xorg.xhost}/bin/xhost +SI:localuser:$USER";
lightdm.enable = true;
# lightdm.greeters.gtk.clock-format = "%H:%M"; # TODO(tazjin): TZ?
};
windowManager.session = lib.singleton {
name = "exwm";
start = "${emacs}/bin/tazjins-emacs";
};
};
};
# Do not restart the display manager automatically
systemd.services.display-manager.restartIfChanged = lib.mkForce false;
time.timeZone = "Africa/Cairo";
users.users.tazjin = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ];
uid = 1000;
shell = nixpkgs.fish;
initialHashedPassword = "$6$d3FywUNCuZnJ4l.$ZW2ul59MLYon1v1xhC3lTJZfZ91lWW6Tpi13MpME0cJcYZNrsx7ABdgQRn.K05awruG2Y9ARAzURnmiJ31WTS1";
};
programs = {
light.enable = true;
};
environment.systemPackages =
# programs from the depot
(with depot; [
emacs
third_party.lieer
tools.nsfv-setup
]) ++
# programs from nixpkgs
(with nixpkgs; [
bat
chromium
curl
direnv
emacs27-nox # emacsclient
exa
fd
file
gdb
git
gnupg
google-chrome
htop
hyperfine
iftop
imagemagick
jq
manpages
msmtp
networkmanagerapplet
nix-prefetch-github
notmuch
openssh
openssl
pass
pavucontrol
pinentry
pinentry-emacs
pwgen
quasselClient
ripgrep
rustup
screen
scrot
tokei
tree
vlc
xsecurelock
]);
system.stateVersion = "20.09";
})