initial switch to hyprland

This commit is contained in:
alsaiduq-lab 2025-10-06 13:02:01 -06:00
parent 1daf9cf44b
commit 6c8c5c43d4
41 changed files with 562 additions and 501 deletions

100
flake.lock generated
View file

@ -21,11 +21,11 @@
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1756770412,
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"lastModified": 1759362264,
"narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "4524271976b625a4a605beefd893f270620fd751",
"rev": "758cf7296bee11f1706a574c77d072b8a7baa881",
"type": "github"
},
"original": {
@ -61,11 +61,11 @@
"zon2nix": "zon2nix"
},
"locked": {
"lastModified": 1759249740,
"narHash": "sha256-csdhbTzHy7LjedNmSFVBIaUca3IBGK6YKeDO3UUd7nw=",
"lastModified": 1759677488,
"narHash": "sha256-fhRv6OdFLSfuiDDJpcfmmGRzy0fSSzOHbdMpuvwysTU=",
"owner": "ghostty-org",
"repo": "ghostty",
"rev": "ceac472af000ce370520b31a9fba927f55e7aac7",
"rev": "fa3bc416ab08a7ab849ef878c01009c0710725b4",
"type": "github"
},
"original": {
@ -113,20 +113,20 @@
"url": "ssh://git@github.com/alsaiduq-lab/Hu-Tao-Animated-Cursor"
}
},
"i3-dotfiles": {
"hyprland-dots": {
"flake": false,
"locked": {
"lastModified": 1758613492,
"narHash": "sha256-pYaBq0FCUoSZtTE73HAWDw97LEBvp56upVfJcLbdBH4=",
"lastModified": 1759689455,
"narHash": "sha256-GsuG+Gbs3XMbmmkK1azoWF+ZUJ891OhRMy3S6Fv8qo0=",
"ref": "refs/heads/master",
"rev": "73238b6b91151a0feeb4c7162fc5d1ca4e8fb132",
"revCount": 14,
"rev": "3c8faf70c7b92a09399f6ab48bb7b06c47a7b833",
"revCount": 19,
"type": "git",
"url": "ssh://git@github.com/alsaiduq-lab/i3-dotfiles"
"url": "ssh://git@github.com/alsaiduq-lab/hyprland-dots"
},
"original": {
"type": "git",
"url": "ssh://git@github.com/alsaiduq-lab/i3-dotfiles"
"url": "ssh://git@github.com/alsaiduq-lab/hyprland-dots"
}
},
"nix-gaming": {
@ -137,11 +137,11 @@
]
},
"locked": {
"lastModified": 1759110900,
"narHash": "sha256-fcu/r0ijvaYT2VHGkZGr0wq9uBMNFkiftVBy43/2oig=",
"lastModified": 1759629535,
"narHash": "sha256-VIXcJ2ahRgoqIUySwAz3r5mtITO2dp6tXGCVKVW6FmA=",
"owner": "fufexan",
"repo": "nix-gaming",
"rev": "2ac6a49266e9159ccb001b4c8cb1f50f67d502ae",
"rev": "df388c42b54714bd121796a9cec9322b7fa2894e",
"type": "github"
},
"original": {
@ -152,15 +152,15 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1748189127,
"narHash": "sha256-zRDR+EbbeObu4V2X5QCd2Bk5eltfDlCr5yvhBwUT6pY=",
"rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334",
"lastModified": 315532800,
"narHash": "sha256-YwoXN6fthkakCFD7nXPcUK+rkNr6ZTNTuF8zdGaxZo0=",
"rev": "dc704e6102e76aad573f63b74c742cd96f8f1e6c",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/25.05/nixos-25.05.802491.7c43f080a7f2/nixexprs.tar.xz"
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre870318.dc704e6102e7/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-25.05/nixexprs.tar.xz"
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
}
},
"nixpkgs-lib": {
@ -209,11 +209,11 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1759143472,
"narHash": "sha256-TvODmeR2W7yX/JmOCmP+lAFNkTT7hAxYcF3Kz8SZV3w=",
"lastModified": 1759580034,
"narHash": "sha256-YWo57PL7mGZU7D4WeKFMiW4ex/O6ZolUS6UNBHTZfkI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5ed4e25ab58fd4c028b59d5611e14ea64de51d23",
"rev": "3bcc93c5f7a4b30335d31f21e2f1281cba68c318",
"type": "github"
},
"original": {
@ -223,14 +223,52 @@
"type": "github"
}
},
"nvim-dots": {
"flake": false,
"locked": {
"lastModified": 1759115710,
"narHash": "sha256-IdLoHrGkhlqAJmfi4nRe2DAoHA5udyb5UTSCpNboaOo=",
"owner": "alsaiduq-lab",
"repo": "nvim-dotfiles",
"rev": "d251eb27eb70f67373aea50a15f1f71748af9039",
"type": "github"
},
"original": {
"owner": "alsaiduq-lab",
"repo": "nvim-dotfiles",
"type": "github"
}
},
"quickshell": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1759610621,
"narHash": "sha256-P3UPFd95mS/3aNgy40nCXAmyfR2bEEBd+tX6xfkYFb0=",
"ref": "refs/heads/master",
"rev": "c5c438f1cd1a76660a8658ef929a3d19e968e2ce",
"revCount": 689,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
"original": {
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}
},
"root": {
"inputs": {
"ghostty": "ghostty",
"home-manager": "home-manager",
"hu-tao-cursor": "hu-tao-cursor",
"i3-dotfiles": "i3-dotfiles",
"hyprland-dots": "hyprland-dots",
"nix-gaming": "nix-gaming",
"nixpkgs": "nixpkgs_4",
"nvim-dots": "nvim-dots",
"quickshell": "quickshell",
"unstable": "unstable"
}
},
@ -251,11 +289,11 @@
},
"unstable": {
"locked": {
"lastModified": 1759070547,
"narHash": "sha256-JVZl8NaVRYb0+381nl7LvPE+A774/dRpif01FKLrYFQ=",
"lastModified": 1759632233,
"narHash": "sha256-krgZxGAIIIKFJS+UB0l8do3sYUDWJc75M72tepmVMzE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "647e5c14cbd5067f44ac86b74f014962df460840",
"rev": "d7f52a7a640bc54c7bb414cca603835bf8dd4b10",
"type": "github"
},
"original": {
@ -281,11 +319,11 @@
]
},
"locked": {
"lastModified": 1748261582,
"narHash": "sha256-3i0IL3s18hdDlbsf0/E+5kyPRkZwGPbSFngq5eToiAA=",
"lastModified": 1759192380,
"narHash": "sha256-0BWJgt4OSzxCESij5oo8WLWrPZ+1qLp8KUQe32QeV4Q=",
"owner": "mitchellh",
"repo": "zig-overlay",
"rev": "aafb1b093fb838f7a02613b719e85ec912914221",
"rev": "0bcd1401ed43d10f10cbded49624206553e92f57",
"type": "github"
},
"original": {

View file

@ -1,5 +1,5 @@
{
description = "NixOS configuration for Cobray";
description = "NixOS configuration (hyprland) for Cobray";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
@ -17,20 +17,38 @@
unstable = {
url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
ghostty = {
url = "github:ghostty-org/ghostty";
quickshell = {
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
inputs.nixpkgs.follows = "nixpkgs";
};
i3-dotfiles = {
url = "git+ssh://git@github.com/alsaiduq-lab/i3-dotfiles";
nvim-dots = {
url = "github:alsaiduq-lab/nvim-dotfiles";
flake = false;
};
hyprland-dots = {
url = "git+ssh://git@github.com/alsaiduq-lab/hyprland-dots";
flake = false;
};
hu-tao-cursor = {
url = "git+ssh://git@github.com/alsaiduq-lab/Hu-Tao-Animated-Cursor";
};
ghostty = {
url = "github:ghostty-org/ghostty";
};
# TODO: sops-nix = {
# url = "github:Mic92/sops-nix";
# inputs.nixpkgs.follows = "nixpkgs";
# };
# Hyprspace = {
# url = "github:rich/Hyprspace";
# };
};
outputs = {
@ -65,7 +83,7 @@
inherit system;
specialArgs = {
inherit inputs;
i3dotfiles = inputs.i3-dotfiles;
hyprlanddots = inputs.hyprland-dots;
};
modules = [
@ -77,8 +95,11 @@
};
hostPlatform = system;
overlays = [
(final: prev: {ollama = unstablePkgs.ollama;})
(final: prev: {rpcs3 = unstablePkgs.rpcs3;})
(final: prev: {
ollama = unstablePkgs.ollama;
rpcs3 = unstablePkgs.rpcs3;
quickshell = unstable.legacyPackages.${system}.quickshell;
})
(final: prev: {
inherit
(customPkgs)
@ -94,9 +115,7 @@
binary-font = prev.binary-font.binary-clock-font;
})
(final: prev: {ghostty = inputs.ghostty.packages.${system}.default;})
(final: prev: {
hu-tao-animated-cursor = inputs.hu-tao-cursor.packages.${system}.default;
})
(final: prev: {hu-tao-animated-cursor = inputs.hu-tao-cursor.packages.${system}.default;})
];
};
}
@ -107,8 +126,9 @@
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = {
inherit inputs unstable;
i3dotfiles = inputs.i3-dotfiles;
inherit inputs;
hyprlanddots = inputs.hyprland-dots;
nvimDotfiles = inputs.nvim-dots;
};
users.cobray = import ./home-manager/cobray.nix;
};

View file

@ -1,16 +1,17 @@
{
pkgs,
inputs,
config,
lib,
hyprlanddots,
nvimDotfiles,
...
}: {
imports = [
./modules/dunst.nix
./init.nix
./modules/fish.nix
./modules/ghostty.nix
./modules/lazygit.nix
./modules/nvim.nix
./modules/picom.nix
./modules/polybar.nix
./modules/rofi.nix
./modules/starship.nix
./modules/zellij.nix
@ -20,11 +21,15 @@
./modules/thorium.nix
./modules/spotify.nix
./modules/obs.nix
./modules/udiskie.nix
./modules/mpv.nix
./modules/waybar.nix
./modules/ani-cli.nix
# temp removed, currently broken on nixpkgs? lmao
# ./modules/bambustudio.nix
./modules/quickshell.nix
# currently broken
# ./modules/hyprspace.nix
./modules/cava.nix
./modules/matugen.nix
./modules/rgb.nix
];
home.username = "cobray";
@ -35,13 +40,8 @@
xdg.mime.enable = false;
home.packages = with pkgs; [
coreutils
gnused
findutils
yazi
htop
btop
nvtopPackages.full
arandr
kdePackages.dolphin
];
}

41
home-manager/init.nix Normal file
View file

@ -0,0 +1,41 @@
{
lib,
config,
pkgs,
hyprlanddots,
nvimDotfiles,
...
}: {
home.activation.HyprlandDots = lib.hm.dag.entryAfter ["linkGeneration"] ''
set -euo pipefail
umask 022
repo=${lib.escapeShellArg hyprlanddots}
nvimrepo=${lib.escapeShellArg nvimDotfiles}
mkdir -p "${config.xdg.configHome}"
copy_dir() {
src="$1"; dest="$2"
[ -d "$src" ] || return 0
[ -e "$dest" ] && return 0
mkdir -p "$dest"
if [ -x ${pkgs.rsync}/bin/rsync ]; then
${pkgs.rsync}/bin/rsync -rlD \
--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r \
-- "$src"/ "$dest"/
else
cp -R -P --no-preserve=mode,ownership,timestamps -- "$src"/. "$dest"/
fi
chmod -R u+rwX "$dest"
}
copy_dir "$repo/fish" "${config.xdg.configHome}/fish"
copy_dir "$repo/hypr" "${config.xdg.configHome}/hypr"
copy_dir "$repo/quickshell" "${config.xdg.configHome}/quickshell"
copy_dir "$repo/waybar" "${config.xdg.configHome}/waybar"
copy_dir "$repo/cava" "${config.xdg.configHome}/cava"
copy_dir "$nvimrepo" "${config.xdg.configHome}/nvim"
if [ -f "$repo/starship.toml" ] && [ ! -e "${config.xdg.configHome}/starship.toml" ]; then
install -Dm0644 "$repo/starship.toml" "${config.xdg.configHome}/starship.toml"
fi
'';
}

View file

@ -0,0 +1,5 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [ cava ];
}

View file

@ -1,146 +0,0 @@
{pkgs, ...}: let
urgencyLowBackground = "#1a1b26";
urgencyLowForeground = "#c0caf5";
urgencyLowFrameColor = "#7aa2f7";
urgencyNormalBackground = "#24283b";
urgencyNormalForeground = "#c0caf5";
urgencyNormalFrameColor = "#7aa2f7";
urgencyCriticalBackground = "#f7768e";
urgencyCriticalForeground = "#1a1b26";
urgencyCriticalFrameColor = "#ff757f";
volumeHighlight = "#f5c2e7";
volumeFrameColor = "#eba0ac";
volumeBackground = "#45475a";
volumeForeground = "#f5e0dc";
brightnessHighlight = "#94e2d5";
brightnessFrameColor = "#74c7ec";
brightnessBackground = "#313244";
brightnessForeground = "#a6e3a1";
networkHighlight = "#f9e2af";
networkFrameColor = "#f38ba8";
networkBackground = "#1e1e2e";
networkForeground = "#fab387";
globalFrameColor = "#7aa2f7";
globalCornerRadius = 10;
globalMargin = 8;
globalPadding = 12;
globalBorderWidth = 2;
globalFont = "0xProto Nerd Font Bold 10";
globalIconPath = "/usr/share/icons/Candy/16x16/status/:/usr/share/icons/Candy/16x16/devices/:/usr/share/icons/Candy/16x16/apps/";
in {
services.dunst = {
enable = true;
settings = {
global = {
monitor = 0;
follow = "mouse";
width = "(300, 400)";
height = 300;
origin = "top-right";
offset = "15x50";
scale = 0;
notification_limit = 0;
progress_bar = true;
progress_bar_height = 10;
progress_bar_frame_width = 1;
progress_bar_min_width = 150;
progress_bar_max_width = 300;
transparency = 5;
padding = globalPadding;
horizontal_padding = globalPadding;
text_icon_padding = 12;
frame_width = globalBorderWidth;
frame_color = globalFrameColor;
separator_color = "frame";
separator_height = 2;
corner_radius = globalCornerRadius;
gap_size = globalMargin;
line_height = 0;
font = globalFont;
markup = "full";
format = "<b>%s</b>\n%b";
alignment = "left";
vertical_alignment = "center";
show_age_threshold = 60;
ellipsize = "middle";
ignore_newline = "no";
stack_duplicates = true;
hide_duplicate_count = false;
show_indicators = true;
enable_recursive_icon_lookup = true;
icon_position = "left";
min_icon_size = 32;
max_icon_size = 128;
icon_path = globalIconPath;
sticky_history = "yes";
history_length = 20;
mouse_left_click = "do_action, close_current";
mouse_middle_click = "close_all";
mouse_right_click = "close_current";
};
urgency_low = {
background = urgencyLowBackground;
foreground = urgencyLowForeground;
frame_color = urgencyLowFrameColor;
timeout = 5;
};
urgency_normal = {
background = urgencyNormalBackground;
foreground = urgencyNormalForeground;
frame_color = urgencyNormalFrameColor;
timeout = 5;
};
urgency_critical = {
background = urgencyCriticalBackground;
foreground = urgencyCriticalForeground;
frame_color = urgencyCriticalFrameColor;
timeout = 0;
};
volume = {
appname = "Volume";
summary = "*";
format = "<b>%s</b>\n%b";
highlight = volumeHighlight;
frame_color = volumeFrameColor;
background = volumeBackground;
foreground = volumeForeground;
};
brightness = {
appname = "Brightness";
summary = "*";
format = "<b>%s</b>\n%b";
highlight = brightnessHighlight;
frame_color = brightnessFrameColor;
background = brightnessBackground;
foreground = brightnessForeground;
};
network = {
appname = "Network";
summary = "*";
format = "<b>%s</b>\n%b";
highlight = networkHighlight;
frame_color = networkFrameColor;
background = networkBackground;
foreground = networkForeground;
};
};
};
home.packages = with pkgs; [
dunst
];
}

View file

@ -1,5 +1,5 @@
{pkgs, ...}: {
home.packages = [
(pkgs.ffmpeg-full.override {withXcb = true;})
pkgs.ffmpeg
];
}

View file

@ -6,5 +6,6 @@
eza
fd
ugrep
yazi
];
}

View file

@ -1,10 +1,38 @@
{pkgs, ...}: {
{
pkgs,
config,
lib,
...
}: {
home.packages = with pkgs; [
ghostty
fastfetch
];
programs.ghostty = {
enable = true;
enableFishIntegration = true;
settings = {
command = "${pkgs.fish}/bin/fish --login --interactive";
font-family = "0xProto Nerd Font";
font-size = 12;
theme = "TokyoNight Storm";
window-padding-x = 10;
window-padding-y = 10;
cursor-color = "#7AA2F7";
cursor-style = "block";
cursor-style-blink = true;
window-decoration = "none";
window-theme = "dark";
selection-background = "#364A82";
selection-foreground = "#C0CAF5";
keybind = [
"super+t=new_tab"
"super+w=close_surface"
];
};
};
home.file."${config.xdg.configHome}/ghostty/config".force = lib.mkForce true;
}

View file

@ -0,0 +1,3 @@
{pkgs, ...}: {
home.packages = [pkgs.hyprspace];
}

View file

@ -0,0 +1,3 @@
{pkgs, ...}: {
home.packages = [pkgs.matugen];
}

View file

@ -3,35 +3,12 @@
pkgs,
lib,
...
}: let
gitDir = "${pkgs.git}/bin/git";
nvim = "${config.home.homeDirectory}/.config/nvim";
in {
programs.neovim = {
enable = true;
};
}: {
programs.neovim.enable = true;
home.packages = with pkgs; [
git
luajit
luaPackages.luarocks
tree-sitter
];
home.sessionPath = ["$HOME/.local/share/nvim/mason/bin"];
home.activation.nvimConfig = lib.hm.dag.entryAfter ["writeBoundary"] ''
if [ ! -d "${nvim}/.git" ]; then
${gitDir} clone --depth 1 \
https://github.com/alsaiduq-lab/nvim-dotfiles.git "${nvim}"
echo "Neovim config at ${nvim} was installed"
else
if ${gitDir} -C "${nvim}" pull --ff-only origin master \
| grep -q 'Already up to date.'; then
echo "Neovim config at ${nvim} is unchanged"
else
echo "Neovim config at ${nvim} was updated"
fi
fi
'';
}

View file

@ -1,15 +0,0 @@
{
i3dotfiles,
pkgs,
...
}: {
home.packages = with pkgs; [
picom
];
xdg.configFile."picom" = {
source = "${i3dotfiles}/picom";
recursive = true;
force = true;
};
}

View file

@ -1,13 +0,0 @@
{
i3dotfiles,
pkgs,
...
}: {
home.packages = pkgs.polybar.all;
xdg.configFile."polybar" = {
source = "${i3dotfiles}/polybar";
recursive = true;
force = true;
};
}

View file

@ -0,0 +1,6 @@
{pkgs, ...}: {
home.packages = with pkgs; [
quickshell
];
home.sessionPath = ["${pkgs.quickshell}/bin"];
}

View file

@ -0,0 +1,17 @@
{pkgs, ...}: {
home.packages = [pkgs.openrgb-with-all-plugins];
systemd.user.services.openrgb-gui = {
Unit = {
Description = "OpenRGB GUI (daemon)";
After = ["graphical-session.target"];
PartOf = ["graphical-session.target"];
};
Service = {
ExecStart = "${pkgs.openrgb-with-all-plugins}/bin/openrgb --gui --startminimized --server 127.0.0.1:6742 --profile default";
Restart = "on-failure";
Environment = "QT_QPA_PLATFORM=wayland;xcb";
};
Install.WantedBy = ["graphical-session.target"];
};
}

View file

@ -1,7 +1,4 @@
{
pkgs,
...
}: {
{pkgs, ...}: {
home.packages = with pkgs; [
rofi
];

View file

@ -1,11 +1,6 @@
{i3dotfiles, ...}: {
{...}: {
programs.starship = {
enable = true;
enableFishIntegration = true;
};
xdg.configFile."starship.toml" = {
source = "${i3dotfiles}/starship.toml";
force = true;
};
}

View file

@ -1,4 +1,3 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
home.packages = [pkgs.thorium];
}

View file

@ -1,6 +0,0 @@
{...}: {
services.udiskie = {
enable = true;
tray = "always";
};
}

View file

@ -0,0 +1,5 @@
{pkgs, ...}: {
home.packages = with pkgs; [
waybar
];
}

View file

@ -10,12 +10,10 @@
};
environment.systemPackages = with pkgs; [
cava
pulseaudio
alsa-utils
portaudio
alsa-lib
pavucontrol
clang
];
}

View file

@ -6,13 +6,11 @@
gawk
psmisc
unzip
bash
maim
wrk
bitwarden
hashcat
cachix
gcc
gcc14
gnumake
cmake
ninja
@ -28,5 +26,8 @@
libclang
argc
appimage-run
clang
rsync
openssl
];
}

View file

@ -3,62 +3,62 @@
lib,
config,
...
}: let
t = config.theme;
in {
environment.shellInit = ''
if [ -d "$HOME/.cargo/bin" ]; then
export PATH="$PATH:$HOME/.cargo/bin"
fi
'';
}: {
environment.variables = {
EDITOR = "nvim";
VISUAL = "nvim";
TERM = "ghostty";
BROWSER = "thorium";
XCURSOR_THEME = t.cursorName;
XCURSOR_SIZE = toString t.cursorSize;
EDITOR = config.theme.Editor;
TERM = config.theme.Terminal;
BROWSER = config.theme.Browser;
XCURSOR_THEME = config.theme.cursorName;
XCURSOR_SIZE = toString config.theme.cursorSize;
GTK_THEME = "${config.theme.gtkTheme}:${config.theme.gtkThemeMode}";
QT_QPA_PLATFORMTHEME = config.theme.qtTheme;
QT_STYLE_OVERRIDE = config.theme.qtOverride;
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_DESKTOP = "Hyprland";
GDK_BACKEND = "wayland,x11";
QT_QPA_PLATFORM = "wayland;xcb";
SDL_VIDEODRIVER = "wayland";
MOZ_ENABLE_WAYLAND = "1";
NIXOS_OZONE_WL = "1";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
GBM_BACKEND = "nvidia-drm";
LIBVA_DRIVER_NAME = "nvidia";
CC = "${pkgs.gcc}/bin/gcc";
LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib";
LUA_PATH = "${pkgs.luajit}/share/lua/5.1/?.lua;${pkgs.luajit}/share/lua/5.1/?/init.lua;;";
LUA_CPATH = "${pkgs.luajit}/lib/lua/5.1/?.so;;";
PKG_CONFIG_PATH = lib.makeSearchPath "lib/pkgconfig" [
pkgs.mesa
pkgs.openssl.dev
pkgs.libxml2.dev
pkgs.zlib.dev
pkgs.portaudio
pkgs.alsa-lib
pkgs.stdenv.cc.cc
pkgs.xorg.libX11.dev
pkgs.xorg.libXtst
pkgs.xorg.libXi.dev
];
LD_LIBRARY_PATH = lib.makeLibraryPath [
pkgs.libglvnd
pkgs.mesa
pkgs.gcc-unwrapped.lib
pkgs.linuxPackages.nvidia_x11
pkgs.cudatoolkit
pkgs.mangohud
pkgs.portaudio
pkgs.alsa-lib
pkgs.stdenv.cc.cc.lib
pkgs.xorg.libX11
pkgs.xorg.libXtst
pkgs.xorg.libXi
pkgs.wayland
pkgs.libxkbcommon
pkgs.glib
];
CUDA_HOME = "${pkgs.cudatoolkit}";
CUDA_HOME = pkgs.cudatoolkit;
CPATH = "${pkgs.cudatoolkit}/include";
LIBCLANG_PATH = "${pkgs.llvmPackages.libclang}/lib";
};
environment.pathsToLink = [
"/share/fish"
"/share/${config.theme.Shell}"
"/bin"
"/share/icons"
"/share/pixmaps"

View file

@ -12,6 +12,7 @@
kochi-substitute
clear-sans
binary-font
fontconfig
];
fontconfig = {
enable = true;

View file

@ -2,39 +2,32 @@
config,
pkgs,
...
}: let
t = config.theme;
cursorName = t.cursorName;
cursorSize = toString t.cursorSize;
gtkTheme = t.gtkTheme;
iconTheme = t.iconTheme;
fontName = t.fontName;
in {
}: {
environment.etc = {
"gtk-2.0/gtkrc".text = ''
gtk-theme-name=${gtkTheme}
gtk-icon-theme-name=${iconTheme}
gtk-font-name=${fontName}
gtk-cursor-theme-name=${cursorName}
gtk-cursor-theme-size=${cursorSize}
gtk-theme-name=${config.theme.gtkTheme}
gtk-icon-theme-name=${config.theme.iconTheme}
gtk-font-name=${config.theme.font}
gtk-cursor-theme-name=${config.theme.cursorName}
gtk-cursor-theme-size="${builtins.toString config.theme.cursorSize}"
'';
"gtk-3.0/settings.ini".text = ''
[Settings]
gtk-application-prefer-dark-theme=1
gtk-theme-name=${gtkTheme}
gtk-icon-theme-name=${iconTheme}
gtk-font-name=${fontName}
gtk-cursor-theme-name=${cursorName}
gtk-cursor-theme-size=${cursorSize}
gtk-application-prefer-${config.theme.gtkThemeMode}-theme=1
gtk-theme-name=${config.theme.gtkTheme}
gtk-icon-theme-name=${config.theme.iconTheme}
gtk-font-name=${config.theme.font}
gtk-cursor-theme-name=${config.theme.cursorName}
gtk-cursor-theme-size="${builtins.toString config.theme.cursorSize}"
'';
"gtk-4.0/settings.ini".text = ''
[Settings]
gtk-application-prefer-dark-theme=1
gtk-theme-name=${gtkTheme}
gtk-icon-theme-name=${iconTheme}
gtk-font-name=${fontName}
gtk-cursor-theme-name=${cursorName}
gtk-cursor-theme-size=${cursorSize}
gtk-application-prefer-${config.theme.gtkThemeMode}-theme=1
gtk-theme-name=${config.theme.gtkTheme}
gtk-icon-theme-name=${config.theme.iconTheme}
gtk-font-name=${config.theme.font}
gtk-cursor-theme-name=${config.theme.cursorName}
gtk-cursor-theme-size="${builtins.toString config.theme.cursorSize}"
'';
};
@ -42,11 +35,16 @@ in {
programs.dconf.profiles.user.databases = [
{
settings."org/gnome/desktop/interface" = {
gtk-theme = gtkTheme;
icon-theme = iconTheme;
cursor-theme = cursorName;
font-name = fontName;
gtk-theme = config.theme.gtkTheme;
icon-theme = config.theme.iconTheme;
cursor-theme = config.theme.cursorName;
font-name = config.theme.font;
color-scheme = "prefer-${config.theme.gtkThemeMode}";
};
}
];
environment.sessionVariables = {
GTK_THEME = "${config.theme.gtkTheme}:${config.theme.gtkThemeMode}";
};
}

View file

@ -0,0 +1,57 @@
{
lib,
config,
pkgs,
...
}: {
services.xserver.enable = false;
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
services.greetd = {
enable = true;
package = pkgs.greetd.tuigreet;
settings.default_session = {
user = "greeter";
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --remember --cmd ${pkgs.hyprland}/bin/Hyprland";
};
};
xdg.portal = {
enable = true;
extraPortals = with pkgs; [xdg-desktop-portal-hyprland xdg-desktop-portal-gtk];
config = {
common.default = ["gtk"];
hyprland.default = ["hyprland" "gtk"];
};
};
systemd.user.services.xdg-desktop-portal-hyprland.unitConfig.ConditionPathExists = "%t/wayland-0";
security.polkit.enable = true;
environment.systemPackages = with pkgs; [
qt5.qtwayland
qt6.qtwayland
polkit_gnome
candy-icons
hu-tao-animated-cursor
tokyonight-gtk-theme
hyprlock
wlogout
wl-clipboard
xclip
wofi
hyprshot
hypridle
polkit_gnome
grim
slurp
swappy
imv
syshud
hyprpaper
];
}

View file

@ -1,69 +0,0 @@
{pkgs, ...}: {
services.xserver = {
enable = true;
xkb = {
layout = "us";
variant = "";
};
windowManager.i3 = {
enable = true;
package = pkgs.i3-gaps;
extraSessionCommands = ''
if [ -f /var/lib/lightdm-background/.last-wallpaper ]; then
${pkgs.feh}/bin/feh --bg-fill "$(cat /var/lib/lightdm-background/.last-wallpaper)"
fi
'';
};
# this is actually here because i get peeved personally when I see a none in "none+i3"
desktopManager.xfce = {
enable = true;
noDesktop = true;
enableXfwm = false;
};
desktopManager.session = [
{
name = "xfce+i3";
start = ''
if [ -f /var/lib/lightdm-background/.last-wallpaper ]; then
${pkgs.feh}/bin/feh --bg-fill "$(cat /var/lib/lightdm-background/.last-wallpaper)"
fi
export XDG_DATA_DIRS="${pkgs.tokyonight-gtk-theme}/share:${pkgs.candy-icons}/share:${pkgs.hicolor-icon-theme}/share:${pkgs.adwaita-icon-theme}/share:$XDG_DATA_DIRS"
${pkgs.xfce.xfce4-session}/bin/xfce4-session --with-ck-launch &
${pkgs.i3-gaps}/bin/i3
'';
}
];
};
environment.systemPackages = with pkgs; [
dmenu
i3status
i3lock-color
i3blocks
picom
feh
i3-auto-layout
yt-dlp
flameshot
imagemagick
slop
ghostscript
via
arandr
xsettingsd
lxappearance
gsettings-desktop-schemas
adwaita-qt
candy-icons
tokyonight-gtk-theme
hicolor-icon-theme
adwaita-icon-theme
gnome-themes-extra
findutils
coreutils
hu-tao-animated-cursor
];
}

View file

@ -1,17 +1,11 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
linuxHeaders
freetype.dev
pixman
mesa
libglvnd
dbus.dev
openssl
openssl.dev
libxml2
zlib
zlib.dev
texlive.combined.scheme-full
poppler_utils
libnotify
egl-wayland
vulkan-tools
libva-utils
vdpauinfo
];
}

View file

@ -3,6 +3,7 @@
networkmanagerapplet
wget
curl
aria2
cloudflared
nmap
httpie

View file

@ -9,27 +9,35 @@
package = config.boot.kernelPackages.nvidiaPackages.stable;
open = true;
modesetting.enable = true; # must be true for Wayland
powerManagement.enable = false;
powerManagement.enable = false; # laptops need this
nvidiaSettings = true;
nvidiaPersistenced = true;
};
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [nvidia-vaapi-driver];
};
programs.nix-ld = {
enable = true;
libraries = with pkgs; [
stdenv.cc.cc.lib
cudaPackages.cudatoolkit.lib
cudaPackages.cudatoolkit
cudaPackages.cudnn
cudaPackages.nccl
config.hardware.nvidia.package
];
};
environment.systemPackages = with pkgs; [
glxinfo
mesa-demos
vulkan-tools
vulkan-headers
vulkan-validation-layers
libva-utils
vdpauinfo
egl-wayland
cudaPackages.cudatoolkit
];
}

View file

@ -1,8 +1,7 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
(python311.withPackages (ps:
(python312.withPackages (ps:
with ps; [
i3ipc
requests
ipython
six
@ -19,10 +18,10 @@
datasets
debugpy
pynvim
pkginfo
]))
isort
uv
python311
ruff
];
}

View file

@ -1,4 +1,9 @@
{pkgs, ...}: {
{
lib,
config,
pkgs,
...
}: {
services.hardware.openrgb = {
enable = true;
package = pkgs.openrgb-with-all-plugins;
@ -6,9 +11,16 @@
server.port = 6742;
};
services.udev.packages = [pkgs.openrgb-with-all-plugins];
boot.kernelModules = ["i2c-dev" "i2c-piix4"];
users.groups.i2c.members = ["cobray"];
services.udev.packages = [pkgs.openrgb-with-all-plugins];
systemd.services.openrgb.serviceConfig.Environment = "QT_QPA_PLATFORM=offscreen";
users.groups = {
i2c = {};
plugdev = {};
};
users.users.${config.theme.user}.extraGroups = ["i2c" "plugdev"];
systemd.services.openrgb.serviceConfig.Environment = ["QT_QPA_PLATFORM=offscreen"];
environment.sessionVariables.QT_QPA_PLATFORM = "wayland;xcb";
}

View file

@ -17,7 +17,7 @@ in {
server = {
bind_address = "127.0.0.1";
port = 11212;
limiter = true;
limiter = false;
image_proxy = true;
base_url = lib.mkIf (domain != null) "https://${domain}";
};
@ -27,18 +27,25 @@ in {
};
search = {
safe_search = 0;
autocomplete = "google";
default_engine = "google_web";
default_categories = ["general" "it" "images" "videos" "map"];
autocomplete = "duckduckgo";
default_engine = "";
default_categories = ["general" "it" "images" "videos" "map" "news" "science"];
formats = ["html" "json"];
};
enabled_plugins = ["hash" "self_info" "tracker_url_remover" "hostname_replace"];
enabled_plugins = [
"hash"
"self_info"
"tracker_url_remover"
"hostname_replace"
"open_access_doi_rewrite"
];
engines = [
{
name = "duckduckgo_web";
engine = "duckduckgo";
disabled = false;
categories = ["general"];
weight = 0.9;
weight = 1.0;
timeout = 3.0;
}
{
@ -46,7 +53,7 @@ in {
engine = "google";
disabled = false;
categories = ["general"];
weight = 0.75;
weight = 1.0;
timeout = 4.0;
}
{
@ -54,7 +61,39 @@ in {
engine = "bing";
disabled = false;
categories = ["general"];
weight = 0.4;
weight = 1.0;
timeout = 4.0;
}
{
name = "brave";
engine = "brave";
disabled = false;
categories = ["general"];
weight = 1.0;
timeout = 3.0;
}
{
name = "mojeek";
engine = "mojeek";
disabled = false;
categories = ["general"];
weight = 0.9;
timeout = 3.0;
}
{
name = "qwant";
engine = "qwant";
disabled = false;
categories = ["general"];
weight = 0.8;
timeout = 3.0;
}
{
name = "startpage";
engine = "startpage";
disabled = false;
categories = ["general"];
weight = 0.9;
timeout = 4.0;
}
{
@ -64,6 +103,13 @@ in {
categories = ["general"];
timeout = 3.0;
}
{
name = "wikidata";
engine = "wikidata";
disabled = false;
categories = ["general"];
timeout = 3.0;
}
{
name = "wikibooks";
engine = "wikibooks";
@ -78,6 +124,27 @@ in {
categories = ["general"];
timeout = 3.0;
}
{
name = "arxiv";
engine = "arxiv";
disabled = false;
categories = ["science"];
timeout = 4.0;
}
{
name = "crossref";
engine = "crossref";
disabled = false;
categories = ["science"];
timeout = 4.0;
}
{
name = "semantic_scholar";
engine = "semantic_scholar";
disabled = false;
categories = ["science"];
timeout = 4.0;
}
{
name = "github_code";
engine = "github";
@ -85,6 +152,13 @@ in {
categories = ["it"];
timeout = 4.0;
}
{
name = "stackoverflow";
engine = "stackoverflow";
disabled = false;
categories = ["it"];
timeout = 4.0;
}
{
name = "wikicommons_img";
engine = "wikicommons";

View file

@ -1,25 +0,0 @@
{lib, ...}:
with lib; {
options.theme = {
cursorName = mkOption {
type = types.str;
default = "Hu-Tao-Animated-Cursor";
};
cursorSize = mkOption {
type = types.int;
default = 24;
};
gtkTheme = mkOption {
type = types.str;
default = "Tokyonight-Dark";
};
iconTheme = mkOption {
type = types.str;
default = "candy-icons";
};
fontName = mkOption {
type = types.str;
default = "Clear Sans 10";
};
};
}

View file

@ -18,14 +18,6 @@
protontricks
gamemode
mangohud
vulkan-tools
vulkan-loader
vulkan-headers
vulkan-validation-layers
libstrangle
piper
portaudio
alsa-lib
libglvnd
];
}

View file

@ -0,0 +1,9 @@
{
config,
pkgs,
...
}: {
security.polkit.enable = true;
services.udisks2.enable = true;
services.gvfs.enable = true;
}

View file

@ -1,10 +1,14 @@
{pkgs, ...}: {
# Define a user account. Don't forget to set a password with 'passwd'.
users.users.cobray = {
{
pkgs,
lib,
config,
...
}: {
users.users.${config.theme.user} = {
isNormalUser = true;
description = "Mon Aie";
extraGroups = ["networkmanager" "wheel" "docker" "video"];
shell = pkgs.fish;
shell = builtins.getAttr config.theme.Shell pkgs;
extraGroups = ["wheel" "networkmanager" "docker" "video" "render" "input" "audio"];
linger = true;
};
security.sudo = {
@ -12,7 +16,7 @@
wheelNeedsPassword = true;
};
programs.fish = {
enable = true;
};
programs."${config.theme.Shell}".enable = true;
nix.settings.trusted-users = ["root" config.theme.user];
}

View file

@ -1,12 +0,0 @@
# For xorgsisters only
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
xorg.xdpyinfo
slop
xorg.libX11
xorg.libXtst
xorg.libXi
xorg.xorgproto
xclip
];
}

64
hosts/settings.nix Normal file
View file

@ -0,0 +1,64 @@
# used to seed my config
{lib, ...}:
with lib; {
options.theme = {
user = mkOption {
type = types.str;
default = "cobray";
};
cursorName = mkOption {
type = types.str;
default = "Hu-Tao-Animated-Cursor";
};
cursorSize = mkOption {
type = types.int;
default = 24;
};
gtkTheme = mkOption {
type = types.str;
default = "Tokyonight-Dark";
};
gtkThemeMode = mkOption {
type = types.str;
# light or dark mode
default = "dark";
};
qtTheme = mkOption {
type = types.str;
# qt5 or 6 it seems
default = "qt6ct";
};
qtOverride = mkOption {
type = types.str;
default = "Fusion";
};
iconTheme = mkOption {
type = types.str;
default = "candy-icons";
};
font = mkOption {
type = types.str;
default = "Clear Sans 10";
};
Terminal = mkOption {
type = types.str;
default = "ghostty";
};
TerminalFont = mkOption {
type = types.str;
default = "0xProto Nerd Font";
};
Browser = mkOption {
type = types.str;
default = "thorium";
};
Editor = mkOption {
type = types.str;
default = "nvim";
};
Shell = mkOption {
type = types.str;
default = "fish";
};
};
}

View file

@ -1,8 +1,7 @@
{pkgs, ...}: {
imports = [
./settings.nix
./cachix.nix
./modules/settings.nix
./modules/i3.nix
./modules/gtk.nix
./modules/audio.nix
./modules/bluetooth.nix
@ -20,7 +19,6 @@
./modules/npm.nix
./modules/tailscale.nix
./modules/ld.nix
./modules/x11.nix
./modules/ollama.nix
./modules/cups.nix
./modules/rust.nix
@ -29,9 +27,11 @@
./modules/core.nix
./modules/libs.nix
./modules/rgb.nix
./modules/nano.nix
./modules/hyprland.nix
./modules/searxng.nix
./modules/nano.nix
./modules/qt.nix
./modules/udiskie.nix
];
npm.enable = true;
services.udisks2.enable = true;