e653366153
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>
220 lines
4.4 KiB
Nix
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";
|
|
})
|