Compare commits

...

62 Commits

Author SHA1 Message Date
3392366413 Added virtualization container policy config 2025-11-07 15:41:57 -08:00
85e1ecd46a Removed waydroid, enabled docker socket compat and added self to group, default to shutting phone screen off on rdp disconnect 2025-11-07 15:23:10 -08:00
3f83fc9d57 Also make phone stay awake in rdp mode 2025-11-07 15:04:14 -08:00
f536cea5c3 Skip fullscreen option on phonerdp 2025-11-07 14:59:57 -08:00
3d5c6a443b Added phonerdp desktop entry 2025-11-07 14:58:10 -08:00
283f9ad213 Re-enabled nvtop, nopasswd for nvtop, properly enable kitty with remote control, streamdeck now uses alltop, alltop desktop entry, j4-dmenu-desktop as wrapper for bemenu so that desktop entries show, fixed desktop entry location 2025-11-07 14:55:22 -08:00
513cf526d8 Added pinta for quick cropping and rotating of images 2025-11-06 17:40:00 -08:00
069de41562 Added quick command and desktop file to start an abd screen mirroring session for my android phone 2025-11-05 11:48:16 -08:00
5bf0216460 Switched flameshot for custom grim/wl-copy/swappy pipeline, new printscr shortcuts, minor refactoring of some modules, spotify_player swap for streamdeck, new area for hyprland scripts 2025-11-03 20:58:20 -08:00
62a324a746 Merge pull request #19 from caperren/working-branch
Fix kitty accidentally launching glances
2025-10-31 20:06:19 -07:00
e380f07018 Fix kitty accidentally launching glances 2025-10-31 20:05:23 -07:00
424a74773f Merge pull request #18 from caperren/working-branch
General cleanup and refactoring, added glances with config, managed streamdeck config and created new ui for it
2025-10-31 19:59:53 -07:00
064a996b73 Added gimp, removed glances desktop, created new managed streamdeck config with logos 2025-10-31 19:58:39 -07:00
20e338c380 Added streamdeck config and icons to home-manager, moved jetbrains toolbox desktop entry to dotfiles 2025-10-31 16:23:55 -07:00
57b5471d58 Added glances as all-in-one system monitor, initial config, desktop entry 2025-10-31 14:51:27 -07:00
c53b236d5b Merge pull request #17 from caperren/working-branch
Revert nrs alias usage, add imv viewer and set as default
2025-10-31 12:43:27 -07:00
aa5037b107 Add imv viewer, set as default 2025-10-31 12:41:25 -07:00
1de9399021 Reverted nrs alias usage 2025-10-31 01:34:28 -07:00
5748f4b2e7 Merge pull request #16 from caperren/working-branch
Trace versions of rebuild and update commands, fixes, firefox as default web handler
2025-10-30 11:01:52 -07:00
8a573b1726 Added trace versions of nix rebuild and update, fixed a font name that was changed, commented nvtop for failing build, switched btop to cuda variant 2025-10-30 10:57:17 -07:00
6d59c86b02 Make firefox default web link application, added new potential background 2025-10-29 20:49:37 -07:00
f3843fd686 Merge pull request #15 from caperren/working-branch
Added qt5ct, xev, added theming to bemenu, new background (unused), b…
2025-10-28 10:00:17 -07:00
e71e9c7a1d Added qt5ct, xev, added theming to bemenu, new background (unused), background folder refactor 2025-10-28 09:59:30 -07:00
5e44c0e28c Merge pull request #14 from caperren/working-branch
Added okular as default pdf, full texlive environment for resumes
2025-10-27 23:06:55 -07:00
6b43a528f9 Added okular as default pdf, full texlive environment for resumes 2025-10-27 15:31:20 -07:00
cdb9b3f2f8 Merge pull request #13 from caperren/working-branch
Removed slack autostart, changes to spotify and glava, bemenu over wofi app launcher
2025-10-27 12:53:09 -07:00
8f05b33391 Move spotify and create glava desktop entries within home manager, switch to bemenu from wofi, add official spotify client 2025-10-27 12:51:33 -07:00
b7ba045305 Remove slack autostart 2025-10-25 23:07:13 -07:00
c631417ec5 Merge pull request #12 from caperren/working-branch
Added inav-configurator, removed deadbeef and davinci resolve, temp r…
2025-10-25 11:08:21 -07:00
702907d454 Added inav-configurator, removed deadbeef and davinci resolve, temp removal of rpi-imager for build failure, new git user syntax 2025-10-25 11:07:00 -07:00
f15568d031 Merge pull request #11 from caperren/working-branch
More tools for rc hobby, programming, and starting slack by default on the laptop
2025-09-16 15:24:18 -07:00
76405677a0 More rc tools to hobby rc 2025-09-16 15:15:06 -07:00
ffdbf536b5 Add slack to startup app on laptop 2025-09-16 15:04:06 -07:00
cce655e475 Added more tools for rc hobby programming and config. 2025-09-14 21:32:46 -07:00
f536023a14 Merge pull request #10 from caperren/working-branch
Removed abandoned workspace_swipe hyprland option.
2025-09-14 21:24:03 -07:00
e8357a95ee Removed abandoned workspace_swipe hyprland option. 2025-09-14 21:23:22 -07:00
cb1249357d Merge pull request #9 from caperren/working-branch
Updates to programming packages, rofi, and new hobby rc group
2025-09-14 21:13:48 -07:00
5aa036def8 Updated to current rofi package naming, and py314 without "Full" suffix 2025-09-14 21:12:01 -07:00
1b45ef06f1 Added ground station software for hobby rc flying 2025-09-04 21:21:12 -07:00
692558b7b8 Add gnumake 2025-09-04 12:22:04 -07:00
ae61c718e6 Merge pull request #8 from caperren/waybar-wallpaper-misc-tweaks
Waybar wallpaper misc tweaks
2025-09-04 12:21:33 -07:00
fcf8b46e38 Add and cleanup media creation 2025-09-04 12:20:45 -07:00
88366d7dbe Media creation and desktop tweaks 2025-09-04 12:11:07 -07:00
972ca7186a Merge pull request #7 from caperren/waybar-wallpaper-misc-tweaks
Waybar wallpaper misc tweaks
2025-09-03 19:42:34 -07:00
7943950c79 Removed nwg-displays 2025-09-03 19:41:28 -07:00
b3a27173eb Commented out failing builds 2025-09-03 18:09:39 -07:00
f6087ae017 Added slack, buildable netextender, default jetbrains mono font 2025-09-03 18:09:28 -07:00
c18257042d Tweaked waybar config for a prettier setup, added hyprpaper and black default background, improved nus/nrs 2025-09-03 18:09:26 -07:00
93ac73b583 Cleanup, added more radio items, tweaks to displaylink 2025-09-02 22:38:25 -07:00
56c18519b3 Merge pull request #5 from caperren/jetbrains-thunar-waybar
Better theming, lock and idle control, wofi desktop launchers, brightness and volume defaults
2025-07-02 01:12:27 -07:00
17495207aa Default brightness for screen and keyboard on laptop, default audio volume level for all systems 2025-07-01 23:57:51 -07:00
b138866194 Add desktop file for spotify-player, jetbrains-toolbox, autostart hypridle, dotfiles for hypridle, idle_inhibitor configs, gtk app dark theme 2025-07-01 23:50:29 -07:00
37398fccac Merge pull request #4 from caperren/nr200p-fix
Fix bad comment in hyprland conf file
2025-07-01 04:13:20 -07:00
994e2b18cd Fix bad comment in hyprland conf file 2025-07-01 04:12:30 -07:00
7bc49c9ba3 Merge pull request #3 from caperren/dotfiles
Managed dotfiles with home-manager, minor application group tweaks/cleanup
2025-07-01 03:07:03 -07:00
78a9be43cb Minimal hyprland config de-duplication 2025-07-01 02:53:48 -07:00
dd2068166a Shorter aliases for nix-specific bash commands 2025-07-01 02:25:43 -07:00
366d238141 Added unused ai application group, btop, better hyprtop and hypridle, automatic nix garbage collection, and un-deduplicated hyprland configs 2025-07-01 02:20:40 -07:00
6216d108a9 Kanshi config for cap-nr200p 2025-07-01 01:40:33 -07:00
69522943d7 spotify-player dotfile, snuck in stress application for s-tui stress testing 2025-07-01 00:34:00 -07:00
03cd45aac4 Waybar configs and crestline account home manager template 2025-07-01 00:16:31 -07:00
5cd18d4fcb Home manager global settings, user settings for caperren, and dotfiles for kanshi and wlogout 2025-06-30 23:39:41 -07:00
84 changed files with 2980 additions and 132 deletions

4
README.md Normal file
View File

@@ -0,0 +1,4 @@
# nixos-configs
## Misc references used
* https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles/tree/main

View File

@@ -40,27 +40,5 @@
inputs.home-manager.nixosModules.default
];
};
homeConfigurations = {
"caperren@cap-slim7" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraModules = [
./home/caperren/common.nix
./home/caperren/laptop.nix
];
username = "caperren";
homeDirectory = "/home/caperren";
};
"caperren@cap-nr200p" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraModules = [
./home/caperren/common.nix
./home/caperren/desktop1.nix
];
username = "caperren";
homeDirectory = "/home/caperren";
};
};
};
}

View File

@@ -22,6 +22,7 @@
../../modules/system/desktop.nix
../../modules/system/fonts.nix
../../modules/system/gpu-nvidia.nix
../../modules/system/home-manager-settings.nix
../../modules/system/hyprland.nix
../../modules/system/internationalization.nix
../../modules/system/networking.nix
@@ -35,11 +36,14 @@
../../modules/application-groups/android.nix
../../modules/application-groups/downloads.nix
../../modules/application-groups/gaming.nix
../../modules/application-groups/hobby-rc.nix
../../modules/application-groups/homelab.nix
../../modules/application-groups/media.nix
../../modules/application-groups/media-creation.nix
../../modules/application-groups/pcb-design.nix
../../modules/application-groups/productivity.nix
../../modules/application-groups/programming.nix
../../modules/application-groups/radio.nix
../../modules/application-groups/social.nix
../../modules/application-groups/system-utilities.nix
../../modules/application-groups/virtualization.nix

View File

@@ -17,6 +17,7 @@
../../modules/system/displaylink.nix
../../modules/system/fonts.nix
../../modules/system/gpu-amd.nix
../../modules/system/home-manager-settings.nix
../../modules/system/hyprland.nix
../../modules/system/internationalization.nix
../../modules/system/laptop.nix
@@ -31,11 +32,14 @@
../../modules/application-groups/android.nix
../../modules/application-groups/downloads.nix
../../modules/application-groups/gaming.nix
../../modules/application-groups/hobby-rc.nix
../../modules/application-groups/homelab.nix
../../modules/application-groups/media.nix
../../modules/application-groups/media-creation.nix
../../modules/application-groups/pcb-design.nix
../../modules/application-groups/productivity.nix
../../modules/application-groups/programming.nix
../../modules/application-groups/radio.nix
../../modules/application-groups/social.nix
../../modules/application-groups/system-utilities.nix
../../modules/application-groups/virtualization.nix

View File

@@ -0,0 +1,39 @@
{ pkgs, config, ... }:
{
services.ollama = {
enable = true;
loadModels = [
"llama3.2:3b"
"phi4-reasoning:14b"
"dolphin3:8b"
"smallthinker:3b"
"gemma3:4b"
"gemma3:12b"
"gemma3:27b"
"deepcoder:14b"
"qwen3:14b"
"nomic-embed-text"
];
acceleration = "cuda";
};
services.open-webui = {
enable = true;
port = 8888;
host = "127.0.0.1";
};
environment.systemPackages = with pkgs; [
oterm
alpaca
aichat
fabric-ai
aider-chat
# tgpt
# smartcat
# nextjs-ollama-llm-ui
# open-webui
];
}

View File

@@ -1,5 +1,4 @@
{ config, pkgs, ... }:
{
programs.adb.enable = true;
virtualisation.waydroid.enable = true;
}

View File

@@ -1,6 +1,7 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
gallery-dl
transmission_4-qt
yt-dlp
];

View File

@@ -0,0 +1,9 @@
{ config, pkgs, ... }:
{
programs.qgroundcontrol.enable = true;
environment.systemPackages = with pkgs; [
inav-configurator
mission-planner
];
}

View File

@@ -0,0 +1,11 @@
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
audacity
darktable
inkscape
kdePackages.kdenlive
obs-studio
pinta
];
}

View File

@@ -26,18 +26,15 @@
};
environment.systemPackages = with pkgs; [
deadbeef
vlc
sox
audacity
glava
spotify-player
gimp
imv
plex-desktop
projectm_3
obs-studio
darktable
# Encountering build failures
# plex-desktop
sox
spotify
spotify-player
vlc
];
}

View File

@@ -2,7 +2,7 @@
{
environment.systemPackages = with pkgs; [
kicad
pcb2gcode
#pcb2gcode
];
}

View File

@@ -2,5 +2,7 @@
{
environment.systemPackages = with pkgs; [
obsidian
kdePackages.okular
texliveFull
];
}

View File

@@ -1,20 +1,21 @@
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
vscode-with-extensions
nixfmt-rfc-style
platformio
jetbrains-toolbox
arduino-ide
python311Full
dfu-util
gcc
gnumake
jetbrains-toolbox
nix-update
nixfmt-rfc-style
nixos-generators
nodejs
# platformio
python314
stm32cubemx
stm32flash
python3Full
nix-update
nixos-generators
teensy-udev-rules
vscode-with-extensions
];
services.udev.extraRules = ''

View File

@@ -3,6 +3,7 @@
hardware.rtl-sdr.enable = true;
environment.systemPackages = with pkgs; [
chirp
soapysdr
soapyrtlsdr
];

View File

@@ -1,9 +1,8 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
telegram-desktop
discord
slack
telegram-desktop
];
}

View File

@@ -1,57 +1,62 @@
{ config, pkgs, ... }:
{
hardware.keyboard.qmk.enable = true;
hardware.logitech.wireless.enable = true;
hardware.logitech.wireless.enableGraphical = true;
programs.thunar.enable = true;
programs.thunar.plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman
];
services.gvfs.enable = true; # Mount, trash, and other functionalities
services.tumbler.enable = true; # Thumbnail support for images
programs.ydotool.enable = true;
services.glances.enable = true;
services.gvfs.enable = true; # Mount, trash, and other functionalities
services.hardware.openrgb.enable = true;
services.openssh.enable = true;
services.printing.enable = true;
hardware.logitech.wireless.enable = true;
hardware.logitech.wireless.enableGraphical = true;
hardware.keyboard.qmk.enable = true;
services.hardware.openrgb.enable = true;
services.tumbler.enable = true; # Thumbnail support for images
environment.systemPackages = with pkgs; [
kitty
lf
btop-cuda
desktop-file-utils
dnsutils
ffmpeg-full
git
gparted
htop
iftop
iotop
util-linux
usbutils
dnsutils
unzip
killall
wget
jq
speedcrunch
gparted
ffmpeg-full
xfce.mousepad
imagemagick
nvtopPackages.full
iotop
jq
kdePackages.qt6ct
killall
kitty
swappy
lf
minicom
ncdu
s-tui
nmap
pciutils
desktop-file-utils
rpi-imager
rpiboot
streamdeck-ui
scrcpy
openrgb-with-all-plugins
networkmanagerapplet
rofi-bluetooth
networkmanager
networkmanagerapplet
nmap
nvtopPackages.full
openrgb-with-all-plugins
pciutils
rofi-bluetooth
# rpi-imager # <- Build Failure
rpiboot
s-tui
scrcpy
speedcrunch
streamdeck-ui
stress
unzip
usbutils
util-linux
wget
xev
xfce.mousepad
];
}

View File

@@ -1,8 +1,14 @@
{ config, pkgs, ... }:
{
virtualisation.containers.policy = {
default = [ { type = "insecureAcceptAnything"; } ];
};
virtualisation.podman = {
enable = true;
dockerCompat = true;
dockerSocket.enable = true;
};
environment.systemPackages = with pkgs; [

View File

@@ -0,0 +1,71 @@
# TODO: This was hacked together until it worked...Clean it up before merging
{
description = "SonicWall NetExtender Flake";
outputs =
{ self, nixpkgs, ... }:
let
systems = [ "x86_64-linux" ];
neVersion = "10.3.0-21";
neUrl = "https://software.sonicwall.com/NetExtender/NetExtender-linux-amd64-${neVersion}.tar.gz";
# ✅ Define the overlay function directly
overlay = final: prev: {
netextender = prev.stdenv.mkDerivation rec {
pname = "netextender";
version = neVersion;
src = prev.fetchurl {
url = neUrl;
sha256 = "sha256-pnF/KRQMAcPnTj0Ni+sKKkw+H72WHf2iYVkWsWNCndc=";
};
nativeBuildInputs = [
prev.autoPatchelfHook
prev.makeWrapper
];
buildInputs = [
prev.openssl_3
prev.zlib
prev.gtk2
prev.pango
prev.cairo
prev.xorg.libX11
];
unpackPhase = "tar -xzf $src";
installPhase = ''
mkdir -p $out/bin
BIN_CLI=$(find . -type f -iname nxcli -perm -111 | head -n1)
BIN_SVC=$(find . -type f -iname neservice -perm -111 | head -n1)
install -Dm755 "$BIN_CLI" $out/bin/nxcli
install -Dm755 "$BIN_SVC" $out/bin/neservice
ln -sf nxcli $out/bin/netextender
ln -sf neservice $out/bin/nxservice
for exe in nxcli neservice; do
wrapProgram $out/bin/$exe \
--prefix LD_LIBRARY_PATH : ${prev.lib.makeLibraryPath buildInputs}
done
'';
};
};
in
{
overlays = {
x86_64-linux = overlay;
};
packages = {
x86_64-linux =
let
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [ overlay ];
};
in
{
default = pkgs.netextender;
netextender = pkgs.netextender;
};
};
};
}

View File

@@ -1,5 +1,14 @@
{ config, pkgs, ... }:
{
boot = {
extraModulePackages = [ config.boot.kernelPackages.evdi ];
initrd = {
# List of modules that are always loaded by the initrd.
kernelModules = [
"evdi"
];
};
};
services.xserver.videoDrivers = [
"displaylink"
"modesetting"

View File

@@ -1,11 +1,19 @@
{ config, pkgs, ... }:
{
fonts.fontDir.enable = true;
fonts.fontconfig.enable = true;
fonts.fontconfig.antialias = true;
fonts.fontconfig = {
enable = true;
antialias = true;
defaultFonts = {
monospace = [ "JetBrains Mono" ];
sansSerif = [ "JetBrains Mono" ];
serif = [ "JetBrains Mono" ];
};
};
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-emoji
noto-fonts-color-emoji
liberation_ttf
fira-code
fira-code-symbols

View File

@@ -0,0 +1,5 @@
{ config, pkgs, ... }:
{
home-manager.useGlobalPkgs = true;
home-manager.backupFileExtension = "bkp";
}

View File

@@ -1,51 +1,46 @@
{ config, pkgs, ... }:
{
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
services.displayManager.gdm = {
enable = true;
wayland = true;
};
services.xserver = {
enable = true;
};
hardware.graphics = {
enable = true;
enable32Bit = true;
};
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
programs.hyprlock.enable = true;
programs.waybar.enable = true;
services.displayManager.gdm = {
enable = true;
wayland = true;
};
services.hypridle.enable = true;
services.xserver.enable = true;
xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
environment.systemPackages = with pkgs; [
waybar
dunst
libnotify
rofi-wayland
nwg-look
nwg-displays
slurp
grim
arandr
bemenu
dunst
grim
hyprpaper
hyprpicker
j4-dmenu-desktop
kanshi
libnotify
mako
nwg-look
rofi
slurp
swayimg
wl-clipboard
wlogout
flameshot
wofi
swayimg
hyprpicker
kanshi
hyprlock
swayidle
mako
(pkgs.waybar.overrideAttrs (oldAttrs: {
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
}))
];
}

View File

@@ -12,11 +12,28 @@
# Generally want a larger download buffer
nix.settings.download-buffer-size = 524288000;
programs.bash.shellAliases = {
nixrebuild = "pushd /etc/nixos && { trap 'popd' EXIT; sudo nixos-rebuild switch --flake .#$(hostname); }";
nixupdate = "cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --flake .#$(hostname)";
nixedit = "sudo nano /etc/nixos/hosts/$(hostname)/configuration.nix";
nix.settings.auto-optimise-store = true;
nix.optimise.automatic = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 14d";
};
nixlimitfive = "sudo nix-env --list-generations --profile /nix/var/nix/profiles/system | head -n -5 | cut -d ' ' -f2 | xargs -I {} sudo nix-env --delete-generations --profile /nix/var/nix/profiles/system {}";
programs.bash.shellAliases = {
# Nix rebuild, switch
nrs = "bash -c \"cd /etc/nixos && sudo nixos-rebuild switch --flake .#$(hostname) ; exit\"";
# with tracing
tnrs = "bash -c \"cd /etc/nixos && sudo nixos-rebuild switch --show-trace --flake .#$(hostname) ; exit\"";
# Nix flake update, rebuild, switch
nus = "bash -c \"cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --flake .#$(hostname) ; exit\"";
# with tracing
tnus = "bash -c \"cd /etc/nixos && sudo nix flake update && sudo nixos-rebuild switch --show-trace --flake .#$(hostname) ; exit\"";
# Special cleanup, needed when efi partition runs out of space. Deletes all but the last five generations.
# Remember to make that partition bigger in the future...
neficlean = "sudo nix-env --list-generations --profile /nix/var/nix/profiles/system | head -n -5 | cut -d ' ' -f2 | xargs -I {} sudo nix-env --delete-generations --profile /nix/var/nix/profiles/system {}";
};
}

View File

@@ -4,6 +4,7 @@
enable = true;
extraRules = [
{
groups = [ "wheel" ];
commands = [
{
command = "${pkgs.systemd}/bin/reboot";
@@ -14,7 +15,16 @@
options = [ "NOPASSWD" ];
}
];
groups = [ "wheel" ];
}
{
users = [ "caperren" ];
commands = [
{
command = "${pkgs.nvtopPackages.full}/bin/nvtop";
options = [ "NOPASSWD" "SETENV" ];
}
];
}
];
};

View File

@@ -1,18 +1,148 @@
{ config, pkgs, ... }:
let
hyprlandConfigPath = ./. + "/dotfiles/hyprland/${config.networking.hostName}";
kanshiConfigPath = ./. + "/dotfiles/kanshi/${config.networking.hostName}";
spotifyPlayerAppTomlTextTemplate = builtins.readFile ./dotfiles/spotify-player/app.toml;
spotifyPlayerAppTomlText =
builtins.replaceStrings [ "{{hostname}}" ] [ config.networking.hostName ]
spotifyPlayerAppTomlTextTemplate;
waybarConfigPath = ./. + "/dotfiles/waybar/${config.networking.hostName}";
in
{
users.users.caperren = {
isNormalUser = true;
description = "Corwin Perren";
extraGroups = [
"networkmanager"
"wheel"
"input"
"dialout"
"plugdev"
"adbusers"
];
packages = with pkgs; [
obsidian
"dialout"
"input"
"networkmanager"
"plugdev"
"podman"
"wheel"
];
};
home-manager.users.caperren = {
home.username = "caperren";
home.homeDirectory = "/home/caperren";
home.stateVersion = "25.05";
home.packages = with pkgs; [
obsidian
];
programs.git = {
enable = true;
settings.user = {
name = "Corwin Perren";
email = "caperren@gmail.com";
};
};
programs.bash.enable = true;
programs.bemenu.enable = true;
programs.kitty = {
enable = true;
font.name = "JetBrains Mono";
settings = {
allow_remote_control = true;
};
};
# Assets/scripts
home.file.".config/streamdeck-ui/icons".source = ./dotfiles/streamdeck/icons;
home.file.".config/hypr/scripts".source = ./dotfiles/.config/hypr/scripts;
# Application config files
home.file.".config/containers/policy.json".source = ./dotfiles/.config/containers/policy.json;
home.file.".config/glances/glances.conf".source = ./dotfiles/.config/glances/glances.conf;
home.file.".config/hypr/hypridle.conf".source = ./dotfiles/hypridle/hypridle.conf;
home.file.".config/hypr/hyprpaper.conf".source = ./dotfiles/hyprpaper/hyprpaper.conf;
home.file.".config/hypr/backgrounds/black.png".source = ./dotfiles/hyprpaper/backgrounds/black.png;
home.file.".config/hypr/hyprland-common.conf".source = ./dotfiles/hyprland/hyprland-common.conf;
home.file.".config/hypr/hyprland.conf".source = hyprlandConfigPath + "/hyprland.conf";
home.file.".config/kanshi/config".source = kanshiConfigPath + "/config";
home.file.".config/streamdeck-ui/.streamdeck_ui_link.json" = {
source = ./dotfiles/streamdeck/.streamdeck_ui.json;
# Copy the symlinked version to its final location, otherwise it has no write permissions
# on the config file, which breaks the entire app
onChange = ''
cat ~/.config/streamdeck-ui/.streamdeck_ui_link.json > ~/.streamdeck_ui.json
chmod 600 ~/.streamdeck_ui.json
'';
force = true;
};
home.file.".config/spotify-player/app.toml".text = spotifyPlayerAppTomlText;
home.file.".config/waybar/config".source = waybarConfigPath + "/config";
home.file.".config/waybar/style.css".source = ./dotfiles/waybar/style.css;
home.file.".config/wlogout/layout".source = ./dotfiles/wlogout/layout;
# Desktop entry files so bemenu can find them
home.file.".local/share/applications/alltop.desktop".source =
./dotfiles/.local/share/applications/alltop.desktop;
home.file.".local/share/applications/glava.desktop".source =
./dotfiles/.local/share/applications/glava.desktop;
home.file.".local/share/applications/phonerdp.desktop".source =
./dotfiles/.local/share/applications/phonerdp.desktop;
home.file.".local/share/applications/spotify-player.desktop".source =
./dotfiles/.local/share/applications/spotify-player.desktop;
# Custom bash aliases
home.shellAliases = {
# Phone remote desktop over usb (adb), with some default flags I want
phonerdp = "scrcpy --no-audio --orientation=0 --turn-screen-off --stay-awake --power-off-on-close";
# Streamdeck isn't easy to manually edit, so make a save command to copy any updates to the repo
savestreamdeck = "cp ~/.streamdeck_ui.json ~/.nixos-configs/users/caperren/dotfiles/streamdeck/.streamdeck_ui.json";
# Nice to have an alias if I ever want to launch this from cmdline, or see the dbus help string
screenshot = "~/.config/hypr/scripts/screenshot.sh";
};
# Theming
gtk = {
enable = true;
theme = {
name = "Adwaita-dark"; # Or another dark theme
package = pkgs.gnome-themes-extra;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
cursorTheme = {
name = "Bibata-Modern-Ice";
package = pkgs.bibata-cursors;
};
font.name = "JetBrains Mono 11";
};
home.sessionPath = [
"$HOME/.local/share"
];
home.sessionVariables = {
GTK_THEME = "Adwaita-dark";
};
xdg.mimeApps = {
enable = true;
defaultApplications = {
"application/pdf" = [ "okularApplication_pdf.desktop" ];
"x-scheme-handler/http" = [ "firefox.desktop" ];
"x-scheme-handler/https" = [ "firefox.desktop" ];
"text/html" = [ "firefox.desktop" ];
"image/*" = [ "imv.desktop" ];
};
};
xresources.properties = {
"Xft.font" = "JetBrains Mono";
};
};
}

View File

@@ -0,0 +1,7 @@
{
"default": [
{
"type": "insecureAcceptAnything"
}
]
}

View File

@@ -0,0 +1,44 @@
##############################################################################
# Custom Glances Configuration Overrides
##############################################################################
[global]
# Managed by NixOS configs
check_update=false
[percpu]
# All of my systems are 16 core
max_cpu_display=16
[ip]
# Useful for validating vpn connectivity
public_disabled=False
public_refresh_interval=300
public_api=https://ipv4.ipleak.net/json/
public_field=ip
public_template={continent_code}/{country_code}/{region_code}/{city_name}/{isp_name}
[diskio]
# Don't care about loop devices
hide=loop.*,/dev/loop.*
[smart]
disable=False
[fs]
# Nix store is duplicate of / on NixOS
hide=/nix/store
# Leaving this all commented for now as it doesn't like large number of files
#[folders]
# Home overview is helpful
#folder_1_path=/home/caperren
#folder_1_refresh=120
# Steam is normally the largest
#folder_2_path=/home/caperren/.local/share/Steam
#folder_2_refresh=120
# Then Downloads next
#folder_3_path=/home/caperren/Downloads
#folder_3_refresh=120
# With code generally coming last
#folder_4_path=/home/caperren/code
#folder_4_refresh=120

View File

@@ -0,0 +1,116 @@
#!/usr/bin/env bash
# Unashamedly taken from: https://www.reddit.com/r/hyprland/comments/13ivh0c/comment/jkgk65k
# Small edits made for my particular needs
# Flags:
# r: region
# s: screen
#
# c: clipboard
# f: file
# i: interactive
# p: pixel
# Example hyprland bindings
#bind = CTRL, SUPER, ALT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh
#bind = , PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rc
#bind = SUPER, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rf
#bind = CTRL, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh ri
#bind = SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sc
#bind = SUPER SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sf
#bind = CTRL SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh si
#bind = ALT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh p
screenshotPath=~/Pictures/screenshots
hyprpicker_launch(){
# Start hyprpicker with screen render (freeze), no fancy, no zoom
# We're just using this to lock the screen in place for grim ingest
hyprpicker -r -n -z -d >/dev/null 2>&1 &
sleep 0.5
}
hyprpicker_kill(){
killall hyprpicker >/dev/null 2>&1
}
trap hyprpicker_kill EXIT
generate_filename(){
# Make sure screenshots path exists first
if [ ! -d "$screenshotPath" ]; then
mkdir -p "$screenshotPath"
fi
echo "$screenshotPath/$(date +%Y-%m-%d_%H-%M-%S).png"
}
active_screen_grim_region(){
hyprctl -j monitors | jq -r '.[] | select(.focused) | "\(.x),\(.y) \(.width)x\(.height)"' -
}
grim_from_region() {
local filename="${1:-}"
local region="${2:-}"
hyprpicker_launch
# Get region of screen to capture, if not passed in
if [ -z "$region" ]; then
region=$(slurp -b '#000000b0' -c '#00000000') || exit 1
fi
# Start grim while screen is still frozen, kill hyprpicker, and pass through data
if [ -z "$filename" ]; then
grim -g "$region" - | {
hyprpicker_kill || true
cat
}
else
grim -g "$region" "$filename" | {
hyprpicker_kill || true
cat
}
fi
}
if [[ $1 == rc ]]; then
grim_from_region | wl-copy
notify-send 'Copied to Clipboard' Screenshot
elif [[ $1 == rf ]]; then
grim_from_region "$(generate_filename)"
notify-send 'Screenshot Taken' "$filename"
elif [[ $1 == ri ]]; then
grim_from_region | swappy -f - -o "$(generate_filename)"
elif [[ $1 == sc ]]; then
grim_from_region "" "$(active_screen_grim_region)" | wl-copy
notify-send 'Copied to Clipboard' Screenshot
elif [[ $1 == sf ]]; then
grim_from_region "$(generate_filename)" "$(active_screen_grim_region)"
notify-send 'Screenshot Taken' "$filename"
elif [[ $1 == si ]]; then
grim_from_region "" "$(active_screen_grim_region)" | swappy -f - -o "$(generate_filename)"
elif [[ $1 == p ]]; then
color=$(hyprpicker -a -r)
wl-copy "$color"
notify-send 'Copied to Clipboard' "$color"
else
notify-send 'Screenshot Shortcuts' "Print:\t\t\tRegion to clip
Super+Print:\t\tRegion to file
Ctrl+Print:\t\tRegion to editor
Shift+Print:\t\t\Screen to clip
Shift+Super+Print:\tScreen to file
Ctrl+Shift+Print:\tScreen to editor
Alt+Print:\t\tColor picker to clip" -t 20000
fi

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=All Top
Exec=bash -c "kitty --single-instance --detach bash -c 'kitten @ launch --type=window --title btop btop ; kitten @ launch --type=window --title nvtop nvtop'"
Icon=alltop
Terminal=false
Categories=Utilities;

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=Glava
Exec=glava
Icon=glava
Terminal=false
Categories=Media;

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=Phone RDP
Exec=bash -c "scrcpy --no-audio --orientation=0 --turn-screen-off --stay-awake --power-off-on-close"
Icon=phonerdp
Terminal=false
Categories=Utilities;

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=Spotify Player
Exec=kitty -e spotify_player
Icon=spotify_player
Terminal=false
Categories=Media;

View File

@@ -0,0 +1,33 @@
general {
lock_cmd = pidof hyprlock || hyprlock # Avoid starting multiple hyprlock instances
before_sleep_cmd = loginctl lock-session # Lock before suspend
after_sleep_cmd = hyprctl dispatch dpms on # To avoid having to press a key twice to turn on the display
}
listener {
timeout = 60 # 1 minute
on-timeout = brightnessctl -sd platform::kbd_backlight set 0 # Turn off keyboard backlight
on-resume = brightnessctl -rd platform::kbd_backlight # Turn on keyboard backlight
}
listener {
timeout = 180 # 3 minutes
on-timeout = brightnessctl -s set 1% # Set monitor backlight to minimum
on-resume = brightnessctl -r # monitor backlight restore
}
listener {
timeout = 600 # 10 minutes
on-timeout = loginctl lock-session # Lock screen when timeout has passed
}
listener {
timeout = 610 # 10 minutes, 10 seconds
on-timeout = hyprctl dispatch dpms off # Screen off when timeout has passed
on-resume = hyprctl dispatch dpms on # Screen on when activity is detected after timeout has fired
}
# listener {
# timeout = 1200 # 20 minutes
# on-timeout = systemctl suspend # Suspend pc
# }

View File

@@ -0,0 +1,9 @@
# Unfortunate legacy config needed because hyprland can't hot switch variable refresh rate
monitor=DP-2,3440x1440@144,auto,1,vrr,1
# Source configs
source = ~/.config/hypr/hyprland-common.conf
# Application launch
exec-once = sleep 10 && steam -silent
#exec-once = swayidle -w timeout 600 "hyprlock" before-sleep "hyprlock" &

View File

@@ -0,0 +1,9 @@
# Unfortunate legacy config needed because hyprland can't hot switch variable refresh rate
monitor = eDP-2,2560x1600@165,auto,1,vrr,1
# Source configs
source = ~/.config/hypr/hyprland-common.conf
# Application launch
exec-once = brightnessctl -sd platform::kbd_backlight set 1
exec-once = brightnessctl -s set 30%

View File

@@ -0,0 +1,186 @@
# Always enable new monitors in automatic mode, for when kanshi doesn't know about the setup
monitor=,preferred,auto,1
# Set programs that you use
$terminal = kitty
$fileManager = thunar
$menu = j4-dmenu-desktop --dmenu='bemenu --ignorecase --line-height 22 --hf "##10AC25" --ff "##10AC25" --tf "##10AC25"' --term='kitty'
# Some default env vars
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORMTHEME,qt6ct
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = no
}
sensitivity = 0 # -1.0 to 1.0, 0 means no modification.
numlock_by_default = 1
}
general {
gaps_in = 5
gaps_out = 5
border_size = 2
col.active_border = rgba(0D8A1EFF)
col.inactive_border = rgba(595959aa)
layout = dwindle
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
}
decoration {
rounding = 10
blur {
enabled = true
size = 3
passes = 1
}
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
}
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
misc {
force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers
}
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
$mainMod = SUPER
# Launch terminal
bind = $mainMod, T, exec, $terminal
bind = SHIFT_SUPER, Return, exec, $terminal
# Close active window
bind = $mainMod, Shift+q, killactive,
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, F, fullscreen
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Volume Keys
bindl=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 2%+
bindl=, XF86AudioLowerVolume, exec, wpctl set-volume -l 0.0 @DEFAULT_AUDIO_SINK@ 2%-
bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
# Media Controls
bindl=, XF86AudioPlay, exec, playerctl play-pause
bindl=, XF86AudioPrev, exec, playerctl previous
bindl=, XF86AudioNext, exec, playerctl next
# Brightness Controls
bind = ,XF86MonBrightnessDown, exec, brightnessctl s 1%-
bind = ,XF86MonBrightnessUp, exec, brightnessctl s +1%
# Screenshots
bind = , PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rc
bind = SUPER, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rf
bind = CTRL, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh ri
bind = SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sc
bind = SUPER_SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sf
bind = CTRL_SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh si
bind = ALT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh p
# Jetbrains window rules
# Prevent initial focus for JetBrains popups
windowrulev2 = noinitialfocus, class:^jetbrains-.*$, floating:1, title:^$|^\s$|^win\d+$
# Application launch
exec-once = kanshi # Automatically handles display configurations
exec-once = ydotoold # Autoclicker/autokeyboard for automation
exec-once = hypridle # Hyprland/wayland specific idle lock tool
exec-once = hyprpaper # Hyprland/wayland specific wallpaper tool
exec-once = wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 10% # Keep eardrums intact on reboot
exec-once = waybar # Wayland specific status bar
exec-once = sleep 5 && nm-applet # Traditional notifications area
exec-once = sleep 5 && blueman-applet # Traditional bluetooth management tool
exec-once = sleep 5 && streamdeck -n # Streamdeck management tool
exec-once = sleep 5 && Telegram -startintray # Gotta keep in touch with peeps

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 912 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,5 @@
preload = ~/.config/hypr/backgrounds/black.png
wallpaper = ,~/.config/hypr/backgrounds/black.png
ipc = off
splash = false

View File

@@ -0,0 +1,7 @@
# `hyprctl monitors list` for all outputs
profile office_desk {
output "Hewlett Packard HP Z27n CNK7311FCY" enable position 0,0
output "LG Electronics LG ULTRAGEAR 104NTVS1N751" enable mode 3440x1440@143.92Hz position -440,1440 adaptive_sync on
output "BOE Display 0x00000060" enable position 950,2880 scale 1.0
}

View File

@@ -0,0 +1,26 @@
# `hyprctl monitors list` for all outputs
profile builtin_only {
output "BOE 0x0A9B Unknown" enable mode 2560x1600@165Hz position 0,0 adaptive_sync on
}
profile bedroom_desk {
# Top left to right
output "Dell Inc. DELL P2411H F8NDP11G0DVU" enable position 0,1280
output "Acer Technologies CB292CU 2217018D42410" enable position 1920,0 transform 90
output "DLOGIC Ltd. No Monitor USB_601e-21H1" enable position 3000,1280
# output "DLOGIC Ltd. No Monitor USB_601e-21H1" mode --custom 1920x1080@60Hz enable position 3000,1280
# Bottom left to right
output "Aculab Ltd Digital Unknown" enable transform 270 position 0,2360
output "Hewlett Packard HP Z27n CNK7311DRR" enable position 1440,2560
output "Aculab Ltd QHD270 Unknown" enable transform 90 position 4000,2360
# Far bottom right (laptop itself)
output "BOE 0x0A9B Unknown" enable position 5440,2360 adaptive_sync on
}
profile scotts_apartment_tv {
output "BOE 0x0A9B Unknown" enable mode 2560x1600@165Hz position 0,0 adaptive_sync on
output "Hisense Electric Co., Ltd. HISENSE 0x00000001" enable mode 1920x1080@60Hz position 2560,0
}

View File

@@ -0,0 +1,49 @@
theme = "dracula"
client_id = "65b708073fc0480ea92a077233ca87bd"
client_port = 8080
login_redirect_uri = "http://127.0.0.1:8989/login"
playback_format = """
{status} {track} • {artists}
{album}
{metadata}"""
notify_timeout_in_secs = 0
tracks_playback_limit = 1000
app_refresh_duration_in_ms = 32
playback_refresh_duration_in_ms = 0
page_size_in_rows = 20
play_icon = "▶"
pause_icon = "▌▌"
liked_icon = "♥"
border_type = "Plain"
progress_bar_type = "Rectangle"
cover_img_length = 9
cover_img_width = 5
cover_img_scale = 1.0
enable_media_control = true
enable_streaming = "Always"
enable_notify = true
enable_cover_image_cache = true
default_device = "{{hostname}}"
notify_streaming_only = false
seek_duration_secs = 5
[notify_format]
summary = "{track} • {artists}"
body = "{album}"
[layout]
playback_window_position = "Top"
playback_window_height = 6
[layout.library]
playlist_percent = 40
album_percent = 40
[device]
name = "{{hostname}}"
device_type = "speaker"
volume = 100
bitrate = 320
audio_cache = false
normalization = false
autoplay = false

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,173 @@
{
"layer": "top",
"position": "top",
"modules-left": [
// "custom/logo",
"clock",
"temperature",
"disk",
"memory",
"cpu"
],
"modules-center": [
"hyprland/window",
"hyprland/workspaces"
],
"modules-right": [
"tray",
"idle_inhibitor",
"pulseaudio",
"battery",
"backlight",
"custom/exit"
],
"reload_style_on_change": true,
"custom/logo": {
"format": "<span font='15'></span>",
"tooltip": false
},
"hyprland/workspaces": {
"all-outputs": false,
"format": "{icon}",
"format-icons": {
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9"
}
},
"backlight": {
"device": "intel_backlight",
"format": "{percent}% {icon}",
"format-icons": [
"",
""
]
},
"battery": {
"bat": "BAT0",
"adapter": "AC",
"interval": 10,
"full-at": 100,
"states": {
"full": 100,
"good": 75,
"warning": 30,
"critical": 15,
"empty": 5
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": [
"",
"",
"",
"",
""
]
},
"temperature": {
"interval": 1,
"critical-threshold": 90,
"format": "{icon} {temperatureC}°C",
"format-icons": [
"",
"",
"",
"",
""
]
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈",
"deactivated": "󰈉"
},
"tooltip-format-activated": "idle-inhibitor <span color='#a6da95'>on</span>",
"tooltip-format-deactivated": "idle-inhibitor <span color='#ee99a0'>off</span>"
},
"clock": {
"format": "{:%I:%M:%S %p} |",
"interval": 1,
"tooltip-format": "<big>{:%I:%M:%S %p | %a | %F}</big>\n\n<tt><big>{calendar}</big></tt>",
"calendar-weeks-pos": "right",
"today-format": "<span color='#7645AD'><b><u>{}</u></b></span>",
"format-calendar": "<span color='#aeaeae'><b>{}</b></span>",
"format-calendar-weeks": "<span color='#aeaeae'><b>W{:%V}</b></span>",
"format-calendar-weekdays": "<span color='#aeaeae'><b>{}</b></span>"
},
"disk": {
"interval": 30,
"format": " {}%",
"tooltip-format": "{used} / {total} used"
},
"cpu": {
"format": " {usage:02}% {icon0}{icon1}{icon2}{icon3}{icon4}{icon5}{icon6}{icon7}",
"tooltip": false,
"interval": 1,
"format-icons": [
// green,
"<span color='#69ff94'>▁</span>",
// blue,
"<span color='#2aa9ff'>▂</span>",
// white,
"<span color='#f8f8f2'>▃</span>",
// white,
"<span color='#f8f8f2'>▄</span>",
// yellow,
"<span color='#ffffa5'>▅</span>",
// yellow,
"<span color='#ffffa5'>▆</span>",
// orange,
"<span color='#ff9977'>▇</span>",
// red,
"<span color='#dd532e'>█</span>"
]
},
"memory": {
"format": " {percentage:02}%"
},
"hyprland/window": {
"format": "( {class} )",
},
"pulseaudio": {
"format": "{volume:02}% {icon}",
"format-bluetooth": "󰂰",
"format-muted": "00% {icon}",
"format-icons": {
"headphones": "",
"bluetooth": "󰥰",
"handsfree": "",
"headset": "󱡬",
"phone": "",
"portable": "",
"car": "",
"default": [
"🕨",
"🕩",
"🕪"
]
},
"justify": "center",
"on-click": "amixer sset Master toggle",
"on-click-right": "pavucontrol",
"tooltip-format": "{icon} {volume:02}%"
},
"tray": {
"icon-size": 14,
"spacing": 10
},
"custom/exit": {
"format": "| ",
"on-click": "wlogout -b 2",
"tooltip": false
}
}

View File

@@ -0,0 +1,174 @@
{
"layer": "top",
"position": "top",
"modules-left": [
// "custom/logo",
"clock",
"temperature",
"disk",
"memory",
"cpu"
],
"modules-center": [
"hyprland/window",
"hyprland/workspaces"
],
"modules-right": [
"tray",
"idle_inhibitor",
"pulseaudio",
"battery",
"backlight",
"custom/exit"
],
"reload_style_on_change": true,
"custom/logo": {
"format": "<span font='15'></span>",
"tooltip": false
},
"hyprland/workspaces": {
"all-outputs": false,
"format": "{icon}",
"format-icons": {
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9"
}
},
"backlight": {
"device": "intel_backlight",
"format": "{percent}% {icon}",
"format-icons": [
"",
""
]
},
"battery": {
"bat": "BAT0",
"adapter": "AC",
"interval": 10,
"full-at": 100,
"states": {
"full": 100,
"good": 75,
"warning": 30,
"critical": 15,
"empty": 5
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": [
"",
"",
"",
"",
""
]
},
"temperature": {
"hwmon-path": "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon5/temp1_input",
"interval": 1,
"critical-threshold": 90,
"format": "{icon} {temperatureC}°C",
"format-icons": [
"",
"",
"",
"",
""
]
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈",
"deactivated": "󰈉"
},
"tooltip-format-activated": "idle-inhibitor <span color='#a6da95'>on</span>",
"tooltip-format-deactivated": "idle-inhibitor <span color='#ee99a0'>off</span>"
},
"clock": {
"format": "{:%I:%M:%S %p} |",
"interval": 1,
"tooltip-format": "<big>{:%I:%M:%S %p | %a | %F}</big>\n\n<tt><big>{calendar}</big></tt>",
"calendar-weeks-pos": "right",
"today-format": "<span color='#7645AD'><b><u>{}</u></b></span>",
"format-calendar": "<span color='#aeaeae'><b>{}</b></span>",
"format-calendar-weeks": "<span color='#aeaeae'><b>W{:%V}</b></span>",
"format-calendar-weekdays": "<span color='#aeaeae'><b>{}</b></span>"
},
"disk": {
"interval": 30,
"format": " {}%",
"tooltip-format": "{used} / {total} used"
},
"cpu": {
"format": " {usage:02}% {icon0}{icon1}{icon2}{icon3}{icon4}{icon5}{icon6}{icon7}",
"tooltip": false,
"interval": 1,
"format-icons": [
// green,
"<span color='#69ff94'>▁</span>",
// blue,
"<span color='#2aa9ff'>▂</span>",
// white,
"<span color='#f8f8f2'>▃</span>",
// white,
"<span color='#f8f8f2'>▄</span>",
// yellow,
"<span color='#ffffa5'>▅</span>",
// yellow,
"<span color='#ffffa5'>▆</span>",
// orange,
"<span color='#ff9977'>▇</span>",
// red,
"<span color='#dd532e'>█</span>"
]
},
"memory": {
"format": " {percentage:02}%"
},
"hyprland/window": {
"format": "( {class} )",
},
"pulseaudio": {
"format": "{volume:02}% {icon}",
"format-bluetooth": "󰂰",
"format-muted": "00% {icon}",
"format-icons": {
"headphones": "",
"bluetooth": "󰥰",
"handsfree": "",
"headset": "󱡬",
"phone": "",
"portable": "",
"car": "",
"default": [
"🕨",
"🕩",
"🕪"
]
},
"justify": "center",
"on-click": "amixer sset Master toggle",
"on-click-right": "pavucontrol",
"tooltip-format": "{icon} {volume:02}%"
},
"tray": {
"icon-size": 14,
"spacing": 10
},
"custom/exit": {
"format": "| ",
"on-click": "wlogout -b 2",
"tooltip": false
}
}

View File

@@ -0,0 +1,51 @@
* {
border: none;
border-radius: 0;
font-family: "JetBrains Mono", monospace;
font-size: 14px;
box-shadow: none;
text-shadow: none;
transition-duration: 0s;
}
window {
background: rgba(0, 0, 0, 0.00);
}
#workspaces button {
padding: 0 5px;
color: rgba(217, 216, 216, 0.4);
}
#workspaces button.visible {
color: rgba(217, 216, 216, 1);
}
#workspaces button.focused {
border-top: 3px solid rgba(217, 216, 216, 1);
border-bottom: 3px solid rgba(217, 216, 216, 0);
}
#workspaces button.urgent {
color: rgba(238, 46, 36, 1);
}
#memory,
#idle_inhibitor,
#pulseaudio,
#backlight {
margin: 0 6px 0 10px;
}
#disk {
margin: 0 0 0 10px;
}
#clock {
margin: 0 6px 0 10px;
}
#custom-exit {
margin: 0 16px 0 6px;
}

View File

@@ -0,0 +1,24 @@
{
"label" : "lock",
"action" : "hyprlock",
"text" : "Lock",
"keybind" : "l"
}
{
"label" : "logout",
"action" : "loginctl terminate-user $USER",
"text" : "Logout",
"keybind" : "e"
}
{
"label" : "shutdown",
"action" : "systemctl poweroff",
"text" : "Shutdown",
"keybind" : "s"
}
{
"label" : "reboot",
"action" : "systemctl reboot",
"text" : "Reboot",
"keybind" : "r"
}

View File

@@ -9,14 +9,17 @@
"input"
"dialout"
];
packages = with pkgs; [ ];
};
services.displayManager.autoLogin = {
enable = true;
user = "crestline";
};
services.xserver.displayManager.gdm.autoLogin.delay = 60;
home-manager.users.crestline = {
home.username = "crestline";
home.homeDirectory = "/home/crestline";
home.stateVersion = "25.05";
};
}