# Edit this configuration file to define what should be installed on your system. Help is available in the configuration.nix(5) man page, on https://search.nixos.org/options and in the NixOS manual (`nixos-help`). { config, lib, pkgs, ... }: { imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ]; nixpkgs.config.allowUnfree = true; programs.hyprland.enable = true; programs.steam = { enable = true; remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers }; programs.neovim = { enable = true; defaultEditor = true; }; # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; networking.hostName = "alien"; time.timeZone = "America/Toronto"; # Configure network proxy if necessary # networking.proxy.default = "http://user:password@proxy:port/"; # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; # Select internationalisation properties. # i18n.defaultLocale = "en_US.UTF-8"; # console = { # font = "Lat2-Terminus16"; # keyMap = "us"; # useXkbConfig = true; # use xkb.options in tty. # }; # Enable the X11 windowing system. # services.xserver.enable = true; fonts.fontconfig.enable = true; i18n.defaultLocale = "en_US.UTF-8"; i18n.extraLocaleSettings = { LC_ADDRESS = "en_US.UTF-8"; LC_IDENTIFICATION = "en_US.UTF-8"; LC_MEASUREMENT = "en_US.UTF-8"; LC_MONETARY = "en_US.UTF-8"; LC_NAME = "en_US.UTF-8"; LC_NUMERIC = "en_US.UTF-8"; LC_PAPER = "en_US.UTF-8"; LC_TELEPHONE = "en_US.UTF-8"; LC_TIME = "en_US.UTF-8"; }; virtualisation.docker.enable = true; home-manager = { useGlobalPkgs = true; useUserPackages = true; backupFileExtension = "not-nix"; # Add this line users.jeremy = { pkgs, ... }: { home.stateVersion = "25.11"; # wayland.windowManager.hyprland = { # Configure hyprland # enable = true; # settings = { # general = { # gaps_in = 0; # gaps_out = 0; # border_size = 2; # }; # decoration = { # rounding = 10; # # active_opacity = 0.9; # # inactive_opacity = 0.8; # # blur = { # # enabled = true; # # size = 10; # # passes = 3; # # vibrancy = 1; # # new_optimizations = true; # # ignore_opacity = true; # # noise = 0; # # brightness = 0.9; # # }; # }; # misc = { # key_press_enables_dpms = true; # mouse_move_enables_dpms = true; # }; # "$mainMod" = "SUPER"; # bind = [ # "$mainMod, C, exec, alacritty" # "$mainMod, Q, killactive," # "$mainMod, grave, exec, rofi -show drun" # "$mainMod, F, fullscreen" # "$mainMod, V, togglefloating," # ",F4, exec, rofi -show combi -combi-modes 'drun,filebrowser'" # "$mainMod, A, togglesplit" # ", PRINT, exec, hyprshot -zm region -o ~/pics/screenshots/" # "SHIFT, PRINT, exec, hyprshot -zm window -o ~/pics/screenshots/" # "SUPER, PRINT, exec, hyprshot -zm output -o ~/pics/screenshots/" # "$mainMod, N, exec, codium ~/etc/nixos/configuration.nix" # "$mainMod, L, exec, sleep 1s; hyprctl dispatch dpms off" # screen off # # Move between windows # "$mainMod, h, movefocus, l" # "$mainMod, j, movefocus, d" # "$mainMod, k, movefocus, u" # "$mainMod, l, movefocus, r" # # Switch workspaces with mainMod + [0-9] # "$mainMod, 1, workspace, 1" # "$mainMod, 2, workspace, 2" # "$mainMod, 3, workspace, 3" # "$mainMod, 4, workspace, 4" # "$mainMod, 5, workspace, 5" # "$mainMod, 6, workspace, 6" # "$mainMod, 7, workspace, 7" # "$mainMod, 8, workspace, 8" # "$mainMod, 9, workspace, 9" # "$mainMod, 0, workspace, 10" # # Move active window to a workspace with mainMod + SHIFT + [0-9] # "$mainMod SHIFT, 1, movetoworkspace, 1" # "$mainMod SHIFT, 2, movetoworkspace, 2" # "$mainMod SHIFT, 3, movetoworkspace, 3" # "$mainMod SHIFT, 4, movetoworkspace, 4" # "$mainMod SHIFT, 5, movetoworkspace, 5" # "$mainMod SHIFT, 6, movetoworkspace, 6" # "$mainMod SHIFT, 7, movetoworkspace, 7" # "$mainMod SHIFT, 8, movetoworkspace, 8" # "$mainMod SHIFT, 9, movetoworkspace, 9" # "$mainMod SHIFT, 0, movetoworkspace, 10" # ]; # bindm = [ # "$mainMod, mouse:272, movewindow" # "$mainMod, mouse:273, resizewindow" # ]; # binde = [ # ", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 && wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%+" # ", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 && wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%-" # ]; # bindl = [ # ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" # ]; # monitor = [ # "DP-2, 2560x1440@170, 0x0, 1" # "HDMI-A-1, 2560x1440@144, 2560x0, 1" # ]; # windowrulev2 = [ # "tile, initialClass:^(Godot)$, initialTitle: ^(Godot)$" # "float, class:^(Godot)$, title:^(?!(.*Godot)).*$" # "float, initialTitle:^(Godot)$, class:^(?!(Godot)).*$" # ]; # exec-once = [ # "swaybg -i ~/.wallpaper -m fill" # "nextcloud --background" # ]; # }; # }; # wayland.windowManager.sway = { # enable = true; # config = rec { # modifier = "Mod4"; # # Use kitty as default terminal # terminal = "kitty"; # startup = [ # # Launch Firefox on start # {command = "firefox";} # ]; # }; # }; programs.neovim = { # Configure nvim enable = true; extraConfig = '' set number relativenumber set tabstop=2 set softtabstop=2 set shiftwidth=2 set expandtab set cc=80 ''; }; programs.vscode = { # Configure vscodium enable = true; package = pkgs.vscodium; mutableExtensionsDir = true; # Keep theme updated profiles.default.extensions = with pkgs.vscode-extensions; [ jnoortheen.nix-ide # NIX syntax highlighting. Also uses nixfmt package rust-lang.rust-analyzer # Rust mkhl.direnv # recognize custom nix environments tamasfe.even-better-toml # toml file support myriad-dreamin.tinymist # typst files tekumara.typos-vscode # spellcheck ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ { name = "skillavid-pure-black"; publisher = "redwan-hossain"; version = "5.0.0"; sha256 = "sha256-/gLvhw0XcUb6Jch/LZ4k7xpSS9wdYWVf5u7uvOHS+i8="; } ]; }; # programs.rofi = { # Rofi config # enable = true; # theme = "dmenu"; # font = "sans-serif"; # package = pkgs.rofi; # modes = [ # "drun" # "run" # "window" # "ssh" # ]; # extraConfig = { # show-icons = true; # display-drun = ""; # drun-display-format = "{name}"; # }; # }; # programs.waybar.enable = true; # programs.waybar.settings.main = { # layer = "top"; # position = "top"; # reload_style_on_change = true; # modules-left = []; # modules-center = ["hyprland/workspaces"]; # modules-right = [ # "tray" # "bluetooth" # "network" # "clock" # ]; # }; # home.pointerCursor = # let # getFrom = url: hash: name: { # gtk.enable = true; # x11.enable = true; # name = name; # size = 48; # package = # pkgs.runCommand "moveUp" {} '' # mkdir -p $out/share/icons # ln -s ${pkgs.fetchzip { # url = url; # hash = hash; # }} $out/share/icons/${name} # ''; # }; # in # getFrom # "https://github.com/ful1e5/fuchsia-cursor/releases/download/v2.0.0/Fuchsia-Pop.tar.gz" # "sha256-BvVE9qupMjw7JRqFUj1J0a4ys6kc9fOLBPx2bGaapTk=" # "Fuchsia-Pop"; }; }; # Enable touchpad support (enabled default in most desktopManager). # services.libinput.enable = true; users.users.jeremy = { isNormalUser = true; extraGroups = [ "wheel" "docker" ]; # Enable sudo shell = pkgs.bash; home = "/home/jeremy"; createHome = true; packages = with pkgs; [ prismlauncher # minecraft launcher discord-canary godot # 4.5.1 for now nextcloud-client steam signal-desktop docker # swaybg # wallpaper nixfmt # nix file formatting openrgb # RGB editor furmark # Room heater obsidian # note taking gcc xauth burpsuite ollama ollama-rocm python3 direnv # develop projects in custom environments # hyprshot # screenshots typst # typst compilation tinymist # typst previews binaryninja-free # broke ahh cracker patchelf # make programs understand nix. good for downloaded executables such as crackmes starsector # support indie games! htop mullvad-vpn # arrr qbittorrent # arrr mpv # arrr ]; }; # Use https://search.nixos.org/ to find more packages (and options). environment.systemPackages = with pkgs; [ firefox neovim wget networkmanager gnome-disk-utility dunst libnotify rofi alacritty vscodium ncdu nmap kitty git unzip pavucontrol # PulseAudio Volume Control bluez # Bluetooth support bluez-tools # Bluetooth tools # grim # screenshot functionality # slurp # screenshot functionality # wl-clipboard # wl-copy and wl-paste for copy/paste from stdin / stdout # mako # notification system developed by swaywm maintainer ]; programs.niri.enable = true; # programs.sway = { # enable = true; # wrapperFeatures.gtk = true; # }; # services.gnome.gnome-keyring.enable = true; boot.initrd.kernelModules = [ "amdgpu" ]; environment.sessionVariables = { SUDO_EDITOR = "nvim"; }; hardware.bluetooth = { enable = true; powerOnBoot = true; }; # networking.networkmanager = { # enable = true; # plugins = with pkgs; [ # networkmanager-openvpn # for htb # ]; # }; services.ollama = { enable = false; acceleration = "rocm"; environmentVariables = { # Force Ollama to only see the dedicated GPU HIP_VISIBLE_DEVICES = "0"; # Optional: Force the GPU architecture if discovery still fails HSA_OVERRIDE_GFX_VERSION = "10.3.0"; }; }; services.pulseaudio.enable = false; # Use Pipewire security.rtkit.enable = true; # Enable RealtimeKit for audio purposes services.hardware.openrgb = { # Enable OpenRGB enable = true; package = pkgs.openrgb-with-all-plugins; motherboard = "amd"; server.port = 6742; }; services.udisks2.enable = true; # Enable gnome-disks services.displayManager.sddm.enable = true; # Enable display manager services.displayManager.sddm.wayland.enable = true; # Wayland services.mullvad-vpn.package = pkgs.mullvad-vpn; # arr services.resolved.enable = true; # for mullvad # programs.ssh.startAgent = true; # Enable SSH tools programs.thunar.enable = true; # file manager virtualisation.waydroid.enable = true; # android :0 nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-original" "steam-unwrapped" "steam-run" "furmark" "burpsuite" ]; # 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 OpenSSH daemon services.openssh = { enable = true; ports = [2121]; settings.X11Forwarding = true; }; networking.firewall.allowedTCPPorts = [2121]; # bootloader device boot.loader.grub.device = "/dev/sda"; # Open ports in the firewall. # networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. # networking.firewall.enable = false; # Copy the NixOS configuration file and link it from the resulting system # (/run/current-system/configuration.nix). This is useful in case you # accidentally delete configuration.nix. # system.copySystemConfiguration = true; # This option defines the first version of NixOS you have installed on this particular machine, # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. # # Most users should NEVER change this value after the initial install, for any reason, # even if you've upgraded your system to a new NixOS release. # # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how # to actually do that. # # This value being lower than the current NixOS release does NOT mean your system is # out of date, out of support, or vulnerable. # # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, # and migrated your data accordingly. # # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . system.stateVersion = "25.11"; # Did you read the comment? }