From 11a8eea0e392114f5077658b629db30a4eea8b8d Mon Sep 17 00:00:00 2001 From: William Carroll Date: Sun, 22 May 2022 20:19:27 -0700 Subject: feat(wpcarro/tarasco): Support tarasco 🇲🇽 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Named after the Mexican restaurant, El Tarasco, in El Porto, which I live 3m walking distance from. Change-Id: I2cd4b68eaa974ad6c8fec73e0566bc0b831c57a8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5743 Reviewed-by: wpcarro Reviewed-by: tazjin Autosubmit: wpcarro Tested-by: BuildkiteCI --- ops/machines/all-systems.nix | 1 + users/wpcarro/keys.nix | 11 ++- users/wpcarro/nixos/ava/default.nix | 2 + users/wpcarro/nixos/default.nix | 14 +++- users/wpcarro/nixos/tarasco/default.nix | 130 +++++++++++++++++++++++++++++++ users/wpcarro/nixos/tarasco/hardware.nix | 29 +++++++ users/wpcarro/nixos/tarasco/tarasco.el | 55 +++++++++++++ 7 files changed, 236 insertions(+), 6 deletions(-) create mode 100644 users/wpcarro/nixos/tarasco/default.nix create mode 100644 users/wpcarro/nixos/tarasco/hardware.nix create mode 100644 users/wpcarro/nixos/tarasco/tarasco.el diff --git a/ops/machines/all-systems.nix b/ops/machines/all-systems.nix index 9f77f0048d..e59187cabb 100644 --- a/ops/machines/all-systems.nix +++ b/ops/machines/all-systems.nix @@ -20,4 +20,5 @@ (with depot.users.wpcarro.nixos; [ ava marcus + tarasco ]) diff --git a/users/wpcarro/keys.nix b/users/wpcarro/keys.nix index 21b7c85bbc..001ca30ce8 100644 --- a/users/wpcarro/keys.nix +++ b/users/wpcarro/keys.nix @@ -2,10 +2,17 @@ { ... }: rec { + ava = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB/5Fuo7wi8rNXVXgNaCK2X6ePCh9LQs/9h7Tj6UeXrl wpcarro@ava"; diogenes = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILFDRfpNXDxQuTJAqVg8+Mm/hOfE5VAJP+Lpw9kA5cDG wpcarro@gmail.com"; marcus = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJkNQJBXekuSzZJ8+gxT+V1+eXTm3hYsfigllr/ARXkf wpcarro@gmail.com"; nathan = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP2NjuP722VUgpSu5bVUPTfdVNPO8fSW0Jlas8L4up13 bill@nathan"; - ava = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB/5Fuo7wi8rNXVXgNaCK2X6ePCh9LQs/9h7Tj6UeXrl wpcarro@ava"; + tarasco = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOh+wG4f7tI0IwGyF2sLi5mPlh3JKE7KqV2ab0tlcL36 wpcarro@tarasco"; - all = [ diogenes marcus nathan ava ]; + all = [ + ava + diogenes + marcus + nathan + tarasco + ]; } diff --git a/users/wpcarro/nixos/ava/default.nix b/users/wpcarro/nixos/ava/default.nix index 36529c3550..11dae8d66a 100644 --- a/users/wpcarro/nixos/ava/default.nix +++ b/users/wpcarro/nixos/ava/default.nix @@ -73,6 +73,7 @@ in users.mutableUsers = true; users.users.root.openssh.authorizedKeys.keys = [ wpcarro.keys.nathan + wpcarro.keys.tarasco ]; users.users.wpcarro = { isNormalUser = true; @@ -84,6 +85,7 @@ in shell = pkgs.fish; openssh.authorizedKeys.keys = [ wpcarro.keys.nathan + wpcarro.keys.tarasco ]; }; users.extraGroups.vboxusers.members = [ "wpcarro" ]; diff --git a/users/wpcarro/nixos/default.nix b/users/wpcarro/nixos/default.nix index 466b4a30c1..b1623d4975 100644 --- a/users/wpcarro/nixos/default.nix +++ b/users/wpcarro/nixos/default.nix @@ -1,13 +1,18 @@ { depot, pkgs, ... }: let - inherit (depot.users.wpcarro.nixos) diogenes; + inherit (depot.users.wpcarro.nixos) + ava + diogenes + marcus + tarasco; + systemFor = sys: (depot.ops.nixos.nixosFor sys).system; in { - avaSystem = systemFor depot.users.wpcarro.nixos.ava; - - marcusSystem = systemFor depot.users.wpcarro.nixos.marcus; + avaSystem = systemFor ava; + marcusSystem = systemFor marcus; + tarascoSystem = systemFor ava; # Apply terraform updates and rebuild NixOS for diogenes. deploy-diogenes = pkgs.writeShellScriptBin "deploy-diogenes" '' @@ -49,5 +54,6 @@ in meta.ci.targets = [ "avaSystem" "marcusSystem" + "tarascoSystem" ]; } diff --git a/users/wpcarro/nixos/tarasco/default.nix b/users/wpcarro/nixos/tarasco/default.nix new file mode 100644 index 0000000000..55db69e68b --- /dev/null +++ b/users/wpcarro/nixos/tarasco/default.nix @@ -0,0 +1,130 @@ +{ depot, pkgs, lib, ... }: +{ ... }: + +let + inherit (depot.users) wpcarro; + + wpcarrosEmacs = wpcarro.emacs.nixos { + load = [ ./tarasco.el ]; + }; + + quasselClient = pkgs.quassel.override { + client = true; + enableDaemon = false; + monolithic = false; + }; +in +{ + imports = [ ./hardware.nix ]; + + # Use the TVL binary cache + tvl.cache.enable = true; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # Support IP forwarding to use this device as a Tailscale exit node. + boot.kernel.sysctl."net.ipv4.ip_forward" = true; + boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = true; + + time.timeZone = "America/Los_Angeles"; + + networking = { + useDHCP = false; + hostName = "tarasco"; + networkmanager.enable = true; + interfaces.enp1s0.useDHCP = true; + interfaces.enp3s0.useDHCP = true; + # Disabling wifi because the Realtek network card drivers crash. + # interfaces.wlp2s0.useDHCP = true; + }; + + services = wpcarro.common.services // { + tailscale.enable = true; + + openssh.enable = true; + + xserver = { + enable = true; + layout = "us"; + xkbOptions = "caps:escape"; + displayManager = { + # Give EXWM permission to control the session (from tazjin's setup). + sessionCommands = "${pkgs.xorg.xhost}/bin/xhost +SI:localhost:$USER"; + lightdm.enable = true; + }; + windowManager.session = lib.singleton { + name = "exwm"; + start = "${wpcarrosEmacs}/bin/wpcarros-emacs"; + }; + }; + }; + + # Enable sound. + sound.enable = true; + hardware.pulseaudio.enable = true; + + users.mutableUsers = true; + users.users.root.openssh.authorizedKeys.keys = [ + wpcarro.keys.nathan + wpcarro.keys.ava + ]; + users.users.wpcarro = { + isNormalUser = true; + extraGroups = [ + "networkmanager" + "wheel" + "docker" + ]; + shell = pkgs.fish; + openssh.authorizedKeys.keys = [ + wpcarro.keys.nathan + wpcarro.keys.ava + ]; + }; + users.extraGroups.vboxusers.members = [ "wpcarro" ]; + + security.sudo.wheelNeedsPassword = false; + + fonts = { + fonts = with pkgs; [ + jetbrains-mono + ]; + + fontconfig = { + defaultFonts = { + monospace = [ "JetBrains Mono" ]; + }; + }; + }; + + programs = wpcarro.common.programs // { + mosh.enable = true; + }; + + virtualisation.docker.enable = true; + virtualisation.virtualbox.host.enable = true; + + environment.variables = { + EDITOR = "emacsclient"; + ALTERNATE_EDITOR = "emacs -q -nw"; + VISUAL = "emacsclient"; + }; + + environment.systemPackages = + wpcarro.common.shell-utils ++ + (with pkgs; [ + alacritty + firefox + google-chrome + httpie + pavucontrol + quasselClient + remmina + tdesktop + wpcarrosEmacs + xsecurelock + ]); + + system.stateVersion = "21.11"; +} diff --git a/users/wpcarro/nixos/tarasco/hardware.nix b/users/wpcarro/nixos/tarasco/hardware.nix new file mode 100644 index 0000000000..2c4da1a3b9 --- /dev/null +++ b/users/wpcarro/nixos/tarasco/hardware.nix @@ -0,0 +1,29 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-label/NIXROOT"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-label/NIXBOOT"; + fsType = "vfat"; + }; + + swapDevices = [ ]; + + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + # high-resolution display + hardware.video.hidpi.enable = lib.mkDefault true; +} diff --git a/users/wpcarro/nixos/tarasco/tarasco.el b/users/wpcarro/nixos/tarasco/tarasco.el new file mode 100644 index 0000000000..8577e4d9cc --- /dev/null +++ b/users/wpcarro/nixos/tarasco/tarasco.el @@ -0,0 +1,55 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Dependencies +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(require 'display) +(require 'window-manager) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Monitor Configuration +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(display-register primary + :output "HDMI-1" + :primary t + :coords (0 0) + :size (2560 1440) + :rate 30.0 + :dpi 96 + :rotate normal) + +(display-register secondary + :output "HDMI-2" + :primary nil + :coords (2561 0) + :size (2560 1440) + :rate 30.0 + :dpi 96 + :rotate normal) + +(display-arrangement main :displays (primary secondary)) + +(setq window-manager-named-workspaces + (list (make-window-manager-named-workspace + :label "Web Browsing" + :kbd "c" + :display display-secondary) + (make-window-manager-named-workspace + :label "Coding I" + :kbd "1" + :display display-primary) + (make-window-manager-named-workspace + :label "Coding II" + :kbd "2" + :display display-primary) + (make-window-manager-named-workspace + :label "Chatting" + :kbd "h" + :display display-secondary))) + +(window-manager-init :init-hook #'display-arrange-main) + +(bookmark-install-kbd + (make-bookmark :label "hadrian" + :path (f-join tvl-depot-path "/hadrian") + :kbd "h")) -- cgit 1.4.1