about summary refs log tree commit diff
path: root/users/wpcarro/nixos/marcus/default.nix
blob: ef1e60bd780d337d5b67ba467da835c8f4291c1e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
{ depot, pkgs, lib, ... }:
{ config, ... }:

let
  # TODO(wpcarro): Drop dependency on the briefcase concept.
  wpcarros-emacs = depot.users.wpcarro.emacs.nixos {
    briefcasePath = "$HOME/depot/users/wpcarro";
  };
in {
  imports = [
    ./hardware.nix
  ];

  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  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 = "marcus";
    networkmanager.enable = true;
    interfaces.enp0s31f6.useDHCP = true;
    interfaces.wlp0s20f3.useDHCP = true;
  };

  time.timeZone = "America/New_York";

  services.xserver = {
    enable = true;
    libinput = {
      enable = true;
      touchpad.naturalScrolling = true;
      touchpad.tapping = false;
    };
    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 = "${wpcarros-emacs}/bin/wpcarros-emacs";
    };
  };

  # Enable sound.
  sound.enable = true;
  hardware.pulseaudio.enable = true;

  users.mutableUsers = true;
  users.users.wpcarro = {
    isNormalUser = true;
    extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
    shell = pkgs.fish;
  };

  fonts = {
    fonts = with pkgs; [
      jetbrains-mono
    ];

    fontconfig = {
      defaultFonts = {
        monospace = [ "JetBrains Mono" ];
      };
    };
  };

  programs.fish.enable = true;

  environment.systemPackages = with pkgs; [
    alacritty
    dig
    direnv
    fd
    firefox
    fzf
    git
    ripgrep
    vim
    weechat
    wpcarros-emacs
    xclip
  ];

  system.stateVersion = "21.11";
}