Compare commits
18 Commits
58a956ea2e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 30b7370d81 | |||
| 1ba23b4371 | |||
| 84eef30638 | |||
| e395a24dff | |||
| 6bf275d57a | |||
| 205a8bc029 | |||
| b029131c6c | |||
| 66aaa4aeaa | |||
| 91053be214 | |||
| 3b964a7118 | |||
| 2442d16151 | |||
| 330224fde6 | |||
| 45bedb587a | |||
| 53f38d2817 | |||
| 150e5ad828 | |||
| 6722a1c4db | |||
| d653d96560 | |||
| 44db0179a7 |
@@ -1,7 +1,4 @@
|
|||||||
# Edit this configuration file to define what should be installed on
|
# 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`).
|
||||||
# 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, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -26,10 +23,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
# For gnome-disks to work
|
|
||||||
services.udisks2.enable = true;
|
|
||||||
# SSH services
|
|
||||||
programs.ssh.startAgent = true;
|
|
||||||
|
|
||||||
# Use the systemd-boot EFI boot loader.
|
# Use the systemd-boot EFI boot loader.
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
@@ -55,27 +48,58 @@
|
|||||||
# Enable the X11 windowing system.
|
# Enable the X11 windowing system.
|
||||||
# services.xserver.enable = true;
|
# services.xserver.enable = true;
|
||||||
|
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
backupFileExtension = "not-nix"; # Add this line
|
backupFileExtension = "not-nix"; # Add this line
|
||||||
users.jeremy = { pkgs, ... }: {
|
users.jeremy = { pkgs, ... }: {
|
||||||
home.stateVersion = "25.11";
|
home.stateVersion = "25.11";
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = { # Configure hyprland
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
general = {
|
general = {
|
||||||
gaps_in = 5;
|
gaps_in = 0;
|
||||||
gaps_out = 20;
|
gaps_out = 0;
|
||||||
border_size = 2;
|
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";
|
"$mainMod" = "SUPER";
|
||||||
bind = [
|
bind = [
|
||||||
"$mainMod, C, exec, alacritty"
|
"$mainMod, C, exec, alacritty"
|
||||||
"$mainMod, Q, killactive,"
|
"$mainMod, Q, killactive,"
|
||||||
"$mainMod, grave, exec, rofi -show drun"
|
"$mainMod, grave, exec, rofi -show drun"
|
||||||
"$mainMod, F, fullscreen"
|
"$mainMod, F, fullscreen"
|
||||||
"$mainMod, V, togglefloating,"
|
"$mainMod, V, togglefloating,"
|
||||||
|
",F4, exec, rofi -show combi -combi-modes 'drun,filebrowser'"
|
||||||
|
"$mainMod, A, togglesplit"
|
||||||
|
", PRINT, exec, hyprshot -m region --clipboard-only"
|
||||||
|
"$mainMod, N, exec, codium ~/etc/nixos/configuratiuon.nix"
|
||||||
|
|
||||||
|
# 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]
|
# Switch workspaces with mainMod + [0-9]
|
||||||
"$mainMod, 1, workspace, 1"
|
"$mainMod, 1, workspace, 1"
|
||||||
@@ -100,97 +124,179 @@
|
|||||||
"$mainMod SHIFT, 8, movetoworkspace, 8"
|
"$mainMod SHIFT, 8, movetoworkspace, 8"
|
||||||
"$mainMod SHIFT, 9, movetoworkspace, 9"
|
"$mainMod SHIFT, 9, movetoworkspace, 9"
|
||||||
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
||||||
];
|
];
|
||||||
bindm = [
|
bindm = [
|
||||||
"$mainMod, mouse:272, movewindow"
|
"$mainMod, mouse:272, movewindow"
|
||||||
"$mainMod, mouse:273, resizewindow"
|
"$mainMod, mouse:273, resizewindow"
|
||||||
];
|
];
|
||||||
monitor = [
|
binde = [
|
||||||
"DP-3, 2560x1440@170, 1440x700, 1"
|
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 && wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||||
"HDMI-A-1, 2560x1440@144, 0x0, 1, transform, 1"
|
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 && wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%-"
|
||||||
];
|
];
|
||||||
windowrulev2 = [
|
bindl = [
|
||||||
"tile, initialClass:^(Godot)$, initialTitle: ^(Godot)$"
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
"float, class:^(Godot)$, title:^(?!(.*Godot)).*$"
|
];
|
||||||
"float, initialTitle:^(Godot)$, class:^(?!(Godot)).*$"
|
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"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
programs.neovim = {
|
programs.neovim = { # Configure nvim
|
||||||
enable = true;
|
enable = true;
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
set number relativenumber
|
set number relativenumber
|
||||||
set tabstop=2
|
set tabstop=2
|
||||||
set softtabstop=2
|
set softtabstop=2
|
||||||
set shiftwidth=2
|
set shiftwidth=2
|
||||||
set expandtab
|
set expandtab
|
||||||
set cc=80
|
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";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
services.xserver.xkb.layout = "us";
|
|
||||||
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
# services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable sound.
|
|
||||||
# services.pulseaudio.enable = true;
|
|
||||||
# OR
|
|
||||||
# services.pipewire = {
|
|
||||||
# enable = true;
|
|
||||||
# pulse.enable = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
# services.libinput.enable = true;
|
# services.libinput.enable = true;
|
||||||
|
|
||||||
users.users.jeremy = {
|
users.users.jeremy = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [ "wheel" ]; # Enable sudo
|
extraGroups = [ "wheel" "docker" ]; # Enable sudo
|
||||||
shell = pkgs.bash;
|
shell = pkgs.bash;
|
||||||
home = "/home/jeremy";
|
home = "/home/jeremy";
|
||||||
createHome = true;
|
createHome = true;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
prismlauncher
|
prismlauncher # minecraft launcher
|
||||||
discord-canary
|
discord-canary
|
||||||
godot # 4.5.1 for now
|
godot # 4.5.1 for now
|
||||||
nextcloud-client
|
nextcloud-client
|
||||||
steam
|
steam
|
||||||
signal-desktop
|
signal-desktop
|
||||||
cargo
|
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
|
||||||
|
hunspell # spellcheck dictionaries
|
||||||
|
hunspellDicts.en_US-large
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Use https://search.nixos.org/ to find more packages (and options).
|
# Use https://search.nixos.org/ to find more packages (and options).
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
firefox
|
firefox
|
||||||
neovim
|
neovim
|
||||||
wget
|
wget
|
||||||
networkmanager
|
networkmanager
|
||||||
gnome-disk-utility
|
gnome-disk-utility
|
||||||
|
dunst
|
||||||
|
libnotify
|
||||||
|
rofi
|
||||||
|
alacritty
|
||||||
|
vscodium
|
||||||
|
ncdu
|
||||||
|
nmap
|
||||||
|
kitty
|
||||||
|
git
|
||||||
|
unzip
|
||||||
|
pavucontrol # PulseAudio Volume Control
|
||||||
|
bluez # Bluetooth support
|
||||||
|
bluez-tools # Bluetooth tools
|
||||||
|
];
|
||||||
|
|
||||||
waybar
|
boot.initrd.kernelModules = [ "amdgpu" ];
|
||||||
dunst
|
|
||||||
libnotify
|
|
||||||
rofi
|
|
||||||
alacritty
|
|
||||||
vscodium
|
|
||||||
|
|
||||||
ncdu
|
|
||||||
|
|
||||||
nmap
|
|
||||||
kitty
|
|
||||||
git
|
|
||||||
|
|
||||||
pavucontrol # PulseAudio Volume Control
|
|
||||||
bluez # Bluetooth support
|
|
||||||
bluez-tools # Bluetooth tools
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.sessionVariables = {
|
environment.sessionVariables = {
|
||||||
SUDO_EDITOR = "nvim";
|
SUDO_EDITOR = "nvim";
|
||||||
@@ -201,8 +307,31 @@
|
|||||||
powerOnBoot = true;
|
powerOnBoot = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
services.ollama = {
|
||||||
|
enable = true;
|
||||||
|
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
|
services.pulseaudio.enable = false; # Use Pipewire
|
||||||
security.rtkit.enable = true; # Enable RealtimeKit for audio purposes
|
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 - hyprland
|
||||||
|
|
||||||
|
programs.ssh.startAgent = true; # Enable SSH tools
|
||||||
|
programs.thunar.enable = true; # file manager
|
||||||
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
||||||
@@ -210,12 +339,10 @@
|
|||||||
"steam-original"
|
"steam-original"
|
||||||
"steam-unwrapped"
|
"steam-unwrapped"
|
||||||
"steam-run"
|
"steam-run"
|
||||||
|
"furmark"
|
||||||
|
"burpsuite"
|
||||||
];
|
];
|
||||||
|
|
||||||
services.displayManager.sddm.enable = true;
|
|
||||||
services.displayManager.sddm.wayland.enable = true;
|
|
||||||
|
|
||||||
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
# started in user sessions.
|
# started in user sessions.
|
||||||
# programs.mtr.enable = true;
|
# programs.mtr.enable = true;
|
||||||
@@ -224,14 +351,15 @@
|
|||||||
# enableSSHSupport = true;
|
# enableSSHSupport = true;
|
||||||
# };
|
# };
|
||||||
|
|
||||||
# List services that you want to enable:
|
# Enable OpenSSH daemon
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
ports = [2121];
|
||||||
|
settings.X11Forwarding = true;
|
||||||
};
|
};
|
||||||
|
networking.firewall.allowedTCPPorts = [2121];
|
||||||
|
|
||||||
# Configure bootloader device
|
# bootloader device
|
||||||
boot.loader.grub.device = "/dev/sda";
|
boot.loader.grub.device = "/dev/sda";
|
||||||
|
|
||||||
# Open ports in the firewall.
|
# Open ports in the firewall.
|
||||||
@@ -263,7 +391,4 @@
|
|||||||
#
|
#
|
||||||
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
# 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?
|
system.stateVersion = "25.11"; # Did you read the comment?
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,45 @@
|
|||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
systemd.services.heat-room = {
|
||||||
|
description = "Morning room heating";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "jeremy";
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
${pkgs.furmark}/bin/furmark --demo furmark-gl &
|
||||||
|
sleep 1m
|
||||||
|
hyprctl dispatch dpms off
|
||||||
|
sleep 1h
|
||||||
|
pkill furmark
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
systemd.timers.heat-room = {
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "*-*-* 04:00:00"; # Runs at 4:00:00 AM every day
|
||||||
|
Persistent = true; # Run immediately if a scheduled time was missed
|
||||||
|
WakeSystem = true; # Wakes the system from suspend/hibernate
|
||||||
|
Unit = "heat-room.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
rocmPackages.clr.icd # Enables OpenCL support for AMD
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# This helps the drivers find the hardware
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
|
||||||
|
];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" =
|
||||||
{ device = "/dev/disk/by-label/NIXROOT";
|
{ device = "/dev/disk/by-label/NIXROOT";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
|
|||||||
Reference in New Issue
Block a user