{ pkgs, inputs, ... }: let home-manager = builtins.fetchTarball { url = "https://github.com/nix-community/home-manager/archive/master.tar.gz"; sha256 = "0kg9iaixqygpncw7avgh1grwyjgnfc9i7k9pk8hc4xrvr8jv2l3c"; }; in { imports = [ ./hardware-configuration.nix (import "${home-manager}/nixos") inputs.spicetify-nix.nixosModules.default ]; programs.spicetify = let spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; in { enable = true; enabledExtensions = with spicePkgs.extensions; [ adblock hidePodcasts shuffle # shuffle+ (special characters are sanitized out of extension names) ]; #theme = spicePkgs.themes.catppuccin; #colorScheme = "mocha"; }; # 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; }; }; # allow wheel group to use passwordless sudo security.sudo.wheelNeedsPassword = false; users = { # using fish as the login shell tends # to go very poorly because it isn't # POSIX compliant, so we'll just use # simple Bash then :) defaultUserShell = pkgs.bash; users = { # just me fr (personal account) me = { isNormalUser = true; extraGroups = ["wheel"]; shell = pkgs.bash; #pkgs.fish packages = with pkgs; [ firefox nitch starfetch tldr ]; }; # programming/development account dev = { isNormalUser = true; extraGroups = ["wheel"]; shell = pkgs.bash; #pkgs.zsh packages = with pkgs; [ ]; }; # user for my professional jobs and stuff ae = { isNormalUser = true; extraGroups = ["wheel"]; shell = pkgs.bash; #pkgs.fish packages = with pkgs; [ ]; }; }; }; home-manager = { users.me = import ../../homes/me; sharedModules = [ #inputs.nixcord.homeManagerModules.nixcord #inputs.nixvim.homeManagerModules.nixvim ]; }; # ---- SYSTEM PACKAGES ----- environment.systemPackages = with pkgs; [ # User Environment inputs.swww.packages.${pkgs.system}.swww #vesktop helvum easyeffects ani-cli wl-clipboard # clipboard for wayland python311 # I use 3.11 since it's in a pretty stable state now poetry # python dependency management and packaging # fish plugins grc # colorise command outputs httpie curlie zoxide doggo # Pretty necessary git brightnessctl acpi # Unix Commands wget tree ]; # Enable the use of certain programs programs = { hyprland = { enable = true; # set the flake package package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; # make sure to also set the portal package, so that they are in sync portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; xwayland.enable = true; #systemd.enable = true; }; zsh.enable = true; fish.enable = true; neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; configure = { customRC = '' set number set tabstop=4 set shiftwidth=4 ''; }; }; # I want to use fish as my login shell but it always goes terrible # cause it isn't POSIX compliant, so instead Bash is my login and # will just exec fish (^-^) bash = { interactiveShellInit = '' if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] then shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" exec ${pkgs.fish}/bin/fish $LOGIN_OPTION fi ''; }; }; # ----- FONTS ----- fonts = { enableDefaultPackages = true; # no clue what this line does tbh packages = with pkgs; [ (nerdfonts.override { fonts = [ "Cousine" # its already i guess "Iosevka" # nah nah "IosevkaTerm" # big nah "CascadiaCode" # potential "FiraCode" # potential "JetBrainsMono" # for my rofi theme "Hasklig" "Hack" ]; }) # 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"]; }; }; }; # ----- STYLIX ----- #stylix = { # enable = true; # image = pkgs.fetchurl { # url = "https://www.pixelstalk.net/wp-content/uploads/2016/05/Epic-Anime-Awesome-Wallpapers.jpg"; # sha256 = "enQo3wqhgf0FEPHj2coOCvo7DuZv+x5rL/WIo4qPI50="; # }; # # # Stylix will automatically theme applications # #autoEnable = true; # #image = ../../wallpapers/wall.png; # #image = "/home/me/nixdots/wallpapers/ghibli-esque-valley.png"; #}; # 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; # Enable OpenGL hardware = { graphics.enable = true; }; # DO NOT MODIFY system.stateVersion = "24.05"; # Did you read the comment? }