diff options
| -rw-r--r-- | flake.lock | 116 | ||||
| -rw-r--r-- | flake.nix | 11 | ||||
| -rw-r--r-- | home/apps/caelestia/default.nix | 21 | ||||
| -rw-r--r-- | home/apps/caelestia/scheme.nix | 86 | ||||
| -rw-r--r-- | home/apps/caelestia/settings.nix | 248 | ||||
| -rw-r--r-- | home/apps/default.nix | 1 | ||||
| -rw-r--r-- | home/desktops/hyprland/idle.nix | 2 | ||||
| -rw-r--r-- | home/desktops/hyprland/wallpaper.nix | 2 | ||||
| -rw-r--r-- | hosts/shinji/default.nix | 3 | ||||
| -rw-r--r-- | options.nix | 15 | ||||
| -rw-r--r-- | system/battery.nix | 19 | ||||
| -rw-r--r-- | themes/catppuccin/mocha.nix | 2 |
12 files changed, 480 insertions, 46 deletions
@@ -81,6 +81,54 @@ "type": "github" } }, + "caelestia-cli": { + "inputs": { + "caelestia-shell": [ + "caelestia-shell" + ], + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767905196, + "narHash": "sha256-72Z9vz1dq9FtLc7rjU9GwErUNmKZd6ZBIX1tUznwq7U=", + "ref": "refs/heads/main", + "rev": "8056a87db5c2f6a8df23f2b6b1867471e2b8995d", + "revCount": 419, + "type": "git", + "url": "https://g.freya.cat/caelestia-cli" + }, + "original": { + "type": "git", + "url": "https://g.freya.cat/caelestia-cli" + } + }, + "caelestia-shell": { + "inputs": { + "caelestia-cli": "caelestia-cli", + "nixpkgs": [ + "nixpkgs" + ], + "quickshell": [ + "quickshell" + ] + }, + "locked": { + "lastModified": 1768085951, + "narHash": "sha256-8vITVtfLvl99AR5q2UWK5hUVb6N2UZ/9ccMDlzowIXw=", + "ref": "refs/heads/main", + "rev": "284a4f8cc8657385152c3e58eb6665e066760468", + "revCount": 1730, + "type": "git", + "url": "https://g.freya.cat/caelestia-shell" + }, + "original": { + "type": "git", + "url": "https://g.freya.cat/caelestia-shell" + } + }, "flake-compat": { "flake": false, "locked": { @@ -210,11 +258,11 @@ ] }, "locked": { - "lastModified": 1767619743, - "narHash": "sha256-N0kK1JqxIjFl7hPAfhkW6C9AO7feYJUWLPyqJO2VuQQ=", + "lastModified": 1767971841, + "narHash": "sha256-TwDXF4MkmjI9c3Sly9FOWXf4sPbre6ZujG87v39G1Ig=", "owner": "nix-community", "repo": "home-manager", - "rev": "a65c04965c841eb01ba401f5162f12bc8d52014f", + "rev": "0e4217b2c4827e71e2e612accccb01981c16afda", "type": "github" }, "original": { @@ -231,16 +279,16 @@ ] }, "locked": { - "lastModified": 1766381032, - "narHash": "sha256-Wuk2MULnGfgAbP1N/Rp6H6k7zG/ynDiy54mPvkt/4bM=", + "lastModified": 1767957561, + "narHash": "sha256-N0kFdc6tSE0yFeQ/Iit3KNrz4nf2K5xvP3juL7SUyhc=", "owner": "outfoxxed", "repo": "hy3", - "rev": "50643d625829f303239f9ec019021f17d7e9f3fc", + "rev": "3287049e79e9e51431de8c09f9192a18afa1bf35", "type": "github" }, "original": { "owner": "outfoxxed", - "ref": "master", + "ref": "hl0.53.0", "repo": "hy3", "type": "github" } @@ -322,16 +370,16 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1767021696, - "narHash": "sha256-q365S7ePBQStSDPEzssCU14TzRqdKzEdh0+0rR2KDnU=", + "lastModified": 1767388857, + "narHash": "sha256-h70Tlpce8NEkwWqw/DDpeOKPzPyfq7P2t0HtGM5Z3Cw=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "ea444c35bb23b6e34505ab6753e069de7801cc25", + "rev": "ab1d80f3d6aebd57a0971b53a1993b1c1dfe0b09", "type": "github" }, "original": { "owner": "hyprwm", - "ref": "v0.53.0", + "ref": "v0.53.1", "repo": "Hyprland", "type": "github" } @@ -607,11 +655,11 @@ ] }, "locked": { - "lastModified": 1767570455, - "narHash": "sha256-Yw2sx8d41ef79QWvdYP4i4fGNflTlE2zKXSah+AiKIQ=", + "lastModified": 1767736040, + "narHash": "sha256-DMte6hl0SQ/LhSIO578G8iK4RSnrxJAIJoE93sJOtS8=", "owner": "cynicsketch", "repo": "nix-mineral", - "rev": "22ea24a2b82729c118c2235f068d12151aaf5387", + "rev": "39e3f2a8b58cde9e753be800d6c7b6050e84f81e", "type": "github" }, "original": { @@ -659,11 +707,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1767379071, - "narHash": "sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf+Okucw=", + "lastModified": 1767892417, + "narHash": "sha256-dhhvQY67aboBk8b0/u0XB6vwHdgbROZT3fJAjyNh5Ww=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fb7944c166a3b630f177938e478f0378e64ce108", + "rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba", "type": "github" }, "original": { @@ -744,10 +792,31 @@ "type": "github" } }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768080170, + "narHash": "sha256-HYKRNShQe5YnnxLazQajB9JkAPGpVcUt9jQ3KwilITQ=", + "ref": "refs/heads/master", + "rev": "bcc3d4265e8b3ed2b17b801923905b60a3927823", + "revCount": 722, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, "root": { "inputs": { "apple-fonts": "apple-fonts", "astal": "astal", + "caelestia-shell": "caelestia-shell", "home-manager": "home-manager", "hy3": "hy3", "hyprland": "hyprland", @@ -757,6 +826,7 @@ "nixos-wsl": "nixos-wsl", "nixpkgs": "nixpkgs", "preload-ng": "preload-ng", + "quickshell": "quickshell", "rose-pine-hyprcursor": "rose-pine-hyprcursor", "sops-nix": "sops-nix", "talc": "talc", @@ -879,11 +949,11 @@ ] }, "locked": { - "lastModified": 1767499857, - "narHash": "sha256-0zUU/PW09d6oBaR8x8vMHcAhg1MOvo3CwoXgHijzzNE=", + "lastModified": 1767826491, + "narHash": "sha256-WSBENPotD2MIhZwolL6GC9npqgaS5fkM7j07V2i/Ur8=", "owner": "Mic92", "repo": "sops-nix", - "rev": "ecc41505948ec2ab0325f14c9862a4329c2b4190", + "rev": "ea3adcb6d2a000d9a69d0e23cad1f2cacb3a9fbe", "type": "github" }, "original": { @@ -1042,11 +1112,11 @@ ] }, "locked": { - "lastModified": 1767568852, - "narHash": "sha256-6s8hL3YX9zAq2T7qvcwwzaEVwc9MEYbW+C2LcAAQfbk=", + "lastModified": 1767763594, + "narHash": "sha256-5ysv8EuVAgDoYmNuXEUNf7vBzdeRaFxeIlIndv5HMvs=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "350c729b261e6f5529460140a5f0943dd4c5e156", + "rev": "8b2302d8c10369c9135552cc892da75cff5ddb03", "type": "github" }, "original": { @@ -8,13 +8,13 @@ home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; # hyprland - hyprland.url = "github:hyprwm/Hyprland/v0.53.0"; + hyprland.url = "github:hyprwm/Hyprland/v0.53.1"; hyprland.inputs.nixpkgs.follows = "nixpkgs"; # hyprland plugins hyprland-plugins.url = "github:hyprwm/hyprland-plugins/v0.53.0"; hyprland-plugins.inputs.hyprland.follows = "hyprland"; # hyprland hy3 - hy3.url = "github:outfoxxed/hy3/master"; + hy3.url = "github:outfoxxed/hy3/hl0.53.0"; hy3.inputs.hyprland.follows = "hyprland"; # sops sops-nix.url = "github:Mic92/sops-nix"; @@ -47,6 +47,13 @@ # nix-mineral nix-mineral.url = "github:cynicsketch/nix-mineral"; nix-mineral.inputs.nixpkgs.follows = "nixpkgs"; + # quickshell + quickshell.url = "git+https://git.outfoxxed.me/outfoxxed/quickshell"; + quickshell.inputs.nixpkgs.follows = "nixpkgs"; + # caelestia-shell + caelestia-shell.url = "git+https://g.freya.cat/caelestia-shell"; + caelestia-shell.inputs.nixpkgs.follows = "nixpkgs"; + caelestia-shell.inputs.quickshell.follows = "quickshell"; }; outputs = { diff --git a/home/apps/caelestia/default.nix b/home/apps/caelestia/default.nix new file mode 100644 index 0000000..4693f67 --- /dev/null +++ b/home/apps/caelestia/default.nix @@ -0,0 +1,21 @@ +{ + lib, + inputs, + ... +}: let +in { + imports = [ + inputs.caelestia-shell.homeManagerModules.default + ./settings.nix + ./scheme.nix + ]; + + default.appLauncher = lib.mkOverride 600 "caelestia-shell ipc call drawers toggle launcher"; + default.lockScreen = lib.mkOverride 600 "caelestia-shell ipc call lock lock"; + + programs.caelestia = { + enable = true; + systemd.enable = true; + cli.enable = true; + }; +} diff --git a/home/apps/caelestia/scheme.nix b/home/apps/caelestia/scheme.nix new file mode 100644 index 0000000..ffb46c6 --- /dev/null +++ b/home/apps/caelestia/scheme.nix @@ -0,0 +1,86 @@ +{ + lib, + config, + ... +}: let + theme = config.theme.colors; +in { + xdg.configFile."caelestia/scheme.json".text = lib.generators.toJSON {} { + name = theme.name; + flavour = ""; + mode = "dark"; + variant = ""; + colours = { + primary_paletteKeyColor = theme.primary; + secondary_paletteKeyColor = theme.secondary; + tertiary_paletteKeyColor = theme.tertiary; + neutral_paletteKeyColor = theme.overlay; + neutral_variant_paletteKeyColor = "777680"; + background = theme.base; + onBackground = theme.text; + surface = theme.surface; + surfaceDim = theme.base; + surfaceBright = theme.overlay; + surfaceContainerLowest = theme.base; + surfaceContainerLow = theme.base; + surfaceContainer = theme.base; + surfaceContainerHigh = theme.surface; + surfaceContainerHighest = theme.overlay; + onSurface = theme.text; + surfaceVariant = theme.text; + onSurfaceVariant = theme.subtext; + inverseSurface = theme.text; + inverseOnSurface = theme.surface; + outline = theme.primary; + outlineVariant = theme.primary; + shadow = "000000"; + scrim = "000000"; + surfaceTint = theme.primary; + primary = theme.primary; + onPrimary = theme.surface; + primaryContainer = theme.primary; + onPrimaryContainer = theme.surface; + inversePrimary = theme.surface; + secondary = theme.secondary; + onSecondary = theme.surface; + secondaryContainer = theme.secondary; + onSecondaryContainer = theme.surface; + tertiary = theme.tertiary; + onTertiary = theme.surface; + tertiaryContainer = theme.tertiary; + onTertiaryContainer = theme.surface; + error = theme.error; + onError = theme.text; + errorContainer = theme.error; + onErrorContainer = theme.text; + primaryFixed = theme.primary; + primaryFixedDim = theme.primary; + onPrimaryFixed = theme.primary; + onPrimaryFixedVariant = theme.primary; + secondaryFixed = theme.secondary; + secondaryFixedDim = theme.primary; + onSecondaryFixed = theme.secondary; + onSecondaryFixedVariant = theme.secondary; + tertiaryFixed = theme.tertiary; + tertiaryFixedDim = theme.tertiary; + onTertiaryFixed = theme.tertiary; + onTertiaryFixedVariant = theme.tertiary; + term0 = theme.normal.black; + term1 = theme.normal.red; + term2 = theme.normal.green; + term3 = theme.normal.yellow; + term4 = theme.normal.blue; + term5 = theme.normal.magenta; + term6 = theme.normal.cyan; + term7 = theme.normal.white; + term8 = theme.bright.black; + term9 = theme.bright.red; + term10 = theme.bright.green; + term11 = theme.bright.yellow; + term12 = theme.bright.blue; + term13 = theme.bright.magenta; + term14 = theme.bright.cyan; + term15 = theme.bright.white; + }; + }; +} diff --git a/home/apps/caelestia/settings.nix b/home/apps/caelestia/settings.nix new file mode 100644 index 0000000..b30dfa6 --- /dev/null +++ b/home/apps/caelestia/settings.nix @@ -0,0 +1,248 @@ +{config, ...}: { + programs.caelestia = { + settings = { + # Look + appearance = rec { + # Rounding + rounding = let + inner = config.theme.innerRadius; + outer = config.theme.outerRadius; + in { + small = inner; + normal = outer; + large = outer + outer; + full = 1000; + }; + + # Spacing + spacing = let + diff = 5; + in { + small = padding.small + diff; + smaller = padding.smaller + diff; + normal = padding.normal + diff; + larger = padding.larger + diff; + large = padding.large + diff; + }; + + # Padding + padding = let + inner = config.theme.innerGap; + outer = config.theme.outerGap; + avg = builtins.div (outer + inner) 2; + in { + small = inner; + smaller = avg; + normal = outer; + larger = outer + inner; + large = outer + avg; + }; + + # Fontsize + font.size = let + base = config.theme.font.size; + in { + small = base - 2; + smaller = base - 1; + normal = base; + larger = base + 2; + large = base + 5; + extraLarge = base + 15; + }; + + # Animations + anim = { + durations = { + scale = 1; + }; + }; + + # Transparency + transparency = { + enabled = true; + base = config.theme.opacity; + layers = 1; + }; + }; + + # Settings + general = { + # What apps to launch + apps = { + terminal = config.default.terminal; + audio = ["pavucontrol"]; + playback = ["mpv"]; + }; + + # I need this, am bad at plugging in le juicer + battery = { + warnLevels = [ + { + level = 20; + title = "Low battery"; + message = "You might want to plug in a charget"; + icon = "battery_android_frame_2"; + } + { + level = 10; + title = "Did you see the previous message?"; + message = "You should probably plug in a charger <b>now</b>"; + icon = "battery_android_frame_1"; + critical = true; + } + { + level = 5; + title = "Critical battery level"; + message = "PLUG THE CHARGER RIGHT NOW!!"; + icon = "battery_android_alert"; + critical = true; + } + ]; + criticalLevel = 5; + }; + }; + + # Background + background = { + enabled = true; + desktopClock.enabled = false; + }; + paths = { + wallpaper = config.theme.wallpaper; + }; + + # Bar + bar = { + clock.showIcon = true; + dragThreshold = 20; + entries = + map (id: { + inherit id; + enabled = true; + }) [ + "workspaces" + "spacer" + "activeWindow" + "spacer" + "tray" + "clock" + "statusIcons" + "power" + ]; + persistent = true; + popouts = { + activeWindow = true; + statusIcons = true; + tray = true; + }; + scrollActions = { + brightness = true; + workspaces = true; + volume = true; + }; + showOnHover = true; + status = { + showAudio = false; + showBattery = true; + showBluetooth = true; + showKbLayout = false; + showMicrophone = false; + showNetwork = true; + showLockStatus = false; + }; + tray = { + background = false; + compact = false; + iconSubs = []; + recolour = false; + }; + workspaces = { + activeIndicator = true; + activeTrail = false; + perMonitorWorkspaces = true; + showWindows = false; + shown = 9; + label = ""; + occupiedLabel = ""; + activeLabel = ""; + }; + border = { + rounding = config.theme.outerRadius; + thickness = config.theme.outerGap; + }; + dashboard = { + enabled = true; + dragThreshold = 50; + mediaUpdateInterval = 500; + showOnHover = true; + }; + }; + + # Notifications + notifs = { + actionOnClick = true; + clearThreshold = 0.3; + defaultExpireTimeout = 5000; + expandThreshold = 20; + openExpanded = false; + expire = true; + }; + + # On screen display + osd = { + enabled = true; + enableBrightness = true; + enableMicrophone = false; + hideDelay = 2000; + }; + + # Services + services = { + audioIncrement = 0.1; + brightnessIncrement = 0.1; + maxVolume = 1.0; + weatherLocation = "43.15,-77.60"; + useFahrenheit = false; + useTwelveHourClock = false; + }; + + # Logout / shutdown + session = { + dragThreshold = 30; + enabled = true; + vimKeybinds = false; + commands = { + logout = ["loginctl" "terminate-user" ""]; + shutdown = ["systemctl" "poweroff"]; + hibernate = ["systemctl" "hibernate"]; + reboot = ["systemctl" "reboot"]; + }; + }; + + # Sidebar + sidebar = { + dragThreshold = 80; + enabled = true; + }; + + # idk + utilities = { + enabled = true; + maxToasts = 4; + toasts = { + audioInputChanged = true; + audioOutputChanged = true; + capsLockChanged = true; + chargingChanged = true; + configLoaded = true; + dndChanged = true; + gameModeChanged = true; + kbLayoutChanged = true; + numLockChanged = true; + vpnChanged = true; + nowPlaying = false; + }; + }; + }; + }; +} diff --git a/home/apps/default.nix b/home/apps/default.nix index ebbd605..1823b0d 100644 --- a/home/apps/default.nix +++ b/home/apps/default.nix @@ -1,5 +1,6 @@ _: { imports = [ + ./caelestia ./rofi ./waybar ./wofi diff --git a/home/desktops/hyprland/idle.nix b/home/desktops/hyprland/idle.nix index 0a2b951..fbdf0db 100644 --- a/home/desktops/hyprland/idle.nix +++ b/home/desktops/hyprland/idle.nix @@ -1,6 +1,6 @@ {config, ...}: { services.hypridle = { - enable = config.desktops.hyprland.enable; + enable = config.desktops.hyprland.enable && !config.apps.caelestia.enable; systemdTarget = "hyprland-session.target"; settings = { diff --git a/home/desktops/hyprland/wallpaper.nix b/home/desktops/hyprland/wallpaper.nix index 0a404f5..33fdec5 100644 --- a/home/desktops/hyprland/wallpaper.nix +++ b/home/desktops/hyprland/wallpaper.nix @@ -1,6 +1,6 @@ {config, ...}: { services.hyprpaper = { - enable = config.desktops.hyprland.enable; + enable = config.desktops.hyprland.enable && !config.apps.caelestia.enable; settings = { wallpaper = { diff --git a/hosts/shinji/default.nix b/hosts/shinji/default.nix index c40aba7..65222e6 100644 --- a/hosts/shinji/default.nix +++ b/hosts/shinji/default.nix @@ -68,9 +68,8 @@ # modules apps = { - astal.enable = true; + caelestia.enable = true; rofi.enable = true; - hyprlock.enable = true; kitty.enable = true; }; browsers = { diff --git a/options.nix b/options.nix index a1fce0e..d7ee564 100644 --- a/options.nix +++ b/options.nix @@ -71,7 +71,7 @@ with lib; let # theme color options - colorOpts = _: { + colorOpts = self: { options = { name = mkOption { type = types.str; @@ -113,6 +113,18 @@ with lib; let description = "Primary accent color"; }; + secondary = mkOption { + type = types.str; + description = "Secondary accent color"; + default = self.primary; + }; + + tertiary = mkOption { + type = types.str; + description = "tertiary accent color"; + default = self.secondary; + }; + success = mkOption { type = types.str; description = "Success color"; @@ -467,6 +479,7 @@ in { waybar.enable = mkEnableOption "Enable the waybar bar."; wofi.enable = mkEnableOption "Enable the wofi launcher."; rofi.enable = mkEnableOption "Enable the rofi launcher."; + caelestia.enable = mkEnableOption "Enable the caelestia service."; }; # diff --git a/system/battery.nix b/system/battery.nix index 42ee269..a904051 100644 --- a/system/battery.nix +++ b/system/battery.nix @@ -9,7 +9,7 @@ in { config = mkIf config.battery { # power monterting services.upower = { - enable = !config.minimal; + enable = true; percentageLow = 20; percentageCritical = 10; percentageAction = 4; @@ -17,21 +17,8 @@ in { }; # power profiles - services.tlp = { - enable = !config.minimal; - settings = { - CPU_SCALING_GOVERNOR_ON_AC = "performance"; - CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; - - CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; - CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; - - CPU_MIN_PERF_ON_AC = 0; - CPU_MAX_PERF_ON_AC = 100; - CPU_MIN_PERF_ON_BAT = 0; - CPU_MAX_PERF_ON_BAT = 20; - }; - }; + services.power-profiles-daemon.enable = true; + #services.tlp.enable = true; # packages environment.systemPackages = with pkgs; [ diff --git a/themes/catppuccin/mocha.nix b/themes/catppuccin/mocha.nix index 2abcebb..57ef7e8 100644 --- a/themes/catppuccin/mocha.nix +++ b/themes/catppuccin/mocha.nix @@ -10,6 +10,8 @@ rec { overlay = "6c7086"; primary = normal.blue; + secondary = subtext; + tertiary = normal.pink; success = normal.green; warning = normal.yellow; error = normal.red; |