Compare commits

..

10 commits

13 changed files with 217 additions and 137 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

View file

@ -52,8 +52,8 @@ in
users.users.${username} = {
isNormalUser = true;
description = fullname;
extraGroups = [ "wheel" "networkmanager" ]
++ lib.optionals isMobile [ "dialout" "feedbackd" "video" ];
extraGroups = [ "wheel" "networkmanager" "video" ]
++ lib.optionals isMobile [ "dialout" "feedbackd" ];
shell = pkgs.fish;
inherit hashedPassword;
};

View file

@ -1,28 +1,28 @@
{ config, lib, pkgs, tokyo-night-sddm-src, ... }:
lib.mkIf (config.platform != "mobile")
(let
tokyo-night-sddm = with pkgs.libsForQt5; pkgs.stdenv.mkDerivation {
name = "tokyo-night-sddm";
src = tokyo-night-sddm-src;
installPhase = ''
let
tokyo-night-sddm = pkgs.stdenv.mkDerivation {
name = "tokyo-night-sddm";
src = tokyo-night-sddm-src;
installPhase = ''
cp -f ${./tokyo-night-sddm/theme.conf} ./theme.conf
cp -f ${../assets/background/bg_lock.png} Backgrounds/background.png
mkdir -p $out/share/sddm/themes/tokyo-night-sddm
mv * $out/share/sddm/themes/tokyo-night-sddm
'';
};
in {
environment.systemPackages = with pkgs.libsForQt5; [
tokyo-night-sddm # Theme
qtbase
qtsvg
qtquickcontrols2
qtgraphicaleffects
];
};
in lib.mkIf (config.platform != "mobile") {
environment.systemPackages = with pkgs.libsForQt5; [
tokyo-night-sddm # Theme
qtbase
qtsvg
qtquickcontrols2
qtgraphicaleffects
];
services.displayManager.defaultSession = "hyprland";
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
theme = "tokyo-night-sddm";
};
})
services.displayManager.defaultSession = "hyprland";
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
theme = "tokyo-night-sddm";
};
}

View file

@ -1,6 +1,19 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
{
environment.systemPackages = with pkgs; [
environment.systemPackages = with pkgs;
let aspell' = aspellWithDicts.override {
aspell = aspell.overrideAttrs (super: {
postInstall = super.postInstall + ''
mkdir -p $out/etc
cat > $out/etc/aspell.conf << EOF
lang en_US
add-extra-dicts en-computers.rws
add-extra-dicts en_US-science.rws
EOF
'';
});
} (ps: with ps; [ en en-computers en-science ]);
in [
gcc
ffmpeg
openssl
@ -21,10 +34,13 @@
gnuplot
graphviz
texlive.combined.scheme-full
(aspellWithDicts (ps: with ps; [ en en-computers en-science ]))
aspell'
nil
];
programs.hyprland.enable = true;
security.pam.services.hyprlock = {};
programs.fish.enable = true;
programs.sway.enable = true;
@ -43,4 +59,13 @@
keep-derivations = true
keep-outputs = true
'';
# WLuma
# services.udev.extraRules = let core = exe: lib.getExe' pkgs.coreutils exe; in ''
# ACTION=="add", SUBSYSTEM=="backlight", RUN+="${core "chgrp"} video /sys/class/backlight/%k/brightness"
# ACTION=="add", SUBSYSTEM=="backlight", RUN+="${core "chmod"} g+w /sys/class/backlight/%k/brightness"
# ACTION=="add", SUBSYSTEM=="leds", RUN+="${core "chgrp"} video /sys/class/leds/%k/brightness"
# ACTION=="add", SUBSYSTEM=="leds", RUN+="${core "chmod"} g+w /sys/class/leds/%k/brightness"
# '';
}

View file

@ -1,9 +1,9 @@
[General]
Background="Backgrounds/shacks.png"
Background="Backgrounds/background.png"
## Path relative to the theme root directory. Most standard image file formats are allowed including support for transparency. (e.g. background.jpeg/illustration.GIF/Foto.png/undraw.svgz)
DimBackgroundImage="0.3"
DimBackgroundImage="0"
## Double between 0 and 1 used for the alpha channel of a darkening overlay. Use to darken your background image on the fly.
ScaleImageCropped="true"
@ -17,7 +17,7 @@ ScreenHeight="1080"
## [Blur Settings]
FullBlur="true"
FullBlur="false"
PartialBlur="false"
## Enable or disable the blur effect; if HaveFormBackground is set to true then PartialBlur will trigger the BackgroundColor of the form element to be partially transparent and blend with the blur.
@ -31,7 +31,7 @@ BlurRadius="65"
HaveFormBackground="false"
## Have a full opacity background color behind the form that takes slightly more than 1/3 of screen estate; if PartialBlur is set to true then HaveFormBackground will trigger the BackgroundColor of the form element to be partially transparent and blend with the blur.
FormPosition="center"
FormPosition="right"
## Position of the form which takes roughly 1/3 of screen estate. Can be left, center or right.
BackgroundImageHAlignment="center"
@ -40,17 +40,17 @@ BackgroundImageHAlignment="center"
BackgroundImageVAlignment="center"
## As before but for the vertical position of the background picture relative to its visible area.
MainColor="#7aa2f7"
MainColor="#c0caf5"
## Used for all elements when not focused/hovered etc. Usually the best effect is achieved by having this be either white or a very dark grey like #444 (not black for smoother antialias)
## Colors can be HEX or Qt names (e.g. red/salmon/blanchedalmond). See https://doc.qt.io/qt-5/qml-color.html
AccentColor="#d372a9"
AccentColor="#f6a8cf"
## Used for elements in focus/hover/pressed. Should be contrasting to the background and the MainColor to achieve the best effect.
BackgroundColor="#16161e"
BackgroundColor="#0a0a11"
## Used for the user and session selection background as well as for ScreenPadding and FormBackground when either is true. If PartialBlur and FormBackground are both enabled this color will blend with the blur effect.
OverrideLoginButtonTextColor="#16161e"
OverrideLoginButtonTextColor="#343b58"
## The text of the login button may become difficult to read depending on your color choices. Use this option to set it independently for legibility.
InterfaceShadowSize="6"
@ -65,7 +65,7 @@ RoundCorners="20"
ScreenPadding="0"
## Integer in pixels. Increase or delete this to have a padding of color BackgroundColor all around your screen. This makes your login greeter appear as if it was a canvas. Cool!
Font="JetBrainsMono Nerd Font"
Font="Quicksand"
## If you want to choose a custom font it will have to be available to the X root user. See https://wiki.archlinux.org/index.php/fonts#Manual_installation
FontSize=""

View file

@ -1,4 +1,4 @@
{ config, pkgs, username, fullname, email, ... }:
{ config, pkgs, username, ... }:
{
home.username = username;
home.homeDirectory = "/home/" + username;
@ -6,31 +6,4 @@
home.stateVersion = "21.11";
imports = [ ./shell ./wayland ./xdg.nix ./tools.nix ./email.nix ];
programs.git = {
enable = true;
userName = fullname;
userEmail = email;
signing.key = "6CB106C25E86A9F7";
signing.signByDefault = true;
extraConfig = {
credential.helper = "store";
git.allowForcePush = true;
push.followTags = true;
init.defaultBranch = "main";
};
delta.enable = true;
delta.options = {
features = "decorations";
relative-paths = true;
decorations = {
file-style = "yellow";
hunk-header-style = "line-number syntax";
};
};
};
}

View file

@ -1,4 +1,4 @@
{ config, pkgs, fullname, email, ... }:
{ config, pkgs, lib, fullname, email, ... }:
let
ksumail = "bsheiban@students.kennesaw.edu";
maildir = "${config.xdg.dataHome}/mail";
@ -18,7 +18,7 @@ in {
address = email;
userName = email;
flavor = "gmail.com";
passwordCommand = "${pass}/bin/pass Email/GmailApp/${email}";
passwordCommand = "${lib.getExe pass} email/GmailApp/${email}";
primary = true;
mbsync = {
enable = true;
@ -34,7 +34,7 @@ in {
address = ksumail;
userName = ksumail;
flavor = "outlook.office365.com";
passwordCommand = "${pass}/bin/pass Email/${ksumail}";
passwordCommand = "${lib.getExe pass} email/${ksumail}";
mbsync = {
enable = true;
create = "both";
@ -51,7 +51,7 @@ in {
services = {
mbsync = {
enable = true;
postExec = "${pkgs.mu}/bin/mu index -m ${maildir}";
postExec = "${lib.getExe pkgs.mu} index -m ${maildir}";
};
};
}

View file

@ -1,4 +1,4 @@
{ pkgs, ... }:
{ pkgs, fullname, email, ... }:
{
# Password Store
@ -18,4 +18,34 @@
programs.mpv.config = {
osc = false;
};
# Git
programs.git = {
enable = true;
userName = fullname;
userEmail = email;
signing.key = "6CB106C25E86A9F7";
signing.signByDefault = true;
extraConfig = {
github.user = "kiana-S";
credential.helper = "store";
git.allowForcePush = true;
push.followTags = true;
init.defaultBranch = "main";
};
delta.enable = true;
delta.options = {
features = "decorations";
relative-paths = true;
decorations = {
file-style = "yellow";
hunk-header-style = "line-number syntax";
};
};
};
}

View file

@ -59,7 +59,7 @@
:halign "end"
:hexpand true
:yalign 0.5
:text {formattime(EWW_TIME, "%A, %Y-%m-%d")})))
:text {formattime(EWW_TIME, "%a, %Y-%m-%d")})))
;; Playerctl
@ -182,14 +182,16 @@
(defwidget bar_battery []
(bar_circular :class "bar-battery"
:critical {EWW_BATTERY["BAT1"].capacity <= 15}
:tooltip "Battery: ${EWW_BATTERY["BAT1"].capacity}%"
:critical {EWW_BATTERY["BAT1"].capacity <= 15
&& EWW_BATTERY["BAT1"].status != "Charging"}
:tooltip "Battery: ${EWW_BATTERY["BAT1"].capacity}%${
EWW_BATTERY["BAT1"].status == "Charging" ? " (Charging)" : ""}"
:value {EWW_BATTERY["BAT1"].capacity}
:symbol {EWW_BATTERY["BAT1"].status == "Charging" ? "󰂄" : "󰁹"}))
(defwidget bar_ram []
(bar_circular :class "bar-ram"
:critical {EWW_RAM.used_mem_perc >= 95}
:critical {EWW_RAM.used_mem_perc >= 80}
:tooltip "RAM: ${round(EWW_RAM.used_mem / 1073741824, 2)
} / ${round(EWW_RAM.total_mem / 1073741824, 2)} GB (${round(EWW_RAM.used_mem_perc, 2)}%)"
:value {EWW_RAM.used_mem_perc}
@ -197,6 +199,7 @@
(defwidget bar_storage []
(bar_circular :class "bar-storage"
:critical {EWW_DISK["/"].used_perc >= 95}
:tooltip "Storage: ${round(EWW_DISK["/"].used / 1073741824, 2)
} / ${round(EWW_DISK["/"].total / 1073741824, 0)} GB (${round(EWW_DISK["/"].used_perc, 2)}%)"
:value {EWW_DISK["/"].used_perc}
@ -252,14 +255,14 @@
:halign "start"
:hexpand true
(bar_window :class-limit 60
:title-limit 55)))
:title-limit 50)))
(defwidget laptop_bar_left_wing []
(box :orientation "h"
:space-evenly false
:halign "end"
:hexpand true
(bar_time :width 195)))
(bar_time :width 175)))
(defwidget laptop_bar_center []
(bar_workspaces))
@ -268,7 +271,7 @@
(box :orientation "h"
:space-evenly false
:hexpand true
(bar_music :width 195
(bar_music :width 175
:artist-limit 30
:title-limit 25)))
@ -317,7 +320,7 @@
:space-evenly false
:halign "end"
:hexpand true
(bar_time :width 195)))
(bar_time :width 175)))
(defwidget desktop_bar_center []
(bar_workspaces))
@ -326,7 +329,7 @@
(box :orientation "h"
:space-evenly false
:hexpand true
(bar_music :width 195
(bar_music :width 175
:artist-limit 30
:title-limit 25)))
@ -341,7 +344,9 @@
(bar_internet)
(bar_sep)
(bar_storage)
(bar_ram)))
(bar_ram)
(bar_sep)
(bar_idleinhibit)))
(defwidget desktop_bar_layout []
(centerbox :class "bar"
@ -351,7 +356,7 @@
:hexpand true
(desktop_bar_left_edge)
(desktop_bar_left_wing))
(bar_center)
(desktop_bar_center)
(box :orientation "h"
:space-evenly false
(desktop_bar_right_wing)

View file

@ -16,7 +16,14 @@ in {
plugins = with pkgs.hyprlandPlugins; [ hy3 ];
settings = {
settings = let
# Volume using pamixer
audio-disp = "${scripts}/multimedia Volume $(pamixer --get-mute) pamixer $(pamixer --get-volume)";
audio = cmd: "pamixer ${cmd} && ${audio-disp}";
# Brightness using brightnessctl
brightness-disp = ''${scripts}/multimedia Brightness "" brightnessctl $(brightnessctl -e -m | cut -d, -f4 | tr -d "%")'';
brightness = x: "brightnessctl -e set ${x} && ${brightness-disp}";
in {
"$mod" = modifier;
"$terminal" = terminal;
"$menu" = "rofi -show drun";
@ -36,9 +43,7 @@ in {
resize_on_border = true;
"col.inactive_border" = "rgb(474f6f)";
"col.active_border" = "rgb(7bc5e4)";
"col.nogroup_border" = "rgb(d5556f)";
"col.nogroup_border_active" = "rgb(d5556f)";
"col.active_border" = "rgb(b4f9f8)";
};
plugin.hy3 = {
@ -47,6 +52,10 @@ in {
tabs = {
height = 6;
render_text = false;
"col.active" = "rgb(b4f9f8)";
"col.inactive" = "rgb(474f6f)";
"col.urgent" = "rgb(f7768e)";
};
};
@ -61,9 +70,6 @@ in {
font_size = 14;
};
windowrulev2 = [
"bordercolor rgb(e0af68), fullscreen:1"
];
layerrule = [
"noanim, ^(notifications)$"
];
@ -87,7 +93,7 @@ in {
"$mod, Return, exec, $terminal"
"$mod, D, exec, $menu"
"$mod Shift, E, exec, ${scripts}/exit"
"$mod, M, exec, swaylock"
"$mod, M, exec, hyprlock --immediate"
# Emacs Everywhere
# "$mod, Q, exec, $HOME/.config/emacs/bin/doom +everywhere"
@ -153,7 +159,7 @@ in {
bindl = [
# XF86 key bindings
", XF86AudioMute, exec, pamixer --toggle-mute"
", XF86AudioMute, exec, ${audio "--toggle-mute"}"
", XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle"
", XF86AudioPlay, exec, playerctl play-pause"
", XF86AudioNext, exec, playerctl next"
@ -164,14 +170,7 @@ in {
"Shift, Print, exec, ${scripts}/screenshot-slurp"
];
bindle = let
# Volume using pamixer
audio-disp = "${scripts}/multimedia Volume pamixer $(pamixer --get-volume)";
audio = cmd: "pamixer ${cmd} && ${audio-disp}";
# Brightness using brightnessctl
brightness-disp = ''${scripts}/multimedia Brightness brightnessctl $(brightnessctl -e -m | cut -d, -f4 | tr -d "%")'';
brightness = x: "brightnessctl -e set ${x} && ${brightness-disp}";
in [
bindle = [
# XF86 key bindings
", XF86AudioRaiseVolume, exec, ${audio "-i 2"}"
", XF86AudioLowerVolume, exec, ${audio "-d 2"}"

View file

@ -21,13 +21,13 @@ in {
services.hypridle.enable = true;
services.hypridle.settings = {
general = {
before_sleep_cmd = "swaylock -f";
before_sleep_cmd = "hyprlock --immediate";
};
listener = [
{
timeout = 120;
on-timeout = "swaylock -f --grace=180";
on-timeout = "hyprlock";
}
{
timeout = 600;
@ -47,7 +47,7 @@ in {
Unit = {
Description = "Inhibit Wayland idling when media is played through pipewire";
Documentation= "https://github.com/rafaelrc7/wayland-pipewire-idle-inhibit";
Documentation = "https://github.com/rafaelrc7/wayland-pipewire-idle-inhibit";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
ConditionEnvironment = "WAYLAND_DISPLAY";

View file

@ -1,4 +1,4 @@
#!/usr/bin/env bash
notify-send "$1" -c multimedia -a "$2" \
notify-send "$1" "$2" -c multimedia -a "$3" \
$(makoctl list | jaq -r 'first(.data[][]|select(.category.data=="multimedia")|.id.data|["-r",.])[]') \
-h "INT:value:$3"
-h "INT:value:$4"

View file

@ -1,7 +1,6 @@
{ pkgs, config, ... }:
{ pkgs, lib, config, ... }:
{
home.packages = with pkgs; [
swaylock-effects
wl-clipboard
wtype
wlroots
@ -10,44 +9,55 @@
imv
];
xdg.configFile = {
"swaylock/config".text = ''
ignore-empty-password
fade-in=0.3
xdg.configFile."swaynag/config".text = ''
font=JetBrainsMono 10
layer=top
indicator
screenshots
[exit]
background=111320D0
text=a9b1d6
border-bottom=7BC5E4
border-bottom-size=1
button-background=282E49F0
button-border-size=2
'';
font=JetBrainsMono
text-color=ffffff
color=00000000
ring-color=7da6ff
key-hl-color=7bc5e4
# Hyprlock
line-uses-inside
indicator-radius=120
indicator-thickness=7
programs.hyprlock.enable = true;
programs.hyprlock.settings = {
general = {
hide_cursor = true;
disable_loading_bar = true;
grace = 180;
};
clock
datestr=%a, %Y-%m-%d
background = [
{
monitor = "";
path = "screenshot";
blur_passes = 2;
blur_size = 6;
}
];
effect-scale=0.4
effect-vignette=0.3:0.7
effect-blur=2x2
'';
input-field = [
{
monitor = "";
size = "500, 50";
position = "0, -80";
dots_center = true;
fade_on_empty = false;
"swaynag/config".text = ''
font=JetBrainsMono 10
layer=top
[exit]
background=111320D0
text=a9b1d6
border-bottom=7BC5E4
border-bottom-size=1
button-background=282E49F0
button-border-size=2
'';
font_color = "rgb(a9b1d6)";
inner_color = "rgb(1a1b26)";
outer_color = "rgb(b4f9f8)";
outline_thickness = 3;
placeholder_text = ''<span foreground="##565f89">Password</span>'';
shadow_passes = 2;
}
];
};
# Rofi
@ -92,7 +102,7 @@
background-color=#1e0909d0
border-color=#ce7284
progress-color=source #bc5469
border-size=3
border-size=2
default-timeout=0
ignore-timeout=1
@ -114,15 +124,53 @@
border-size=1
default-timeout=2000
[category=multimedia app-name=pamixer]
[category=multimedia app-name=pamixer body=false]
background-color=#111111c0
border-color=#787c99
progress-color=source #474f6f
[category=multimedia app-name=pamixer body=true]
background-color=#111111c0
border-color=#ce7284
progress-color=source #bc5469
[category=multimedia app-name=brightnessctl]
background-color=#111111c0
border-color=#ffea63
progress-color=source #a08348
'';
};
# WLuma
# systemd.user.services.wluma = lib.mkIf (config.platform == "laptop") {
# Install.WantedBy = [ "graphical-session.target" ];
# Unit = {
# Description = "Adjust screen brightness based on screen contents and ambient lighting";
# Documentation = "https://github.com/maximbaz/wluma";
# After = [ "graphical-session-pre.target" ];
# PartOf = [ "graphical-session.target" ];
# ConditionEnvironment = "WAYLAND_DISPLAY";
# };
# Service = {
# ExecStart = "${lib.getExe pkgs.wluma}";
# Restart = "always";
# RestartSec = "5";
# PrivateNetwork = "true";
# PrivateMounts = "false";
# };
# };
# xdg.configFile."wluma/config.toml".text = ''
# [als.iio]
# path = "/sys/bus/iio/devices"
# thresholds = { 0 = "night", 20 = "dark", 80 = "dim", 250 = "normal", 500 = "bright", 800 = "outdoors" }
# [[output.backlight]]
# name = "eDP-1"
# path = "/sys/class/backlight/intel_backlight"
# capturer = "wlroots"
# '';
}