Instead of waiting for nixpkgs to [update home-manager], we can track the upstream repository directly (using master as a channel seems to be common practice) and overlay the up to date source into our nixpkgs instance. For //users/tazjin/home and //users/wpcarro/nixos/marcus, we need to set `home.stateVersion`, since the default value for this option was removed some time this summer. [update home-manager]: https://github.com/NixOS/nixpkgs/issues/197907 Change-Id: I8c153fb7d3b55a4040652a5d619761b640119105 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7098 Reviewed-by: tazjin <tazjin@tvl.su> Reviewed-by: wpcarro <wpcarro@gmail.com> Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
		
			
				
	
	
		
			169 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ depot, pkgs, lib, ... }:
 | 
						|
{ ... }:
 | 
						|
 | 
						|
let
 | 
						|
  inherit (depot.users) wpcarro;
 | 
						|
  inherit (depot.users.wpcarro.lib) usermod;
 | 
						|
 | 
						|
  wpcarrosEmacs = wpcarro.emacs.nixos {
 | 
						|
    load = [ ./marcus.el ];
 | 
						|
  };
 | 
						|
 | 
						|
  quasselClient = pkgs.quassel.override {
 | 
						|
    client = true;
 | 
						|
    enableDaemon = false;
 | 
						|
    monolithic = false;
 | 
						|
  };
 | 
						|
in
 | 
						|
{
 | 
						|
  imports = [
 | 
						|
    (depot.path.origSrc + "/users/wpcarro/nixos/marcus/hardware.nix")
 | 
						|
    (pkgs.home-manager.src + "/nixos")
 | 
						|
    (usermod "laptop.nix")
 | 
						|
  ];
 | 
						|
 | 
						|
  # Use the TVL binary cache
 | 
						|
  tvl.cache.enable = true;
 | 
						|
 | 
						|
  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;
 | 
						|
  };
 | 
						|
 | 
						|
  services = wpcarro.common.services // {
 | 
						|
    # Enable the Tailscale daemon to connect to work and personal Tailnet.
 | 
						|
    tailscale.enable = true;
 | 
						|
 | 
						|
    tzupdate.enable = true;
 | 
						|
 | 
						|
    depot.auto-deploy = {
 | 
						|
      enable = true;
 | 
						|
      interval = "1d";
 | 
						|
    };
 | 
						|
 | 
						|
    xserver = {
 | 
						|
      enable = true;
 | 
						|
      libinput = {
 | 
						|
        enable = true;
 | 
						|
        touchpad.naturalScrolling = false;
 | 
						|
        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;
 | 
						|
      };
 | 
						|
      extraConfig = ''
 | 
						|
        Section "InputClass"
 | 
						|
            Identifier "Touchscreen catchall"
 | 
						|
            MatchIsTouchscreen "on"
 | 
						|
            Option "Ignore" "on"
 | 
						|
        EndSection
 | 
						|
      '';
 | 
						|
      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.wpcarro = {
 | 
						|
    isNormalUser = true;
 | 
						|
    extraGroups = [
 | 
						|
      "networkmanager"
 | 
						|
      "wheel"
 | 
						|
      "video" # needed to control the screen brightness
 | 
						|
    ];
 | 
						|
    shell = pkgs.fish;
 | 
						|
  };
 | 
						|
 | 
						|
  security.sudo.wheelNeedsPassword = false;
 | 
						|
 | 
						|
  fonts = {
 | 
						|
    fonts = with pkgs; [
 | 
						|
      jetbrains-mono
 | 
						|
    ];
 | 
						|
 | 
						|
    fontconfig = {
 | 
						|
      defaultFonts = {
 | 
						|
        monospace = [ "JetBrains Mono" ];
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  programs = wpcarro.common.programs;
 | 
						|
 | 
						|
  environment.variables = {
 | 
						|
    EDITOR = "emacsclient";
 | 
						|
    ALTERNATE_EDITOR = "emacs -q -nw";
 | 
						|
    VISUAL = "emacsclient";
 | 
						|
  };
 | 
						|
 | 
						|
  home-manager.useGlobalPkgs = true;
 | 
						|
  home-manager.users.wpcarro = { config, lib, ... }: {
 | 
						|
    programs.git = {
 | 
						|
      enable = true;
 | 
						|
      userName = "William Carroll";
 | 
						|
      userEmail = "wpcarro@gmail.com";
 | 
						|
      extraConfig = {
 | 
						|
        pull.rebase = true;
 | 
						|
      };
 | 
						|
    };
 | 
						|
 | 
						|
    services.picom = {
 | 
						|
      enable = true;
 | 
						|
      vSync = true;
 | 
						|
      backend = "glx";
 | 
						|
    };
 | 
						|
 | 
						|
    services.redshift = {
 | 
						|
      enable = true;
 | 
						|
      latitude = 37.4223931;
 | 
						|
      longitude = -122.0864016;
 | 
						|
    };
 | 
						|
 | 
						|
    services.dunst.enable = true;
 | 
						|
    xdg.configFile."dunst/dunstrc" = {
 | 
						|
      source = wpcarro.dotfiles.dunstrc;
 | 
						|
      onChange = ''
 | 
						|
        ${pkgs.procps}/bin/pkill -u "$USER" ''${VERBOSE+-e} dunst || true
 | 
						|
      '';
 | 
						|
    };
 | 
						|
 | 
						|
    systemd.user.startServices = true;
 | 
						|
 | 
						|
    # Previous default version, see https://github.com/nix-community/home-manager/blob/master/docs/release-notes/rl-2211.adoc
 | 
						|
    home.stateVersion = "18.09";
 | 
						|
  };
 | 
						|
 | 
						|
  environment.systemPackages =
 | 
						|
    wpcarro.common.shell-utils ++
 | 
						|
    (with pkgs; [
 | 
						|
      alacritty
 | 
						|
      firefox
 | 
						|
      pavucontrol
 | 
						|
      quasselClient
 | 
						|
      tdesktop
 | 
						|
      weechat
 | 
						|
      wpcarrosEmacs
 | 
						|
      xsecurelock
 | 
						|
    ]);
 | 
						|
 | 
						|
  system.stateVersion = "21.11";
 | 
						|
}
 |