394 lines
11 KiB
Nix
394 lines
11 KiB
Nix
# 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, inputs, ... }:
|
|
|
|
{
|
|
imports =
|
|
[ # Include the results of the hardware scan.
|
|
./hardware-configuration.nix
|
|
];
|
|
|
|
nixpkgs.config.allowUnfree = true;
|
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
|
|
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";
|
|
|
|
|
|
programs.waybar = {
|
|
enable = true;
|
|
settings = {
|
|
mainBar = {
|
|
layer = "top";
|
|
position = "top";
|
|
height = 24;
|
|
margin-top = 0;
|
|
margin-left = 0;
|
|
margin-right = 0;
|
|
spacing = 4;
|
|
|
|
modules-left = [ "niri/workspaces" "niri/window" ];
|
|
modules-center = [];
|
|
modules-right = [ "cpu" "memory" "tray" "battery" "pulseaudio" "clock" ];
|
|
|
|
"niri/workspaces" = {
|
|
format = "{index}";
|
|
active-only = true;
|
|
};
|
|
|
|
"clock" = {
|
|
format = "{:%H:%M | %a %d}";
|
|
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
|
};
|
|
|
|
"pulseaudio" = {
|
|
format = "{icon} {volume}%";
|
|
format-muted = "";
|
|
format-icons = {
|
|
default = [ "" "" "" ];
|
|
};
|
|
on-click = "pavucontrol";
|
|
};
|
|
|
|
"cpu" = { format = " {usage}%"; };
|
|
"memory" = { format = " {percentage}%"; };
|
|
|
|
"battery" = {
|
|
states = { critical = 15; };
|
|
format = "{icon} {capacity}%";
|
|
format-icons = [ "" "" "" "" "" ];
|
|
};
|
|
};
|
|
};
|
|
|
|
style = ''
|
|
* {
|
|
font-family: "JetBrainsMono Nerd Font";
|
|
font-size: 15px;
|
|
border: none;
|
|
border-radius: 0;
|
|
}
|
|
|
|
window#waybar {
|
|
background: #000;
|
|
color: #cdd6f4;
|
|
}
|
|
|
|
#workspaces button {
|
|
padding: 0 8px;
|
|
color: #bac2de;
|
|
}
|
|
|
|
#workspaces button.focused {
|
|
color: #7fc8ff;
|
|
background: rgba(127, 200, 255, 0.1);
|
|
border-bottom: 2px solid #7fc8ff;
|
|
}
|
|
|
|
#clock, #cpu, #memory, #pulseaudio, #battery {
|
|
padding: 0 10px;
|
|
margin: 4px 2px;
|
|
}
|
|
|
|
#clock {
|
|
font-weight: bold;
|
|
color: #89b4fa;
|
|
}
|
|
'';
|
|
};
|
|
|
|
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=";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
# Enable touchpad support (enabled default in most desktopManager).
|
|
# services.libinput.enable = true;
|
|
|
|
users.users.jeremy = {
|
|
isNormalUser = true;
|
|
extraGroups = [ "wheel" "docker" "wireshark" ]; # Enable sudo
|
|
shell = pkgs.bash;
|
|
home = "/home/jeremy";
|
|
createHome = true;
|
|
packages = with pkgs; [
|
|
prismlauncher # minecraft launcher
|
|
discord-canary
|
|
# godot # 4.5.1 for now
|
|
inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.godot_4
|
|
nextcloud-client
|
|
steam
|
|
signal-desktop
|
|
docker
|
|
# swaybg # wallpaper
|
|
nixfmt # nix file formatting
|
|
openrgb # RGB editor
|
|
furmark # Room heater
|
|
obsidian # note taking
|
|
gcc
|
|
xauth
|
|
burpsuite
|
|
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
|
|
wireshark
|
|
obs-studio
|
|
];
|
|
};
|
|
|
|
# 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
|
|
|
|
xwayland-satellite # xwayland support
|
|
fuzzel # menu
|
|
];
|
|
|
|
fonts.packages = [ pkgs.nerd-fonts.jetbrains-mono ];
|
|
|
|
programs.niri.enable = true;
|
|
boot.initrd.kernelModules = [ "amdgpu" ];
|
|
|
|
environment.sessionVariables = {
|
|
SUDO_EDITOR = "nvim";
|
|
};
|
|
|
|
hardware.bluetooth = {
|
|
enable = true;
|
|
powerOnBoot = true;
|
|
};
|
|
|
|
services.ollama = {
|
|
enable = true;
|
|
package = pkgs.ollama;
|
|
acceleration = "rocm";
|
|
host = "0.0.0.0";
|
|
};
|
|
|
|
services.pulseaudio.enable = false; # Use Pipewire
|
|
services.pipewire = {
|
|
enable = true;
|
|
alsa.enable = true;
|
|
pulse.enable = true;
|
|
jack.enable = false;
|
|
};
|
|
|
|
|
|
|
|
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
|
|
programs.wireshark.enable = true;
|
|
|
|
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];
|
|
|
|
# Binaries auto linked
|
|
programs.nix-ld.enable = true;
|
|
programs.nix-ld.libraries = with pkgs; [
|
|
stdenv.cc.cc
|
|
zlib
|
|
fuse3
|
|
icu
|
|
nss
|
|
openssl
|
|
curl
|
|
expat
|
|
wayland
|
|
libxkbcommon
|
|
libGL
|
|
gtk3
|
|
glib
|
|
pango
|
|
harfbuzz
|
|
cairo
|
|
gdk-pixbuf
|
|
webkitgtk_4_1
|
|
libsoup_3
|
|
gobject-introspection
|
|
];
|
|
|
|
|
|
# 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.
|
|
#programs.wireshark.enable = true;
|
|
# 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?
|
|
} |