add noctalia, oh wow
21
flake.lock
generated
@ -246,6 +246,26 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"noctalia": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs-unstable"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1770781953,
|
||||
"narHash": "sha256-yrIjM7EGTJsSp3E5UfypzJIIt2AviE59V3Wy1uQJrxg=",
|
||||
"owner": "noctalia-dev",
|
||||
"repo": "noctalia-shell",
|
||||
"rev": "17138ca7c042da096b9c8c9422de4ed4e2f91bcd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "noctalia-dev",
|
||||
"repo": "noctalia-shell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
@ -296,6 +316,7 @@
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"noctalia": "noctalia",
|
||||
"nur": "nur",
|
||||
"stylix": "stylix"
|
||||
}
|
||||
|
||||
@ -15,9 +15,13 @@
|
||||
};
|
||||
nur.url = "github:nix-community/NUR";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
noctalia = {
|
||||
url = "github:noctalia-dev/noctalia-shell";
|
||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, nixpkgs-unstable, stylix, nur, home-manager, nixos-hardware, ... } @ inputs:
|
||||
outputs = { self, nixpkgs, nixpkgs-unstable, stylix, nur, home-manager, nixos-hardware, noctalia, ... } @ inputs:
|
||||
let
|
||||
inherit (self) outputs;
|
||||
system = "x86_64-linux";
|
||||
|
||||
@ -35,6 +35,7 @@ in
|
||||
modules/niri/niri_conf.nix
|
||||
modules/colemak-ec.nix
|
||||
../shared/modules/system/power_manager.nix
|
||||
../shared/modules/system/noctalia-system.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
@ -116,8 +117,12 @@ in
|
||||
|
||||
power_manager = {
|
||||
enable = true;
|
||||
backend = "power-profiles-daemon"; # Required for Noctalia power profile widget
|
||||
};
|
||||
|
||||
# Enable Noctalia shell system services
|
||||
noctaliaSystem.enable = true;
|
||||
|
||||
niriwm = {
|
||||
enable = true;
|
||||
useNonFree = true;
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
//
|
||||
|
||||
// gui startup
|
||||
spawn-at-startup "swaybg" "-i" "/home/nate/nixos/frame12/wallpaper.png" "-m" "fill"
|
||||
spawn-at-startup "waybar"
|
||||
// spawn-at-startup "swaybg" "-i" "/home/nate/nixos/frame12/wallpaper.png" "-m" "fill"
|
||||
// spawn-at-startup "waybar"
|
||||
spawn-at-startup "keepassxc"
|
||||
spawn-at-startup "flatpak" "run" "org.signal.Signal"
|
||||
// shell startup
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
../../../shared/modules/apps/firefox/firefox.nix
|
||||
../../../shared/modules/apps/helix.nix
|
||||
../../../shared/modules/home-manager/git-autosync.nix
|
||||
../../../shared/modules/home-manager/noctalia.nix
|
||||
../niri/niri_home.nix
|
||||
./programs.nix
|
||||
];
|
||||
@ -29,7 +30,17 @@
|
||||
# Enable niri home configuration
|
||||
nirihome = {
|
||||
enable = true;
|
||||
homePackages = [ ];
|
||||
homePackages = [ ];
|
||||
};
|
||||
|
||||
# Enable Noctalia shell (replaces Waybar, SwayNC, SwayOSD, wlsunset)
|
||||
noctaliaShell = {
|
||||
enable = true;
|
||||
barPosition = "top";
|
||||
darkMode = true;
|
||||
colorScheme = "Noctalia (default)"; # Or try "Monochrome" to complement woodland theme
|
||||
locationName = "Denver";
|
||||
avatarImage = "/home/${userName}/.face";
|
||||
};
|
||||
|
||||
# Additional user packages
|
||||
@ -318,12 +329,13 @@
|
||||
|
||||
# Stylix handles Qt and GTK theming
|
||||
|
||||
services.wlsunset = {
|
||||
enable = true;
|
||||
sunrise = "07:00";
|
||||
sunset = "17:00";
|
||||
temperature.night = 3500;
|
||||
};
|
||||
# Noctalia has built-in night light, so wlsunset is disabled via noctalia module
|
||||
# services.wlsunset = {
|
||||
# enable = true;
|
||||
# sunrise = "07:00";
|
||||
# sunset = "17:00";
|
||||
# temperature.night = 3500;
|
||||
# };
|
||||
|
||||
services.kdeconnect = {
|
||||
enable = true;
|
||||
@ -333,21 +345,19 @@
|
||||
# Enable bluetooth headphone controls
|
||||
services.mpris-proxy.enable = true;
|
||||
|
||||
# SwayOSD - on-screen display for volume, brightness, caps lock
|
||||
services.swayosd = {
|
||||
enable = true;
|
||||
topMargin = 0.9;
|
||||
};
|
||||
|
||||
# SwayNC - notification center (Stylix auto-themes this)
|
||||
services.swaync = {
|
||||
enable = true;
|
||||
settings = {
|
||||
positionX = "center";
|
||||
positionY = "top";
|
||||
notification-window-width = 800;
|
||||
};
|
||||
};
|
||||
# Noctalia replaces SwayOSD and SwayNC - disabled via noctalia module
|
||||
# services.swayosd = {
|
||||
# enable = true;
|
||||
# topMargin = 0.9;
|
||||
# };
|
||||
# services.swaync = {
|
||||
# enable = true;
|
||||
# settings = {
|
||||
# positionX = "center";
|
||||
# positionY = "top";
|
||||
# notification-window-width = 800;
|
||||
# };
|
||||
# };
|
||||
|
||||
# Git autosync for star-command
|
||||
services.git-autosync = {
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
userName = "jaci";
|
||||
fullName = "Jaci Anderson";
|
||||
email = "jaci.s.anderson@gmail.com";
|
||||
hostName = "meowyxlife";
|
||||
hostName = "jaci";
|
||||
desktop = "niri";
|
||||
gaming = true;
|
||||
in
|
||||
@ -25,17 +25,14 @@
|
||||
stylix = {
|
||||
enable = true;
|
||||
image = ./kiki_background.jpg;
|
||||
|
||||
# Auto-generate color scheme from wallpaper
|
||||
polarity = "light";
|
||||
|
||||
# System-wide cursor
|
||||
cursor = {
|
||||
package = pkgs.bibata-cursors;
|
||||
name = "Bibata-Modern-Classic";
|
||||
size = 32;
|
||||
};
|
||||
|
||||
# Fonts
|
||||
fonts = {
|
||||
serif = {
|
||||
@ -55,18 +52,20 @@
|
||||
name = "Noto Color Emoji";
|
||||
};
|
||||
sizes = {
|
||||
applications = 12;
|
||||
desktop = 10;
|
||||
popups = 10;
|
||||
terminal = 11;
|
||||
applications = 14;
|
||||
desktop = 14;
|
||||
popups = 14;
|
||||
terminal = 14;
|
||||
};
|
||||
};
|
||||
|
||||
# Icon theme for tray applets (nm-applet, etc.)
|
||||
# Note: "Reversal-dark" has dark icons (for light backgrounds)
|
||||
# "Reversal" has light icons (for dark backgrounds)
|
||||
iconTheme = {
|
||||
enable = true;
|
||||
package = pkgs.reversal-icon-theme;
|
||||
light = "Reversal";
|
||||
light = "Reversal-dark";
|
||||
dark = "Reversal";
|
||||
};
|
||||
|
||||
|
||||
@ -39,6 +39,7 @@ in
|
||||
modules/user/main_user.nix
|
||||
modules/niri/niri_conf.nix
|
||||
../shared/modules/system/power_manager.nix
|
||||
../shared/modules/system/noctalia-system.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
@ -67,7 +68,7 @@ in
|
||||
boot = {
|
||||
plymouth = {
|
||||
enable = true;
|
||||
theme = "kiki";
|
||||
theme = "kiki-pixel"; # Options: "kiki" (waifu2x upscaled) or "kiki-pixel" (pixel art)
|
||||
themePackages = [
|
||||
(pkgs.runCommand "plymouth-kiki-theme" { } ''
|
||||
mkdir -p $out/share/plymouth/themes/kiki
|
||||
@ -75,9 +76,18 @@ in
|
||||
substituteInPlace $out/share/plymouth/themes/kiki/kiki.plymouth \
|
||||
--replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/kiki"
|
||||
'')
|
||||
(pkgs.runCommand "plymouth-kiki-pixel-theme" { } ''
|
||||
mkdir -p $out/share/plymouth/themes/kiki-pixel
|
||||
cp -r ${./kiki-plymouth-theme/kiki-pixel}/* $out/share/plymouth/themes/kiki-pixel/
|
||||
substituteInPlace $out/share/plymouth/themes/kiki-pixel/kiki-pixel.plymouth \
|
||||
--replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/kiki-pixel"
|
||||
'')
|
||||
];
|
||||
};
|
||||
|
||||
# Enable systemd in initrd for better LUKS unlocking with Plymouth
|
||||
initrd.systemd.enable = true;
|
||||
|
||||
# Enable "Silent Boot"
|
||||
consoleLogLevel = 0;
|
||||
initrd.verbose = false;
|
||||
@ -113,8 +123,12 @@ in
|
||||
|
||||
power_manager = {
|
||||
enable = true;
|
||||
backend = "power-profiles-daemon"; # Required for Noctalia power profile widget
|
||||
};
|
||||
|
||||
# Enable Noctalia shell system services
|
||||
noctaliaSystem.enable = true;
|
||||
|
||||
niriwm = {
|
||||
enable = true;
|
||||
useNonFree = true;
|
||||
|
||||
BIN
jaci/kiki-plymouth-theme/kiki-loop.mp4
Normal file
BIN
jaci/kiki-plymouth-theme/kiki-pixel/bullet.png
Normal file
|
After Width: | Height: | Size: 616 B |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/capslock.png
Normal file
|
After Width: | Height: | Size: 960 B |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/entry.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/keyboard.png
Normal file
|
After Width: | Height: | Size: 946 B |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/keymap-render.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
54
jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.plymouth
Normal file
@ -0,0 +1,54 @@
|
||||
[Plymouth Theme]
|
||||
Name=Kiki Pixel
|
||||
Description=Pixel art Kiki animation from Kiki's Delivery Service.
|
||||
ModuleName=two-step
|
||||
|
||||
[two-step]
|
||||
Font=Cantarell 12
|
||||
TitleFont=Cantarell Light 30
|
||||
ImageDir=@IMAGEDIR@
|
||||
DialogHorizontalAlignment=.5
|
||||
DialogVerticalAlignment=.382
|
||||
TitleHorizontalAlignment=.5
|
||||
TitleVerticalAlignment=.382
|
||||
HorizontalAlignment=.5
|
||||
VerticalAlignment=.5
|
||||
WatermarkHorizontalAlignment=.5
|
||||
WatermarkVerticalAlignment=.96
|
||||
Transition=none
|
||||
TransitionDuration=0.0
|
||||
BackgroundStartColor=0x82ADEA
|
||||
BackgroundEndColor=0x6B9BD1
|
||||
ProgressBarBackgroundColor=0x5A8AC0
|
||||
ProgressBarForegroundColor=0xffffff
|
||||
MessageBelowAnimation=true
|
||||
|
||||
[boot-up]
|
||||
UseEndAnimation=false
|
||||
|
||||
[shutdown]
|
||||
UseEndAnimation=false
|
||||
|
||||
[reboot]
|
||||
UseEndAnimation=false
|
||||
|
||||
[updates]
|
||||
SuppressMessages=true
|
||||
ProgressBarShowPercentComplete=true
|
||||
UseProgressBar=true
|
||||
Title=Installing Updates...
|
||||
SubTitle=Do not turn off your computer
|
||||
|
||||
[system-upgrade]
|
||||
SuppressMessages=true
|
||||
ProgressBarShowPercentComplete=true
|
||||
UseProgressBar=true
|
||||
Title=Upgrading System...
|
||||
SubTitle=Do not turn off your computer
|
||||
|
||||
[firmware-upgrade]
|
||||
SuppressMessages=true
|
||||
ProgressBarShowPercentComplete=true
|
||||
UseProgressBar=true
|
||||
Title=Upgrading Firmware...
|
||||
SubTitle=Do not turn off your computer
|
||||
BIN
jaci/kiki-plymouth-theme/kiki-pixel/lock.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0001.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0002.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0003.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0004.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0005.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0006.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0007.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0008.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0009.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0010.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0011.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0012.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0013.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0014.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0015.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0016.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0017.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0018.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0019.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0020.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0021.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0022.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0023.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0024.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0025.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0026.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0027.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0028.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0029.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0030.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0031.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
jaci/kiki-plymouth-theme/kiki-pixel/throbber-0032.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 3.6 MiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 3.6 MiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 3.7 MiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 73 KiB |
@ -5,14 +5,11 @@
|
||||
// gui startup
|
||||
spawn-at-startup "swaybg" "-i" "/home/jaci/nixos/jaci/kiki_background.jpg" "-m" "fill"
|
||||
spawn-at-startup "waybar"
|
||||
spawn-at-startup "keepassxc"
|
||||
// shell startup
|
||||
spawn-sh-at-startup "kanshi"
|
||||
spawn-sh-at-startup "sleep 5 && nm-applet --indicator"
|
||||
spawn-sh-at-startup "sleep 5 && syncthingtray --wait"
|
||||
spawn-sh-at-startup "sleep 5 && swaync"
|
||||
|
||||
screenshot-path null // save screenshots just to clipboard
|
||||
screenshot-path "~/Pictures/"// save screenshots just to clipboard
|
||||
prefer-no-csd // (Client Side Decorations) ask clients to not add their own decorations
|
||||
|
||||
hotkey-overlay {
|
||||
@ -28,11 +25,6 @@ output "eDP-1"{
|
||||
transform "normal"
|
||||
}
|
||||
|
||||
workspace "term"
|
||||
workspace "net"
|
||||
workspace "chat"
|
||||
workspace "scratch"
|
||||
|
||||
//
|
||||
// INPUTS
|
||||
//
|
||||
@ -41,8 +33,8 @@ input {
|
||||
xkb {
|
||||
layout "us"
|
||||
}
|
||||
repeat-delay 175
|
||||
repeat-rate 50
|
||||
repeat-delay 225
|
||||
repeat-rate 40
|
||||
}
|
||||
|
||||
touchpad {
|
||||
@ -133,13 +125,13 @@ layout {
|
||||
|
||||
// All windows - corner radius, opacity
|
||||
window-rule {
|
||||
geometry-corner-radius 14 14 0 14
|
||||
geometry-corner-radius 18 18 18 18
|
||||
clip-to-geometry true
|
||||
}
|
||||
|
||||
window-rule {
|
||||
match is-active=true
|
||||
opacity 0.99
|
||||
opacity 1.00
|
||||
}
|
||||
|
||||
window-rule {
|
||||
@ -147,14 +139,6 @@ window-rule {
|
||||
opacity 0.92
|
||||
}
|
||||
|
||||
// Term windows
|
||||
window-rule {
|
||||
match app-id="com.mitchellh.ghostty"
|
||||
|
||||
default-column-width { proportion 0.5; }
|
||||
open-on-workspace "term"
|
||||
}
|
||||
|
||||
// Net windows
|
||||
window-rule {
|
||||
match app-id="firefox"
|
||||
@ -170,25 +154,6 @@ window-rule {
|
||||
|
||||
default-column-width { proportion 0.8; }
|
||||
block-out-from "screencast"
|
||||
open-on-workspace "chat"
|
||||
}
|
||||
|
||||
// Scratch windows (exclude unlock dialog so it can open on net)
|
||||
window-rule {
|
||||
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
||||
exclude app-id=r#"^org\.keepassxc\.KeePassXC$"# title="^Unlock Database - KeePassXC$"
|
||||
|
||||
block-out-from "screencast"
|
||||
open-on-workspace "scratch"
|
||||
}
|
||||
|
||||
// Keepass unlock dialog on Net workspace
|
||||
window-rule {
|
||||
match app-id=r#"^org\.keepassxc\.KeePassXC$"# title="^Unlock Database - KeePassXC$"
|
||||
|
||||
open-floating true
|
||||
open-focused true
|
||||
open-on-workspace "net"
|
||||
}
|
||||
|
||||
// File browser
|
||||
@ -322,20 +287,18 @@ binds {
|
||||
Mod+Shift+Page_Down { move-workspace-down; }
|
||||
Mod+Shift+Page_Up { move-workspace-up; }
|
||||
|
||||
Mod+Minus { focus-workspace "scratch"; }
|
||||
Mod+1 { focus-workspace "term"; }
|
||||
Mod+2 { focus-workspace "net"; }
|
||||
Mod+3 { focus-workspace "chat"; }
|
||||
Mod+1 { focus-workspace 1; }
|
||||
Mod+2 { focus-workspace 2; }
|
||||
Mod+3 { focus-workspace 3; }
|
||||
Mod+4 { focus-workspace 4; }
|
||||
Mod+5 { focus-workspace 5; }
|
||||
Mod+6 { focus-workspace 6; }
|
||||
Mod+7 { focus-workspace 7; }
|
||||
Mod+8 { focus-workspace 8; }
|
||||
Mod+9 { focus-workspace 9; }
|
||||
Mod+Shift+Minus { move-column-to-workspace "scratch"; }
|
||||
Mod+Shift+1 { move-column-to-workspace "term"; }
|
||||
Mod+Shift+2 { move-column-to-workspace "net"; }
|
||||
Mod+Shift+3 { move-column-to-workspace "chat"; }
|
||||
Mod+Shift+1 { move-column-to-workspace 1; }
|
||||
Mod+Shift+2 { move-column-to-workspace 2; }
|
||||
Mod+Shift+3 { move-column-to-workspace 3; }
|
||||
Mod+Shift+4 { move-column-to-workspace 4; }
|
||||
Mod+Shift+5 { move-column-to-workspace 5; }
|
||||
Mod+Shift+6 { move-column-to-workspace 6; }
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
../../../shared/modules/apps/firefox/firefox.nix
|
||||
../../../shared/modules/apps/helix.nix
|
||||
../../../shared/modules/home-manager/git-autosync.nix
|
||||
../../../shared/modules/home-manager/noctalia.nix
|
||||
../niri/niri_home.nix
|
||||
./programs.nix
|
||||
];
|
||||
@ -31,22 +32,19 @@
|
||||
homePackages = [ ];
|
||||
};
|
||||
|
||||
# Enable Noctalia shell (replaces Waybar, SwayNC, SwayOSD, wlsunset)
|
||||
noctaliaShell = {
|
||||
enable = true;
|
||||
barPosition = "top";
|
||||
darkMode = false; # Jaci uses light mode
|
||||
useWallpaperColors = true; # Generate colors from wallpaper
|
||||
locationName = "Denver";
|
||||
avatarImage = "/home/${userName}/.face";
|
||||
};
|
||||
|
||||
# Additional user packages
|
||||
# Note: Programs with Stylix theming are in programs.nix
|
||||
home.packages = with pkgs; [
|
||||
#
|
||||
# Dev Tools
|
||||
#
|
||||
jq
|
||||
python3
|
||||
unstablePkgs.claude-code
|
||||
unstablePkgs.opencode
|
||||
### LSP's
|
||||
nil
|
||||
nodePackages_latest.bash-language-server
|
||||
vscode-langservers-extracted # provides eslint, markdown, json, css, html lsp
|
||||
python313Packages.python-lsp-server
|
||||
|
||||
#
|
||||
# Gaming
|
||||
#
|
||||
@ -58,18 +56,9 @@
|
||||
#
|
||||
# Unix tools
|
||||
#
|
||||
duf
|
||||
dust
|
||||
fd
|
||||
lsd
|
||||
ripgrep
|
||||
tre-command
|
||||
gtop
|
||||
htop
|
||||
neofetch
|
||||
unzip
|
||||
gnupg
|
||||
pinentry-tty
|
||||
|
||||
#
|
||||
# Photo / Video
|
||||
@ -158,17 +147,7 @@
|
||||
};
|
||||
|
||||
programs = {
|
||||
direnv = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
|
||||
bash.enable = true;
|
||||
delta = {
|
||||
enable = true;
|
||||
enableGitIntegration = true;
|
||||
};
|
||||
};
|
||||
|
||||
# enable saving ssh secrets (needed for private repos)
|
||||
@ -193,8 +172,6 @@
|
||||
# integrate ssh-agent from gnome keyring
|
||||
export SSH_AUTH_SOCK=/run/user/$UID/gcr/ssh
|
||||
|
||||
eval "$(direnv hook zsh)"
|
||||
|
||||
yt-audio() {
|
||||
nix-shell -p yt-dlp --run "yt-dlp -x $1 --audio-format mp3"
|
||||
}
|
||||
@ -205,7 +182,6 @@
|
||||
alias llm="lsd --timesort --long"
|
||||
alias lS="lsd --oneline --classic"
|
||||
alias lt="lsd --tree --depth=2"
|
||||
alias grep="rg"
|
||||
alias cat="bat --paging=never"
|
||||
alias rm="rm -i"
|
||||
'';
|
||||
@ -219,12 +195,13 @@
|
||||
|
||||
# Stylix handles Qt and GTK theming
|
||||
|
||||
services.wlsunset = {
|
||||
enable = true;
|
||||
sunrise = "07:00";
|
||||
sunset = "17:00";
|
||||
temperature.night = 3500;
|
||||
};
|
||||
# Noctalia has built-in night light, so wlsunset is disabled via noctalia module
|
||||
# services.wlsunset = {
|
||||
# enable = true;
|
||||
# sunrise = "07:00";
|
||||
# sunset = "17:00";
|
||||
# temperature.night = 3500;
|
||||
# };
|
||||
|
||||
services.kdeconnect = {
|
||||
enable = true;
|
||||
@ -234,21 +211,19 @@
|
||||
# Enable bluetooth headphone controls
|
||||
services.mpris-proxy.enable = true;
|
||||
|
||||
# SwayOSD - on-screen display for volume, brightness, caps lock
|
||||
services.swayosd = {
|
||||
enable = true;
|
||||
topMargin = 0.9;
|
||||
};
|
||||
|
||||
# SwayNC - notification center (Stylix auto-themes this)
|
||||
services.swaync = {
|
||||
enable = true;
|
||||
settings = {
|
||||
positionX = "center";
|
||||
positionY = "top";
|
||||
notification-window-width = 800;
|
||||
};
|
||||
};
|
||||
# Noctalia replaces SwayOSD and SwayNC - disabled via noctalia module
|
||||
# services.swayosd = {
|
||||
# enable = true;
|
||||
# topMargin = 0.9;
|
||||
# };
|
||||
# services.swaync = {
|
||||
# enable = true;
|
||||
# settings = {
|
||||
# positionX = "center";
|
||||
# positionY = "top";
|
||||
# notification-window-width = 800;
|
||||
# };
|
||||
# };
|
||||
|
||||
# Git autosync for Documents
|
||||
services.git-autosync = {
|
||||
|
||||
@ -71,12 +71,11 @@ in
|
||||
# foot is in programs.nix for Stylix theming
|
||||
git
|
||||
glib # gsettings
|
||||
gnome-software # GUI app store for Flatpak
|
||||
grim
|
||||
kanshi
|
||||
libnotify
|
||||
lxqt.lxqt-policykit
|
||||
man-pages
|
||||
man-pages-posix
|
||||
nautilus
|
||||
networkmanagerapplet
|
||||
nwg-drawer
|
||||
@ -109,9 +108,6 @@ in
|
||||
LIBVA_DRIVER_NAME = "iHD";
|
||||
};
|
||||
|
||||
# adds additional man pages
|
||||
documentation.dev.enable = true;
|
||||
|
||||
programs.gamemode = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
||||
@ -1 +0,0 @@
|
||||
7376
|
||||
@ -1 +0,0 @@
|
||||
4639
|
||||
@ -1,30 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
PID_FILE="background.pid"
|
||||
WP_LOC="/home/nate/.config/sway/wallpapers"
|
||||
PREV_WP=""
|
||||
NEW_WP=$(ls $WP_LOC | sort -R | tail -n 1)
|
||||
transition[0]="any"
|
||||
transition[1]="wave"
|
||||
transition[2]="outer"
|
||||
transition[3]="wipe"
|
||||
transition[4]="center"
|
||||
size=${#transition[@]}
|
||||
|
||||
swww kill
|
||||
|
||||
swww init
|
||||
|
||||
# echo $(pgrep -f background.sh) > $PID_FILE
|
||||
|
||||
while true
|
||||
do
|
||||
while [[ $PREV_WP == $NEW_WP ]]
|
||||
do
|
||||
NEW_WP=$(ls $WP_LOC | sort -R | tail -n 1)
|
||||
done
|
||||
index=$(($RANDOM % $size))
|
||||
#echo "Picked $WP_LOC/$NEW_WP with effect ${transition[$index]}"
|
||||
swww img $WP_LOC/$NEW_WP --transition-type ${transition[$index]}
|
||||
PREV_WP=$NEW_WP
|
||||
sleep 120
|
||||
done
|
||||
@ -1 +0,0 @@
|
||||
7376
|
||||
@ -1 +0,0 @@
|
||||
4639
|
||||
@ -1,30 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
PID_FILE="background.pid"
|
||||
WP_LOC="/home/nate/.config/sway/wallpapers"
|
||||
PREV_WP=""
|
||||
NEW_WP=$(ls $WP_LOC | sort -R | tail -n 1)
|
||||
transition[0]="any"
|
||||
transition[1]="wave"
|
||||
transition[2]="outer"
|
||||
transition[3]="wipe"
|
||||
transition[4]="center"
|
||||
size=${#transition[@]}
|
||||
|
||||
swww kill
|
||||
|
||||
swww init
|
||||
|
||||
# echo $(pgrep -f background.sh) > $PID_FILE
|
||||
|
||||
while true
|
||||
do
|
||||
while [[ $PREV_WP == $NEW_WP ]]
|
||||
do
|
||||
NEW_WP=$(ls $WP_LOC | sort -R | tail -n 1)
|
||||
done
|
||||
index=$(($RANDOM % $size))
|
||||
#echo "Picked $WP_LOC/$NEW_WP with effect ${transition[$index]}"
|
||||
swww img $WP_LOC/$NEW_WP --transition-type ${transition[$index]}
|
||||
PREV_WP=$NEW_WP
|
||||
sleep 120
|
||||
done
|
||||
@ -1 +0,0 @@
|
||||
7376
|
||||
@ -1 +0,0 @@
|
||||
4639
|
||||
@ -1,30 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
PID_FILE="background.pid"
|
||||
WP_LOC="/home/nate/.config/sway/wallpapers"
|
||||
PREV_WP=""
|
||||
NEW_WP=$(ls $WP_LOC | sort -R | tail -n 1)
|
||||
transition[0]="any"
|
||||
transition[1]="wave"
|
||||
transition[2]="outer"
|
||||
transition[3]="wipe"
|
||||
transition[4]="center"
|
||||
size=${#transition[@]}
|
||||
|
||||
swww kill
|
||||
|
||||
swww init
|
||||
|
||||
# echo $(pgrep -f background.sh) > $PID_FILE
|
||||
|
||||
while true
|
||||
do
|
||||
while [[ $PREV_WP == $NEW_WP ]]
|
||||
do
|
||||
NEW_WP=$(ls $WP_LOC | sort -R | tail -n 1)
|
||||
done
|
||||
index=$(($RANDOM % $size))
|
||||
#echo "Picked $WP_LOC/$NEW_WP with effect ${transition[$index]}"
|
||||
swww img $WP_LOC/$NEW_WP --transition-type ${transition[$index]}
|
||||
PREV_WP=$NEW_WP
|
||||
sleep 120
|
||||
done
|
||||
181
shared/modules/home-manager/noctalia.nix
Normal file
@ -0,0 +1,181 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.noctaliaShell;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.noctalia.homeModules.default
|
||||
];
|
||||
|
||||
options.noctaliaShell = {
|
||||
enable = mkEnableOption "Noctalia shell";
|
||||
|
||||
colorScheme = mkOption {
|
||||
type = types.str;
|
||||
default = "Noctalia (default)";
|
||||
description = ''
|
||||
Predefined color scheme to use. Options include:
|
||||
"Noctalia (default)", "Monochrome", "Catppuccin Mocha", etc.
|
||||
See Noctalia docs for full list.
|
||||
'';
|
||||
};
|
||||
|
||||
useWallpaperColors = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Generate colors from wallpaper instead of using predefined scheme";
|
||||
};
|
||||
|
||||
darkMode = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Use dark mode for Noctalia shell";
|
||||
};
|
||||
|
||||
barPosition = mkOption {
|
||||
type = types.enum [ "top" "bottom" "left" "right" ];
|
||||
default = "top";
|
||||
description = "Position of the Noctalia bar";
|
||||
};
|
||||
|
||||
barDensity = mkOption {
|
||||
type = types.enum [ "default" "compact" ];
|
||||
default = "default";
|
||||
description = "Bar density (compact for vertical bars)";
|
||||
};
|
||||
|
||||
enableDock = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Enable the Noctalia dock";
|
||||
};
|
||||
|
||||
dockPosition = mkOption {
|
||||
type = types.enum [ "top" "bottom" "left" "right" ];
|
||||
default = "bottom";
|
||||
description = "Position of the dock";
|
||||
};
|
||||
|
||||
pinnedApps = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
description = "List of .desktop file names for pinned dock apps";
|
||||
};
|
||||
|
||||
avatarImage = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = "Path to avatar image for user profile";
|
||||
};
|
||||
|
||||
locationName = mkOption {
|
||||
type = types.str;
|
||||
default = "Denver";
|
||||
description = "Location name for weather widget";
|
||||
};
|
||||
|
||||
use12hourFormat = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Use 12-hour time format";
|
||||
};
|
||||
|
||||
useFahrenheit = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Use Fahrenheit for temperature";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# Configure Noctalia shell via home-manager module
|
||||
programs.noctalia-shell = {
|
||||
enable = true;
|
||||
|
||||
# Don't install the package separately since systemd service handles it
|
||||
# But we need it for IPC commands in keybinds
|
||||
package = inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
||||
|
||||
settings = {
|
||||
colorSchemes = {
|
||||
useWallpaperColors = cfg.useWallpaperColors;
|
||||
predefinedScheme = cfg.colorScheme;
|
||||
darkMode = cfg.darkMode;
|
||||
};
|
||||
|
||||
bar = {
|
||||
position = cfg.barPosition;
|
||||
density = cfg.barDensity;
|
||||
showCapsule = true;
|
||||
floating = false;
|
||||
widgets = {
|
||||
left = [
|
||||
{ id = "Launcher"; }
|
||||
{ id = "Clock"; }
|
||||
{ id = "SystemMonitor"; }
|
||||
{ id = "ActiveWindow"; }
|
||||
{ id = "MediaMini"; }
|
||||
];
|
||||
center = [
|
||||
{ id = "Workspace"; }
|
||||
];
|
||||
right = [
|
||||
{ id = "Tray"; }
|
||||
{ id = "NotificationHistory"; }
|
||||
{ id = "Battery"; }
|
||||
{ id = "Volume"; }
|
||||
{ id = "Brightness"; }
|
||||
{ id = "ControlCenter"; }
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
dock = {
|
||||
enabled = cfg.enableDock;
|
||||
position = cfg.dockPosition;
|
||||
displayMode = "auto_hide";
|
||||
pinnedApps = cfg.pinnedApps;
|
||||
};
|
||||
|
||||
general = {
|
||||
avatarImage = cfg.avatarImage;
|
||||
radiusRatio = 1;
|
||||
animationSpeed = 1;
|
||||
enableShadows = true;
|
||||
};
|
||||
|
||||
location = {
|
||||
name = cfg.locationName;
|
||||
weatherEnabled = true;
|
||||
use12hourFormat = cfg.use12hourFormat;
|
||||
useFahrenheit = cfg.useFahrenheit;
|
||||
};
|
||||
|
||||
notifications = {
|
||||
enabled = true;
|
||||
location = "top_right";
|
||||
};
|
||||
|
||||
appLauncher = {
|
||||
position = "center";
|
||||
sortByMostUsed = true;
|
||||
viewMode = "list";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Disable conflicting services that Noctalia replaces
|
||||
services.swayosd.enable = mkForce false;
|
||||
services.swaync.enable = mkForce false;
|
||||
|
||||
# Disable wlsunset - Noctalia has built-in night light
|
||||
services.wlsunset.enable = mkForce false;
|
||||
|
||||
# Disable waybar - Noctalia has its own bar
|
||||
waybarConfig.enable = mkForce false;
|
||||
programs.waybar.enable = mkForce false;
|
||||
};
|
||||
}
|
||||
42
shared/modules/system/noctalia-system.nix
Normal file
@ -0,0 +1,42 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.noctaliaSystem;
|
||||
in
|
||||
{
|
||||
# Import Noctalia's NixOS module for systemd service
|
||||
imports = [
|
||||
inputs.noctalia.nixosModules.default
|
||||
];
|
||||
|
||||
options.noctaliaSystem = {
|
||||
enable = mkEnableOption "Noctalia shell system-level configuration";
|
||||
|
||||
enableSystemdService = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Enable the Noctalia systemd service (starts after graphical-session.target)";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# Enable the systemd service if requested
|
||||
services.noctalia-shell.enable = cfg.enableSystemdService;
|
||||
|
||||
# Required system services for Noctalia features
|
||||
# NetworkManager - for wifi widget
|
||||
networking.networkmanager.enable = mkDefault true;
|
||||
|
||||
# Bluetooth - for bluetooth widget
|
||||
hardware.bluetooth.enable = mkDefault true;
|
||||
|
||||
# UPower - for battery widget
|
||||
services.upower.enable = mkDefault true;
|
||||
|
||||
# Power profiles daemon - for power profile switching in Noctalia
|
||||
# Note: This conflicts with auto-cpufreq, so we use power_manager module's option
|
||||
services.power-profiles-daemon.enable = mkDefault true;
|
||||
};
|
||||
}
|
||||
@ -7,7 +7,17 @@ let
|
||||
in
|
||||
{
|
||||
options.power_manager = {
|
||||
enable = mkEnableOption "power management with auto-cpufreq";
|
||||
enable = mkEnableOption "power management";
|
||||
|
||||
backend = mkOption {
|
||||
type = types.enum [ "auto-cpufreq" "power-profiles-daemon" ];
|
||||
default = "auto-cpufreq";
|
||||
description = ''
|
||||
Power management backend to use.
|
||||
- auto-cpufreq: Automatic CPU frequency scaling (better battery life, no manual control)
|
||||
- power-profiles-daemon: Manual power profile switching (works with Noctalia shell)
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = types.attrs;
|
||||
@ -21,7 +31,7 @@ in
|
||||
turbo = "auto";
|
||||
};
|
||||
};
|
||||
description = "Auto-cpufreq configuration settings";
|
||||
description = "Auto-cpufreq configuration settings (only used with auto-cpufreq backend)";
|
||||
};
|
||||
|
||||
enableThermald = mkOption {
|
||||
@ -37,27 +47,38 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.auto-cpufreq = {
|
||||
enable = true;
|
||||
settings = cfg.settings;
|
||||
};
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
# Common settings for both backends
|
||||
{
|
||||
services.upower.enable = mkIf cfg.enableUpower true;
|
||||
services.thermald.enable = mkIf cfg.enableThermald true;
|
||||
powerManagement.enable = true;
|
||||
|
||||
# Supporting services
|
||||
services.upower.enable = mkIf cfg.enableUpower true;
|
||||
services.thermald.enable = mkIf cfg.enableThermald true;
|
||||
powerManagement.enable = mkIf cfg.enable true;
|
||||
# Disable TLP regardless of backend (conflicts with both)
|
||||
services.tlp.enable = mkForce false;
|
||||
powerManagement.powertop.enable = mkForce false;
|
||||
}
|
||||
|
||||
# Disable conflicting power management services
|
||||
services.tlp.enable = mkForce false;
|
||||
services.power-profiles-daemon.enable = mkForce false;
|
||||
powerManagement.powertop.enable = mkForce false;
|
||||
|
||||
# Don't set a static CPU governor (let auto-cpufreq handle it)
|
||||
powerManagement.cpuFreqGovernor = mkForce null;
|
||||
};
|
||||
# auto-cpufreq backend
|
||||
(mkIf (cfg.backend == "auto-cpufreq") {
|
||||
services.auto-cpufreq = {
|
||||
enable = true;
|
||||
settings = cfg.settings;
|
||||
};
|
||||
|
||||
# # Warning if flake input is missing when expected
|
||||
# warnings = optional (cfg.useFlake && !(inputs ? auto-cpufreq))
|
||||
# "power_manager: useFlake is enabled but auto-cpufreq flake input not found. Using nixpkgs version instead.";
|
||||
# Disable power-profiles-daemon (conflicts with auto-cpufreq)
|
||||
services.power-profiles-daemon.enable = mkForce false;
|
||||
|
||||
# Don't set a static CPU governor (let auto-cpufreq handle it)
|
||||
powerManagement.cpuFreqGovernor = mkForce null;
|
||||
})
|
||||
|
||||
# power-profiles-daemon backend
|
||||
(mkIf (cfg.backend == "power-profiles-daemon") {
|
||||
services.power-profiles-daemon.enable = true;
|
||||
|
||||
# Disable auto-cpufreq (conflicts with power-profiles-daemon)
|
||||
services.auto-cpufreq.enable = mkForce false;
|
||||
})
|
||||
]);
|
||||
}
|
||||
|
||||