Compare commits
34 Commits
dd4274f036
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 35fd66ce80 | |||
| 71d2a9c177 | |||
| a2034dc4f2 | |||
| 388af355bb | |||
| f4b3ac54ef | |||
| 61f29392cf | |||
| 8e4ceadfb1 | |||
| 51deed6aa6 | |||
| 38a6c622f7 | |||
| 7da6384e89 | |||
| 4c5b7a966d | |||
| 96ad8e6994 | |||
| 9dd76a18a1 | |||
| b8abe6f711 | |||
| 70fd1d8fae | |||
| ab088fcba5 | |||
| b57e8202d8 | |||
| 96fdf27a60 | |||
| 1f1bd53be9 | |||
| 72c811c67e | |||
| 97ef9a7a9e | |||
| d55077e045 | |||
| 1dddfebbb8 | |||
| 15317047e3 | |||
| 99f64a3145 | |||
| 6c79eff909 | |||
| e35f7923ae | |||
| 55f2b15896 | |||
| 00a1828a0d | |||
| 2f6bed228d | |||
| dee0c41a05 | |||
| a97d49f8a7 | |||
| 636c8d4d0d | |||
| 58276cc8e0 |
961
flake.lock
generated
961
flake.lock
generated
File diff suppressed because it is too large
Load Diff
39
flake.nix
39
flake.nix
@@ -21,6 +21,11 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
agenix-rekey = {
|
||||||
|
url = "github:oddlama/agenix-rekey";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
nvf = {
|
nvf = {
|
||||||
url = "github:notashelf/nvf";
|
url = "github:notashelf/nvf";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -37,30 +42,54 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
mango = {
|
mango.url = "github:DreamMaoMao/mango?rev=1271832e947d3d4af27b36f687edd2f2e535f051";
|
||||||
url = "github:DreamMaoMao/mango";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
};
|
|
||||||
|
|
||||||
silentSDDM = {
|
silentSDDM = {
|
||||||
url = "github:uiriansan/SilentSDDM";
|
url = "github:uiriansan/SilentSDDM";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
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 =
|
outputs =
|
||||||
{ nixpkgs, ... }@inputs:
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
agenix-rekey,
|
||||||
|
...
|
||||||
|
}@inputs:
|
||||||
{
|
{
|
||||||
nixosConfigurations.vanta = nixpkgs.lib.nixosSystem {
|
nixosConfigurations.vanta = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
host = "vanta";
|
host = "vanta";
|
||||||
|
wallpaper = "twilight-village.png";
|
||||||
|
# Host public SSH key (e.g. /etc/ssh/ssh_host_ed25519_key.pub).
|
||||||
|
hostPubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAaDVBJdMDFL8r9NQCbaLe+DPHGhGzRv2N7+7m1/U8DP";
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
./modules/system
|
./modules/system
|
||||||
./hosts/vanta
|
./hosts/vanta
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
agenix-rekey = agenix-rekey.configure {
|
||||||
|
userFlake = self;
|
||||||
|
nixosConfigurations = self.nixosConfigurations;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,5 +6,6 @@
|
|||||||
imports = [
|
imports = [
|
||||||
inputs.nixos-hardware.nixosModules.framework-12th-gen-intel
|
inputs.nixos-hardware.nixosModules.framework-12th-gen-intel
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
../../profiles/intel.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
programs.alacritty = {
|
|
||||||
enable = true;
|
|
||||||
theme = "catppuccin_mocha";
|
|
||||||
settings = {
|
|
||||||
font = {
|
|
||||||
normal = {
|
|
||||||
family = "FiraCode Nerd Font";
|
|
||||||
style = "Regular";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -3,16 +3,28 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./alacritty.nix
|
|
||||||
./firefox.nix
|
./firefox.nix
|
||||||
|
./foot.nix
|
||||||
|
# ./ghostty.nix
|
||||||
./git.nix
|
./git.nix
|
||||||
|
# ./helix.nix
|
||||||
|
./hypr
|
||||||
|
./mango.nix
|
||||||
./nvf.nix
|
./nvf.nix
|
||||||
./packages.nix
|
./packages.nix
|
||||||
# ./plasma.nix
|
# ./plasma.nix
|
||||||
|
./screenshot.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./stylix.nix
|
./stylix.nix
|
||||||
|
./swaync.nix
|
||||||
./vscode.nix
|
./vscode.nix
|
||||||
|
./walker.nix
|
||||||
|
./wallpaper.nix
|
||||||
|
./waybar
|
||||||
|
./wlogout.nix
|
||||||
./xdg.nix
|
./xdg.nix
|
||||||
|
./yazi.nix
|
||||||
|
./zed.nix
|
||||||
./zsh.nix
|
./zsh.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
DisableProfileImport = true;
|
DisableProfileImport = true;
|
||||||
DisableProfileRefresh = true;
|
DisableProfileRefresh = true;
|
||||||
DisableTelemetry = true;
|
DisableTelemetry = true;
|
||||||
|
DisplayBookmarksToolbar = "never";
|
||||||
DontCheckDefaultBrowser = true;
|
DontCheckDefaultBrowser = true;
|
||||||
EnableTrackingProtection = {
|
EnableTrackingProtection = {
|
||||||
Value = true; # Tracking protection is enabled by default in both the regular browser and private browsing
|
Value = true; # Tracking protection is enabled by default in both the regular browser and private browsing
|
||||||
|
|||||||
17
modules/home/foot.nix
Normal file
17
modules/home/foot.nix
Normal 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
13
modules/home/ghostty.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.ghostty = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
settings = {
|
||||||
|
term = "xterm-256color";
|
||||||
|
};
|
||||||
|
systemd.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
78
modules/home/helix.nix
Normal file
78
modules/home/helix.nix
Normal 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
13
modules/home/hypr/default.nix
Normal file
13
modules/home/hypr/default.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hypridle.nix
|
||||||
|
./hyprland.nix
|
||||||
|
./hyprlock.nix
|
||||||
|
./keybinds.nix
|
||||||
|
./monitors.nix
|
||||||
|
./pyprland.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
30
modules/home/hypr/hypridle.nix
Normal file
30
modules/home/hypr/hypridle.nix
Normal 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";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
111
modules/home/hypr/hyprland.nix
Normal file
111
modules/home/hypr/hyprland.nix
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
{
|
||||||
|
# inputs,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
hyprpolkitagent
|
||||||
|
hyprpicker
|
||||||
|
];
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
108
modules/home/hypr/hyprlock.nix
Normal file
108
modules/home/hypr/hyprlock.nix
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
wallpaper,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
settings = with config.lib.stylix.colors; {
|
||||||
|
general = {
|
||||||
|
hide_cursor = true;
|
||||||
|
};
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
path = "${config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR}/${wallpaper}";
|
||||||
|
blur_size = 4;
|
||||||
|
blur_passes = 3;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
input-field = [
|
||||||
|
rec {
|
||||||
|
size = "250, 50";
|
||||||
|
outline_thickness = 3;
|
||||||
|
dots_size = 0.25;
|
||||||
|
dots_spacing = 0.4;
|
||||||
|
outer_color = "rgba(${base0F}55)";
|
||||||
|
capslock_color = outer_color;
|
||||||
|
numlock_color = outer_color;
|
||||||
|
bothlock_color = outer_color;
|
||||||
|
inner_color = "rgba(${base0F}11)";
|
||||||
|
font_color = "rgba(${base0F}ff)";
|
||||||
|
fade_on_empty = true;
|
||||||
|
placeholder_text = "<i>Password...</i>";
|
||||||
|
position = "0, -60";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
label = [
|
||||||
|
# Hours
|
||||||
|
{
|
||||||
|
text = "cmd[update:1000] echo \"<b><big> $(date +\"%H\") </big></b>\"";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 112;
|
||||||
|
font_family = "GeistMono Nerd Font";
|
||||||
|
position = "0, 350";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Minutes
|
||||||
|
{
|
||||||
|
text = "cmd[update:1000] echo \"<b><big> $(date +\"%M\") </big></b>\"";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 112;
|
||||||
|
font_family = "GeistMono Nerd Font";
|
||||||
|
position = "0, 220";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Day of the Week
|
||||||
|
{
|
||||||
|
text = "cmd[update:18000000] echo \"<b><big> \"$(date +'%A')\" </big></b>\"";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 22;
|
||||||
|
font_family = "JetBrainsMono Nerd Font";
|
||||||
|
position = "0, 115";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Date
|
||||||
|
{
|
||||||
|
text = "cmd[update:18000000] echo \"<b> \"$(date +'%d %b')\" </b>\"";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 18;
|
||||||
|
font_family = "JetBrainsMono Nerd Font";
|
||||||
|
position = "0, 85";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Temperature
|
||||||
|
{
|
||||||
|
text = "cmd[update:18000000] echo \"<b>Feels like<big> $(curl -s 'wttr.in?format=%t' | tr -d '+') </big></b>\"";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 18;
|
||||||
|
font_family = "GeistMono Nerd Font";
|
||||||
|
position = "0, 40";
|
||||||
|
halign = "center";
|
||||||
|
valign = "bottom";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Caps Lock Warning
|
||||||
|
{
|
||||||
|
text = "cmd[update:250] check-capslock";
|
||||||
|
color = "rgb(${base0F})";
|
||||||
|
font_size = 13;
|
||||||
|
font_family = "JetBrainsMono Nerd Font";
|
||||||
|
position = "0, -120";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
85
modules/home/hypr/keybinds.nix
Normal file
85
modules/home/hypr/keybinds.nix
Normal 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%-"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
19
modules/home/hypr/monitors.nix
Normal file
19
modules/home/hypr/monitors.nix
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
22
modules/home/hypr/pyprland.nix
Normal file
22
modules/home/hypr/pyprland.nix
Normal 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
37
modules/home/mango.nix
Normal 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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -9,18 +9,23 @@
|
|||||||
discord
|
discord
|
||||||
sqlitebrowser
|
sqlitebrowser
|
||||||
drawio
|
drawio
|
||||||
|
check-capslock
|
||||||
|
wl-clipboard-rs
|
||||||
|
|
||||||
# Libre Office
|
# Libre Office
|
||||||
libreoffice-qt
|
libreoffice-qt
|
||||||
hunspell
|
hunspell
|
||||||
hunspellDicts.en_US
|
hunspellDicts.en_US
|
||||||
|
|
||||||
# KDE
|
|
||||||
kdePackages.kate
|
|
||||||
|
|
||||||
# CD Stuff
|
# CD Stuff
|
||||||
picard
|
picard
|
||||||
heybrochecklog
|
heybrochecklog
|
||||||
rsgain
|
rsgain
|
||||||
|
|
||||||
|
playerctl
|
||||||
|
pamixer
|
||||||
|
pavucontrol
|
||||||
|
brightnessctl
|
||||||
|
obsidian
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
17
modules/home/screenshot.nix
Normal file
17
modules/home/screenshot.nix
Normal 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"
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -13,45 +13,43 @@
|
|||||||
autoEnable = false;
|
autoEnable = false;
|
||||||
polarity = "dark";
|
polarity = "dark";
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||||
targets = {
|
fonts = {
|
||||||
# firefox = {
|
monospace = {
|
||||||
# enable = true;
|
name = "JetBrainsMono Nerd Font"; # "FiraCode Nerd Font";
|
||||||
# colorTheme.enable = true;
|
package = pkgs.nerd-fonts.jetbrains-mono; # pkgs.nerd-fonts.fira-code;
|
||||||
# firefoxGnomeTheme.enable = true;
|
|
||||||
# profileNames = [ "eclypse" ];
|
|
||||||
# };
|
|
||||||
# gtk = {
|
|
||||||
# enable = true;
|
|
||||||
# };
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
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 = {
|
home.pointerCursor = {
|
||||||
|
enable = true;
|
||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
package = pkgs.bibata-cursors;
|
name = "Catppuccin-Mocha-Dark-Cursors";
|
||||||
name = "Bibata-Modern-Ice";
|
package = pkgs.catppuccin-cursors.mochaDark;
|
||||||
size = 17;
|
size = 16;
|
||||||
};
|
};
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
colorScheme = "dark";
|
colorScheme = "dark";
|
||||||
theme = {
|
iconTheme = {
|
||||||
name = "Tokyonight-Dark";
|
name = "Adwaita";
|
||||||
package = pkgs.tokyonight-gtk-theme.override {
|
package = pkgs.adwaita-icon-theme;
|
||||||
tweakVariants = [ "macos" ];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# home.pointerCursor = {
|
|
||||||
# enable = true;
|
|
||||||
# gtk.enable = true;
|
|
||||||
# name = "Catppuccin-Mocha-Dark-Cursors";
|
|
||||||
# package = pkgs.catppuccin-cursors.mochaDark;
|
|
||||||
# size = 16;
|
|
||||||
# };
|
|
||||||
}
|
}
|
||||||
|
|||||||
104
modules/home/swaync.nix
Normal file
104
modules/home/swaync.nix
Normal 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";
|
||||||
|
# }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
67
modules/home/walker.nix
Normal file
67
modules/home/walker.nix
Normal 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
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
26
modules/home/wallpaper.nix
Normal file
26
modules/home/wallpaper.nix
Normal 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}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
143
modules/home/waybar/default.nix
Normal file
143
modules/home/waybar/default.nix
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
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 = false;
|
||||||
|
|
||||||
|
"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/hyprpicker" = import ./modules/hyprpicker.nix { };
|
||||||
|
"custom/separator#blank" = {
|
||||||
|
format = "";
|
||||||
|
interval = "once";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
modules-left = [
|
||||||
|
"custom/menu"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"clock"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"custom/hyprpicker"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-center = [
|
||||||
|
"hyprland/workspaces"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-right = [
|
||||||
|
"tray"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"group/motherboard"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"wireplumber"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"battery"
|
||||||
|
"custom/separator#blank"
|
||||||
|
"custom/power"
|
||||||
|
];
|
||||||
|
|
||||||
|
"group/motherboard" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [
|
||||||
|
"cpu"
|
||||||
|
"memory"
|
||||||
|
"temperature"
|
||||||
|
"disk"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
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,
|
||||||
|
#battery,
|
||||||
|
#custom-power,
|
||||||
|
#custom-hyprpicker,
|
||||||
|
#clock {
|
||||||
|
color: @base05;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
27
modules/home/waybar/modules/backlight.nix
Normal file
27
modules/home/waybar/modules/backlight.nix
Normal 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%";
|
||||||
|
}
|
||||||
33
modules/home/waybar/modules/battery.nix
Normal file
33
modules/home/waybar/modules/battery.nix
Normal 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} {capacity}%";
|
||||||
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
format-time = "{H}h {M}min";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{timeTo} {power}w";
|
||||||
|
}
|
||||||
13
modules/home/waybar/modules/bluetooth.nix
Normal file
13
modules/home/waybar/modules/bluetooth.nix
Normal 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";
|
||||||
|
}
|
||||||
21
modules/home/waybar/modules/clock.nix
Normal file
21
modules/home/waybar/modules/clock.nix
Normal 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>";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
7
modules/home/waybar/modules/cpu.nix
Normal file
7
modules/home/waybar/modules/cpu.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "{usage}% ";
|
||||||
|
interval = 1;
|
||||||
|
}
|
||||||
10
modules/home/waybar/modules/disk.nix
Normal file
10
modules/home/waybar/modules/disk.nix
Normal 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";
|
||||||
|
}
|
||||||
15
modules/home/waybar/modules/hyprland-window.nix
Normal file
15
modules/home/waybar/modules/hyprland-window.nix
Normal 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
|
||||||
|
};
|
||||||
|
}
|
||||||
23
modules/home/waybar/modules/hyprland-workspaces.nix
Normal file
23
modules/home/waybar/modules/hyprland-workspaces.nix
Normal 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 = "";
|
||||||
|
};
|
||||||
|
}
|
||||||
7
modules/home/waybar/modules/hyprpicker.nix
Normal file
7
modules/home/waybar/modules/hyprpicker.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "";
|
||||||
|
on-click = "hyprpicker | tr -d '\\n' | wl-copy";
|
||||||
|
}
|
||||||
10
modules/home/waybar/modules/idle-inhibitor.nix
Normal file
10
modules/home/waybar/modules/idle-inhibitor.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
activated = " ";
|
||||||
|
deactivated = " ";
|
||||||
|
};
|
||||||
|
}
|
||||||
11
modules/home/waybar/modules/memory.nix
Normal file
11
modules/home/waybar/modules/memory.nix
Normal 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";
|
||||||
|
}
|
||||||
10
modules/home/waybar/modules/menu.nix
Normal file
10
modules/home/waybar/modules/menu.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "{}";
|
||||||
|
exec = "echo ; echo app launcher";
|
||||||
|
interval = 86400;
|
||||||
|
tooltip = true;
|
||||||
|
on-click = "walker";
|
||||||
|
}
|
||||||
26
modules/home/waybar/modules/mpris.nix
Normal file
26
modules/home/waybar/modules/mpris.nix
Normal 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;
|
||||||
|
|
||||||
|
}
|
||||||
22
modules/home/waybar/modules/network.nix
Normal file
22
modules/home/waybar/modules/network.nix
Normal 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 = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
}
|
||||||
10
modules/home/waybar/modules/power.nix
Normal file
10
modules/home/waybar/modules/power.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
format = "⏻";
|
||||||
|
exec = "echo ; echo power";
|
||||||
|
on-click = "wlogout";
|
||||||
|
interval = 86400; # once every day
|
||||||
|
tooltip = true;
|
||||||
|
}
|
||||||
14
modules/home/waybar/modules/temperature.nix
Normal file
14
modules/home/waybar/modules/temperature.nix
Normal 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 = [ "" ];
|
||||||
|
}
|
||||||
7
modules/home/waybar/modules/tray.nix
Normal file
7
modules/home/waybar/modules/tray.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
icon-size = 15;
|
||||||
|
spacing = 8;
|
||||||
|
}
|
||||||
27
modules/home/waybar/modules/wireplumber.nix
Normal file
27
modules/home/waybar/modules/wireplumber.nix
Normal 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
116
modules/home/wlogout.nix
Normal 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");
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -10,6 +10,8 @@
|
|||||||
createDirectories = true;
|
createDirectories = true;
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
XDG_DEV_DIR = "${config.home.homeDirectory}/Dev";
|
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
10
modules/home/yazi.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.yazi = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
shellWrapperName = "y";
|
||||||
|
};
|
||||||
|
}
|
||||||
21
modules/home/zed.nix
Normal file
21
modules/home/zed.nix
Normal 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -8,31 +8,56 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
};
|
};
|
||||||
|
fastfetch = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
fzf = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
starship = {
|
starship = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
settings = {
|
settings = {
|
||||||
add_newline = true;
|
add_newline = true;
|
||||||
format = pkgs.lib.concatStrings [
|
format = pkgs.lib.concatStrings [
|
||||||
"[░▒▓](#f38ba8)"
|
"[╭─](fg:base02)"
|
||||||
"[ ](fg:#1e1e2e bg:#f38ba8)"
|
"[ ](bg:base02 fg:base07)"
|
||||||
"[](fg:#f38ba8 bg:#fab387)"
|
"[](bg:base07 fg:base02)"
|
||||||
"$directory"
|
"[( $username(@$hostname) )](bg:base07 fg:base02)"
|
||||||
"[](fg:#fab387 bg:#f9e2af)"
|
"[](bg:red fg:base07)"
|
||||||
"$git_branch"
|
"[ $directory ](bg:red fg:base02)"
|
||||||
"$git_status"
|
"[](bg:cyan fg:red)"
|
||||||
"[](fg:#f9e2af bg:#a6e3a1)"
|
"[( $git_branch $git_status )](bg:cyan fg:base02)"
|
||||||
"$nodejs"
|
"[](fg:cyan bg:blue)"
|
||||||
"$rust"
|
"[(( $golang)( $nodejs)( $rust)( $python) )](bg:blue fg:base02)"
|
||||||
"$golang"
|
"[](fg:blue)"
|
||||||
"$php"
|
|
||||||
"[](fg:#a6e3a1)"
|
|
||||||
"$line_break"
|
"$line_break"
|
||||||
|
"[╰─](fg:base02)"
|
||||||
"$character"
|
"$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 = {
|
directory = {
|
||||||
style = "fg:#1e1e2e bg:#fab387";
|
style = "none";
|
||||||
format = "[ $path ]($style)";
|
format = "[$path]($style)";
|
||||||
truncation_length = 3;
|
truncation_length = 3;
|
||||||
truncation_symbol = "…/";
|
truncation_symbol = "…/";
|
||||||
substitutions = {
|
substitutions = {
|
||||||
@@ -44,43 +69,82 @@
|
|||||||
};
|
};
|
||||||
git_branch = {
|
git_branch = {
|
||||||
symbol = "";
|
symbol = "";
|
||||||
style = "bg:#f9e2af";
|
style = "none";
|
||||||
format = "[[ $symbol $branch ](fg:#1e1e2e bg:#f9e2af)]($style)";
|
format = "[$symbol $branch]($style)";
|
||||||
};
|
};
|
||||||
git_status = {
|
git_status = {
|
||||||
style = "bg:#f9e2af";
|
style = "none";
|
||||||
format = "[[($all_status$ahead_behind )](fg:#1e1e2e bg:#f9e2af)]($style)";
|
format = "[$all_status$ahead_behind]($style)";
|
||||||
};
|
|
||||||
nodejs = {
|
|
||||||
symbol = "";
|
|
||||||
style = "bg:#a6e3a1";
|
|
||||||
format = "[[ $symbol ($version) ](fg:#1e1e2e bg:#a6e3a1)]($style)";
|
|
||||||
};
|
|
||||||
rust = {
|
|
||||||
symbol = "";
|
|
||||||
style = "bg:#a6e3a1";
|
|
||||||
format = ''[[ $symbol ($version) ](fg:#1e1e2e bg:#a6e3a1)]($style)'';
|
|
||||||
};
|
};
|
||||||
golang = {
|
golang = {
|
||||||
symbol = "";
|
symbol = "";
|
||||||
style = "bg:#a6e3a1";
|
style = "none";
|
||||||
format = "[[ $symbol ($version) ](fg:#1e1e2e bg#a6e3a1)]($style)";
|
format = "[$symbol( $version)]($style)";
|
||||||
};
|
};
|
||||||
php = {
|
nodejs = {
|
||||||
symbol = "";
|
symbol = "";
|
||||||
style = "bg:#a6e3a1";
|
style = "none";
|
||||||
format = "[[ $symbol ($version) ](fg:#1e1e2e bg:#a6e3a1)]($style)";
|
format = "[$symbol( $version)]($style)";
|
||||||
|
};
|
||||||
|
python = {
|
||||||
|
symbol = "";
|
||||||
|
style = "none";
|
||||||
|
format = "[$symbol( $version)( \\($virtualenv\\))]($style)";
|
||||||
|
};
|
||||||
|
rust = {
|
||||||
|
symbol = "";
|
||||||
|
style = "none";
|
||||||
|
format = "[$symbol( $version)]($style)";
|
||||||
};
|
};
|
||||||
scan_timeout = 100;
|
scan_timeout = 100;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
zsh = {
|
zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableCompletion = true;
|
enableCompletion = false;
|
||||||
|
antidote = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [
|
||||||
|
"Aloxaf/fzf-tab"
|
||||||
|
];
|
||||||
|
};
|
||||||
autosuggestion.enable = true;
|
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;
|
syntaxHighlighting.enable = true;
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
stu = "ssh stu";
|
stu = "ssh stu";
|
||||||
|
ff = "fastfetch";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
27
modules/overlays/battery-status.sh
Normal file
27
modules/overlays/battery-status.sh
Normal 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 ""
|
||||||
7
modules/overlays/check-capslock.sh
Normal file
7
modules/overlays/check-capslock.sh
Normal 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
|
||||||
@@ -4,5 +4,16 @@
|
|||||||
{
|
{
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(import ./heybrochecklog.nix)
|
(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;
|
||||||
|
};
|
||||||
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,42 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
lib,
|
||||||
|
host,
|
||||||
|
hostPubkey ? null,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.agenix.nixosModules.default
|
inputs.agenix.nixosModules.default
|
||||||
|
inputs.agenix-rekey.nixosModules.default
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
inputs.agenix.packages.${pkgs.system}.default # CLI Tool
|
# agenix-rekey's CLI tool replaces standard agenix's
|
||||||
|
inputs.agenix-rekey.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||||
];
|
];
|
||||||
|
|
||||||
age.secrets = {
|
age = {
|
||||||
tailscale-auth.file = ../../secrets/tailscale-auth.age;
|
# Need to explicitly set identity paths because OpenSSH daemon is disabled
|
||||||
eclypsecloud-eclypse.file = ../../secrets/eclypsecloud-eclypse.age;
|
# but the host keys are still generated via services.openssh.generateHostKeys = true
|
||||||
eclypse-password.file = ../../secrets/eclypse-password.age;
|
identityPaths = map (key: key.path) config.services.openssh.hostKeys;
|
||||||
|
rekey = {
|
||||||
|
masterIdentities = [ "${inputs.self}/secrets/age-yubikey-identity-d9ed335b.pub" ];
|
||||||
|
storageMode = "local";
|
||||||
|
localStorageDir = ../../. + "/secrets/rekeyed/${host}";
|
||||||
|
}
|
||||||
|
# We only set the hostPubkey if one is supplied. For new hosts the pub key will not
|
||||||
|
# exist until it is generated after the first rebuild. Runtime decryption will fail
|
||||||
|
# but then the ssh host key will be generated in /etc/ssh and can be supplied
|
||||||
|
// lib.optionalAttrs (hostPubkey != null) {
|
||||||
|
inherit hostPubkey;
|
||||||
|
};
|
||||||
|
secrets = {
|
||||||
|
tailscale-auth.rekeyFile = ../../secrets/tailscale-auth.age;
|
||||||
|
eclypsecloud-eclypse.rekeyFile = ../../secrets/eclypsecloud-eclypse.age;
|
||||||
|
eclypse-password.rekeyFile = ../../secrets/eclypse-password.age;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
imports = [
|
imports = [
|
||||||
./agenix.nix
|
./agenix.nix
|
||||||
./boot.nix
|
./boot.nix
|
||||||
|
./desktop.nix
|
||||||
./fileSystems.nix
|
./fileSystems.nix
|
||||||
./fonts.nix
|
./fonts.nix
|
||||||
./network.nix
|
./network.nix
|
||||||
@@ -14,6 +15,6 @@
|
|||||||
./system.nix
|
./system.nix
|
||||||
./tailscale.nix
|
./tailscale.nix
|
||||||
./user.nix
|
./user.nix
|
||||||
# ./virtualisation.nix
|
./virtualisation.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
59
modules/system/desktop.nix
Normal file
59
modules/system/desktop.nix
Normal 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;
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -8,6 +8,10 @@
|
|||||||
fontconfig.enable = true;
|
fontconfig.enable = true;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
nerd-fonts.fira-code
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
nerd-fonts.symbols-only
|
||||||
|
nerd-fonts.geist-mono
|
||||||
|
rubik
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
# enable = true;
|
# enable = true;
|
||||||
# enableSSHSupport = true;
|
# enableSSHSupport = true;
|
||||||
# };
|
# };
|
||||||
|
gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
|
||||||
|
nix-ld.enable = true;
|
||||||
zsh.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.
|
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
git
|
git
|
||||||
];
|
];
|
||||||
|
variables = {
|
||||||
|
EDITOR = "vim";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -7,6 +8,10 @@
|
|||||||
yubikey-touch-detector.enable = true;
|
yubikey-touch-detector.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
age-plugin-yubikey
|
||||||
|
];
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
yubikey-agent.enable = true;
|
yubikey-agent.enable = true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
xserver = {
|
xserver = {
|
||||||
# Enable the X11 windowing system.
|
# Enable the X11 windowing system.
|
||||||
# You can disable this if you're only using the Wayland session.
|
# You can disable this if you're only using the Wayland session.
|
||||||
enable = true;
|
enable = false;
|
||||||
|
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
xkb = {
|
xkb = {
|
||||||
@@ -15,19 +15,10 @@
|
|||||||
variant = "";
|
variant = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# libinput.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable the KDE Plasma Desktop Environment.
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
# displayManager.sddm.enable = true;
|
libinput.enable = true;
|
||||||
# desktopManager.plasma6.enable = true;
|
|
||||||
|
|
||||||
displayManager.cosmic-greeter.enable = true;
|
|
||||||
desktopManager.cosmic = {
|
|
||||||
enable = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
# Enable CUPS to print documents.
|
||||||
printing = {
|
printing = {
|
||||||
@@ -59,15 +50,43 @@
|
|||||||
# media-session.enable = true;
|
# media-session.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable the OpenSSH daemon. (Look into Fail2Ban in the future)
|
upower.enable = true;
|
||||||
|
|
||||||
|
# Disable SSH daemon but generate host keys anyway for secret rekeying
|
||||||
openssh = {
|
openssh = {
|
||||||
|
enable = false;
|
||||||
|
generateHostKeys = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
system76-scheduler.settings.cfsProfiles.enable = true;
|
||||||
|
|
||||||
|
tlp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
PasswordAuthentication = false;
|
CPU_BOOST_ON_AC = 1;
|
||||||
PermitRootLogin = "prohibit-password";
|
CPU_BOOST_ON_BAT = 0;
|
||||||
AllowUsers = [ "eclypse" ];
|
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 = {
|
hardware = {
|
||||||
|
|||||||
@@ -14,11 +14,13 @@
|
|||||||
"https://cache.nixos.org"
|
"https://cache.nixos.org"
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"https://devenv.cachix.org"
|
"https://devenv.cachix.org"
|
||||||
|
"https://hyprland.cachix.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
||||||
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
host,
|
host,
|
||||||
|
wallpaper,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
@@ -11,7 +12,7 @@
|
|||||||
home-manager = {
|
home-manager = {
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
extraSpecialArgs = { inherit inputs host; };
|
extraSpecialArgs = { inherit inputs host wallpaper; };
|
||||||
|
|
||||||
users.eclypse = {
|
users.eclypse = {
|
||||||
imports = [ ../home ];
|
imports = [ ../home ];
|
||||||
|
|||||||
@@ -1,8 +1,19 @@
|
|||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
virtualisation.virtualbox.host.enable = true;
|
virtualisation = {
|
||||||
virtualisation.virtualbox.host.enableExtensionPack = true;
|
# virtualbox.host = {
|
||||||
|
# enable = true;
|
||||||
|
# enableExtensionPack = true;
|
||||||
|
# };
|
||||||
|
podman.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
distrobox
|
||||||
|
];
|
||||||
|
|
||||||
users.extraGroups.vboxusers.members = [ "eclypse" ];
|
users.extraGroups.vboxusers.members = [ "eclypse" ];
|
||||||
}
|
}
|
||||||
|
|||||||
17
profiles/intel.nix
Normal file
17
profiles/intel.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
intel-media-driver
|
||||||
|
intel-ocl
|
||||||
|
intel-vaapi-driver
|
||||||
|
vpl-gpu-rt
|
||||||
|
libvdpau-va-gl
|
||||||
|
libva-vdpau-driver
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
42
profiles/nvidia.nix
Normal file
42
profiles/nvidia.nix
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
# Enable OpenGL
|
||||||
|
hardware.graphics.enable = true;
|
||||||
|
|
||||||
|
# Load nvidia driver for Xorg and Wayland
|
||||||
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
|
||||||
|
hardware.nvidia = {
|
||||||
|
|
||||||
|
# Modesetting is required.
|
||||||
|
modesetting.enable = true;
|
||||||
|
|
||||||
|
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||||
|
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||||
|
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||||
|
# of just the bare essentials.
|
||||||
|
powerManagement.enable = true;
|
||||||
|
|
||||||
|
# Fine-grained power management. Turns off GPU when not in use.
|
||||||
|
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||||
|
powerManagement.finegrained = false;
|
||||||
|
|
||||||
|
# Use the Nvidia open source kernel module (not to be confused with the
|
||||||
|
# independent third-party "nouveau" open source driver).
|
||||||
|
# Support is limited to the Turing and later architectures. Full list of
|
||||||
|
# supported GPUs is at:
|
||||||
|
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||||
|
# Only available from driver 513.43.04+
|
||||||
|
open = false;
|
||||||
|
|
||||||
|
# Enable the Nvidia settings menu,
|
||||||
|
# accessible via `nvidia-settings`.
|
||||||
|
nvidiaSettings = true;
|
||||||
|
|
||||||
|
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
|
};
|
||||||
|
}
|
||||||
7
secrets/age-yubikey-identity-d9ed335b.pub
Normal file
7
secrets/age-yubikey-identity-d9ed335b.pub
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Serial: 27501992, Slot: 1
|
||||||
|
# Name: agenix-rekey-alpha
|
||||||
|
# Created: Sat, 20 Dec 2025 06:01:41 +0000
|
||||||
|
# PIN policy: Once (A PIN is required once per session, if set)
|
||||||
|
# Touch policy: Always (A physical touch is required for every decryption)
|
||||||
|
# Recipient: age1yubikey1qvq48l020xg9xtt5epdpnzp3kvkm2vvc57357p58pyfq557a8q8hv84c82e
|
||||||
|
AGE-PLUGIN-YUBIKEY-14ZJ6XQVZM8KNXKCT2PKLW
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 7p4RPw HgBYYM/VqZ4KN4V4TrGmk86wPRhDgM+VaXfa3VlODRM
|
||||||
|
OdM//HvJTzB7/jw+c+6euiYz9ptUf/z22tzJSgxTD+w
|
||||||
|
-> B%P@9-grease
|
||||||
|
Zgr76aiZDhCWBdnbxoOptAfEuM1RWw1bN4rsUCec4VP0cDN856bCtaQjnWWbSTvv
|
||||||
|
YPHtmw
|
||||||
|
--- obv+bg63dTlnoke3tQdkAizcAqsYG2sUjYBZrhGZG68
|
||||||
|
(2<><04>$<24>Y@<40><>i<EFBFBD>7<EFBFBD>j<EFBFBD><02><>ar<61>7<EFBFBD>X$U<><0E>~<7E><>|<7C><>'<14><><EFBFBD>oo`<60><><EFBFBD><EFBFBD><11>DƆ{<7B>#<23>%<25><<m<>O)V<><56>2C<17><!<21>e<EFBFBD>ݺ(24<01><05><>~<7E><>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 7p4RPw FdmJ1odfweTU4HWPTeWuEcoIUq1V4ke28BWmlNNdNHg
|
||||||
|
9qi5QQHociRgSzZ97HifRDf+/Hh0cCZJzFsobpP1cpU
|
||||||
|
-> 4pq5-grease
|
||||||
|
yKZUs4lQM6BQgsyzMn3T1pvUt393/NvcRe7KwuTCDCU
|
||||||
|
--- N7NO5Ps2SG3SFNNnNNvYUSGgA0b5Dk7H6+x0rt6JtXA
|
||||||
|
Dl<EFBFBD>]ep<>(F0i3<<3C><><EFBFBD><EFBFBD><EFBFBD>Sm<53>E<7F>Eh<45><01><>S<EFBFBD>eX<><0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>V$0<>Ŝ<EFBFBD><C59C><EFBFBD>c`<60><>%<25><><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><51><EFBFBD><17>7&<26>X,<0B><>Lo<4C><6F>?QQ+<2B>~|%{<7B><><EFBFBD>-V<>%H<>):ց]Kx<4B><78>K<EFBFBD><4B>NX<4E><58>6<EFBFBD><36>ۦejO<><4F>#X<><58>
|
||||||
Binary file not shown.
@@ -1,19 +0,0 @@
|
|||||||
# This file is NOT imported into the nix configuration, it is just for the agenix CLI
|
|
||||||
let
|
|
||||||
# System public ssh keys (/etc/ssh/)
|
|
||||||
vanta = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAaDVBJdMDFL8r9NQCbaLe+DPHGhGzRv2N7+7m1/U8DP";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# Tailscale auth key need to be up to date with a valid auth key in the tailscale
|
|
||||||
# dashboard. Single-use keys expire after a single machine connects, and even
|
|
||||||
# reusable keys expire after 90 days.
|
|
||||||
# Update tailscale-auth.age with `agenix -e tailscale-auth.age -i /path/to/private-ssh-key`
|
|
||||||
# Note: Only devices with the below public keys are allowed to edit tailscale-auth.age
|
|
||||||
"tailscale-auth.age".publicKeys = [ vanta ]; # Devices allowed to join the tailnet;
|
|
||||||
|
|
||||||
# Devices that can connect to EclypseCloud with the eclypse user.
|
|
||||||
"eclypsecloud-eclypse.age".publicKeys = [ vanta ];
|
|
||||||
|
|
||||||
# Devices that have the eclypse user
|
|
||||||
"eclypse-password.age".publicKeys = [ vanta ];
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 7p4RPw 7GuZj43+NoyPXf//ZLM99vossbJXOpDQSkBi3w51Wl8
|
-> piv-p256 2e0zWw ApoXPsP2VGfJnOt+dDk7DfssOkbM/3vkn4jwSfxD4UAj
|
||||||
FTMjlyml+T87LQffffY2AJL5IhTAJF2QlfFvhvZpvOs
|
jtn4DCA/EyrTl9DW1hs84yd3RgVuDU77ggM218HiUdc
|
||||||
--- iONf8B3bUxXtCiv0EAv5QO0ZyhE5A6YfRbcxUr/awFg
|
-> *E(-grease Ull1npy_ >F7 *?
|
||||||
<EFBFBD><0E><><EFBFBD>Tw<54><77>J`<60>~B
|
IM+85AtRNlMrFgqk/uAG
|
||||||
<EFBFBD><11>;<3B>lOh<4F><68>{2<>?<3F><>P<EFBFBD><50>F>@m<>o<><6F>c<EFBFBD><1C>~X<>3<EFBFBD>@.g<0E>ھ<EFBFBD>eK<65><18>V7zphS<68><53>د6<D8AF><36>.W<><57>O@F
|
--- nxCTKF6R3E/qaTTgr7jZdz4ZLRE15NsJpyKHizEJnPw
|
||||||
|
<EFBFBD>><3E>"l<><6C><EFBFBD><14><>r<>sN<4E><7F>V*F<>I<7F>|<0E><>0X<30>8<EFBFBD><38>
|
||||||
|
<EFBFBD><EFBFBD>|P<><50><EFBFBD><1C>F<EFBFBD><0C><>D<EFBFBD>\x<>Z<EFBFBD><5A>P<EFBFBD><50>]<5D>ʧ<EFBFBD>t-"n<>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD>&<26><>|<7C> %<25><><EFBFBD><EFBFBD><EFBFBD>.ӆ
|
||||||
BIN
wallpapers/sunset_bay.jpg
Executable file
BIN
wallpapers/sunset_bay.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 826 KiB |
BIN
wallpapers/twilight-village.png
Normal file
BIN
wallpapers/twilight-village.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.0 MiB |
Reference in New Issue
Block a user