add noctalia, oh wow
21
flake.lock
generated
@ -246,6 +246,26 @@
|
|||||||
"type": "github"
|
"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": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
@ -296,6 +316,7 @@
|
|||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
"noctalia": "noctalia",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"stylix": "stylix"
|
"stylix": "stylix"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,9 +15,13 @@
|
|||||||
};
|
};
|
||||||
nur.url = "github:nix-community/NUR";
|
nur.url = "github:nix-community/NUR";
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
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
|
let
|
||||||
inherit (self) outputs;
|
inherit (self) outputs;
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
|
|||||||
@ -35,6 +35,7 @@ in
|
|||||||
modules/niri/niri_conf.nix
|
modules/niri/niri_conf.nix
|
||||||
modules/colemak-ec.nix
|
modules/colemak-ec.nix
|
||||||
../shared/modules/system/power_manager.nix
|
../shared/modules/system/power_manager.nix
|
||||||
|
../shared/modules/system/noctalia-system.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
@ -116,8 +117,12 @@ in
|
|||||||
|
|
||||||
power_manager = {
|
power_manager = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
backend = "power-profiles-daemon"; # Required for Noctalia power profile widget
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Enable Noctalia shell system services
|
||||||
|
noctaliaSystem.enable = true;
|
||||||
|
|
||||||
niriwm = {
|
niriwm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
useNonFree = true;
|
useNonFree = true;
|
||||||
|
|||||||
@ -3,8 +3,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
// gui startup
|
// gui startup
|
||||||
spawn-at-startup "swaybg" "-i" "/home/nate/nixos/frame12/wallpaper.png" "-m" "fill"
|
// spawn-at-startup "swaybg" "-i" "/home/nate/nixos/frame12/wallpaper.png" "-m" "fill"
|
||||||
spawn-at-startup "waybar"
|
// spawn-at-startup "waybar"
|
||||||
spawn-at-startup "keepassxc"
|
spawn-at-startup "keepassxc"
|
||||||
spawn-at-startup "flatpak" "run" "org.signal.Signal"
|
spawn-at-startup "flatpak" "run" "org.signal.Signal"
|
||||||
// shell startup
|
// shell startup
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
../../../shared/modules/apps/firefox/firefox.nix
|
../../../shared/modules/apps/firefox/firefox.nix
|
||||||
../../../shared/modules/apps/helix.nix
|
../../../shared/modules/apps/helix.nix
|
||||||
../../../shared/modules/home-manager/git-autosync.nix
|
../../../shared/modules/home-manager/git-autosync.nix
|
||||||
|
../../../shared/modules/home-manager/noctalia.nix
|
||||||
../niri/niri_home.nix
|
../niri/niri_home.nix
|
||||||
./programs.nix
|
./programs.nix
|
||||||
];
|
];
|
||||||
@ -29,7 +30,17 @@
|
|||||||
# Enable niri home configuration
|
# Enable niri home configuration
|
||||||
nirihome = {
|
nirihome = {
|
||||||
enable = true;
|
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
|
# Additional user packages
|
||||||
@ -318,12 +329,13 @@
|
|||||||
|
|
||||||
# Stylix handles Qt and GTK theming
|
# Stylix handles Qt and GTK theming
|
||||||
|
|
||||||
services.wlsunset = {
|
# Noctalia has built-in night light, so wlsunset is disabled via noctalia module
|
||||||
enable = true;
|
# services.wlsunset = {
|
||||||
sunrise = "07:00";
|
# enable = true;
|
||||||
sunset = "17:00";
|
# sunrise = "07:00";
|
||||||
temperature.night = 3500;
|
# sunset = "17:00";
|
||||||
};
|
# temperature.night = 3500;
|
||||||
|
# };
|
||||||
|
|
||||||
services.kdeconnect = {
|
services.kdeconnect = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -333,21 +345,19 @@
|
|||||||
# Enable bluetooth headphone controls
|
# Enable bluetooth headphone controls
|
||||||
services.mpris-proxy.enable = true;
|
services.mpris-proxy.enable = true;
|
||||||
|
|
||||||
# SwayOSD - on-screen display for volume, brightness, caps lock
|
# Noctalia replaces SwayOSD and SwayNC - disabled via noctalia module
|
||||||
services.swayosd = {
|
# services.swayosd = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
topMargin = 0.9;
|
# topMargin = 0.9;
|
||||||
};
|
# };
|
||||||
|
# services.swaync = {
|
||||||
# SwayNC - notification center (Stylix auto-themes this)
|
# enable = true;
|
||||||
services.swaync = {
|
# settings = {
|
||||||
enable = true;
|
# positionX = "center";
|
||||||
settings = {
|
# positionY = "top";
|
||||||
positionX = "center";
|
# notification-window-width = 800;
|
||||||
positionY = "top";
|
# };
|
||||||
notification-window-width = 800;
|
# };
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Git autosync for star-command
|
# Git autosync for star-command
|
||||||
services.git-autosync = {
|
services.git-autosync = {
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
userName = "jaci";
|
userName = "jaci";
|
||||||
fullName = "Jaci Anderson";
|
fullName = "Jaci Anderson";
|
||||||
email = "jaci.s.anderson@gmail.com";
|
email = "jaci.s.anderson@gmail.com";
|
||||||
hostName = "meowyxlife";
|
hostName = "jaci";
|
||||||
desktop = "niri";
|
desktop = "niri";
|
||||||
gaming = true;
|
gaming = true;
|
||||||
in
|
in
|
||||||
@ -25,17 +25,14 @@
|
|||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
image = ./kiki_background.jpg;
|
image = ./kiki_background.jpg;
|
||||||
|
|
||||||
# Auto-generate color scheme from wallpaper
|
# Auto-generate color scheme from wallpaper
|
||||||
polarity = "light";
|
polarity = "light";
|
||||||
|
|
||||||
# System-wide cursor
|
# System-wide cursor
|
||||||
cursor = {
|
cursor = {
|
||||||
package = pkgs.bibata-cursors;
|
package = pkgs.bibata-cursors;
|
||||||
name = "Bibata-Modern-Classic";
|
name = "Bibata-Modern-Classic";
|
||||||
size = 32;
|
size = 32;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Fonts
|
# Fonts
|
||||||
fonts = {
|
fonts = {
|
||||||
serif = {
|
serif = {
|
||||||
@ -55,18 +52,20 @@
|
|||||||
name = "Noto Color Emoji";
|
name = "Noto Color Emoji";
|
||||||
};
|
};
|
||||||
sizes = {
|
sizes = {
|
||||||
applications = 12;
|
applications = 14;
|
||||||
desktop = 10;
|
desktop = 14;
|
||||||
popups = 10;
|
popups = 14;
|
||||||
terminal = 11;
|
terminal = 14;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Icon theme for tray applets (nm-applet, etc.)
|
# 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 = {
|
iconTheme = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.reversal-icon-theme;
|
package = pkgs.reversal-icon-theme;
|
||||||
light = "Reversal";
|
light = "Reversal-dark";
|
||||||
dark = "Reversal";
|
dark = "Reversal";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -39,6 +39,7 @@ in
|
|||||||
modules/user/main_user.nix
|
modules/user/main_user.nix
|
||||||
modules/niri/niri_conf.nix
|
modules/niri/niri_conf.nix
|
||||||
../shared/modules/system/power_manager.nix
|
../shared/modules/system/power_manager.nix
|
||||||
|
../shared/modules/system/noctalia-system.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
@ -67,7 +68,7 @@ in
|
|||||||
boot = {
|
boot = {
|
||||||
plymouth = {
|
plymouth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = "kiki";
|
theme = "kiki-pixel"; # Options: "kiki" (waifu2x upscaled) or "kiki-pixel" (pixel art)
|
||||||
themePackages = [
|
themePackages = [
|
||||||
(pkgs.runCommand "plymouth-kiki-theme" { } ''
|
(pkgs.runCommand "plymouth-kiki-theme" { } ''
|
||||||
mkdir -p $out/share/plymouth/themes/kiki
|
mkdir -p $out/share/plymouth/themes/kiki
|
||||||
@ -75,9 +76,18 @@ in
|
|||||||
substituteInPlace $out/share/plymouth/themes/kiki/kiki.plymouth \
|
substituteInPlace $out/share/plymouth/themes/kiki/kiki.plymouth \
|
||||||
--replace-fail "@IMAGEDIR@" "$out/share/plymouth/themes/kiki"
|
--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"
|
# Enable "Silent Boot"
|
||||||
consoleLogLevel = 0;
|
consoleLogLevel = 0;
|
||||||
initrd.verbose = false;
|
initrd.verbose = false;
|
||||||
@ -113,8 +123,12 @@ in
|
|||||||
|
|
||||||
power_manager = {
|
power_manager = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
backend = "power-profiles-daemon"; # Required for Noctalia power profile widget
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Enable Noctalia shell system services
|
||||||
|
noctaliaSystem.enable = true;
|
||||||
|
|
||||||
niriwm = {
|
niriwm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
useNonFree = 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
|
// gui startup
|
||||||
spawn-at-startup "swaybg" "-i" "/home/jaci/nixos/jaci/kiki_background.jpg" "-m" "fill"
|
spawn-at-startup "swaybg" "-i" "/home/jaci/nixos/jaci/kiki_background.jpg" "-m" "fill"
|
||||||
spawn-at-startup "waybar"
|
spawn-at-startup "waybar"
|
||||||
spawn-at-startup "keepassxc"
|
|
||||||
// shell startup
|
// shell startup
|
||||||
spawn-sh-at-startup "kanshi"
|
|
||||||
spawn-sh-at-startup "sleep 5 && nm-applet --indicator"
|
spawn-sh-at-startup "sleep 5 && nm-applet --indicator"
|
||||||
spawn-sh-at-startup "sleep 5 && syncthingtray --wait"
|
|
||||||
spawn-sh-at-startup "sleep 5 && swaync"
|
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
|
prefer-no-csd // (Client Side Decorations) ask clients to not add their own decorations
|
||||||
|
|
||||||
hotkey-overlay {
|
hotkey-overlay {
|
||||||
@ -28,11 +25,6 @@ output "eDP-1"{
|
|||||||
transform "normal"
|
transform "normal"
|
||||||
}
|
}
|
||||||
|
|
||||||
workspace "term"
|
|
||||||
workspace "net"
|
|
||||||
workspace "chat"
|
|
||||||
workspace "scratch"
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// INPUTS
|
// INPUTS
|
||||||
//
|
//
|
||||||
@ -41,8 +33,8 @@ input {
|
|||||||
xkb {
|
xkb {
|
||||||
layout "us"
|
layout "us"
|
||||||
}
|
}
|
||||||
repeat-delay 175
|
repeat-delay 225
|
||||||
repeat-rate 50
|
repeat-rate 40
|
||||||
}
|
}
|
||||||
|
|
||||||
touchpad {
|
touchpad {
|
||||||
@ -133,13 +125,13 @@ layout {
|
|||||||
|
|
||||||
// All windows - corner radius, opacity
|
// All windows - corner radius, opacity
|
||||||
window-rule {
|
window-rule {
|
||||||
geometry-corner-radius 14 14 0 14
|
geometry-corner-radius 18 18 18 18
|
||||||
clip-to-geometry true
|
clip-to-geometry true
|
||||||
}
|
}
|
||||||
|
|
||||||
window-rule {
|
window-rule {
|
||||||
match is-active=true
|
match is-active=true
|
||||||
opacity 0.99
|
opacity 1.00
|
||||||
}
|
}
|
||||||
|
|
||||||
window-rule {
|
window-rule {
|
||||||
@ -147,14 +139,6 @@ window-rule {
|
|||||||
opacity 0.92
|
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
|
// Net windows
|
||||||
window-rule {
|
window-rule {
|
||||||
match app-id="firefox"
|
match app-id="firefox"
|
||||||
@ -170,25 +154,6 @@ window-rule {
|
|||||||
|
|
||||||
default-column-width { proportion 0.8; }
|
default-column-width { proportion 0.8; }
|
||||||
block-out-from "screencast"
|
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
|
// File browser
|
||||||
@ -322,20 +287,18 @@ binds {
|
|||||||
Mod+Shift+Page_Down { move-workspace-down; }
|
Mod+Shift+Page_Down { move-workspace-down; }
|
||||||
Mod+Shift+Page_Up { move-workspace-up; }
|
Mod+Shift+Page_Up { move-workspace-up; }
|
||||||
|
|
||||||
Mod+Minus { focus-workspace "scratch"; }
|
Mod+1 { focus-workspace 1; }
|
||||||
Mod+1 { focus-workspace "term"; }
|
Mod+2 { focus-workspace 2; }
|
||||||
Mod+2 { focus-workspace "net"; }
|
Mod+3 { focus-workspace 3; }
|
||||||
Mod+3 { focus-workspace "chat"; }
|
|
||||||
Mod+4 { focus-workspace 4; }
|
Mod+4 { focus-workspace 4; }
|
||||||
Mod+5 { focus-workspace 5; }
|
Mod+5 { focus-workspace 5; }
|
||||||
Mod+6 { focus-workspace 6; }
|
Mod+6 { focus-workspace 6; }
|
||||||
Mod+7 { focus-workspace 7; }
|
Mod+7 { focus-workspace 7; }
|
||||||
Mod+8 { focus-workspace 8; }
|
Mod+8 { focus-workspace 8; }
|
||||||
Mod+9 { focus-workspace 9; }
|
Mod+9 { focus-workspace 9; }
|
||||||
Mod+Shift+Minus { move-column-to-workspace "scratch"; }
|
Mod+Shift+1 { move-column-to-workspace 1; }
|
||||||
Mod+Shift+1 { move-column-to-workspace "term"; }
|
Mod+Shift+2 { move-column-to-workspace 2; }
|
||||||
Mod+Shift+2 { move-column-to-workspace "net"; }
|
Mod+Shift+3 { move-column-to-workspace 3; }
|
||||||
Mod+Shift+3 { move-column-to-workspace "chat"; }
|
|
||||||
Mod+Shift+4 { move-column-to-workspace 4; }
|
Mod+Shift+4 { move-column-to-workspace 4; }
|
||||||
Mod+Shift+5 { move-column-to-workspace 5; }
|
Mod+Shift+5 { move-column-to-workspace 5; }
|
||||||
Mod+Shift+6 { move-column-to-workspace 6; }
|
Mod+Shift+6 { move-column-to-workspace 6; }
|
||||||
|
|||||||
@ -9,6 +9,7 @@
|
|||||||
../../../shared/modules/apps/firefox/firefox.nix
|
../../../shared/modules/apps/firefox/firefox.nix
|
||||||
../../../shared/modules/apps/helix.nix
|
../../../shared/modules/apps/helix.nix
|
||||||
../../../shared/modules/home-manager/git-autosync.nix
|
../../../shared/modules/home-manager/git-autosync.nix
|
||||||
|
../../../shared/modules/home-manager/noctalia.nix
|
||||||
../niri/niri_home.nix
|
../niri/niri_home.nix
|
||||||
./programs.nix
|
./programs.nix
|
||||||
];
|
];
|
||||||
@ -31,22 +32,19 @@
|
|||||||
homePackages = [ ];
|
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
|
# Additional user packages
|
||||||
# Note: Programs with Stylix theming are in programs.nix
|
# Note: Programs with Stylix theming are in programs.nix
|
||||||
home.packages = with pkgs; [
|
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
|
# Gaming
|
||||||
#
|
#
|
||||||
@ -58,18 +56,9 @@
|
|||||||
#
|
#
|
||||||
# Unix tools
|
# Unix tools
|
||||||
#
|
#
|
||||||
duf
|
|
||||||
dust
|
|
||||||
fd
|
|
||||||
lsd
|
lsd
|
||||||
ripgrep
|
|
||||||
tre-command
|
|
||||||
gtop
|
|
||||||
htop
|
htop
|
||||||
neofetch
|
|
||||||
unzip
|
unzip
|
||||||
gnupg
|
|
||||||
pinentry-tty
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Photo / Video
|
# Photo / Video
|
||||||
@ -158,17 +147,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
bash.enable = true;
|
bash.enable = true;
|
||||||
delta = {
|
|
||||||
enable = true;
|
|
||||||
enableGitIntegration = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# enable saving ssh secrets (needed for private repos)
|
# enable saving ssh secrets (needed for private repos)
|
||||||
@ -193,8 +172,6 @@
|
|||||||
# integrate ssh-agent from gnome keyring
|
# integrate ssh-agent from gnome keyring
|
||||||
export SSH_AUTH_SOCK=/run/user/$UID/gcr/ssh
|
export SSH_AUTH_SOCK=/run/user/$UID/gcr/ssh
|
||||||
|
|
||||||
eval "$(direnv hook zsh)"
|
|
||||||
|
|
||||||
yt-audio() {
|
yt-audio() {
|
||||||
nix-shell -p yt-dlp --run "yt-dlp -x $1 --audio-format mp3"
|
nix-shell -p yt-dlp --run "yt-dlp -x $1 --audio-format mp3"
|
||||||
}
|
}
|
||||||
@ -205,7 +182,6 @@
|
|||||||
alias llm="lsd --timesort --long"
|
alias llm="lsd --timesort --long"
|
||||||
alias lS="lsd --oneline --classic"
|
alias lS="lsd --oneline --classic"
|
||||||
alias lt="lsd --tree --depth=2"
|
alias lt="lsd --tree --depth=2"
|
||||||
alias grep="rg"
|
|
||||||
alias cat="bat --paging=never"
|
alias cat="bat --paging=never"
|
||||||
alias rm="rm -i"
|
alias rm="rm -i"
|
||||||
'';
|
'';
|
||||||
@ -219,12 +195,13 @@
|
|||||||
|
|
||||||
# Stylix handles Qt and GTK theming
|
# Stylix handles Qt and GTK theming
|
||||||
|
|
||||||
services.wlsunset = {
|
# Noctalia has built-in night light, so wlsunset is disabled via noctalia module
|
||||||
enable = true;
|
# services.wlsunset = {
|
||||||
sunrise = "07:00";
|
# enable = true;
|
||||||
sunset = "17:00";
|
# sunrise = "07:00";
|
||||||
temperature.night = 3500;
|
# sunset = "17:00";
|
||||||
};
|
# temperature.night = 3500;
|
||||||
|
# };
|
||||||
|
|
||||||
services.kdeconnect = {
|
services.kdeconnect = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -234,21 +211,19 @@
|
|||||||
# Enable bluetooth headphone controls
|
# Enable bluetooth headphone controls
|
||||||
services.mpris-proxy.enable = true;
|
services.mpris-proxy.enable = true;
|
||||||
|
|
||||||
# SwayOSD - on-screen display for volume, brightness, caps lock
|
# Noctalia replaces SwayOSD and SwayNC - disabled via noctalia module
|
||||||
services.swayosd = {
|
# services.swayosd = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
topMargin = 0.9;
|
# topMargin = 0.9;
|
||||||
};
|
# };
|
||||||
|
# services.swaync = {
|
||||||
# SwayNC - notification center (Stylix auto-themes this)
|
# enable = true;
|
||||||
services.swaync = {
|
# settings = {
|
||||||
enable = true;
|
# positionX = "center";
|
||||||
settings = {
|
# positionY = "top";
|
||||||
positionX = "center";
|
# notification-window-width = 800;
|
||||||
positionY = "top";
|
# };
|
||||||
notification-window-width = 800;
|
# };
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Git autosync for Documents
|
# Git autosync for Documents
|
||||||
services.git-autosync = {
|
services.git-autosync = {
|
||||||
|
|||||||
@ -71,12 +71,11 @@ in
|
|||||||
# foot is in programs.nix for Stylix theming
|
# foot is in programs.nix for Stylix theming
|
||||||
git
|
git
|
||||||
glib # gsettings
|
glib # gsettings
|
||||||
|
gnome-software # GUI app store for Flatpak
|
||||||
grim
|
grim
|
||||||
kanshi
|
kanshi
|
||||||
libnotify
|
libnotify
|
||||||
lxqt.lxqt-policykit
|
lxqt.lxqt-policykit
|
||||||
man-pages
|
|
||||||
man-pages-posix
|
|
||||||
nautilus
|
nautilus
|
||||||
networkmanagerapplet
|
networkmanagerapplet
|
||||||
nwg-drawer
|
nwg-drawer
|
||||||
@ -109,9 +108,6 @@ in
|
|||||||
LIBVA_DRIVER_NAME = "iHD";
|
LIBVA_DRIVER_NAME = "iHD";
|
||||||
};
|
};
|
||||||
|
|
||||||
# adds additional man pages
|
|
||||||
documentation.dev.enable = true;
|
|
||||||
|
|
||||||
programs.gamemode = {
|
programs.gamemode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
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
|
in
|
||||||
{
|
{
|
||||||
options.power_manager = {
|
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 {
|
settings = mkOption {
|
||||||
type = types.attrs;
|
type = types.attrs;
|
||||||
@ -21,7 +31,7 @@ in
|
|||||||
turbo = "auto";
|
turbo = "auto";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
description = "Auto-cpufreq configuration settings";
|
description = "Auto-cpufreq configuration settings (only used with auto-cpufreq backend)";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableThermald = mkOption {
|
enableThermald = mkOption {
|
||||||
@ -37,27 +47,38 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable (mkMerge [
|
||||||
services.auto-cpufreq = {
|
# Common settings for both backends
|
||||||
enable = true;
|
{
|
||||||
settings = cfg.settings;
|
services.upower.enable = mkIf cfg.enableUpower true;
|
||||||
};
|
services.thermald.enable = mkIf cfg.enableThermald true;
|
||||||
|
powerManagement.enable = true;
|
||||||
|
|
||||||
# Supporting services
|
# Disable TLP regardless of backend (conflicts with both)
|
||||||
services.upower.enable = mkIf cfg.enableUpower true;
|
services.tlp.enable = mkForce false;
|
||||||
services.thermald.enable = mkIf cfg.enableThermald true;
|
powerManagement.powertop.enable = mkForce false;
|
||||||
powerManagement.enable = mkIf cfg.enable true;
|
}
|
||||||
|
|
||||||
# Disable conflicting power management services
|
# auto-cpufreq backend
|
||||||
services.tlp.enable = mkForce false;
|
(mkIf (cfg.backend == "auto-cpufreq") {
|
||||||
services.power-profiles-daemon.enable = mkForce false;
|
services.auto-cpufreq = {
|
||||||
powerManagement.powertop.enable = mkForce false;
|
enable = true;
|
||||||
|
settings = cfg.settings;
|
||||||
# Don't set a static CPU governor (let auto-cpufreq handle it)
|
};
|
||||||
powerManagement.cpuFreqGovernor = mkForce null;
|
|
||||||
};
|
|
||||||
|
|
||||||
# # Warning if flake input is missing when expected
|
# Disable power-profiles-daemon (conflicts with auto-cpufreq)
|
||||||
# warnings = optional (cfg.useFlake && !(inputs ? auto-cpufreq))
|
services.power-profiles-daemon.enable = mkForce false;
|
||||||
# "power_manager: useFlake is enabled but auto-cpufreq flake input not found. Using nixpkgs version instead.";
|
|
||||||
|
# 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;
|
||||||
|
})
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||