{ pkgs, inputs, ... }: { imports = [ ./hardware-configuration.nix ]; # Use the systemd-boot EFI boot loader. # TODO: use GRUB2 instead boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; #boot.loader = { # efi = { # canTouchEfiVariables = true; # efiSysMountPoint = "/boot/efi"; # }; # grub = { # efiSupport = true; # #efiInstallAsRemovable = true; # in case canTouchEfiVariables doesn't work on this system # device = "nodev"; # }; #}; # Set your time zone. time.timeZone = "Australia/Brisbane"; # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; console = { font = "Lat2-Terminus16"; keyMap = "us"; #useXkbConfig = true; # use xkb.options in tty. }; # ----- NETWORKING SECTION ----- networking.hostName = "myputer"; # Pick only one of the below networking options. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. # Open ports in the firewall. # networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. networking.firewall.enable = true; # ----- SERVICES ----- services = { # Set display manager (login screen) displayManager = { sddm = { enable = true; theme = "${import ./sddm-theme.nix { inherit pkgs; }}"; # enable experimental sddm support for wayland wayland.enable = true; }; defaultSession = "hyprland"; }; # Enable sound # TODO: use the modules/core/pipewire.nix module instead :) pipewire = { enable = true; pulse.enable = true; }; }; users.users = { # just me fr (personal account) me = { isNormalUser = true; extraGroups = [ "wheel" ]; shell = pkgs.fish; packages = with pkgs; [ firefox nitch starfetch tldr ]; }; # programming/development account dev = { isNormalUser = true; extraGroups = [ "wheel" ]; shell = pkgs.zsh; packages = with pkgs; [ ]; }; # user for my professional jobs and stuff pro = { isNormalUser = true; extraGroups = [ "wheel" ]; shell = pkgs.fish; packages = with pkgs; [ ]; }; }; # new users will use zsh by default users.defaultUserShell = pkgs.bash; # ---- SYSTEM PACKAGES ----- environment.systemPackages = with pkgs; [ # Personally I think these kitty # Pretty necessary #vim git # Super duper necessary wget tree ]; # Enable the use of certain programs programs = { hyprland.enable = true; fish.enable = true; zsh.enable = true; neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; configure = { customRC = '' set number set tabstop=4 set shiftwidth=4 ''; # set cc=80 }; }; }; # ----- FONTS ----- fonts = { enableDefaultPackages = true; # no clue what this line does tbh fonts = with pkgs; [ (nerdfonts.override { fonts = [ "Cousine" "Iosevka" "IosevkaTerm" ]; }) # texlive maintains a noto-emoji flake texlivePackages.noto-emoji ]; fontconfig = { defaultFonts = { serif = [ "Iosevka" ]; # TODO: package Iosevka Etoile since Iosevka isn't a serif font sansSerif = [ "Iosevka "]; monospace = [ "Cousine" ]; emoji = [ "Noto Emoji" ]; }; }; }; # Enable the new CLI commands and the flakes as experimental features nix.settings.experimental-features = [ "nix-command" "flakes" ]; # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; # programs.gnupg.agent = { # enable = true; # enableSSHSupport = true; # }; # Enable the OpenSSH daemon. # services.openssh.enable = true; # DO NOT MODIFY system.stateVersion = "24.05"; # Did you read the comment? }