{ config, pkgs, lib, ... }: let mkUser = { userName, uid, }: { isNormalUser = true; home = "/home/${userName}"; initialPassword = "password"; extraGroups = ["wheel" "networkmanager" "docker" "video" "syncthing" "audio" "media"]; uid = uid; group = "users"; shell = pkgs.zsh; }; defaultUser = { userName = "daniel"; uid = 1000; }; in { # Use the systemd-boot EFI boot loader. boot.kernelPackages = pkgs.linuxPackages_latest; boot.loader.systemd-boot.enable = lib.mkDefault true; boot.loader.efi.canTouchEfiVariables = lib.mkDefault true; # nix flakes compatibility nix = { settings.trusted-users = [ "root" "daniel" ]; extraOptions = '' experimental-features = nix-command flakes warn-dirty = false ''; }; security.sudo.wheelNeedsPassword = false; # Set time zone. time.timeZone = "Europe/London"; i18n = { defaultLocale = "en_GB.UTF-8"; }; console = { useXkbConfig = true; }; virtualisation.docker.enable = true; virtualisation.podman.enable = true; hardware.cpu.intel.updateMicrocode = true; users.users."${defaultUser.userName}" = mkUser defaultUser; users.groups."users" = { gid = 100; }; xdg.portal.wlr.enable = lib.mkDefault true; xdg.portal.config.common.default = "*"; # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ curl fd firefox fzf gcc ghostty git htop helix jujutsu jq nnn ripgrep wget zsh ]; environment.homeBinInPath = true; environment.variables = { EDITOR = "hx"; }; networking.firewall.trustedInterfaces = ["tailscale0"]; programs.zsh.enable = true; programs.nm-applet.enable = true; services = { openssh.enable = true; syncthing = { enable = true; user = defaultUser.userName; dataDir = "/home/${defaultUser.userName}"; overrideDevices = false; overrideFolders = false; }; tailscale = { enable = true; }; }; }