diff --git a/flake.lock b/flake.lock index a738c82..fc58c26 100644 --- a/flake.lock +++ b/flake.lock @@ -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" } diff --git a/flake.nix b/flake.nix index 6a9aec3..c989d6a 100644 --- a/flake.nix +++ b/flake.nix @@ -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"; diff --git a/frame12/desktop-configuration.nix b/frame12/desktop-configuration.nix index ee26763..3b7fe15 100644 --- a/frame12/desktop-configuration.nix +++ b/frame12/desktop-configuration.nix @@ -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; diff --git a/frame12/linked-dotfiles/niri/config.kdl b/frame12/linked-dotfiles/niri/config.kdl index b9884ca..3e6e973 100644 --- a/frame12/linked-dotfiles/niri/config.kdl +++ b/frame12/linked-dotfiles/niri/config.kdl @@ -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 diff --git a/frame12/modules/home-manager/home.nix b/frame12/modules/home-manager/home.nix index 0374ffa..c8c0519 100644 --- a/frame12/modules/home-manager/home.nix +++ b/frame12/modules/home-manager/home.nix @@ -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 = { diff --git a/jaci/default.nix b/jaci/default.nix index 46c784e..f66b4fc 100644 --- a/jaci/default.nix +++ b/jaci/default.nix @@ -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"; }; diff --git a/jaci/desktop-configuration.nix b/jaci/desktop-configuration.nix index 8fdfb4f..dcb9c78 100644 --- a/jaci/desktop-configuration.nix +++ b/jaci/desktop-configuration.nix @@ -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; diff --git a/jaci/kiki-plymouth-theme/kiki-loop.mp4 b/jaci/kiki-plymouth-theme/kiki-loop.mp4 new file mode 100644 index 0000000..67e1717 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-loop.mp4 differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/bullet.png b/jaci/kiki-plymouth-theme/kiki-pixel/bullet.png new file mode 100644 index 0000000..5799dda Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/bullet.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/capslock.png b/jaci/kiki-plymouth-theme/kiki-pixel/capslock.png new file mode 100644 index 0000000..9d775f6 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/capslock.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/entry.png b/jaci/kiki-plymouth-theme/kiki-pixel/entry.png new file mode 100644 index 0000000..4a22e7f Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/entry.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/keyboard.png b/jaci/kiki-plymouth-theme/kiki-pixel/keyboard.png new file mode 100644 index 0000000..f532ad0 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/keyboard.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/keymap-render.png b/jaci/kiki-plymouth-theme/kiki-pixel/keymap-render.png new file mode 100644 index 0000000..4aaed5a Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/keymap-render.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.plymouth b/jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.plymouth new file mode 100644 index 0000000..4d0c7cd --- /dev/null +++ b/jaci/kiki-plymouth-theme/kiki-pixel/kiki-pixel.plymouth @@ -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 diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/lock.png b/jaci/kiki-plymouth-theme/kiki-pixel/lock.png new file mode 100644 index 0000000..c1538df Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/lock.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0001.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0001.png new file mode 100644 index 0000000..0c5b3a2 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0001.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0002.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0002.png new file mode 100644 index 0000000..63c2e89 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0002.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0003.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0003.png new file mode 100644 index 0000000..1832b49 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0003.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0004.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0004.png new file mode 100644 index 0000000..c25f83a Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0004.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0005.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0005.png new file mode 100644 index 0000000..77cff85 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0005.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0006.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0006.png new file mode 100644 index 0000000..ebba90c Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0006.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0007.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0007.png new file mode 100644 index 0000000..88d1e3a Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0007.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0008.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0008.png new file mode 100644 index 0000000..c78d72a Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0008.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0009.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0009.png new file mode 100644 index 0000000..53767ee Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0009.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0010.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0010.png new file mode 100644 index 0000000..5e26cff Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0010.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0011.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0011.png new file mode 100644 index 0000000..a8fb9c2 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0011.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0012.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0012.png new file mode 100644 index 0000000..670aeaa Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0012.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0013.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0013.png new file mode 100644 index 0000000..4890688 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0013.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0014.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0014.png new file mode 100644 index 0000000..bf9c962 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0014.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0015.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0015.png new file mode 100644 index 0000000..4c713d4 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0015.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0016.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0016.png new file mode 100644 index 0000000..d4d5f85 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0016.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0017.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0017.png new file mode 100644 index 0000000..4d520dc Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0017.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0018.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0018.png new file mode 100644 index 0000000..56e7c95 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0018.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0019.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0019.png new file mode 100644 index 0000000..26dde14 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0019.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0020.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0020.png new file mode 100644 index 0000000..9eac34f Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0020.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0021.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0021.png new file mode 100644 index 0000000..5073b05 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0021.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0022.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0022.png new file mode 100644 index 0000000..fc1d303 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0022.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0023.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0023.png new file mode 100644 index 0000000..ea2457f Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0023.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0024.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0024.png new file mode 100644 index 0000000..bd61697 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0024.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0025.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0025.png new file mode 100644 index 0000000..fa394f0 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0025.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0026.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0026.png new file mode 100644 index 0000000..b6fa0a6 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0026.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0027.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0027.png new file mode 100644 index 0000000..dd4c07b Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0027.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0028.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0028.png new file mode 100644 index 0000000..79aa8f1 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0028.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0029.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0029.png new file mode 100644 index 0000000..bdb2754 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0029.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0030.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0030.png new file mode 100644 index 0000000..7a3e271 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0030.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0031.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0031.png new file mode 100644 index 0000000..a5a5bc0 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0031.png differ diff --git a/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0032.png b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0032.png new file mode 100644 index 0000000..284d435 Binary files /dev/null and b/jaci/kiki-plymouth-theme/kiki-pixel/throbber-0032.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0001.png b/jaci/kiki-plymouth-theme/kiki/throbber-0001.png index bc49b58..2bb5680 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0001.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0001.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0002.png b/jaci/kiki-plymouth-theme/kiki/throbber-0002.png index bc49b58..2bb5680 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0002.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0002.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0003.png b/jaci/kiki-plymouth-theme/kiki/throbber-0003.png index bc49b58..e15a524 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0003.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0003.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0004.png b/jaci/kiki-plymouth-theme/kiki/throbber-0004.png index bc49b58..e15a524 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0004.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0004.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0005.png b/jaci/kiki-plymouth-theme/kiki/throbber-0005.png index 07ca18e..5c22013 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0005.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0005.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0006.png b/jaci/kiki-plymouth-theme/kiki/throbber-0006.png index 07ca18e..5c22013 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0006.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0006.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0007.png b/jaci/kiki-plymouth-theme/kiki/throbber-0007.png index 07ca18e..65a3d4b 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0007.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0007.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0008.png b/jaci/kiki-plymouth-theme/kiki/throbber-0008.png index 07ca18e..65a3d4b 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0008.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0008.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0009.png b/jaci/kiki-plymouth-theme/kiki/throbber-0009.png index b9e2f3d..3f26da4 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0009.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0009.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0010.png b/jaci/kiki-plymouth-theme/kiki/throbber-0010.png index b9e2f3d..3f26da4 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0010.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0010.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0011.png b/jaci/kiki-plymouth-theme/kiki/throbber-0011.png index b9e2f3d..410b282 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0011.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0011.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0012.png b/jaci/kiki-plymouth-theme/kiki/throbber-0012.png index b9e2f3d..410b282 100644 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0012.png and b/jaci/kiki-plymouth-theme/kiki/throbber-0012.png differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0013.png b/jaci/kiki-plymouth-theme/kiki/throbber-0013.png deleted file mode 100644 index 04f38cb..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0013.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0014.png b/jaci/kiki-plymouth-theme/kiki/throbber-0014.png deleted file mode 100644 index 04f38cb..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0014.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0015.png b/jaci/kiki-plymouth-theme/kiki/throbber-0015.png deleted file mode 100644 index 04f38cb..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0015.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0016.png b/jaci/kiki-plymouth-theme/kiki/throbber-0016.png deleted file mode 100644 index 04f38cb..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0016.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0017.png b/jaci/kiki-plymouth-theme/kiki/throbber-0017.png deleted file mode 100644 index f76600d..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0017.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0018.png b/jaci/kiki-plymouth-theme/kiki/throbber-0018.png deleted file mode 100644 index f76600d..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0018.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0019.png b/jaci/kiki-plymouth-theme/kiki/throbber-0019.png deleted file mode 100644 index f76600d..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0019.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0020.png b/jaci/kiki-plymouth-theme/kiki/throbber-0020.png deleted file mode 100644 index f76600d..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0020.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0021.png b/jaci/kiki-plymouth-theme/kiki/throbber-0021.png deleted file mode 100644 index 4d29670..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0021.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0022.png b/jaci/kiki-plymouth-theme/kiki/throbber-0022.png deleted file mode 100644 index 4d29670..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0022.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0023.png b/jaci/kiki-plymouth-theme/kiki/throbber-0023.png deleted file mode 100644 index 4d29670..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0023.png and /dev/null differ diff --git a/jaci/kiki-plymouth-theme/kiki/throbber-0024.png b/jaci/kiki-plymouth-theme/kiki/throbber-0024.png deleted file mode 100644 index 4d29670..0000000 Binary files a/jaci/kiki-plymouth-theme/kiki/throbber-0024.png and /dev/null differ diff --git a/jaci/linked-dotfiles/niri/config.kdl b/jaci/linked-dotfiles/niri/config.kdl index 0ae0a65..de8ba23 100644 --- a/jaci/linked-dotfiles/niri/config.kdl +++ b/jaci/linked-dotfiles/niri/config.kdl @@ -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; } diff --git a/jaci/modules/home-manager/home.nix b/jaci/modules/home-manager/home.nix index fa9425c..f21ed8e 100644 --- a/jaci/modules/home-manager/home.nix +++ b/jaci/modules/home-manager/home.nix @@ -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 = { diff --git a/jaci/modules/niri/niri_conf.nix b/jaci/modules/niri/niri_conf.nix index 90e4c65..67235e7 100644 --- a/jaci/modules/niri/niri_conf.nix +++ b/jaci/modules/niri/niri_conf.nix @@ -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 = { diff --git a/nate-work/dotfiles/sway/background.pid b/nate-work/dotfiles/sway/background.pid deleted file mode 100644 index 219ef67..0000000 --- a/nate-work/dotfiles/sway/background.pid +++ /dev/null @@ -1 +0,0 @@ -7376 diff --git a/nate-work/dotfiles/sway/scripts/background.pid b/nate-work/dotfiles/sway/scripts/background.pid deleted file mode 100644 index d464190..0000000 --- a/nate-work/dotfiles/sway/scripts/background.pid +++ /dev/null @@ -1 +0,0 @@ -4639 diff --git a/nate-work/dotfiles/sway/scripts/background.sh b/nate-work/dotfiles/sway/scripts/background.sh deleted file mode 100755 index e5dbf5b..0000000 --- a/nate-work/dotfiles/sway/scripts/background.sh +++ /dev/null @@ -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 diff --git a/nate/dotfiles/sway/background.pid b/nate/dotfiles/sway/background.pid deleted file mode 100644 index 219ef67..0000000 --- a/nate/dotfiles/sway/background.pid +++ /dev/null @@ -1 +0,0 @@ -7376 diff --git a/nate/dotfiles/sway/scripts/background.pid b/nate/dotfiles/sway/scripts/background.pid deleted file mode 100644 index d464190..0000000 --- a/nate/dotfiles/sway/scripts/background.pid +++ /dev/null @@ -1 +0,0 @@ -4639 diff --git a/nate/dotfiles/sway/scripts/background.sh b/nate/dotfiles/sway/scripts/background.sh deleted file mode 100755 index e5dbf5b..0000000 --- a/nate/dotfiles/sway/scripts/background.sh +++ /dev/null @@ -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 diff --git a/scrappy/dotfiles/sway/background.pid b/scrappy/dotfiles/sway/background.pid deleted file mode 100644 index 219ef67..0000000 --- a/scrappy/dotfiles/sway/background.pid +++ /dev/null @@ -1 +0,0 @@ -7376 diff --git a/scrappy/dotfiles/sway/scripts/background.pid b/scrappy/dotfiles/sway/scripts/background.pid deleted file mode 100644 index d464190..0000000 --- a/scrappy/dotfiles/sway/scripts/background.pid +++ /dev/null @@ -1 +0,0 @@ -4639 diff --git a/scrappy/dotfiles/sway/scripts/background.sh b/scrappy/dotfiles/sway/scripts/background.sh deleted file mode 100755 index e5dbf5b..0000000 --- a/scrappy/dotfiles/sway/scripts/background.sh +++ /dev/null @@ -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 diff --git a/shared/modules/home-manager/noctalia.nix b/shared/modules/home-manager/noctalia.nix new file mode 100644 index 0000000..2bf5413 --- /dev/null +++ b/shared/modules/home-manager/noctalia.nix @@ -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; + }; +} diff --git a/shared/modules/system/noctalia-system.nix b/shared/modules/system/noctalia-system.nix new file mode 100644 index 0000000..38a027a --- /dev/null +++ b/shared/modules/system/noctalia-system.nix @@ -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; + }; +} diff --git a/shared/modules/system/power_manager.nix b/shared/modules/system/power_manager.nix index 4e6ad91..880b91b 100644 --- a/shared/modules/system/power_manager.nix +++ b/shared/modules/system/power_manager.nix @@ -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; + }) + ]); }