feat: integrate spicetify-nix for Spotify customization, add steam and add hyprlock configuration

This commit is contained in:
2025-11-14 23:49:11 +00:00
parent 462ba056d3
commit a12268118f
8 changed files with 290 additions and 12 deletions

55
flake.lock generated
View File

@@ -94,7 +94,7 @@
}, },
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems_2" "systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1731533236,
@@ -447,6 +447,22 @@
} }
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": {
"lastModified": 1762363567,
"narHash": "sha256-YRqMDEtSMbitIMj+JLpheSz0pwEr0Rmy5mC7myl17xs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ae814fd3904b621d8ab97418f1d0f2eb0d3716f4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1759036355, "lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
@@ -492,9 +508,29 @@
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprland": "hyprland", "hyprland": "hyprland",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"spicetify-nix": "spicetify-nix",
"vicinae": "vicinae" "vicinae": "vicinae"
} }
}, },
"spicetify-nix": {
"inputs": {
"nixpkgs": "nixpkgs_3",
"systems": "systems_2"
},
"locked": {
"lastModified": 1762718300,
"narHash": "sha256-oOQimZTaV1jCw0OBmmK2g7Rdj3E8YGVpkJYD32BWKRQ=",
"owner": "Gerg-L",
"repo": "spicetify-nix",
"rev": "c7175bd485ed5052df5075fcdde395b631316e94",
"type": "github"
},
"original": {
"owner": "Gerg-L",
"repo": "spicetify-nix",
"type": "github"
}
},
"systems": { "systems": {
"locked": { "locked": {
"lastModified": 1689347949, "lastModified": 1689347949,
@@ -525,10 +561,25 @@
"type": "github" "type": "github"
} }
}, },
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"vicinae": { "vicinae": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_4"
}, },
"locked": { "locked": {
"lastModified": 1761603305, "lastModified": 1761603305,

View File

@@ -25,11 +25,14 @@
ags.inputs.nixpkgs.follows = "nixpkgs"; ags.inputs.nixpkgs.follows = "nixpkgs";
ags.inputs.astal.follows = "astal"; ags.inputs.astal.follows = "astal";
# Spicetify - Spotify customization
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
# Optional: Other useful inputs # Optional: Other useful inputs
# nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; # nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
}; };
outputs = { self, nixpkgs, home-manager, hyprland, vicinae, astal, ags, ... }@inputs: { outputs = { self, nixpkgs, home-manager, hyprland, vicinae, astal, ags, spicetify-nix, ... }@inputs: {
# NixOS configuration for your hostname(s) # NixOS configuration for your hostname(s)
nixosConfigurations = { nixosConfigurations = {
# Desktop PC configuration # Desktop PC configuration

View File

@@ -4,6 +4,7 @@
imports = [ imports = [
./hyprland.nix ./hyprland.nix
./ags.nix ./ags.nix
inputs.spicetify-nix.homeManagerModules.default
]; ];
# Home Manager configuration for user-level dotfiles and applications # Home Manager configuration for user-level dotfiles and applications
@@ -67,6 +68,8 @@
wofi # App launcher wofi # App launcher
rofi-bluetooth # Bluetooth menu rofi-bluetooth # Bluetooth menu
networkmanagerapplet # WiFi manager applet for system tray networkmanagerapplet # WiFi manager applet for system tray
hyprlock # Screen locker for Hyprland
hypridle # Idle daemon for Hyprland (auto-lock)
# rofi-wayland # Alternative launcher # rofi-wayland # Alternative launcher
# Wayland utilities # Wayland utilities
@@ -228,6 +231,91 @@
home.file.".config/waybar/config".source = ./waybar-config.json; home.file.".config/waybar/config".source = ./waybar-config.json;
home.file.".config/waybar/style.css".source = ./waybar-style.css; home.file.".config/waybar/style.css".source = ./waybar-style.css;
# Hyprlock configuration
home.file.".config/hypr/hyprlock.conf".text = ''
# Hyprlock configuration
# Documentation: https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/
# General settings
general {
hide_cursor = true
ignore_empty_input = true
}
# Background
background {
monitor =
path = screenshot # Use a blurred screenshot of current screen
blur_passes = 3
blur_size = 8
noise = 0.0117
contrast = 0.8916
brightness = 0.8172
vibrancy = 0.1696
vibrancy_darkness = 0.0
}
# Input field
input-field {
monitor =
size = 250, 50
outline_thickness = 3
dots_size = 0.33
dots_spacing = 0.15
dots_center = true
outer_color = rgba(4a7aa1ee) # Match your theme accent color
inner_color = rgba(050a0eff) # Match your theme background
font_color = rgb(cdd6f4)
fade_on_empty = true
placeholder_text = <span foreground="##cdd6f4">Password...</span>
position = 0, -20
halign = center
valign = center
}
# Time
label {
monitor =
text = cmd[update:1000] echo "$(date +"%H:%M")"
color = rgba(cdd6f4ff)
font_size = 120
font_family = FiraCode Nerd Font
position = 0, 80
halign = center
valign = center
}
# Date
label {
monitor =
text = cmd[update:1000] echo "$(date +"%A, %B %d")"
color = rgba(cdd6f4ff)
font_size = 24
font_family = FiraCode Nerd Font
position = 0, -10
halign = center
valign = center
}
# User label
label {
monitor =
text = Hi there, $USER
color = rgba(cdd6f4ff)
font_size = 18
font_family = FiraCode Nerd Font
position = 0, -80
halign = center
valign = center
}
'';
# Screenshot script # Screenshot script
home.file.".local/bin/screenshot" = { home.file.".local/bin/screenshot" = {
source = ./scripts/screenshot.sh; source = ./scripts/screenshot.sh;
@@ -242,6 +330,16 @@
# Flatpaks are managed in system/flatpak.nix # Flatpaks are managed in system/flatpak.nix
# Spicetify - Spotify customization with adblock
programs.spicetify = let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in {
enable = true;
enabledExtensions = with spicePkgs.extensions; [
adblock
];
};
# Let Home Manager manage itself # Let Home Manager manage itself
programs.home-manager.enable = true; programs.home-manager.enable = true;

View File

@@ -20,6 +20,9 @@
# "dunst" # Disabled - colorshell handles notifications # "dunst" # Disabled - colorshell handles notifications
"nm-applet --indicator" # WiFi manager in system tray "nm-applet --indicator" # WiFi manager in system tray
"vicinae server" # Start Vicinae server "vicinae server" # Start Vicinae server
# Lock screen after a short delay (let Hyprland initialize first)
"sleep 2 && hyprlock"
]; ];
# Environment variables # Environment variables
@@ -173,6 +176,9 @@
"$mod, Print, exec, $HOME/.local/bin/screenshot full" # Full screen "$mod, Print, exec, $HOME/.local/bin/screenshot full" # Full screen
"$mod SHIFT, Print, exec, $HOME/.local/bin/screenshot window" # Active window "$mod SHIFT, Print, exec, $HOME/.local/bin/screenshot window" # Active window
# Lock screen
"$mod, L, exec, hyprlock"
# Scroll through workspaces # Scroll through workspaces
"$mod, mouse_down, workspace, e+1" "$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1" "$mod, mouse_up, workspace, e-1"

82
home/hyprlock.conf Normal file
View File

@@ -0,0 +1,82 @@
# Hyprlock configuration
# Documentation: https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/
# General settings
general {
grace = 3 # Seconds before lock screen is shown
hide_cursor = true
ignore_empty_input = true
}
# Background
background {
monitor =
path = screenshot # Use a blurred screenshot of current screen
blur_passes = 3
blur_size = 8
noise = 0.0117
contrast = 0.8916
brightness = 0.8172
vibrancy = 0.1696
vibrancy_darkness = 0.0
}
# Input field
input-field {
monitor =
size = 250, 50
outline_thickness = 3
dots_size = 0.33
dots_spacing = 0.15
dots_center = true
outer_color = rgba(4a7aa1ee) # Match your theme accent color
inner_color = rgba(050a0eff) # Match your theme background
font_color = rgb(cdd6f4)
fade_on_empty = true
placeholder_text = <span foreground="##cdd6f4">Password...</span>
position = 0, -20
halign = center
valign = center
}
# Time
label {
monitor =
text = cmd[update:1000] echo "$(date +"%H:%M")"
color = rgba(cdd6f4ff)
font_size = 120
font_family = FiraCode Nerd Font
position = 0, 80
halign = center
valign = center
}
# Date
label {
monitor =
text = cmd[update:1000] echo "$(date +"%A, %B %d")"
color = rgba(cdd6f4ff)
font_size = 24
font_family = FiraCode Nerd Font
position = 0, -10
halign = center
valign = center
}
# User label
label {
monitor =
text = Hi there, $USER
color = rgba(cdd6f4ff)
font_size = 18
font_family = FiraCode Nerd Font
position = 0, -80
halign = center
valign = center
}

View File

@@ -11,18 +11,24 @@
networking.hostName = "zeph-desktop"; networking.hostName = "zeph-desktop";
# Configure monitors for SDDM (display manager) # Configure monitors for login screen (display manager)
# This ensures the login screen appears on the 1440p monitor
services.displayManager.sddm.settings = { services.displayManager.sddm.settings = {
General = { General = {
DisplayServer = "wayland"; DisplayServer = "wayland";
}; };
# Wayland-specific settings
Wayland = {
SessionDir = "/run/current-system/sw/share/wayland-sessions";
CompositorCommand = "${pkgs.hyprland}/bin/Hyprland -c /etc/sddm/hyprland.conf";
};
}; };
# Create a Hyprland config for SDDM to set monitor order # Create a Hyprland config for SDDM to set monitor order
# DP-2 (1440p 165Hz) is primary on the left, DP-1 (4K 60Hz) is secondary on the right
environment.etc."sddm/hyprland.conf".text = '' environment.etc."sddm/hyprland.conf".text = ''
monitor=DP-2,2560x1440@165,0x0,1 monitor=DP-2,2560x1440@165,0x0,1
monitor=DP-1,3840x2160@60,2560x0,1 monitor=DP-1,3840x2160@60,2560x0,1.5
''; '';
# Desktop-specific packages (gaming, streaming, etc.) # Desktop-specific packages (gaming, streaming, etc.)
@@ -39,6 +45,6 @@
]; ];
# Gaming support (uncomment if needed) # Gaming support (uncomment if needed)
# programs.steam.enable = true; programs.steam.enable = true;
# programs.gamemode.enable = true; programs.gamemode.enable = true;
} }

View File

@@ -31,11 +31,22 @@
# Exclude xterm (we use alacritty instead) # Exclude xterm (we use alacritty instead)
services.xserver.excludePackages = [ pkgs.xterm ]; services.xserver.excludePackages = [ pkgs.xterm ];
# Display manager - SDDM with Wayland support # PAM service for hyprlock (required for hyprlock to work)
services.displayManager.sddm = { security.pam.services.hyprlock = {};
# Display manager - greetd with autologin to Hyprland
services.greetd = {
enable = true; enable = true;
wayland.enable = true; settings.default_session = {
command = "Hyprland";
user = "zeph";
};
}; };
# Environment for greeter
environment.etc."greetd/environments".text = ''
Hyprland
'';
# Fonts (shared across all machines) # Fonts (shared across all machines)
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
@@ -104,7 +115,7 @@
enable32Bit = true; enable32Bit = true;
}; };
# System-wide packages # System-wide packages
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim vim
wget wget
@@ -114,6 +125,8 @@
neofetch neofetch
unzip unzip
zip zip
# Steam (system-wide)
steam
]; ];
# Enable flakes # Enable flakes

19
system/sddm/theme.conf Normal file
View File

@@ -0,0 +1,19 @@
[General]
# Background - use solid color since we don't have a specific wallpaper yet
background=#050a0e
backgroundMode=fill
# Colors matching your dark pale blue theme
primaryColor=#4a7aa1
accentColor=#2a5d82
backgroundColor=#050a0e
# Font
font=FiraCode Nerd Font
fontSize=12
# Layout
showUsersByDefault=true
# Blur effect
blurRadius=50