Change-Id: I384aa75467b7e1be08779dc6d916ba8fc0ea74c5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11033 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: tazjin <tazjin@tvl.su> Reviewed-by: sterni <sternenseemann@systemli.org>
		
			
				
	
	
		
			150 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { depot, pkgs, lib, ... }:
 | |
| { ... }:
 | |
| 
 | |
| let
 | |
|   inherit (depot.users) wpcarro;
 | |
|   inherit (depot.users.wpcarro.lib) usermod;
 | |
| 
 | |
|   wpcarrosEmacs = wpcarro.emacs.nixos {
 | |
|     load = [ ./ava.el ];
 | |
|   };
 | |
| 
 | |
|   quasselClient = pkgs.quassel.override {
 | |
|     client = true;
 | |
|     enableDaemon = false;
 | |
|     monolithic = false;
 | |
|   };
 | |
| in
 | |
| {
 | |
|   imports = [
 | |
|     (usermod "hardware/nopn.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;
 | |
|   # Additionall exit node settings that Tailscale recommends.
 | |
|   networking.firewall.checkReversePath = "loose";
 | |
| 
 | |
|   time.timeZone = "America/Los_Angeles";
 | |
| 
 | |
|   networking = {
 | |
|     # The global useDHCP flag is deprecated, therefore explicitly set to false
 | |
|     # here.  Per-interface useDHCP will be mandatory in the future, so this
 | |
|     # generated config replicates the default behaviour.
 | |
|     useDHCP = false;
 | |
|     hostName = "ava";
 | |
|     networkmanager.enable = true;
 | |
|     interfaces.enp1s0.useDHCP = true;
 | |
|     interfaces.enp3s0.useDHCP = true;
 | |
|     interfaces.wlp2s0.useDHCP = true;
 | |
|   };
 | |
| 
 | |
|   services = wpcarro.common.services // {
 | |
|     # Check the amount of available memory and free swap a few times per second
 | |
|     # and kill the largest process if both are below 10%.
 | |
|     earlyoom.enable = true;
 | |
| 
 | |
|     tailscale.enable = true;
 | |
| 
 | |
|     openssh.enable = true;
 | |
| 
 | |
|     printing = {
 | |
|       enable = true;
 | |
|       drivers = with pkgs; [ gutenprint ];
 | |
|     };
 | |
| 
 | |
|     xserver = {
 | |
|       enable = true;
 | |
|       xkb.layout = "us";
 | |
|       xkb.options = "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 = with wpcarro.keys; [
 | |
|     iphone
 | |
|     nathan
 | |
|     tarasco
 | |
|   ];
 | |
|   users.users.wpcarro = {
 | |
|     initialPassword = "password";
 | |
|     isNormalUser = true;
 | |
|     extraGroups = [
 | |
|       "networkmanager"
 | |
|       "wheel"
 | |
|       "docker"
 | |
|     ];
 | |
|     shell = pkgs.fish;
 | |
|     openssh.authorizedKeys.keys = with wpcarro.keys; [
 | |
|       iphone
 | |
|       nathan
 | |
|       tarasco
 | |
|     ];
 | |
|   };
 | |
|   users.extraGroups.vboxusers.members = [ "wpcarro" ];
 | |
| 
 | |
|   security.sudo.wheelNeedsPassword = false;
 | |
| 
 | |
|   fonts = {
 | |
|     packages = 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
 | |
|       ec2-api-tools
 | |
|       firefox
 | |
|       google-chrome
 | |
|       httpie
 | |
|       pavucontrol
 | |
|       quasselClient
 | |
|       remmina
 | |
|       tdesktop
 | |
|       wpcarrosEmacs
 | |
|       xsecurelock
 | |
|     ]);
 | |
| 
 | |
|   system.stateVersion = "21.11";
 | |
| }
 |