summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.lock68
-rw-r--r--flake.nix3
-rw-r--r--home/apps/caelestia/default.nix21
-rw-r--r--home/apps/caelestia/scheme.nix86
-rw-r--r--home/apps/caelestia/settings.nix209
-rw-r--r--home/apps/default.nix1
-rw-r--r--hosts/shinji/default.nix3
-rw-r--r--options.nix15
-rw-r--r--themes/catppuccin/mocha.nix2
9 files changed, 405 insertions, 3 deletions
diff --git a/flake.lock b/flake.lock
index c67053a..f9913ce 100644
--- a/flake.lock
+++ b/flake.lock
@@ -81,6 +81,52 @@
"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": 1767929302,
+ "narHash": "sha256-9MT0aoVnobXkEuPn2ZCB2Coo/VUOv3wF1qcFfwgFfmY=",
+ "ref": "refs/heads/main",
+ "rev": "87ad3ab86a3e1e9d7e2a507dd829289a1074d000",
+ "revCount": 1725,
+ "type": "git",
+ "url": "https://g.freya.cat/caelestia-shell"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://g.freya.cat/caelestia-shell"
+ }
+ },
"flake-compat": {
"flake": false,
"locked": {
@@ -744,10 +790,32 @@
"type": "github"
}
},
+ "quickshell": {
+ "inputs": {
+ "nixpkgs": [
+ "caelestia-shell",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1766725085,
+ "narHash": "sha256-O2aMFdDUYJazFrlwL7aSIHbUSEm3ADVZjmf41uBJfHs=",
+ "ref": "refs/heads/master",
+ "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff",
+ "revCount": 715,
+ "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",
diff --git a/flake.nix b/flake.nix
index b8555cd..e4a319b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -47,6 +47,9 @@
# nix-mineral
nix-mineral.url = "github:cynicsketch/nix-mineral";
nix-mineral.inputs.nixpkgs.follows = "nixpkgs";
+ # caelestia-shell
+ caelestia-shell.url = "git+https://g.freya.cat/caelestia-shell";
+ caelestia-shell.inputs.nixpkgs.follows = "nixpkgs";
};
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..35ecf9b
--- /dev/null
+++ b/home/apps/caelestia/settings.nix
@@ -0,0 +1,209 @@
+{config, ...}: {
+ programs.caelestia = {
+ settings = {
+ # Look
+ appearance = {
+ # Animations
+ anim = {
+ durations = {
+ scale = 1;
+ };
+ };
+
+ # Font
+ font = {
+ size.scale = 1;
+ };
+
+ # Padding
+ padding.scale = 1;
+ rounding.scale = 1;
+ spacing.scale = 1;
+ 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 = 25;
+ thickness = 10;
+ };
+ 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/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/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;