Compare commits

50 Commits
demo ... main

Author SHA1 Message Date
f4b3ac54ef Updated hyprland config 2025-12-15 23:48:36 -05:00
61f29392cf Added swaync 2025-12-15 23:48:13 -05:00
8e4ceadfb1 Updated Waybar && Switched to JetBrainsMono 2025-12-15 23:46:52 -05:00
51deed6aa6 Updated wallpapers 2025-12-15 23:44:33 -05:00
38a6c622f7 Enabled TLP power management 2025-12-11 00:11:33 -05:00
7da6384e89 Added Pyprland + Scratchpad 2025-12-07 23:53:43 -05:00
4c5b7a966d Switched to foot terminal 2025-12-07 23:52:36 -05:00
96ad8e6994 Disabled UWSM 2025-12-07 23:51:09 -05:00
9dd76a18a1 Disabled Helix Editor 2025-12-07 23:50:08 -05:00
b8abe6f711 Updated GTK styling 2025-12-07 23:48:40 -05:00
70fd1d8fae Updated Hyprlock & Hypridle 2025-12-07 22:17:59 -05:00
ab088fcba5 Shell Upgrades - fzf, zoxide, etc. 2025-12-07 22:09:30 -05:00
b57e8202d8 Updated flake inputs 2025-12-07 21:25:27 -05:00
96fdf27a60 Added Hypridle and Hyprlock && switched to UWSM 2025-11-27 15:23:59 -05:00
1f1bd53be9 New starship prompt 2025-11-22 18:47:06 -05:00
72c811c67e Fixed wlogout icons 2025-11-22 18:46:36 -05:00
97ef9a7a9e Added Zed editor 2025-11-16 22:15:29 -05:00
d55077e045 Added Helix editor 2025-11-16 13:44:56 -05:00
1dddfebbb8 Replaced rofi w/ walker 2025-11-16 01:17:54 -05:00
15317047e3 Updated Styling 2025-11-16 01:17:15 -05:00
99f64a3145 First base waybar rice 2025-11-13 14:13:23 -05:00
6c79eff909 Added screenshot with hyprshot & satty 2025-11-12 14:23:51 -05:00
e35f7923ae Added wlogout 2025-11-11 22:47:51 -05:00
55f2b15896 Added podman+distrobox virtualization (disabled virtualbox) 2025-11-10 18:14:45 -05:00
00a1828a0d Added HyprDynamicMonitors 2025-11-09 14:34:44 -05:00
2f6bed228d Added the Yazi TUI file browser 2025-11-09 14:34:17 -05:00
dee0c41a05 Added Ghostty & Kitty, only using Ghostty 2025-11-08 12:14:23 -05:00
a97d49f8a7 Updated from pkgs.system to pkgs.stdenv.hostPlatform.system 2025-11-08 12:12:44 -05:00
636c8d4d0d Updated hyprland setup with basic wallpaper support 2025-11-07 23:06:50 -05:00
58276cc8e0 Initial multi desktop setup 2025-11-03 15:45:00 -05:00
dd4274f036 Added stylix (again) 2025-11-01 23:09:40 -04:00
626ede8955 Update flake inputs 2025-11-01 23:05:23 -04:00
9fdfd2efa0 Updated VSCode C config 2025-11-01 23:01:55 -04:00
c2380696ef Switched to cosmic desktop 2025-10-28 23:57:04 -04:00
df478c93e4 Updated flake inputs 2025-10-28 23:56:35 -04:00
a4588c49aa Removed stylix 2025-10-28 23:56:03 -04:00
c3eb30b199 Added Alacritty 2025-10-28 23:55:12 -04:00
6d5efdf451 Changed signing key path to absolute 2025-10-28 14:56:52 -04:00
dbab6f8d32 Set up git commit signing with ssh 2025-10-28 09:30:29 -04:00
a21abe2f8f Added fix for vscode remote ssh, using custom ssh config file path 2025-10-27 17:47:52 -04:00
038cc8ce3b Added rust support to nvf 2025-10-26 23:43:49 -04:00
20e3ffdd48 Began xdg config, added Dev home dir 2025-10-26 23:43:24 -04:00
94d28215a6 Begun yubikey integration 2025-10-23 23:52:24 -04:00
7182bc8e8e Added printing & scanner support 2025-10-23 12:25:08 -04:00
aea83699b8 Added catppuccin/nix 2025-10-19 11:33:12 -04:00
6febc0906b Added stylix 2025-10-19 01:55:37 -04:00
7929e07296 Attempted firefox search backup issue 2025-10-19 01:55:06 -04:00
bafe695b96 Added lazygit 2025-10-19 00:25:08 -04:00
4bd523906c Added starship prompt 2025-10-16 15:20:59 -04:00
9154c8f6f8 Updated flake inputs 2025-10-16 12:25:11 -04:00
63 changed files with 2967 additions and 82 deletions

1114
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -31,21 +31,48 @@
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
};
outputs = { nixpkgs, ... }@inputs:
let
system = "x86_64-linux";
host = "vanta";
in
{
nixosConfigurations.${host} = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs host; };
modules = [
./modules/system
./hosts/${host}
];
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
mango.url = "github:DreamMaoMao/mango?rev=1271832e947d3d4af27b36f687edd2f2e535f051";
hyprland.url = "github:hyprwm/Hyprland";
silentSDDM = {
url = "github:uiriansan/SilentSDDM";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprdynamicmonitors.url = "github:fiffeek/hyprdynamicmonitors";
elephant = {
url = "github:abenz1267/elephant";
inputs.nixpkgs.follows = "nixpkgs";
};
walker = {
url = "github:abenz1267/walker";
inputs.elephant.follows = "elephant";
};
};
outputs =
{ nixpkgs, ... }@inputs:
{
nixosConfigurations.vanta = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
inherit inputs;
host = "vanta";
wallpaper = "twilight-village.png";
};
modules = [
./modules/system
./hosts/vanta
];
};
};
}

View File

@@ -4,11 +4,27 @@
{
imports = [
./firefox.nix
./foot.nix
# ./ghostty.nix
./git.nix
# ./helix.nix
./hypr
./mango.nix
./nvf.nix
./packages.nix
./plasma.nix
# ./plasma.nix
./screenshot.nix
./ssh.nix
./stylix.nix
./swaync.nix
./vscode.nix
./walker.nix
./wallpaper.nix
./waybar
./wlogout.nix
./xdg.nix
./yazi.nix
./zed.nix
./zsh.nix
];
}

View File

@@ -18,6 +18,7 @@
DisableProfileImport = true;
DisableProfileRefresh = true;
DisableTelemetry = true;
DisplayBookmarksToolbar = "never";
DontCheckDefaultBrowser = true;
EnableTrackingProtection = {
Value = true; # Tracking protection is enabled by default in both the regular browser and private browsing
@@ -85,6 +86,7 @@
};
search = {
default = "google";
force = true;
engines = {
nix-packages = {
name = "Nix Packages";

17
modules/home/foot.nix Normal file
View File

@@ -0,0 +1,17 @@
{
...
}:
{
programs.foot = {
enable = true;
server.enable = false;
settings = {
main = {
term = "xterm-256color";
};
mouse = {
hide-when-typing = "yes";
};
};
};
}

13
modules/home/ghostty.nix Normal file
View File

@@ -0,0 +1,13 @@
{
...
}:
{
programs.ghostty = {
enable = true;
enableZshIntegration = true;
settings = {
term = "xterm-256color";
};
systemd.enable = true;
};
}

View File

@@ -1,18 +1,40 @@
{
pkgs,
config,
...
}:
let
name = "Eclypsed";
email = "Ec1ypsed@proton.me";
signingKey = "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIB2h6y1Al2OVotYIpwPZMjiBLAncAI2pAPgES2+gVbJqAAAABHNzaDo= ssh:";
in
{
programs.git = {
enable = true;
userName = "Eclypsed";
userEmail = "Ec1ypsed@proton.me";
extraConfig = {
init = {
defaultBranch = "main";
home.packages = with pkgs; [ git-ignore ];
xdg.configFile."git/allowed_signers".text = ''
${email} namespaces="git" ${signingKey}
'';
programs = {
git = {
enable = true;
settings = {
user = { inherit name email; };
init = {
defaultBranch = "main";
};
gpg.ssh.allowedSignersFile = "${config.xdg.configHome}/git/allowed_signers";
};
signing = {
format = "ssh";
key = "${config.home.homeDirectory}/.ssh/id_ed25519_sk_rk.pub";
signByDefault = true;
};
};
lazygit = {
enable = true;
enableZshIntegration = true;
shellWrapperName = "lg";
};
};
home.packages = with pkgs; [ git-ignore ];
}

78
modules/home/helix.nix Normal file
View File

@@ -0,0 +1,78 @@
{
pkgs,
...
}:
{
programs.helix = {
enable = true;
extraPackages = with pkgs; [
basedpyright
ruff
# pylyzer
isort
black
nixd
nixfmt
];
languages = {
language = [
{
name = "python";
language-servers = [
"basedpyright"
"ruff"
# "pylyzer"
];
auto-format = true;
formatter = {
command = "bash"; # We have to use bash to call both isort and black
args = [
"-c"
"isort --profile black - | black --quiet --line-length=79 -" # Line length of 79 in accordance with PEP 8
];
};
}
{
name = "nix";
language-servers = [ "nixd" ];
auto-format = true;
formatter = {
command = "nixfmt";
};
}
];
language-server = {
basedpyright.config.python.analysis = {
typeCheckingMode = "strict";
};
ruff = {
command = "ruff";
args = [ "server" ];
};
# pylyzer = {
# command = "pylyzer";
# args = [ "--server" ];
# };
nixd = {
command = "nixd";
};
};
};
settings = {
editor = {
line-number = "relative";
cursorline = true;
color-modes = true;
cursor-shape = {
insert = "bar";
normal = "block";
select = "underline";
};
indent-guides = {
render = true;
};
};
theme = "catppuccin_mocha";
};
};
}

View File

@@ -0,0 +1,13 @@
{
...
}:
{
imports = [
./hypridle.nix
./hyprland.nix
./hyprlock.nix
./keybinds.nix
./monitors.nix
./pyprland.nix
];
}

View File

@@ -0,0 +1,30 @@
{
...
}:
{
services.hypridle = {
enable = true;
settings = {
general = {
lock_cmd = "pidof hyprlock || hyprlock --grace 10";
before_sleep_cmd = "loginctl lock-session";
fail_timeout = 1000;
};
listener = [
{
timeout = 300;
on-timeout = "loginctl lock-session";
}
{
timeout = 450;
on-timeout = "hyprctl dispatch dpms off";
on-resume = "hyprctl dispatch dpms on";
}
{
timeout = 600;
on-timeout = "systemctl suspend || loginctl suspend";
}
];
};
};
}

View File

@@ -0,0 +1,110 @@
{
# inputs,
pkgs,
config,
...
}:
{
home.packages = with pkgs; [
hyprpolkitagent
];
# xdg.configFile."uwsm/env".source =
# "${config.home.sessionVariablesPackage}/etc/profile.d/hm-session-vars.sh";
wayland.windowManager.hyprland = {
enable = true;
# systemd.enable = false;
package = null;
portalPackage = null;
settings = {
source = [
"${config.xdg.configHome}/hypr/monitors.conf"
];
animations = {
# Stolen from https://github.com/Vobledoble/nixparency-dots/
enabled = true;
bezier = [
"easeOutQuint,0.23,1,0.32,1"
"easeInOutCubic,0.65,0.05,0.36,1"
"linear,0,0,1,1"
"almostLinear,0.5,0.5,0.75,1.0"
"quick,0.15,0,0.1,1"
];
animation = [
"global, 1, 10, default"
"border, 1, 5.39, easeOutQuint"
"windows, 1, 4.79, easeOutQuint"
"windowsIn, 1, 4.1, easeOutQuint, popin 87%"
"windowsOut, 1, 1.49, linear, popin 87%"
"fadeIn, 1, 1.73, almostLinear"
"fadeOut, 1, 1.46, almostLinear"
"fade, 1, 3.03, quick"
"layers, 1, 3.81, easeOutQuint"
"layersIn, 1, 4, easeOutQuint, fade"
"layersOut, 1, 1.5, linear, fade"
"fadeLayersIn, 1, 1.79, almostLinear"
"fadeLayersOut, 1, 1.39, almostLinear"
"workspaces, 1, 1.94, almostLinear, fade"
"workspacesIn, 1, 1.21, almostLinear, fade"
"workspacesOut, 1, 1.94, almostLinear, fade"
];
};
general = {
gaps_in = 5;
gaps_out = 10;
border_size = 2;
"col.active_border" = "rgb(4479A4)";
"col.inactive_border" = "rgba(4479A480)";
};
decoration = {
rounding = 10;
active_opacity = 0.95;
inactive_opacity = 0.85;
fullscreen_opacity = 1.0;
blur = {
enabled = true;
size = 8;
passes = 3;
new_optimizations = true;
popups = true;
};
shadow.enabled = false;
};
misc = {
vfr = true;
};
layerrule = [
"blur, waybar" # Add blur to waybar
"blurpopups, waybar" # Blur waybar popups too!
"ignorealpha 0.2, waybar" # Make it so transparent parts are ignored
];
exec-once = [
"systemctl --user enable --now hypridle.service"
"systemctl --user enable --now hyprpolkitagent.service"
"systemctl --user enable app-com.mitchellh.ghostty.service"
"wpaperd -d"
"swaync"
"pypr"
];
env = [
"NIXOS_OZONE_WL, 1"
"HYPRSHOT_DIR, ${config.xdg.userDirs.extraConfig.XDG_SCREENSHOTS_DIR}"
"XDG_CURRENT_DESKTOP, Hyprland"
"XDG_SESSION_TYPE, wayland"
"XDG_SESSION_DESKTOP, Hyprland"
];
};
};
}

View File

@@ -0,0 +1,110 @@
{
config,
wallpaper,
...
}:
let
primary-monitor = "eDP-1";
text-color = "rgba(${config.lib.stylix.colors.base0F}FF)";
entry-background-color = "rgba(${config.lib.stylix.colors.base0F}11)";
entry-border-color = "rgba(${config.lib.stylix.colors.base0F}55)";
font-family = "Rubik Light";
in
{
programs.hyprlock = {
enable = true;
settings = {
general = {
hide_cursor = true;
};
background = [
{
path = "${config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR}/${wallpaper}";
blur_passes = 3;
}
];
input-field = [
{
monitor = primary-monitor;
size = "250, 50";
outline_thickness = 2;
dots_size = 0.1;
dots_spacing = 0.3;
outer_color = entry-border-color;
inner_color = entry-background-color;
font_color = text-color;
fade_on_empty = true;
position = "0, 20";
halign = "center";
valign = "center";
}
];
label = [
{
# Caps Lock Warning
monitor = primary-monitor;
text = "cmd[update:250] check-capslock";
color = text-color;
font_size = 13;
font_family = font-family;
position = "0, -25";
halign = "center";
valign = "center";
}
{
# Clock
monitor = primary-monitor;
text = "$TIME";
color = text-color;
font_size = 65;
font_family = font-family;
position = "0, 300";
halign = "center";
valign = "center";
}
{
# Date
monitor = primary-monitor;
text = "cmd[update:5000] date +\"%A, %B %d\"";
color = text-color;
font_size = 17;
font_family = font-family;
position = "0, 240";
halign = "center";
valign = "center";
}
{
# User
monitor = primary-monitor;
text = " $USER";
color = text-color;
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 = 20;
font_family = font-family;
position = "0, 50";
halign = "center";
valign = "bottom";
}
{
# Status
monitor = primary-monitor;
text = "cmd[update:5000] hyprlock-status";
color = text-color;
font_size = 14;
font_family = font-family;
position = "30, -30";
halign = "left";
valign = "top";
}
];
};
};
}

View File

@@ -0,0 +1,85 @@
{
...
}:
{
wayland.windowManager.hyprland.settings = {
exec = "hyprctl dispatch submap global";
submap = "global";
# MY STUFF
"$mod" = "SUPER";
bind = [
"$mod, Q, killactive"
"$mod, W, exec, foot"
"$mod, S, exec, walker"
"$mod, Escape, exec, wlogout"
# Window Movement
"$mod, left, movefocus, l"
"$mod, right, movefocus, r"
"$mod, up, movefocus, u"
"$mod, down, movefocus, d"
"$mod SHIFT, left, movewindow, l"
"$mod SHIFT, right, movewindow, r"
"$mod SHIFT, up, movewindow, u"
"$mod SHIFT, down, movewindow, d"
"$mod CTRL, left, workspace, r-1"
"$mod CTRL, right, workspace, r+1"
"$mod CTRL SHIFT, left, movetoworkspace, r-1"
"$mod CTRL SHIFT, right, movetoworkspace, r+1"
# Screenshoting
", PRINT, exec, hyprshot -m output --raw | satty --filename -"
"$mod, PRINT, exec, hyprshot -m window --raw | satty --filename -"
"SHIFT, PRINT, exec, hyprshot -m region --raw | satty --filename -"
# Media Control Keys
", XF86AudioPrev, exec, playerctl previous"
", XF86AudioPlay, exec, playerctl play-pause"
", XF86AudioNext, exec, playerctl next"
", XF86AudioMute, exec, pamixer -t"
"ALT, XF86AudioMute, exec, pamixer --default-source -t"
# Notification Center
"$mod, n, exec, swaync-client -t -sw"
# Scratchpads
"$mod, TAB, exec, pypr toggle term"
]
++ (
# workspaces
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
builtins.concatLists (
builtins.genList (
i:
let
ws = i + 1;
in
[
"$mod, code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
]
) 9
)
);
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod ALT, mouse:272, resizewindow"
];
bindel = [
# Volume Controls
", XF86AudioRaiseVolume, exec, pamixer -i 5"
", XF86AudioLowerVolume, exec, pamixer -d 5"
"ALT, XF86AudioRaiseVolume, exec, pamixer --default-source -i 5"
"ALT, XF86AudioLowerVolume, exec, pamixer --default-source -d 5"
# Brightness Controls
", XF86MonBrightnessUp, exec, brightnessctl set 5%+"
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
];
};
}

View File

@@ -0,0 +1,19 @@
{
inputs,
pkgs,
...
}:
{
imports = [
inputs.hyprdynamicmonitors.homeManagerModules.default
];
home.packages = [
inputs.hyprdynamicmonitors.packages.${pkgs.stdenv.hostPlatform.system}.default
];
home.hyprdynamicmonitors = {
enable = true;
installExamples = false;
};
}

View File

@@ -0,0 +1,22 @@
{
pkgs,
...
}:
{
home.packages = with pkgs; [
pyprland
];
xdg.configFile."hypr/pyprland.toml".text = ''
[pyprland]
plugins = ["scratchpads"]
[scratchpads.term]
command = "foot --app-id term_dropdown"
class = "term_dropdown"
animation = "fromTop"
margin = 150
max_size = "1920px 1080px"
multi = false
'';
}

37
modules/home/mango.nix Normal file
View File

@@ -0,0 +1,37 @@
{
inputs,
...
}:
{
imports = [
inputs.mango.hmModules.mango
];
wayland.windowManager.mango = {
enable = true;
settings = ''
bind=SUPER,Return,spawn,alacritty
bind=SUPER,s,spawn,rofi -show drun
bind=SUPER,q,killclient
bind=SUPER+SHIFT,r,reload_config
bind=SUPER,t,setlayout,tile
bind=SUPER,v,setlayout,vertical_grid
bind=SUPER,c,setlayout,spiral
bind=SUPER,x,setlayout,scroller
bind=SUPER,n,switch_layout
bind=SUPER,a,togglegaps
bind=SUPER,Up,focusdir,up
bind=SUPER,Down,focusdir,down
bind=SUPER,Left,focusdir,left
bind=SUPER,Right,focusdir,right
bind=SUPER+SHIFT,Up,exchange_client,up
bind=SUPER+SHIFT,Down,exchange_client,down
bind=SUPER+SHIFT,Left,exchange_client,left
bind=SUPER+SHIFT,Right,exchange_client,right
'';
};
}

View File

@@ -61,9 +61,6 @@
# Formatting files
formatter.conform-nvim = {
enable = true;
setupOpts = {
};
};
binds = {
@@ -221,6 +218,17 @@
treesitter.enable = true;
};
rust = {
enable = true;
# crates = {
# enable = true;
# };
dap.enable = true;
format.enable = true;
lsp.enable = true;
treesitter.enable = true;
};
tailwind = {
enable = true;
lsp.enable = true;

View File

@@ -9,19 +9,22 @@
discord
sqlitebrowser
drawio
bitwarden-desktop
check-capslock
# Libre Office
libreoffice-qt
hunspell
hunspellDicts.en_US
# KDE
kdePackages.kate
# CD Stuff
picard
heybrochecklog
rsgain
playerctl
pamixer
pavucontrol
brightnessctl
obsidian
];
}

View File

@@ -0,0 +1,17 @@
{
pkgs,
config,
...
}:
{
home.packages = with pkgs; [
hyprshot
satty
];
xdg.configFile."satty/config.toml".text = ''
[general]
fullscreen = false
output-filename = "${config.xdg.userDirs.extraConfig.XDG_SCREENSHOTS_DIR}/%Y-%m-%d_%H:%M:%S.png"
'';
}

30
modules/home/ssh.nix Normal file
View File

@@ -0,0 +1,30 @@
{
...
}:
{
programs.ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
"*" = {
addKeysToAgent = "yes";
identityFile = [ "~/.ssh/id_ed25519_sk_rk" ];
};
"stu" = {
hostname = "stu.cs.jmu.edu";
user = "tamassno";
localForwards = [
{
bind.port = 5432;
host = {
address = "data.cs.jmu.edu";
port = 5432;
};
}
];
serverAliveCountMax = 5;
serverAliveInterval = 60;
};
};
};
}

55
modules/home/stylix.nix Normal file
View File

@@ -0,0 +1,55 @@
{
inputs,
pkgs,
...
}:
{
imports = [
inputs.stylix.homeModules.stylix
];
stylix = {
enable = true;
autoEnable = false;
polarity = "dark";
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
fonts = {
monospace = {
name = "JetBrainsMono Nerd Font"; # "FiraCode Nerd Font";
package = pkgs.nerd-fonts.jetbrains-mono; # pkgs.nerd-fonts.fira-code;
};
};
targets = {
ghostty.enable = true;
gtk.enable = true;
firefox = {
enable = true;
profileNames = [ "eclypse" ];
colorTheme.enable = true;
firefoxGnomeTheme.enable = true;
};
foot.enable = true;
lazygit.enable = true;
starship.enable = true;
swaync.enable = true;
yazi.enable = true;
};
};
home.pointerCursor = {
enable = true;
gtk.enable = true;
name = "Catppuccin-Mocha-Dark-Cursors";
package = pkgs.catppuccin-cursors.mochaDark;
size = 16;
};
gtk = {
enable = true;
colorScheme = "dark";
iconTheme = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
};
};
}

104
modules/home/swaync.nix Normal file
View File

@@ -0,0 +1,104 @@
{
...
}:
{
services.swaync = {
enable = true;
settings = {
positionX = "right";
positionY = "top";
cssPriority = "user"; # "application"
control-center-width = 380;
control-center-height = 860;
control-center-margin-top = 10;
control-center-margin-bottom = 10;
control-center-margin-right = 10;
control-center-margin-left = 10;
notification-window-width = 400;
notification-icon-size = 48;
notification-body-image-height = 100;
notification-body-image-width = 200;
timeout = 4;
timeout-low = 2;
timeout-critical = 6;
fit-to-screen = false;
keyboard-shortcuts = true;
image-visibility = "when-available";
transition-time = 200;
hide-on-clear = false;
hide-on-action = false;
script-fail-notify = true;
scripts = {
example-script = {
exec = "echo 'Do something...'";
urgency = "Normal";
};
};
notification-visibility = {
example-name = {
state = "muted";
urgency = "low";
app-name = "Spotify";
};
};
widgets = [
"label"
"buttons-grid"
"mpris"
"dnd"
"title"
"notifications"
];
widget-config = {
title = {
text = "Notifications";
clear-all-button = true;
button-text = " 󰎟 ";
};
dnd = {
text = "Do Not Disturb";
};
label = {
max-lines = 1;
text = " ";
};
mpris = {
image-size = 96;
image-radius = 12;
};
volume = {
label = "󰕾";
show-per-app = true;
};
buttons-grid = {
actions = [
{
label = "";
command = "pamixer -t";
}
{
label = "";
command = "pamixer --default-source -t";
}
{
label = "";
command = "nmtui";
}
# {
# label = "󰂯";
# command = "blueman-manager";
# }
# {
# label = "󰏘";
# command = "nwg-look";
# }
];
};
};
};
};
}

View File

@@ -17,6 +17,7 @@
aaron-bond.better-comments
yzane.markdown-pdf
mechatroner.rainbow-csv
catppuccin.catppuccin-vsc
# Remote development
ms-vscode-remote.remote-ssh
@@ -46,6 +47,14 @@
# General
"editor.formatOnSave" = true;
"workbench.iconTheme" = "material-icon-theme";
"workbench.colorTheme" = "Catppuccin Mocha";
"catppuccin.accentColor" = "flamingo";
# Remote SSH
# VSCode attempts to write to ~/.ssh/config for remote ssh connections.
# Because ~/.ssh/config is managed with home-manager, it is not writeable.
# So we specify a custom ssh config path
"remote.SSH.configFile" = "/home/eclypse/.ssh/vscode-config";
# Prettier
"editor.defaultFormatter" = "esbenp.prettier-vscode";
@@ -85,6 +94,13 @@
# C / C++
"C_Cpp.clang_format_style" = "GNU"; # This is really just for cs361, I actually hate the GNU style
"C_Cpp.default.cStandard" = "gnu17";
"[c]" = {
"editor.defaultFormatter" = "ms-vscode.cpptools";
};
"[cpp]" = {
"editor.defaultFormatter" = "ms-vscode.cpptools";
};
};
};
};

67
modules/home/walker.nix Normal file
View File

@@ -0,0 +1,67 @@
{
inputs,
...
}:
{
imports = [
inputs.walker.homeManagerModules.default
];
programs.walker = {
enable = true;
runAsService = true;
config = {
close_when_open = true;
click_to_close = true;
providers = {
default = [ "desktopapplications" ];
max_results = 50;
prefixes = [
{
prefix = ";";
provider = "providerlist";
}
{
prefix = ">";
provider = "runner";
}
{
prefix = "/";
provider = "files";
}
{
prefix = ".";
provider = "symbols";
}
{
prefix = "!";
provider = "todo";
}
{
prefix = "%";
provider = "bookmarks";
}
{
prefix = "=";
provider = "calc";
}
{
prefix = "@";
provider = "websearch";
}
{
prefix = ":";
provider = "clipboard";
}
{
prefix = "$";
provider = "windows";
}
];
clipboard = {
time_format = "%d.%m. - %H:%M"; # format for the clipboard item date
};
};
};
};
}

View File

@@ -0,0 +1,26 @@
{
config,
wallpaper,
...
}:
let
wallpapers = config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR;
in
{
home.file."${wallpapers}" = {
source = ../../wallpapers;
recursive = true;
};
services.wpaperd = {
enable = true;
settings = {
default = {
mode = "center";
};
any = {
path = "${wallpapers}/${wallpaper}";
};
};
};
}

View File

@@ -0,0 +1,140 @@
{
...
}:
let
separator_blank = {
format = "";
interval = "once";
tooltip = false;
};
in
{
programs.waybar = {
enable = true;
systemd.enable = true;
settings = [
{
layer = "top";
position = "top";
margin-left = 10;
margin-right = 10;
margin-top = 5;
fixed-center = true;
reload_style_on_change = true;
"hyprland/workspaces" = import ./modules/hyprland-workspaces.nix { };
"custom/menu" = import ./modules/menu.nix { };
"hyprland/window" = import ./modules/hyprland-window.nix { };
"disk" = import ./modules/disk.nix { };
"cpu" = import ./modules/cpu.nix { };
"memory" = import ./modules/memory.nix { };
"temperature" = import ./modules/temperature.nix { };
"idle_inhibitor" = import ./modules/idle-inhibitor.nix { };
"tray" = import ./modules/tray.nix { };
"network" = import ./modules/network.nix { };
"wireplumber" = import ./modules/wireplumber.nix { };
"backlight" = import ./modules/backlight.nix { };
"mpris" = import ./modules/mpris.nix { };
"battery" = import ./modules/battery.nix { full-at = 80; }; # Change this to come from the TLP setting
"clock" = import ./modules/clock.nix { };
"custom/power" = import ./modules/power.nix { };
"custom/separator#blank" = separator_blank;
modules-left = [
"custom/menu"
"custom/separator#blank"
"clock"
];
modules-center = [
"hyprland/workspaces"
];
modules-right = [
"tray"
"custom/separator#blank"
"group/motherboard"
"custom/separator#blank"
"wireplumber"
"custom/separator#blank"
"custom/power"
];
"group/motherboard" = {
orientation = "inherit";
modules = [
"cpu"
"memory"
"temperature"
"disk"
];
};
}
];
# style = ./style.css;
style = ''
@define-color base00 #192435; /* Darkest background (night sky / deep shadows) */
@define-color base01 #243449; /* Slightly lighter background */
@define-color base02 #36455D; /* Selection / inactive UI */
@define-color base03 #51637E; /* Comments / subtle foreground */
@define-color base04 #8FA3BA; /* Dark foreground (status bars) */
@define-color base05 #C7D2DF; /* Default foreground (text) */
@define-color base06 #E3EAF2; /* Light foreground (highlighted text) */
@define-color base07 #F4D9C7; /* Bright foreground (lantern light) */
@define-color base08 #D88C7A; /* Red / Errors (warm wood & lantern glow) */
@define-color base09 #E5AD97; /* Orange / Numbers / Constants */
@define-color base0A #E9C48A; /* Yellow / Classes / Warnings */
@define-color base0B #9FBFA8; /* Green / Strings */
@define-color base0C #8FB6C8; /* Cyan / Support / Regex */
@define-color base0D #7FA6D9; /* Blue / Functions / Keywords */
@define-color base0E #B69BCB; /* Purple / Types / Specials */
@define-color base0F #B0896A; /* Brown / Deprecated */
* {
all: unset;
font-family: "JetBrainsMono Nerd Font Propo"; /* The Propo(rtional) variant of the ensures icons are properly spaced */
font-feature-settings: '"zero", "tnum", "ss01", "ss02", "ss03", "cv01"';
font-weight: 700;
min-height: 0;
}
window#waybar {
background: transparent;
}
.module {
padding: 0 6px;
}
.modules-left,
.modules-center,
.modules-right {
background: @base00;
padding: 6px 8px;
border-color: @base03;
border-width: 1.5px;
border-style: solid;
border-radius: 0.75rem;
}
#workspaces button {
color: @base04;
font-size: 0.9rem;
padding: 0 7px;
}
#motherboard,
#custom-menu {
color: @base04;
}
#wireplumber,
#custom-power,
#clock {
color: @base05;
}
'';
};
}

View File

@@ -0,0 +1,27 @@
{
...
}:
{
format = "{icon}";
tooltip-format = "Backlight {percent}%";
format-icons = [
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
];
icon-size = 10;
on-scroll-down = "brightnessctl set 10%-";
on-scroll-up = "brightnessctl set +10%";
}

View File

@@ -0,0 +1,33 @@
{
full-at ? 100,
...
}:
{
inherit full-at;
states = {
# These values are percentages based on `full-at`
good = 95;
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
format-charging = " {capacity}%";
format-plugged = "󱘖 {capacity}%";
format-full = "{icon} Full";
format-icons = [
"󰂎"
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
format-time = "{H}h {M}min";
tooltip = true;
tooltip-format = "{timeTo} {power}w";
}

View File

@@ -0,0 +1,13 @@
{
...
}:
{
format = "";
format-disabled = "󰂳";
format-connected = "󰂱 {num_connections}";
tooltip-format = " {device_alias}";
tooltip-format-connected = "{device_enumerate}";
tooltip-format-enumerate-connected = " {device_alias} 󰂄{device_battery_percentage}%";
tooltip = true;
# on-click = "blueman-manager";
}

View File

@@ -0,0 +1,21 @@
{
...
}:
{
interval = 1; # Poll every second
format = "{:%H:%M - %d/%b}";
tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "year";
mode-mon-col = 3;
weeks-pos = "right";
on-scroll = 1;
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
days = "<span color='#ecc6d9'><b>{}</b></span>";
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
};
};
}

View File

@@ -0,0 +1,7 @@
{
...
}:
{
format = "{usage}% 󰍛";
interval = 1;
}

View File

@@ -0,0 +1,10 @@
{
...
}:
{
interval = 30;
format = "{percentage_used}% 󰋊";
tooltip = true;
tooltip-format = "{specific_free:0.1f}/{specific_total:0.1f}GiB";
unit = "GiB";
}

View File

@@ -0,0 +1,15 @@
{
...
}:
{
format = "{title}";
max-length = 40;
separate-outputs = true; # List different titles for each monitor
offscreen-css = true; # No idea what this does
offscreen-css-text = "(inactive)"; # No idea what this does either
rewrite = {
"(.*) Mozilla Firefox" = " Firefox";
# Foot terminal doesn't display any title for some reason
# Find a fix
};
}

View File

@@ -0,0 +1,23 @@
{
...
}:
{
active-only = false; # Show all workspaces
all-outputs = true; # Show all workspace groups
format = "{icon}";
show-special = false; # Hide Hyprland's "special" workspaces
on-click = "activate";
on-scroll-up = "hyprctl dispatch workspace r+1";
on-scroll-down = "hyprctl dispatch workspace r-1";
persistent-workspaces = {
"1" = [ ];
"2" = [ ];
"3" = [ ];
"4" = [ ];
"5" = [ ];
};
format-icons = {
active = "";
default = "";
};
}

View File

@@ -0,0 +1,10 @@
{
...
}:
{
format = "{icon}";
format-icons = {
activated = " ";
deactivated = " ";
};
}

View File

@@ -0,0 +1,11 @@
{
...
}:
{
interval = 10;
format = "{used:0.1f}G 󰾆";
format-alt = "{percentage}% 󰾆";
format-alt-click = "click";
tooltip = true;
tooltip-format = "{used:0.1f}/{total:0.1f}GiB";
}

View File

@@ -0,0 +1,10 @@
{
...
}:
{
format = "{}";
exec = "echo ; echo 󱓟 app launcher";
interval = 86400;
tooltip = true;
on-click = "walker";
}

View File

@@ -0,0 +1,26 @@
{
...
}:
{
interval = 10;
format = "{player_icon} ";
format-paused = "{status_icon} <i>{dynamic}</i>";
player-icons = {
chromium = "";
mpd = "";
default = "";
firefox = "";
kdeconnect = "";
mopidy = "";
mpv = "󰐹";
spotify = "";
vlc = "󰕼";
};
status-icons = {
paused = "";
playing = "";
stopped = "";
};
max-length = 30;
}

View File

@@ -0,0 +1,22 @@
{
...
}:
{
format = "{ifname}";
format-wifi = "{icon}";
format-ethernet = "󰌘";
format-disconnected = "󰌙";
format-linked = "󰈁 {ifname} (No IP)";
tooltip-format = "{ipaddr} {bandwidthUpBytes} {bandwidthDownBytes}";
tooltip-format-wifi = "{essid} {icon} {signalStrength}%";
tooltip-format-ethernet = "{essid} 󰌘";
tooltip-format-disconnected = "󰌙 Disconnected";
max-length = 50;
format-icons = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
}

View File

@@ -0,0 +1,10 @@
{
...
}:
{
format = "";
exec = "echo ; echo 󰟡 power";
on-click = "wlogout";
interval = 86400; # once every day
tooltip = true;
}

View File

@@ -0,0 +1,14 @@
{
...
}:
{
interval = 10;
tooltip = true;
# Thermal Zone 12 refers to the CPU package temp
# This might vary between devices. Maybe make it an input?
thermal-zone = 12;
critical-threshold = 85;
format-critical = "{temperatureC}°C {icon}";
format = "{temperatureC}°C {icon}";
format-icons = [ "󰈸" ];
}

View File

@@ -0,0 +1,7 @@
{
...
}:
{
icon-size = 15;
spacing = 8;
}

View File

@@ -0,0 +1,27 @@
{
...
}:
{
format = "{icon} {volume}% {format_source}";
format-muted = "󰖁 {format_source}";
format-source = "󰍬 {volume}%";
format-source-muted = "󰍭";
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = [
""
""
"󰕾"
""
];
};
scroll-step = 5.0;
on-click = "pavucontrol -t 3";
on-click-right = "pavucontrol -t 4";
tooltip-format = "{node_name} {volume}%\n{source_desc} {source_volume}%";
}

116
modules/home/wlogout.nix Normal file
View File

@@ -0,0 +1,116 @@
{
config,
pkgs,
wallpaper,
...
}:
{
programs.wlogout = {
enable = true;
layout = [
{
label = "lock";
action = "loginctl lock-session";
text = "Lock";
keybind = "l";
}
{
label = "hibernate";
action = "systemctl hibernate";
text = "Hibernate";
keybind = "h";
}
{
label = "logout";
action = "uwsm stop";
text = "Logout";
keybind = "e";
}
{
label = "shutdown";
action = "systemctl poweroff";
text = "Shutdown";
keybind = "s";
}
{
label = "suspend";
action = "systemctl suspend";
text = "Suspend";
keybind = "u";
}
{
label = "reboot";
action = "systemctl reboot";
text = "Reboot";
keybind = "r";
}
];
# * IMPORTANT
# * The for some reason the SVG icons will not be rendered when wlogout is called
# * from a hyprland keybind unless librsvg is installed.
# * See packages.nix (programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];)
style = with config.lib.stylix.colors.withHashtag; ''
* {
font-family: "Rubik Light";
background-image: none;
box-shadow: none;
}
window {
background: url("${config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR}/${wallpaper}");
background-size: cover;
}
button {
margin: 10px;
border-radius: 20px;
border-color: ${base0F};
text-decoration-color: ${base0F};
color: ${base0F};
background-color: alpha(${base01}, 0.5);
border-style: solid;
border-width: 2px;
background-repeat: no-repeat;
background-position: center;
background-size: 25%;
}
button:focus, button:active, button:hover {
background-color: alpha(${base0F}, 0.3);
outline-style: none;
}
button:hover {
background-size: 27%;
}
button span {
font-size: 1.2em;
}
#lock {
background-image: url("${pkgs.wlogout}/share/wlogout/assets/lock.svg");
}
#logout {
background-image: url("${pkgs.wlogout}/share/wlogout/assets/logout.svg");
}
#suspend {
background-image: url("${pkgs.wlogout}/share/wlogout/assets/suspend.svg");
}
#hibernate {
background-image: url("${pkgs.wlogout}/share/wlogout/assets/hibernate.svg");
}
#shutdown {
background-image: url("${pkgs.wlogout}/share/wlogout/assets/shutdown.svg");
}
#reboot {
background-image: url("${pkgs.wlogout}/share/wlogout/assets/reboot.svg");
}
'';
};
}

18
modules/home/xdg.nix Normal file
View File

@@ -0,0 +1,18 @@
{
config,
...
}:
{
xdg = {
enable = true;
userDirs = {
enable = true;
createDirectories = true;
extraConfig = {
XDG_DEV_DIR = "${config.home.homeDirectory}/Dev";
XDG_WALLPAPERS_DIR = "${config.xdg.userDirs.pictures}/Wallpapers";
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
};
};
};
}

10
modules/home/yazi.nix Normal file
View File

@@ -0,0 +1,10 @@
{
...
}:
{
programs.yazi = {
enable = true;
enableZshIntegration = true;
shellWrapperName = "y";
};
}

21
modules/home/zed.nix Normal file
View File

@@ -0,0 +1,21 @@
{
pkgs,
...
}:
{
programs.zed-editor = {
enable = true;
extensions = [
"nix"
"catppuccin"
];
extraPackages = [ pkgs.nixd ];
userSettings = {
theme = "Catppuccin Mocha";
features = {
edit_prediction_provider = "copilot";
};
};
};
}

View File

@@ -1,4 +1,5 @@
{
pkgs,
...
}:
{
@@ -7,13 +8,143 @@
enable = true;
enableZshIntegration = true;
};
fastfetch = {
enable = true;
};
fzf = {
enable = true;
enableZshIntegration = true;
};
starship = {
enable = true;
enableZshIntegration = true;
settings = {
add_newline = true;
format = pkgs.lib.concatStrings [
"[](fg:base02)"
"[ 󱄅 ](bg:base02 fg:base07)"
"[](bg:base07 fg:base02)"
"[( $username(@$hostname) )](bg:base07 fg:base02)"
"[](bg:red fg:base07)"
"[ $directory ](bg:red fg:base02)"
"[](bg:cyan fg:red)"
"[( $git_branch $git_status )](bg:cyan fg:base02)"
"[](fg:cyan bg:blue)"
"[(( $golang)( $nodejs)( $rust)( $python) )](bg:blue fg:base02)"
"[](fg:blue)"
"$line_break"
"[](fg:base02)"
"$character"
];
username = {
show_always = true;
style_user = "none";
style_root = "none";
format = "[$user]($style)";
};
hostname = {
style = "none";
format = "[$hostname]($style)";
ssh_only = false;
};
character = {
success_symbol = "[](bold fg:green)";
error_symbol = "[](bold fg:red)";
vimcmd_symbol = "[](bold fg:green)";
vimcmd_replace_one_symbol = "[](bold fg:lavender)";
vimcmd_replace_symbol = "[](bold fg:lavender)";
vimcmd_visual_symbol = "[](bold fg:yellow)";
};
directory = {
style = "none";
format = "[$path]($style)";
truncation_length = 3;
truncation_symbol = "/";
substitutions = {
"Documents" = "󰈙 ";
"Downloads" = " ";
"Music" = " ";
"Pictures" = " ";
};
};
git_branch = {
symbol = "";
style = "none";
format = "[$symbol $branch]($style)";
};
git_status = {
style = "none";
format = "[$all_status$ahead_behind]($style)";
};
golang = {
symbol = "";
style = "none";
format = "[$symbol( $version)]($style)";
};
nodejs = {
symbol = "";
style = "none";
format = "[$symbol( $version)]($style)";
};
python = {
symbol = "";
style = "none";
format = "[$symbol( $version)( \\($virtualenv\\))]($style)";
};
rust = {
symbol = "";
style = "none";
format = "[$symbol( $version)]($style)";
};
scan_timeout = 100;
};
};
zoxide = {
enable = true;
enableZshIntegration = true;
};
zsh = {
enable = true;
enableCompletion = true;
enableCompletion = false;
antidote = {
enable = true;
plugins = [
"Aloxaf/fzf-tab"
];
};
autosuggestion.enable = true;
history = {
append = true;
findNoDups = true;
ignoreSpace = true;
ignoreDups = true;
saveNoDups = true;
share = true;
};
historySubstringSearch = {
enable = true;
searchDownKey = "^p";
searchUpKey = "^n";
};
initContent = ''
# disable sort when completing `git checkout`
zstyle ':completion:*:git-checkout:*' sort false
# set descriptions format to enable group support
# NOTE: don't use escape sequences (like '%F{red}%d%f') here, fzf-tab will ignore them
zstyle ':completion:*:descriptions' format '[%d]'
# preview directory's content when completing cd or zoxide
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath'
# custom fzf flags
# NOTE: fzf-tab does not follow FZF_DEFAULT_OPTS by default
zstyle ':fzf-tab:*' fzf-flags --color=fg:1,fg+:2 --bind=tab:accept
# switch group using `<` and `>`
zstyle ':fzf-tab:*' switch-group '<' '>'
'';
syntaxHighlighting.enable = true;
sessionVariables = {
SSH_AUTH_SOCK = "/home/eclypse/.bitwarden-ssh-agent.sock";
shellAliases = {
stu = "ssh stu";
ff = "fastfetch";
};
};
};

View File

@@ -0,0 +1,27 @@
############ Variables ############
enable_battery=false
battery_charging=false
####### Check availability ########
for battery in /sys/class/power_supply/*BAT*; do
if [[ -f "$battery/uevent" ]]; then
enable_battery=true
if [[ $(cat /sys/class/power_supply/*/status | head -1) == "Charging" ]]; then
battery_charging=true
fi
break
fi
done
############# Output #############
if [[ $enable_battery == true ]]; then
if [[ $battery_charging == true ]]; then
echo -n "(+) "
fi
echo -n "$(cat /sys/class/power_supply/*/capacity | head -1)"%
if [[ $battery_charging == false ]]; then
echo -n " remaining"
fi
fi
echo ""

View File

@@ -0,0 +1,7 @@
MAIN_KB_CAPS=$(hyprctl devices | grep -B 6 "main: yes" | grep "capsLock" | head -1 | awk '{print $2}')
if [ "$MAIN_KB_CAPS" = "yes" ]; then
echo "Caps Lock active"
else
echo ""
fi

View File

@@ -4,5 +4,16 @@
{
nixpkgs.overlays = [
(import ./heybrochecklog.nix)
(self: super: {
# battery-status = prev.writeShellApplication {
# name = "battery-status";
# text = builtins.readFile ./battery-status.sh;
# };
check-capslock = super.writeShellApplication {
name = "check-capslock";
text = builtins.readFile ./check-capslock.sh;
};
})
];
}
}

View File

@@ -9,7 +9,7 @@
];
environment.systemPackages = [
inputs.agenix.packages.${pkgs.system}.default # CLI Tool
inputs.agenix.packages.${pkgs.stdenv.hostPlatform.system}.default # CLI Tool
];
age.secrets = {

View File

@@ -5,6 +5,7 @@
imports = [
./agenix.nix
./boot.nix
./desktop.nix
./fileSystems.nix
./fonts.nix
./network.nix

View File

@@ -0,0 +1,59 @@
{
inputs,
pkgs,
...
}:
let
sddm-theme = inputs.silentSDDM.packages.${pkgs.stdenv.hostPlatform.system}.default;
in
{
imports = [
inputs.mango.nixosModules.mango
];
programs = {
hyprland = {
enable = true;
# withUWSM = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage =
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
mango.enable = true;
# uwsm.enable = true;
};
environment.systemPackages = [
sddm-theme
sddm-theme.test
];
services.displayManager = {
defaultSession = "mango";
sddm = {
enable = true;
package = pkgs.kdePackages.sddm;
theme = sddm-theme.pname;
extraPackages = sddm-theme.propagatedBuildInputs;
settings = {
General = {
GreeterEnvironment = "QML2_IMPORT_PATH=${sddm-theme}/share/sddm/themes/${sddm-theme.pname}/components/,QT_IM_MODULE=qtvirtualkeyboard";
InputMethod = "qtvirtualkeyboard";
};
};
wayland.enable = true;
};
};
# Enable the KDE Plasma Desktop Environment.
# displayManager.sddm.enable = true;
# desktopManager.plasma5.enable = true;
# Enable the System76 Cosmic Desktop Environment
# displayManager.cosmic-greeter.enable = true;
# desktopManager.cosmic = {
# enable = true;
# xwayland.enable = true;
# };
}

View File

@@ -8,6 +8,9 @@
fontconfig.enable = true;
packages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.jetbrains-mono
nerd-fonts.symbols-only
rubik
];
};
}

View File

@@ -17,6 +17,8 @@
# enable = true;
# enableSSHSupport = true;
# };
gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
nix-ld.enable = true;
zsh.enable = true;
};
@@ -37,5 +39,8 @@
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
git
];
variables = {
EDITOR = "vim";
};
};
}

View File

@@ -2,7 +2,16 @@
...
}:
{
programs = {
yubikey-manager.enable = true;
yubikey-touch-detector.enable = true;
};
services = {
yubikey-agent.enable = true;
};
security = {
rtkit.enable = true;
};
}
}

View File

@@ -1,4 +1,5 @@
{
pkgs,
...
}:
{
@@ -6,7 +7,7 @@
xserver = {
# Enable the X11 windowing system.
# You can disable this if you're only using the Wayland session.
enable = true;
enable = false;
# Configure keymap in X11
xkb = {
@@ -14,16 +15,25 @@
variant = "";
};
# Enable touchpad support (enabled default in most desktopManager).
# libinput.enable = true;
};
# Enable the KDE Plasma Desktop Environment.
displayManager.sddm.enable = true;
desktopManager.plasma6.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
libinput.enable = true;
# Enable CUPS to print documents.
printing.enable = true;
printing = {
enable = true;
drivers = with pkgs; [
gutenprint
cnijfilter2
];
};
avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
# Enable sound with pipewire.
pulseaudio.enable = false;
@@ -40,6 +50,8 @@
# media-session.enable = true;
};
upower.enable = true;
# Enable the OpenSSH daemon. (Look into Fail2Ban in the future)
openssh = {
enable = true;
@@ -49,5 +61,45 @@
AllowUsers = [ "eclypse" ];
};
};
system76-scheduler.settings.cfsProfiles.enable = true;
tlp = {
enable = true;
settings = {
CPU_BOOST_ON_AC = 1;
CPU_BOOST_ON_BAT = 0;
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
PLATFORM_PROFILE_ON_AC = "performance";
PLATFORM_PROFILE_ON_BAT = "balanced";
START_CHARGE_THRESH_BAT1 = 65; # Only STOP_CHARGE_THRESH available on Framework
STOP_CHARGE_THRESH_BAT1 = 80;
# Fixes stuttering Hyprland animations on Intel iGPU (https://wiki.hypr.land/Configuring/Performance/)
INTEL_GPU_MIN_FREQ_ON_AC = 300;
INTEL_GPU_MIN_FREQ_ON_BAT = 300;
};
};
# Disable GNOME's power management (conflicts with TLP)
power-profiles-daemon.enable = false;
# Enable thermald (only necessary for Intel CPUs)
thermald.enable = true;
};
powerManagement = {
enable = true;
powertop.enable = true;
};
hardware = {
bluetooth = {
enable = true;
powerOnBoot = true;
};
sane = {
enable = true;
};
};
}

View File

@@ -14,11 +14,13 @@
"https://cache.nixos.org"
"https://nix-community.cachix.org"
"https://devenv.cachix.org"
"https://hyprland.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
];
};
};

View File

@@ -2,6 +2,7 @@
inputs,
pkgs,
host,
wallpaper,
config,
...
}:
@@ -11,7 +12,7 @@
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
extraSpecialArgs = { inherit inputs host; };
extraSpecialArgs = { inherit inputs host wallpaper; };
users.eclypse = {
imports = [ ../home ];
@@ -23,7 +24,7 @@
programs.home-manager.enable = true;
};
backupFileExtension = "backup18";
backupFileExtension = "backup";
};
users.mutableUsers = false;
@@ -34,6 +35,8 @@
extraGroups = [
"networkmanager"
"wheel"
"scanner"
"lp"
];
hashedPasswordFile = config.age.secrets.eclypse-password.path;
shell = pkgs.zsh;

View File

@@ -1,8 +1,19 @@
{
pkgs,
...
}:
{
virtualisation.virtualbox.host.enable = true;
virtualisation.virtualbox.host.enableExtensionPack = true;
virtualisation = {
# virtualbox.host = {
# enable = true;
# enableExtensionPack = true;
# };
podman.enable = true;
};
environment.systemPackages = with pkgs; [
distrobox
];
users.extraGroups.vboxusers.members = [ "eclypse" ];
}

BIN
wallpapers/sunset_bay.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 MiB