thinkpad conf
This commit is contained in:
@@ -0,0 +1,390 @@
|
||||
# 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, ... }:
|
||||
|
||||
{
|
||||
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;
|
||||
|
||||
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
|
||||
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];
|
||||
networking.networkmanager.enable = true;
|
||||
programs.nm-applet.enable = true;
|
||||
|
||||
# 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?
|
||||
}
|
||||
Reference in New Issue
Block a user