added hypridle, hyprlock, and sddm + sddm-theme-corners

This commit is contained in:
Emile Clark-Boman 2024-11-08 14:26:30 +10:00
parent aca0bcc993
commit 97b344eb03
11 changed files with 445 additions and 196 deletions

8
INSPIRATION Normal file
View file

@ -0,0 +1,8 @@
Godlike
https://github.com/end-4/dots-hyprland
Gorgeous
https://github.com/prasanthrangan/hyprdots
Very nice
https://github.com/linuxmobile/hyprland-dots

View file

@ -81,3 +81,5 @@ Really great starter config for learning how parts interact and how to generally
Wiki page explaining how to install fonts and nerd fonts on NixOS
4. https://github.com/adi1090x/rofi
For the Rofi theme
5. https://github.com/zDyanTB/HyprNova
For the really cool hyprlock theme

28
TODO
View file

@ -17,6 +17,12 @@ Get hyprcursor working with Bibata-Modern-Ice
Get waybar (or another bar) working
Get a GRUB theme working
Get SDDM and a theme working
Overtime just install more programs that I need regularly: ie
- btop/htop/etc
@ -24,12 +30,6 @@ Overtime just install more programs that I need regularly: ie
Get a QT theme
Get waybar (or another bar) working
Get a GRUB theme working
Get SDDM and a theme working
Fix pipewire audio is so incredibly low (happens on laptop and PC)
@ -48,28 +48,32 @@ Get GTK Bibata Cursors to be the same size as my system cursor
Fix: your 131072x1 screen size is bogus. expect trouble
Are there plugins for helix?
Search for all "TODO" items in my nix dotfiles
Push nixdots to github
Check out the Ekala Project (I joined their discord server)
Create a program that enables/disables passwordless sudo access
(add to github too)
Have helix editor look differently depending on language
(specifically don't show indent indicators when editing nix files
Learn to package my own home-manager modules
Ideal Features:
1. AI assistant
2. searching can also be used to calculate stuff (like I do on my iPad)
Fork nixcord and fix documentation (the installation is confusing)
But firstly the first code snippet is wrong...

1
deploy
View file

@ -1,2 +1,3 @@
#!/usr/bin/env bash
sudo nixos-rebuild switch --flake .
#nixos-rebuild build --flake .# --cores 8 -j 1

View file

@ -72,12 +72,233 @@
# TODO: this lowkey doesnt work... (maybe the name "Dracula" is wrong?)
qt = {
enable = true;
style = {
name = "Dracula";
package = pkgs.dracula-qt5-theme;
platformTheme.name = "gtk2";
style.name = "gtk2";
};
services.hypridle = {
enable = true;
settings = {
general = {
ignore_dbus_inhibit = false;
lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
before_sleep_cmd = "loginctl lock-session";
after_sleep_cmd = "hyprctl dispatch dpms on";
};
listener = [
{
timeout = 600;
on-timeout = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
}
{
timeout = 660;
on-timeout = "systemctl suspend";
}
];
};
};
programs.hyprlock = {
enable = true;
settings = {
background = {
monitor = "";
path = "$HOME/downloads/1.png"; # only png supported for now
# color = $color1
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
blur_size = 4;
blur_passes = 3; # 0 disables blurring
noise = 0.0117;
contrast = 1.3000; # Vibrant!!!
brightness = 0.8000;
vibrancy = 0.2100;
vibrancy_darkness = 0.0;
};
label = [
{
# Hours
monitor = "";
text = ''cmd[update:1000] echo "<b><big> $(date +"%H") </big></b>"'';
color = "rgb(255, 255, 255, 1)";
font_size = 112;
font_family = "Geist Mono 10";
shadow_passes = 3;
shadow_size = 4;
position = "0, 240";
halign = "center";
valign = "center";
}
{
# Minutes
monitor = "";
text = ''cmd[update:1000] echo "<b><big> $(date +"%M") </big></b>"'';
color = "rgb(255, 255, 255, 1)";
font_size = 112;
font_family = "Geist Mono 10";
shadow_passes = 3;
shadow_size = 4;
position = "0, 120";
halign = "center";
valign = "center";
}
# Today
{
monitor = "";
text = ''cmd[update:18000000] echo "<b><big> "$(date +'%A')" </big></b>"'';
color = "rgb(255, 255, 255, 1)";
font_size = 22;
font_family = "JetBrainsMono Nerd Font 10";
position = "0, 30";
halign = "center";
valign = "center";
}
# Week
{
monitor = "";
text = ''cmd[update:18000000] echo "<b> "$(date +'%d %b')" </b>"'';
color = "rgb(255, 255, 255, 1)";
font_size = 18;
font_family = "JetBrainsMono Nerd Font 10";
position = "0, 6";
halign = "center";
valign = "center";
}
{
# Degrees
monitor = "";
# get temperature in Brisbane
text = ''cmd[update:18000000] echo "<b>Feels like<big> $(curl -s 'wttr.in/bne?format=%t' | tr -d '+') </big></b>"'';
color = "rgb(255, 255, 255, 1)";
font_size = 18;
font_family = "Geist Mono 10";
position = "0, 40";
halign = "center";
valign = "bottom";
}
];
input-field = {
monitor = "";
size = "300, 50";
outline_thickness = 3;
dots_size = 0.26; # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.64; # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true;
dots_rouding = -1;
rounding = 22;
outer_color = "rgb(255, 0, 0, 1)";
inner_color = "rgb(0, 255, 0, 1)";
font_color = "rgb(0, 0, 255, 1)";
fade_on_empty = true;
placeholder_text = "!!Super Secret!!"; # Text rendered in the input box when it's empty.
position = "0, 120";
halign = "center";
valign = "bottom";
};
};
};
/*
programs.hyprlock = {
enable = true;
settings = {
general = {
grace = 5;
no_fade_in = false;
disable_loading_bar = false;
};
# BACKGROUND
background = {
monitor = "";
path = "../../../downloads/1.png";
blur_passes = 0;
contrast = 0.8916;
brightness = 0.7172;
vibrancy = 0.1696;
vibrancy_darkness = 0.0;
};
label = [
{
# Day-Month-Date
monitor = "";
text = ''cmd[update:1000] echo -e "$(date +"%A, %B %d")"'';
color = "rgb(255, 255, 255, 1)";
font_size = 28;
font_family = "JetBrainsMono Nerd Font Bold";
position = "0, 490";
halign = "center";
valign = "center";
}
# Time
{
monitor = "";
text = ''cmd[update:1000] echo "<span>$(date +"%I:%M")</span>"'';
color = "rgb(255, 255, 255, 1)";
font_size = 160;
font_family = "steelfish outline regular";
position = "0, 370";
halign = "center";
valign = "center";
}
# USER
{
monitor = "";
text = " $USER";
color = "rgb(255, 255, 255, 1)";
outline_thickness = 2;
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true;
font_size = 18;
font_family = "JetBrainsMono Nerd Font Bold";
position = "0, -180";
halign = "center";
valign = "center";
}
];
# INPUT FIELD
input-field = [
{
monitor = "";
size = "300, 60";
outline_thickness = 2;
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true;
outer_color = "rgba(255, 255, 255, 0)";
inner_color = "rgba(255, 255, 255, 0.1)";
font_color = "rgb(255, 255, 255, 1)";
fade_on_empty = false;
font_family = "JetBrainsMono Nerd Font Bold";
placeholder_text = "<i>🔒 Enter Password</i>";
hide_input = false;
position = "0, -250";
halign = "center";
valign = "center";
}
];
};
};
*/
programs = {
# these are both required for home-manager to work
home-manager.enable = true;
@ -138,6 +359,7 @@
completion-replace = true; # completions replace entire word
indent-heuristic = "tree-sitter"; # how indentation is computed
# TODO: make this configurable (enabled on myputer, disabled on lolcathost)
middle-click-paste = true;
insert-final-newline = true; # append newline to file on write
@ -361,7 +583,7 @@
# Run when the `OpenConfigEditor` keybinding is triggered
editor = {
program = "nvim";
program = "hx"; # helix
args = [];
};

View file

@ -66,18 +66,17 @@ in {
# ----- SERVICES -----
services = {
# Set display manager (login screen)
#displayManager = {
# sddm = {
# enable = true;
# #theme = "${import ./sddm-theme.nix { inherit pkgs; }}";
# wayland.enable = true; # enable experimental sddm support for wayland
# };
# defaultSession = "hyprland";
#};
displayManager = {
sddm = {
enable = true;
wayland.enable = true; # enable experimental sddm support for wayland
theme = "${import ./sddm-theme-corners.nix {inherit pkgs;}}";
};
defaultSession = "hyprland";
};
# Enable sound
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
#hardware.pulseaudio.enable = false;
pipewire = {
enable = true;
@ -95,6 +94,7 @@ in {
tumbler.enable = true; # Thunar image thumbnail support
gvfs.enable = true; # Thunar mount, trash, and other functionality
};
security.rtkit.enable = true;
# allow wheel group to use passwordless sudo
users = {
@ -174,6 +174,7 @@ in {
zoxide
doggo
tldr
btop
# Pretty necessary
git
@ -235,6 +236,7 @@ in {
# ];
# })
nerdfonts
geist-font # for my hyprlock theme
# texlive maintains a noto-emoji flake
texlivePackages.noto-emoji

View file

@ -1,32 +1,36 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
config,
lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/4bf649ce-047b-472d-b392-4c2c326362d9";
fsType = "ext4";
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/4bf649ce-047b-472d-b392-4c2c326362d9";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/D97A-5260";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/D97A-5260";
fsType = "vfat";
options = ["fmask=0077" "dmask=0077"];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/bfa29193-4f83-46c3-bcb7-0d2b8323b6e0"; }
];
swapDevices = [
{device = "/dev/disk/by-uuid/bfa29193-4f83-46c3-bcb7-0d2b8323b6e0";}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's

View file

@ -0,0 +1,17 @@
{pkgs}: {
sddm-theme-corners = pkgs.stdenv.mkDerivation rec {
pname = "sddm-theme-corners";
#version = "1.0";
#dontBuild = true;
installPhase = ''
mkdir -p $out/share/sddm/themes
cp -ar $src/corners $out/share/sddm/themes/
'';
src = pkgs.fetchFromGitHub {
owner = "aczw";
repo = "sddm-theme-corners";
rev = "6ff0ff455261badcae36cd7d151a34479f157a3c";
sha256 = "0iiasrbl7ciyhq3z02la636as915zk9ph063ac7vm5iwny8vgwh8";
};
};
}

View file

@ -2,37 +2,30 @@
pkgs,
inputs,
...
}:
let
}: let
home-manager = builtins.fetchTarball {
url = "https://github.com/nix-community/home-manager/archive/master.tar.gz";
sha256 = "0kg9iaixqygpncw7avgh1grwyjgnfc9i7k9pk8hc4xrvr8jv2l3c";
url = "https://github.com/nix-community/home-manager/archive/master.tar.gz";
sha256 = "0kg9iaixqygpncw7avgh1grwyjgnfc9i7k9pk8hc4xrvr8jv2l3c";
};
in
{
in {
imports = [
./hardware-configuration.nix
(import "${home-manager}/nixos")
inputs.spicetify-nix.nixosModules.default
(import "${home-manager}/nixos")
inputs.spicetify-nix.nixosModules.default
];
programs.spicetify =
let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in
{
enable = true;
enabledExtensions = with spicePkgs.extensions; [
adblock
hidePodcasts
shuffle # shuffle+ (special characters are sanitized out of extension names)
];
#theme = spicePkgs.themes.catppuccin;
#colorScheme = "mocha";
};
programs.spicetify = let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in {
enable = true;
enabledExtensions = with spicePkgs.extensions; [
adblock
hidePodcasts
shuffle # shuffle+ (special characters are sanitized out of extension names)
];
#theme = spicePkgs.themes.catppuccin;
#colorScheme = "mocha";
};
# Use the systemd-boot EFI boot loader.
# TODO: use GRUB2 instead
@ -61,12 +54,11 @@ in
#useXkbConfig = true; # use xkb.options in tty.
};
# ----- NETWORKING SECTION -----
networking.hostName = "myputer";
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
@ -74,14 +66,13 @@ in
# Or disable the firewall altogether.
networking.firewall.enable = true;
# ----- SERVICES -----
services = {
# Set display manager (login screen)
displayManager = {
sddm = {
enable = true;
theme = "${import ./sddm-theme.nix { inherit pkgs; }}";
theme = "${import ./sddm-theme.nix {inherit pkgs;}}";
# enable experimental sddm support for wayland
wayland.enable = true;
};
@ -100,78 +91,78 @@ in
security.sudo.wheelNeedsPassword = false;
users = {
# using fish as the login shell tends
# to go very poorly because it isn't
# POSIX compliant, so we'll just use
# simple Bash then :)
# to go very poorly because it isn't
# POSIX compliant, so we'll just use
# simple Bash then :)
defaultUserShell = pkgs.bash;
users = {
# just me fr (personal account)
me = {
isNormalUser = true;
extraGroups = [ "wheel" ];
shell = pkgs.bash; #pkgs.fish
packages = with pkgs; [
firefox
nitch
starfetch
tldr
];
};
users = {
# just me fr (personal account)
me = {
isNormalUser = true;
extraGroups = ["wheel"];
shell = pkgs.bash; #pkgs.fish
packages = with pkgs; [
firefox
nitch
starfetch
tldr
];
};
# programming/development account
dev = {
isNormalUser = true;
extraGroups = [ "wheel" ];
shell = pkgs.bash; #pkgs.zsh
packages = with pkgs; [
];
};
# programming/development account
dev = {
isNormalUser = true;
extraGroups = ["wheel"];
shell = pkgs.bash; #pkgs.zsh
packages = with pkgs; [
];
};
# user for my professional jobs and stuff
ae = {
isNormalUser = true;
extraGroups = [ "wheel" ];
shell = pkgs.bash; #pkgs.fish
packages = with pkgs; [
];
};
};
# user for my professional jobs and stuff
ae = {
isNormalUser = true;
extraGroups = ["wheel"];
shell = pkgs.bash; #pkgs.fish
packages = with pkgs; [
];
};
};
};
home-manager = {
users.me = import ../../homes/me;
sharedModules = [
#inputs.nixcord.homeManagerModules.nixcord
#inputs.nixvim.homeManagerModules.nixvim
];
#inputs.nixcord.homeManagerModules.nixcord
#inputs.nixvim.homeManagerModules.nixvim
];
};
# ---- SYSTEM PACKAGES -----
environment.systemPackages = with pkgs; [
# User Environment
inputs.swww.packages.${pkgs.system}.swww
inputs.swww.packages.${pkgs.system}.swww
#vesktop
helvum
easyeffects
ani-cli
wl-clipboard # clipboard for wayland
helvum
easyeffects
ani-cli
wl-clipboard # clipboard for wayland
python311 # I use 3.11 since it's in a pretty stable state now
poetry # python dependency management and packaging
python311 # I use 3.11 since it's in a pretty stable state now
poetry # python dependency management and packaging
# fish plugins
grc # colorise command outputs
grc # colorise command outputs
httpie
curlie
zoxide
doggo
curlie
zoxide
doggo
# Pretty necessary
git
brightnessctl
acpi
acpi
# Unix Commands
wget
@ -181,19 +172,18 @@ in
# Enable the use of certain programs
programs = {
hyprland = {
enable = true;
# set the flake package
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
enable = true;
# set the flake package
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
# make sure to also set the portal package, so that they are in sync
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
xwayland.enable = true;
#systemd.enable = true;
};
#systemd.enable = true;
};
zsh.enable = true;
fish.enable = true;
fish.enable = true;
neovim = {
enable = true;
@ -202,57 +192,58 @@ in
vimAlias = true;
configure = {
customRC = ''
set number
set tabstop=4
set shiftwidth=4
set number
set tabstop=4
set shiftwidth=4
'';
};
};
# I want to use fish as my login shell but it always goes terrible
# cause it isn't POSIX compliant, so instead Bash is my login and
# will just exec fish (^-^)
bash = {
# cause it isn't POSIX compliant, so instead Bash is my login and
# will just exec fish (^-^)
bash = {
interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
'';
};
};
# ----- FONTS -----
fonts = {
enableDefaultPackages = true; # no clue what this line does tbh
packages = with pkgs; [
(nerdfonts.override { fonts = [ "Cousine" # its already i guess
"Iosevka" # nah nah
"IosevkaTerm" # big nah
"CascadiaCode" # potential
"FiraCode" # potential
"JetBrainsMono" # for my rofi theme
"Hasklig"
"Hack"]; })
(nerdfonts.override {
fonts = [
"Cousine" # its already i guess
"Iosevka" # nah nah
"IosevkaTerm" # big nah
"CascadiaCode" # potential
"FiraCode" # potential
"JetBrainsMono" # for my rofi theme
"Hasklig"
"Hack"
];
})
# texlive maintains a noto-emoji flake
texlivePackages.noto-emoji
];
# texlive maintains a noto-emoji flake
texlivePackages.noto-emoji
];
fontconfig = {
defaultFonts = {
serif = [ "Iosevka" ]; # TODO: package Iosevka Etoile since Iosevka isn't a serif font
sansSerif = [ "Iosevka "];
monospace = [ "Cousine" ];
emoji = [ "Noto Emoji" ];
};
};
fontconfig = {
defaultFonts = {
serif = ["Iosevka"]; # TODO: package Iosevka Etoile since Iosevka isn't a serif font
sansSerif = ["Iosevka "];
monospace = ["Cousine"];
emoji = ["Noto Emoji"];
};
};
};
# ----- STYLIX -----
#stylix = {
@ -268,8 +259,6 @@ in
# #image = "/home/me/nixdots/wallpapers/ghibli-esque-valley.png";
#};
# Enable the new CLI commands and the flakes as experimental features
nix.settings.experimental-features = [
"nix-command"
@ -287,16 +276,11 @@ in
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Enable OpenGL
hardware = {
graphics.enable = true;
};
# DO NOT MODIFY
system.stateVersion = "24.05"; # Did you read the comment?
}

View file

@ -1,33 +1,39 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
config,
lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/ff19e1b0-cacc-4270-a94b-7922f7224ae2";
fsType = "ext4";
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/ff19e1b0-cacc-4270-a94b-7922f7224ae2";
fsType = "ext4";
};
#fileSystems."/boot" = # BIOS
fileSystems."/boot" = # UEFI
{ device = "/dev/disk/by-uuid/7046-177A";
fileSystems."/boot" =
# UEFI
{
device = "/dev/disk/by-uuid/7046-177A";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
options = ["fmask=0077" "dmask=0077"];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/7f7e9d69-78e0-49f1-b792-6be26ed8e040"; }
];
swapDevices = [
{device = "/dev/disk/by-uuid/7f7e9d69-78e0-49f1-b792-6be26ed8e040";}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's

View file

@ -1 +0,0 @@
nixos-rebuild build --flake .# --cores 8 -j 1