From b6efd4d27b0bd27d81aac15c8954d5f2eeabd3d4 Mon Sep 17 00:00:00 2001 From: Miguel Palhas Date: Tue, 17 Feb 2026 11:28:12 +0000 Subject: [PATCH] noctalia with fingerprint lock screen --- .claude/settings.local.json | 4 +- flake.lock | 158 ++--- flake.nix | 6 +- home/common/programs/claude/default.nix | 17 +- home/common/programs/desktop/darkman.nix | 18 +- home/common/programs/desktop/default.nix | 30 +- home/common/programs/desktop/spicetify.nix | 17 + home/common/programs/dev.nix | 16 - home/common/programs/hyprland/cursor.nix | 4 +- home/common/programs/hyprland/default.nix | 32 +- .../programs/hyprland/noctalia/default.nix | 35 + .../programs/hyprland/noctalia/settings.json | 631 ++++++++++++++++++ home/common/programs/hyprland/quickshell.nix | 11 - .../programs/hyprland/quickshell/Bar.qml | 94 --- .../hyprland/quickshell/ClockWidget.qml | 20 - .../programs/hyprland/quickshell/SysTray.qml | 47 -- .../programs/hyprland/quickshell/Time.qml | 15 - .../hyprland/quickshell/Workspaces.qml | 41 -- .../programs/hyprland/quickshell/shell.qml | 5 - home/common/programs/hyprland/walker.nix | 13 - home/common/programs/hyprland/wallpapers.nix | 107 +-- home/common/programs/kitty/default.nix | 4 +- hosts/arrakis/default.nix | 2 + 23 files changed, 849 insertions(+), 478 deletions(-) create mode 100644 home/common/programs/desktop/spicetify.nix create mode 100644 home/common/programs/hyprland/noctalia/default.nix create mode 100644 home/common/programs/hyprland/noctalia/settings.json delete mode 100644 home/common/programs/hyprland/quickshell.nix delete mode 100644 home/common/programs/hyprland/quickshell/Bar.qml delete mode 100644 home/common/programs/hyprland/quickshell/ClockWidget.qml delete mode 100644 home/common/programs/hyprland/quickshell/SysTray.qml delete mode 100644 home/common/programs/hyprland/quickshell/Time.qml delete mode 100644 home/common/programs/hyprland/quickshell/Workspaces.qml delete mode 100644 home/common/programs/hyprland/quickshell/shell.qml delete mode 100644 home/common/programs/hyprland/walker.nix diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 8bef185..c42b040 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -30,7 +30,9 @@ "Bash(darkman get:*)", "Bash(dconf read:*)", "Bash(journalctl:*)", - "Bash(hyprctl:*)" + "Bash(hyprctl:*)", + "WebFetch(domain:docs.noctalia.dev)", + "WebFetch(domain:gerg-l.github.io)" ] }, "sandbox": { diff --git a/flake.lock b/flake.lock index 01b8ff7..84dd61a 100644 --- a/flake.lock +++ b/flake.lock @@ -68,31 +68,6 @@ "type": "github" } }, - "elephant": { - "inputs": { - "nixpkgs": [ - "walker", - "nixpkgs" - ], - "systems": [ - "walker", - "systems" - ] - }, - "locked": { - "lastModified": 1768551400, - "narHash": "sha256-mlHlHW8qLcHm42J1M34HLXLW+Rw8jsLkLdjSvIYlhjw=", - "owner": "abenz1267", - "repo": "elephant", - "rev": "f230c43ae94231c2db754f84a4f31cf76721a28a", - "type": "github" - }, - "original": { - "owner": "abenz1267", - "repo": "elephant", - "type": "github" - } - }, "ethui": { "inputs": { "nixpkgs": "nixpkgs_2", @@ -872,11 +847,11 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1768564909, - "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=", + "lastModified": 1770197578, + "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f", + "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", "type": "github" }, "original": { @@ -906,6 +881,26 @@ "type": "github" } }, + "noctalia": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1771269759, + "narHash": "sha256-OcSMUdOxKeCCNV+gOgZWP+BOGedi3QxxGNIbQQQsEFk=", + "owner": "noctalia-dev", + "repo": "noctalia-shell", + "rev": "c33db6b999a884000e33ec2d018ef9de394bf42a", + "type": "github" + }, + "original": { + "owner": "noctalia-dev", + "repo": "noctalia-shell", + "type": "github" + } + }, "nvchad-starter": { "flake": false, "locked": { @@ -969,26 +964,6 @@ "type": "github" } }, - "quickshell": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1770693276, - "narHash": "sha256-ngXnN5YXu+f45+QGYNN/VEBMQmcBCYGRCqwaK8cxY1s=", - "ref": "refs/heads/master", - "rev": "dacfa9de829ac7cb173825f593236bf2c21f637e", - "revCount": 735, - "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" - }, - "original": { - "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" - } - }, "root": { "inputs": { "claude-code": "claude-code", @@ -1002,13 +977,13 @@ "nix-colors": "nix-colors", "nixpkgs": "nixpkgs_6", "nixvim": "nixvim", + "noctalia": "noctalia", "nvchad-starter": "nvchad-starter", "nvchad4nix": "nvchad4nix", - "quickshell": "quickshell", "rose-pine-hyprcursor": "rose-pine-hyprcursor", - "systems": "systems_9", + "spicetify-nix": "spicetify-nix", + "systems": "systems_10", "utils": "utils_3", - "walker": "walker", "zen-browser": "zen-browser" } }, @@ -1050,6 +1025,25 @@ "type": "github" } }, + "spicetify-nix": { + "inputs": { + "nixpkgs": "nixpkgs_9", + "systems": "systems_9" + }, + "locked": { + "lastModified": 1771268051, + "narHash": "sha256-nGqPcngnezoT+/xAvw3UDjwdKP2MC4fO315A/Otb9eE=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "b930de84c561f62a0c39a6a57c2ab553a97e8495", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -1066,21 +1060,6 @@ } }, "systems_10": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_11": { "locked": { "lastModified": 1689347949, "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", @@ -1095,6 +1074,21 @@ "type": "github" } }, + "systems_11": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "systems_2": { "locked": { "lastModified": 1681028828, @@ -1202,16 +1196,16 @@ }, "systems_9": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, @@ -1253,7 +1247,7 @@ }, "utils_3": { "inputs": { - "systems": "systems_10" + "systems": "systems_11" }, "locked": { "lastModified": 1731533236, @@ -1269,26 +1263,6 @@ "type": "github" } }, - "walker": { - "inputs": { - "elephant": "elephant", - "nixpkgs": "nixpkgs_9", - "systems": "systems_11" - }, - "locked": { - "lastModified": 1771062828, - "narHash": "sha256-y1jBFFO0u+V21y3YldHZozrDwVJVrdC+o3c4M8/rasU=", - "owner": "abenz1267", - "repo": "walker", - "rev": "19b1104585305e0806b842af341630f72038a4b9", - "type": "github" - }, - "original": { - "owner": "abenz1267", - "repo": "walker", - "type": "github" - } - }, "xdph": { "inputs": { "hyprland-protocols": [ diff --git a/flake.nix b/flake.nix index 392b598..98ca3c7 100644 --- a/flake.nix +++ b/flake.nix @@ -47,11 +47,11 @@ url = "github:KZDKM/Hyprspace"; inputs.hyprland.follows = "hyprland"; }; - quickshell = { - url = "git+https://git.outfoxxed.me/outfoxxed/quickshell"; + noctalia = { + url = "github:noctalia-dev/noctalia-shell"; inputs.nixpkgs.follows = "nixpkgs"; }; - walker.url = "github:abenz1267/walker"; + spicetify-nix.url = "github:Gerg-L/spicetify-nix"; claude-code.url = "github:sadjow/claude-code-nix"; }; diff --git a/home/common/programs/claude/default.nix b/home/common/programs/claude/default.nix index ddcd377..5c7fc80 100644 --- a/home/common/programs/claude/default.nix +++ b/home/common/programs/claude/default.nix @@ -1,9 +1,18 @@ -{ ... }: +{ pkgs, inputs, ... }: { home.file.".default-npm-packages".text = '' @anthropic-ai/claude-code ''; + home.packages = with pkgs; [ + inputs.claude-code.packages.${pkgs.stdenv.hostPlatform.system}.default + + # sandbox + bubblewrap + socat + libseccomp + ]; + # Commands home.file.".claude/commands/merge.md".source = ./commands/merge.md; home.file.".claude/commands/update.md".source = ./commands/update.md; @@ -19,9 +28,11 @@ # Skills: knowledge home.file.".claude/skills/git-master/SKILL.md".source = ./skills/git-master/SKILL.md; - home.file.".claude/skills/planning-with-files/SKILL.md".source = ./skills/planning-with-files/SKILL.md; + home.file.".claude/skills/planning-with-files/SKILL.md".source = + ./skills/planning-with-files/SKILL.md; home.file.".claude/skills/react-patterns/SKILL.md".source = ./skills/react-patterns/SKILL.md; - home.file.".claude/skills/vercel-react-best-practices/SKILL.md".source = ./skills/vercel-react-best-practices/SKILL.md; + home.file.".claude/skills/vercel-react-best-practices/SKILL.md".source = + ./skills/vercel-react-best-practices/SKILL.md; # Skills: workflows home.file.".claude/skills/smart-debug/SKILL.md".source = ./skills/smart-debug/SKILL.md; diff --git a/home/common/programs/desktop/darkman.nix b/home/common/programs/desktop/darkman.nix index 0fe376e..5bfd20d 100644 --- a/home/common/programs/desktop/darkman.nix +++ b/home/common/programs/desktop/darkman.nix @@ -22,11 +22,11 @@ export XCURSOR_THEME="Nordzy-cursors" # Update Hyprland cursor theme - ${pkgs.hyprland}/bin/hyprctl setcursor Nordzy-cursors 42 + ${pkgs.hyprland}/bin/hyprctl setcursor Nordzy-cursors 24 ''; kitty-theme = '' - # Switch all Kitty instances to dark theme - ${pkgs.kitty}/bin/kitten themes --reload-in=all Catppuccin-Mocha + # Reload kitty config to pick up noctalia theme changes + kill -SIGUSR1 $(pidof kitty) 2>/dev/null || true ''; claude-theme = '' # Switch Claude Code to dark theme @@ -35,6 +35,9 @@ ${pkgs.jq}/bin/jq '.theme = "dark"' "$CLAUDE_CONFIG" > "$CLAUDE_CONFIG.tmp" && mv "$CLAUDE_CONFIG.tmp" "$CLAUDE_CONFIG" fi ''; + noctalia-theme = '' + noctalia-shell ipc call darkMode setDark + ''; }; lightModeScripts = { gtk-theme = '' @@ -52,11 +55,11 @@ export XCURSOR_THEME="Nordzy-white" # Update Hyprland cursor theme - ${pkgs.hyprland}/bin/hyprctl setcursor Nordzy-white 42 + ${pkgs.hyprland}/bin/hyprctl setcursor Nordzy-white 24 ''; kitty-theme = '' - # Switch all Kitty instances to light theme - ${pkgs.kitty}/bin/kitten themes --reload-in=all Catppuccin-Latte + # Reload kitty config to pick up noctalia theme changes + kill -SIGUSR1 $(pidof kitty) 2>/dev/null || true ''; claude-theme = '' # Switch Claude Code to light theme @@ -65,6 +68,9 @@ ${pkgs.jq}/bin/jq '.theme = "light"' "$CLAUDE_CONFIG" > "$CLAUDE_CONFIG.tmp" && mv "$CLAUDE_CONFIG.tmp" "$CLAUDE_CONFIG" fi ''; + noctalia-theme = '' + noctalia-shell ipc call darkMode setLight + ''; }; }; diff --git a/home/common/programs/desktop/default.nix b/home/common/programs/desktop/default.nix index f45c6fb..6b44b66 100644 --- a/home/common/programs/desktop/default.nix +++ b/home/common/programs/desktop/default.nix @@ -1,14 +1,13 @@ -{ pkgs, ... }: +{ config, lib, pkgs, ... }: { imports = [ ./darkman.nix + ./spicetify.nix ]; home.packages = with pkgs; [ # various google-chrome - spotify - spicetify-cli thunar obsidian mpv @@ -19,6 +18,8 @@ imv pavucontrol zathura + libsForQt5.qt5ct + kdePackages.qt6ct nwg-look xournalpp jq @@ -66,4 +67,27 @@ package = pkgs.numix-cursor-theme; name = "Numix-Cursor-Light"; }; + + # zathura: include noctalia-generated theme + xdg.configFile."zathura/zathurarc".text = '' + include noctaliarc + ''; + + # gtk: include noctalia-generated css (mkForce to override gtk module) + xdg.configFile."gtk-3.0/gtk.css".text = lib.mkForce '' + @import url("noctalia.css"); + ''; + xdg.configFile."gtk-4.0/gtk.css".text = lib.mkForce '' + @import url("noctalia.css"); + ''; + + # qt: use noctalia color scheme + xdg.configFile."qt5ct/qt5ct.conf".text = '' + [Appearance] + color_scheme_path=${config.home.homeDirectory}/.config/qt5ct/colors/noctalia.conf + ''; + xdg.configFile."qt6ct/qt6ct.conf".text = '' + [Appearance] + color_scheme_path=${config.home.homeDirectory}/.config/qt6ct/colors/noctalia.conf + ''; } diff --git a/home/common/programs/desktop/spicetify.nix b/home/common/programs/desktop/spicetify.nix new file mode 100644 index 0000000..4c83e4f --- /dev/null +++ b/home/common/programs/desktop/spicetify.nix @@ -0,0 +1,17 @@ +{ inputs, pkgs, ... }: +let + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + imports = [ inputs.spicetify-nix.homeManagerModules.default ]; + + programs.spicetify = { + enable = true; + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + shuffle + ]; + theme = spicePkgs.themes.bloom; + }; +} diff --git a/home/common/programs/dev.nix b/home/common/programs/dev.nix index 373f6c0..2180438 100644 --- a/home/common/programs/dev.nix +++ b/home/common/programs/dev.nix @@ -39,29 +39,13 @@ lsof ktlint croc - inputs.claude-code.packages.${pkgs.stdenv.hostPlatform.system}.default opencode # typst typst typstyle - renderdoc - mkcert nss.tools - - # claude sandbox - bubblewrap - socat - libseccomp ]; - - programs.tmux = { - enable = true; - extraConfig = '' - setw -g mouse on - set -s extended-keys on - ''; - }; } diff --git a/home/common/programs/hyprland/cursor.nix b/home/common/programs/hyprland/cursor.nix index edfa2c4..4b66347 100644 --- a/home/common/programs/hyprland/cursor.nix +++ b/home/common/programs/hyprland/cursor.nix @@ -9,9 +9,9 @@ in home.sessionVariables = { HYPRCURSOR_THEME = "Nordzy-cursors"; # Dark variant (default) - HYPRCURSOR_SIZE = 32; + HYPRCURSOR_SIZE = 24; XCURSOR_THEME = "Nordzy-cursors"; - XCURSOR_SIZE = 32; + XCURSOR_SIZE = 24; }; dconf = { diff --git a/home/common/programs/hyprland/default.nix b/home/common/programs/hyprland/default.nix index 80d8adb..c466e7b 100644 --- a/home/common/programs/hyprland/default.nix +++ b/home/common/programs/hyprland/default.nix @@ -10,10 +10,9 @@ in { imports = [ ./rofi.nix - ./walker.nix ./cursor.nix ./waybar.nix - ./quickshell.nix + ./noctalia ./wallpapers.nix ]; @@ -23,8 +22,8 @@ in hyprshot playerctl hyprsunset - hyprlock xdg-desktop-portal-termfilechooser + libnotify ]; home.sessionVariables = { @@ -123,7 +122,7 @@ in env = [ "GDK_SCALE, 2.0" - "XCURSOR_SIZE, 32" + "XCURSOR_SIZE, 24" "HYPRCURSOR_THEME, rose-pine-hyprcursor" "HYPRCURSOR_SIZE, 24" ]; @@ -131,9 +130,14 @@ in "exec-once" = [ "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "nm-applet" - "hyprpaper" "hyprsunset" "nerd-dictation begin --simulate-input-tool WTYPE --suspend-on-start && touch ~/.cache/nerd-dictation-suspended" + "noctalia-shell" + ]; + + layerrule = [ + "blur 1, match:namespace noctalia-background-.*" + "ignore_alpha 0.5, match:namespace noctalia-background-.*" ]; workspace = [ # no gaps when only window @@ -184,6 +188,7 @@ in "$mod" = "SUPER"; bind = [ + "$mod, n, exec, noctalia-shell ipc call controlCenter toggle" "$mod, g, hyprexpo:expo, toggle" # "$mod, tab, overview:toggle," "$mod, b, exec, pkill waybar || waybar" @@ -193,8 +198,8 @@ in "$mod, f, fullscreen, 0" "$mod SHIFT, f, fullscreen, 1" - # walker app launcher - "$mod, space, exec, walker" + # app launcher + "$mod, space, exec, noctalia-shell ipc call launcher toggle" # rofi (old) # "$mod, space, exec, launcher_t2" @@ -267,13 +272,7 @@ in }; }; - services.hyprpaper = { - enable = true; - settings = { - ipc = "on"; - splash = false; - }; - }; + services.hyprpaper.enable = false; services.hypridle = { enable = true; @@ -281,12 +280,12 @@ in general = { after_sleep_cmd = "hyprctl dispatch dpms on"; ignore_dbus_inhibit = false; - lock_cmd = "hyprlock"; + lock_cmd = "noctalia-shell ipc call lockScreen lock"; }; listener = [ { timeout = 900; - on-timeout = "hyprlock"; + on-timeout = "noctalia-shell ipc call lockScreen lock"; } { timeout = 1200; @@ -294,7 +293,6 @@ in on-resume = "hyprctl dispatch dpms on"; } ]; - }; }; } diff --git a/home/common/programs/hyprland/noctalia/default.nix b/home/common/programs/hyprland/noctalia/default.nix new file mode 100644 index 0000000..a927ad5 --- /dev/null +++ b/home/common/programs/hyprland/noctalia/default.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + inputs, + pkgs, + ... +}: +let + avatar = pkgs.fetchurl { + url = "https://github.com/naps62.png"; + sha256 = "1ck11xg4rwcvn8dcc06ax7i9yfzy21v1n6h5mcjrkrici5sznlsv"; + }; +in +{ + imports = [ inputs.noctalia.homeModules.default ]; + + programs.noctalia-shell = { + enable = true; + }; + + home.file.".face".source = avatar; + + # symlink directly to the repo file so we can edit it through the GUI + xdg.configFile."noctalia/settings.json".source = + config.lib.file.mkOutOfStoreSymlink "/home/naps62/projects/nixos-config/home/common/programs/hyprland/noctalia/settings.json"; + + # force overwrite files that noctalia may have turned into regular files + xdg.configFile."hypr/hyprland.conf".force = true; + xdg.configFile."gtk-3.0/gtk.css".force = true; + + # source noctalia-generated color theme in hyprland + wayland.windowManager.hyprland.settings.source = [ + "~/.config/hypr/noctalia/noctalia-colors.conf" + ]; +} diff --git a/home/common/programs/hyprland/noctalia/settings.json b/home/common/programs/hyprland/noctalia/settings.json new file mode 100644 index 0000000..69e5bfd --- /dev/null +++ b/home/common/programs/hyprland/noctalia/settings.json @@ -0,0 +1,631 @@ +{ + "appLauncher": { + "autoPasteClipboard": false, + "clipboardWatchImageCommand": "wl-paste --type image --watch cliphist store", + "clipboardWatchTextCommand": "wl-paste --type text --watch cliphist store", + "clipboardWrapText": true, + "customLaunchPrefix": "", + "customLaunchPrefixEnabled": false, + "density": "default", + "enableClipPreview": true, + "enableClipboardHistory": true, + "enableSessionSearch": true, + "enableSettingsSearch": true, + "enableWindowsSearch": true, + "iconMode": "tabler", + "ignoreMouseInput": false, + "overviewLayer": true, + "pinnedApps": [ + ], + "position": "center", + "screenshotAnnotationTool": "", + "showCategories": true, + "showIconBackground": false, + "sortByMostUsed": true, + "terminalCommand": "kitty -e", + "useApp2Unit": false, + "viewMode": "list" + }, + "audio": { + "cavaFrameRate": 30, + "mprisBlacklist": [ + ], + "preferredPlayer": "spotify", + "visualizerType": "linear", + "volumeFeedback": false, + "volumeOverdrive": false, + "volumeStep": 5 + }, + "bar": { + "autoHideDelay": 500, + "autoShowDelay": 150, + "backgroundOpacity": 0.93, + "barType": "simple", + "capsuleColorKey": "none", + "capsuleOpacity": 1, + "density": "comfortable", + "displayMode": "auto_hide", + "floating": false, + "frameRadius": 12, + "frameThickness": 8, + "hideOnOverview": false, + "marginHorizontal": 4, + "marginVertical": 4, + "monitors": [ + ], + "outerCorners": true, + "position": "top", + "screenOverrides": [ + ], + "showCapsule": true, + "showOutline": false, + "useSeparateOpacity": false, + "widgets": { + "center": [ + { + "colorizeIcons": false, + "hideMode": "hidden", + "id": "ActiveWindow", + "maxWidth": 145, + "scrollingMode": "hover", + "showIcon": true, + "textColor": "none", + "useFixedWidth": false + }, + { + "colorName": "primary", + "hideWhenIdle": true, + "id": "AudioVisualizer", + "width": 200 + } + ], + "left": [ + { + "characterCount": 2, + "colorizeIcons": false, + "emptyColor": "secondary", + "enableScrollWheel": true, + "focusedColor": "primary", + "followFocusedScreen": false, + "groupedBorderOpacity": 1, + "hideUnoccupied": true, + "iconScale": 0.8, + "id": "Workspace", + "labelMode": "name", + "occupiedColor": "secondary", + "pillSize": 0.75, + "showApplications": false, + "showBadge": true, + "showLabelsOnlyWhenOccupied": true, + "unfocusedIconsOpacity": 1 + } + ], + "right": [ + { + "blacklist": [ + ], + "chevronColor": "none", + "colorizeIcons": true, + "drawerEnabled": false, + "hidePassive": true, + "id": "Tray", + "pinned": [ + ] + }, + { + "displayMode": "alwaysShow", + "iconColor": "none", + "id": "Network", + "textColor": "none" + }, + { + "displayMode": "alwaysShow", + "iconColor": "none", + "id": "Bluetooth", + "textColor": "none" + }, + { + "deviceNativePath": "__default__", + "displayMode": "graphic-clean", + "hideIfIdle": false, + "hideIfNotDetected": true, + "id": "Battery", + "showNoctaliaPerformance": false, + "showPowerProfiles": false + }, + { + "displayMode": "onhover", + "iconColor": "none", + "id": "Volume", + "middleClickCommand": "pwvucontrol || pavucontrol", + "textColor": "none" + }, + { + "displayMode": "onhover", + "iconColor": "none", + "id": "Brightness", + "textColor": "none" + }, + { + "deviceNativePath": "__default__", + "displayMode": "graphic-clean", + "hideIfIdle": false, + "hideIfNotDetected": true, + "id": "Battery", + "showNoctaliaPerformance": false, + "showPowerProfiles": false + }, + { + "clockColor": "none", + "customFont": "", + "formatHorizontal": "HH:mm ddd, MMM dd", + "formatVertical": "HH mm - dd MM", + "id": "Clock", + "tooltipFormat": "HH:mm ddd, MMM dd", + "useCustomFont": false + }, + { + "colorizeDistroLogo": false, + "colorizeSystemIcon": "none", + "customIconPath": "", + "enableColorization": true, + "icon": "noctalia", + "id": "ControlCenter", + "useDistroLogo": true + } + ] + } + }, + "brightness": { + "brightnessStep": 5, + "enableDdcSupport": false, + "enforceMinimum": true + }, + "calendar": { + "cards": [ + { + "enabled": true, + "id": "calendar-header-card" + }, + { + "enabled": true, + "id": "calendar-month-card" + }, + { + "enabled": true, + "id": "weather-card" + } + ] + }, + "colorSchemes": { + "darkMode": false, + "generationMethod": "tonal-spot", + "manualSunrise": "06:30", + "manualSunset": "18:30", + "monitorForColors": "", + "predefinedScheme": "Nord", + "schedulingMode": "off", + "useWallpaperColors": false + }, + "controlCenter": { + "cards": [ + { + "enabled": true, + "id": "profile-card" + }, + { + "enabled": true, + "id": "shortcuts-card" + }, + { + "enabled": true, + "id": "audio-card" + }, + { + "enabled": false, + "id": "brightness-card" + }, + { + "enabled": true, + "id": "weather-card" + }, + { + "enabled": true, + "id": "media-sysmon-card" + } + ], + "diskPath": "/", + "position": "close_to_bar_button", + "shortcuts": { + "left": [ + { + "id": "Network" + }, + { + "id": "Bluetooth" + }, + { + "id": "WallpaperSelector" + }, + { + "id": "NoctaliaPerformance" + } + ], + "right": [ + { + "id": "Notifications" + }, + { + "id": "PowerProfile" + }, + { + "id": "KeepAwake" + }, + { + "id": "NightLight" + } + ] + } + }, + "desktopWidgets": { + "enabled": false, + "gridSnap": false, + "monitorWidgets": [ + ] + }, + "dock": { + "animationSpeed": 1, + "backgroundOpacity": 1, + "colorizeIcons": false, + "deadOpacity": 0.6, + "displayMode": "auto_hide", + "dockType": "floating", + "enabled": false, + "floatingRatio": 0, + "inactiveIndicators": true, + "monitors": [ + ], + "onlySameOutput": true, + "pinnedApps": [ + ], + "pinnedStatic": false, + "position": "bottom", + "showFrameIndicator": true, + "sitOnFrame": false, + "size": 1.5 + }, + "general": { + "allowPanelsOnScreenWithoutBar": true, + "allowPasswordWithFprintd": true, + "animationDisabled": false, + "animationSpeed": 1, + "autoStartAuth": true, + "avatarImage": "/home/naps62/.face", + "boxRadiusRatio": 1, + "clockFormat": "hh\\nmm", + "clockStyle": "custom", + "compactLockScreen": false, + "dimmerOpacity": 0.4, + "enableLockScreenCountdown": true, + "enableShadows": true, + "forceBlackScreenCorners": false, + "iRadiusRatio": 1, + "keybinds": { + "keyDown": [ + "Down" + ], + "keyEnter": [ + "Return" + ], + "keyEscape": [ + "Esc" + ], + "keyLeft": [ + "Left" + ], + "keyRemove": [ + "Del" + ], + "keyRight": [ + "Right" + ], + "keyUp": [ + "Up" + ] + }, + "language": "", + "lockOnSuspend": true, + "lockScreenAnimations": true, + "lockScreenBlur": 0, + "lockScreenCountdownDuration": 10000, + "lockScreenMonitors": [ + ], + "lockScreenTint": 0, + "radiusRatio": 1, + "reverseScroll": false, + "scaleRatio": 1, + "screenRadiusRatio": 1, + "shadowDirection": "bottom_right", + "shadowOffsetX": 2, + "shadowOffsetY": 3, + "showChangelogOnStartup": false, + "showHibernateOnLockScreen": true, + "showScreenCorners": false, + "showSessionButtonsOnLockScreen": true, + "telemetryEnabled": false + }, + "hooks": { + "darkModeChange": "", + "enabled": false, + "performanceModeDisabled": "", + "performanceModeEnabled": "", + "screenLock": "", + "screenUnlock": "", + "session": "", + "startup": "", + "wallpaperChange": "" + }, + "location": { + "analogClockInCalendar": true, + "firstDayOfWeek": -1, + "hideWeatherCityName": false, + "hideWeatherTimezone": false, + "name": "Braga, Portugal", + "showCalendarEvents": true, + "showCalendarWeather": true, + "showWeekNumberInCalendar": false, + "use12hourFormat": false, + "useFahrenheit": false, + "weatherEnabled": true, + "weatherShowEffects": true + }, + "network": { + "airplaneModeEnabled": false, + "bluetoothDetailsViewMode": "grid", + "bluetoothHideUnnamedDevices": false, + "bluetoothRssiPollIntervalMs": 60000, + "bluetoothRssiPollingEnabled": false, + "disableDiscoverability": false, + "wifiDetailsViewMode": "grid", + "wifiEnabled": true + }, + "nightLight": { + "autoSchedule": true, + "dayTemp": "6500", + "enabled": true, + "forced": false, + "manualSunrise": "06:30", + "manualSunset": "18:30", + "nightTemp": "4000" + }, + "notifications": { + "backgroundOpacity": 1, + "clearDismissed": true, + "criticalUrgencyDuration": 15, + "density": "compact", + "enableBatteryToast": true, + "enableKeyboardLayoutToast": true, + "enableMarkdown": true, + "enableMediaToast": true, + "enabled": true, + "location": "top_right", + "lowUrgencyDuration": 3, + "monitors": [ + ], + "normalUrgencyDuration": 8, + "overlayLayer": true, + "respectExpireTimeout": false, + "saveToHistory": { + "critical": true, + "low": true, + "normal": true + }, + "sounds": { + "criticalSoundFile": "", + "enabled": false, + "excludedApps": "discord,firefox,chrome,chromium,edge", + "lowSoundFile": "", + "normalSoundFile": "", + "separateSounds": false, + "volume": 0.5 + } + }, + "osd": { + "autoHideMs": 2000, + "backgroundOpacity": 1, + "enabled": true, + "enabledTypes": [ + 0, + 1, + 2, + 3 + ], + "location": "top", + "monitors": [ + ], + "overlayLayer": true + }, + "plugins": { + "autoUpdate": false + }, + "sessionMenu": { + "countdownDuration": 10000, + "enableCountdown": true, + "largeButtonsLayout": "single-row", + "largeButtonsStyle": true, + "position": "center", + "powerOptions": [ + { + "action": "lock", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "1" + }, + { + "action": "suspend", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "2" + }, + { + "action": "hibernate", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "3" + }, + { + "action": "reboot", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "4" + }, + { + "action": "logout", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "5" + }, + { + "action": "shutdown", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "6" + }, + { + "action": "rebootToUefi", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "" + } + ], + "showHeader": true, + "showKeybinds": true + }, + "settingsVersion": 53, + "systemMonitor": { + "batteryCriticalThreshold": 5, + "batteryWarningThreshold": 20, + "cpuCriticalThreshold": 90, + "cpuWarningThreshold": 80, + "criticalColor": "", + "diskAvailCriticalThreshold": 10, + "diskAvailWarningThreshold": 20, + "diskCriticalThreshold": 90, + "diskWarningThreshold": 80, + "enableDgpuMonitoring": false, + "externalMonitor": "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor", + "gpuCriticalThreshold": 90, + "gpuWarningThreshold": 80, + "memCriticalThreshold": 90, + "memWarningThreshold": 80, + "swapCriticalThreshold": 90, + "swapWarningThreshold": 80, + "tempCriticalThreshold": 90, + "tempWarningThreshold": 80, + "useCustomColors": false, + "warningColor": "" + }, + "templates": { + "activeTemplates": [ + { + "enabled": true, + "id": "zenBrowser" + }, + { + "enabled": true, + "id": "hyprland" + }, + { + "enabled": true, + "id": "kitty" + }, + { + "enabled": true, + "id": "yazi" + }, + { + "enabled": true, + "id": "zathura" + }, + { + "enabled": true, + "id": "gtk" + }, + { + "enabled": true, + "id": "qt" + }, + { + "enabled": true, + "id": "btop" + }, + { + "enabled": true, + "id": "spicetify" + } + ], + "enableUserTheming": false + }, + "ui": { + "bluetoothDetailsViewMode": "grid", + "bluetoothHideUnnamedDevices": false, + "boxBorderEnabled": false, + "fontDefault": "Sans Serif", + "fontDefaultScale": 1, + "fontFixed": "monospace", + "fontFixedScale": 1, + "networkPanelView": "wifi", + "panelBackgroundOpacity": 0.93, + "panelsAttachedToBar": true, + "settingsPanelMode": "attached", + "tooltipsEnabled": true, + "wifiDetailsViewMode": "grid" + }, + "wallpaper": { + "automationEnabled": true, + "directory": "/home/naps62/.cache/wallpapers/3840x2160", + "enableMultiMonitorDirectories": false, + "enabled": true, + "favorites": [ + ], + "fillColor": "#5e81ac", + "fillMode": "crop", + "hideWallpaperFilenames": false, + "monitorDirectories": [ + ], + "overviewBlur": 0.4, + "overviewEnabled": false, + "overviewTint": 0.6, + "panelPosition": "follow_bar", + "randomIntervalSec": 21600, + "setWallpaperOnAllMonitors": true, + "showHiddenFiles": false, + "skipStartupTransition": false, + "solidColor": "#1a1a2e", + "sortOrder": "name", + "transitionDuration": 1500, + "transitionEdgeSmoothness": 0.05, + "transitionType": "fade", + "useSolidColor": false, + "useWallhaven": false, + "viewMode": "browse", + "wallhavenApiKey": "", + "wallhavenCategories": "111", + "wallhavenOrder": "desc", + "wallhavenPurity": "100", + "wallhavenQuery": "", + "wallhavenRatios": "", + "wallhavenResolutionHeight": "", + "wallhavenResolutionMode": "atleast", + "wallhavenResolutionWidth": "", + "wallhavenSorting": "relevance", + "wallpaperChangeMode": "random" + } +} diff --git a/home/common/programs/hyprland/quickshell.nix b/home/common/programs/hyprland/quickshell.nix deleted file mode 100644 index 52f3660..0000000 --- a/home/common/programs/hyprland/quickshell.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ inputs, pkgs, ... }: -{ - home.packages = [ - inputs.quickshell.packages.${pkgs.stdenv.hostPlatform.system}.default - ]; - - xdg.configFile."quickshell" = { - source = ./quickshell; - recursive = true; - }; -} diff --git a/home/common/programs/hyprland/quickshell/Bar.qml b/home/common/programs/hyprland/quickshell/Bar.qml deleted file mode 100644 index aa4de4a..0000000 --- a/home/common/programs/hyprland/quickshell/Bar.qml +++ /dev/null @@ -1,94 +0,0 @@ -import Quickshell -import Quickshell.Hyprland -import QtQuick -import QtQuick.Layouts - -Scope { - id: root - property bool barVisible: false - - Variants { - model: Quickshell.screens - - Scope { - id: perScreen - required property var modelData - - // invisible trigger zone at the top edge - PanelWindow { - id: trigger - screen: perScreen.modelData - visible: !root.barVisible - - anchors { - top: true - left: true - right: true - } - - exclusionMode: ExclusionMode.Ignore - implicitHeight: 4 - color: "transparent" - - MouseArea { - anchors.fill: parent - hoverEnabled: true - onEntered: root.barVisible = true - } - } - - // the actual bar - PanelWindow { - id: bar - screen: perScreen.modelData - visible: root.barVisible - - anchors { - top: true - left: true - right: true - } - - exclusionMode: ExclusionMode.Ignore - implicitHeight: 32 - color: "#e611111b" - - MouseArea { - anchors.fill: parent - hoverEnabled: true - propagateComposedEvents: true - // keep bar visible while mouse is on it - onExited: hideTimer.restart() - } - - RowLayout { - anchors.fill: parent - anchors.leftMargin: 12 - anchors.rightMargin: 12 - spacing: 0 - - Workspaces { - Layout.alignment: Qt.AlignLeft - } - - Item { Layout.fillWidth: true } - - SysTray { - Layout.alignment: Qt.AlignRight - Layout.rightMargin: 16 - } - - ClockWidget { - Layout.alignment: Qt.AlignRight - } - } - } - - Timer { - id: hideTimer - interval: 500 - onTriggered: root.barVisible = false - } - } - } -} diff --git a/home/common/programs/hyprland/quickshell/ClockWidget.qml b/home/common/programs/hyprland/quickshell/ClockWidget.qml deleted file mode 100644 index de8f078..0000000 --- a/home/common/programs/hyprland/quickshell/ClockWidget.qml +++ /dev/null @@ -1,20 +0,0 @@ -import QtQuick -import QtQuick.Layouts - -RowLayout { - spacing: 12 - - Text { - text: Time.date - font.family: "FiraCode Nerd Font" - font.pixelSize: 13 - color: "#6c7086" - } - - Text { - text: Time.clock - font.family: "FiraCode Nerd Font" - font.pixelSize: 14 - color: "#bac2de" - } -} diff --git a/home/common/programs/hyprland/quickshell/SysTray.qml b/home/common/programs/hyprland/quickshell/SysTray.qml deleted file mode 100644 index 6ae92cf..0000000 --- a/home/common/programs/hyprland/quickshell/SysTray.qml +++ /dev/null @@ -1,47 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Quickshell -import Quickshell.Services.SystemTray - -RowLayout { - spacing: 6 - - Repeater { - model: SystemTray.items - - Image { - required property SystemTrayItem modelData - - Layout.preferredWidth: 18 - Layout.preferredHeight: 18 - source: modelData.icon - fillMode: Image.PreserveAspectFit - - MouseArea { - anchors.fill: parent - acceptedButtons: Qt.LeftButton | Qt.RightButton - onClicked: (mouse) => { - if (mouse.button === Qt.RightButton || modelData.onlyMenu) { - modelData.display(bar, parent.x, bar.height) - } else { - modelData.activate() - } - } - } - - ToolTip { - id: tooltip - visible: hoverArea.containsMouse - text: modelData.tooltipTitle || modelData.title || "" - } - - MouseArea { - id: hoverArea - anchors.fill: parent - hoverEnabled: true - acceptedButtons: Qt.NoButton - } - } - } -} diff --git a/home/common/programs/hyprland/quickshell/Time.qml b/home/common/programs/hyprland/quickshell/Time.qml deleted file mode 100644 index 7836795..0000000 --- a/home/common/programs/hyprland/quickshell/Time.qml +++ /dev/null @@ -1,15 +0,0 @@ -pragma Singleton - -import Quickshell -import QtQuick - -Singleton { - id: root - readonly property string clock: Qt.formatDateTime(sysClock.date, "hh:mm") - readonly property string date: Qt.formatDateTime(sysClock.date, "ddd MMM d") - - SystemClock { - id: sysClock - precision: SystemClock.Minutes - } -} diff --git a/home/common/programs/hyprland/quickshell/Workspaces.qml b/home/common/programs/hyprland/quickshell/Workspaces.qml deleted file mode 100644 index 330a394..0000000 --- a/home/common/programs/hyprland/quickshell/Workspaces.qml +++ /dev/null @@ -1,41 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import Quickshell.Hyprland - -RowLayout { - spacing: 4 - - Repeater { - model: [1, 2, 3, 4, 5, 6] - - Rectangle { - required property int modelData - property bool active: Hyprland.focusedMonitor?.activeWorkspace?.id === modelData - property bool occupied: { - for (let i = 0; i < Hyprland.workspaces.values.length; i++) { - let ws = Hyprland.workspaces.values[i]; - if (ws.id === modelData && ws.windows > 0) return true; - } - return false; - } - - Layout.preferredWidth: 24 - Layout.preferredHeight: 24 - radius: 4 - color: active ? "#b4befe" : "transparent" - - Text { - anchors.centerIn: parent - text: modelData - font.family: "FiraCode Nerd Font" - font.pixelSize: 13 - color: active ? "#11111b" : occupied ? "#bac2de" : "#6c7086" - } - - MouseArea { - anchors.fill: parent - onClicked: Hyprland.dispatch("workspace " + modelData) - } - } - } -} diff --git a/home/common/programs/hyprland/quickshell/shell.qml b/home/common/programs/hyprland/quickshell/shell.qml deleted file mode 100644 index 9d093ad..0000000 --- a/home/common/programs/hyprland/quickshell/shell.qml +++ /dev/null @@ -1,5 +0,0 @@ -import Quickshell - -Scope { - Bar {} -} diff --git a/home/common/programs/hyprland/walker.nix b/home/common/programs/hyprland/walker.nix deleted file mode 100644 index c40e8e9..0000000 --- a/home/common/programs/hyprland/walker.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ inputs, pkgs, ... }: -{ - imports = [ inputs.walker.homeManagerModules.default ]; - - programs.walker = { - enable = true; - runAsService = true; - - # Using default theme - clean dark theme with good defaults - # You can customize later by copying from: - # https://github.com/abenz1267/walker/tree/master/resources/themes/default - }; -} diff --git a/home/common/programs/hyprland/wallpapers.nix b/home/common/programs/hyprland/wallpapers.nix index d2adc55..776af9a 100644 --- a/home/common/programs/hyprland/wallpapers.nix +++ b/home/common/programs/hyprland/wallpapers.nix @@ -64,29 +64,22 @@ let "https://images.hdqwalls.com/download/starfield-i-mac-ie-2160x3840.jpg" ]; - # Create wallpaper rotation script - rotateScript = pkgs.writeShellScript "hyprpaper-rotate" '' + # Wallpaper fetch script - downloads wallpapers to cache + fetchScript = pkgs.writeShellScript "wallpaper-fetch" '' set -euo pipefail - # Check if hyprpaper is running - if ! pgrep -x hyprpaper > /dev/null; then - echo "Error: hyprpaper is not running" - echo "Start it with: hyprpaper &" - exit 1 - fi + HORIZONTAL_DIR="$HOME/.cache/wallpapers/3840x2160" + VERTICAL_DIR="$HOME/.cache/wallpapers/2160x3840" + mkdir -p "$HORIZONTAL_DIR" "$VERTICAL_DIR" - CACHE_DIR="$HOME/.cache/wallpapers" - mkdir -p "$CACHE_DIR" - - # Arrays of wallpaper URLs HORIZONTAL=(${builtins.concatStringsSep " " (map (url: ''"${url}"'') horizontal)}) VERTICAL=(${builtins.concatStringsSep " " (map (url: ''"${url}"'') vertical)}) - # Function to download wallpaper if not cached - get_wallpaper() { + download() { local url="$1" + local dir="$2" local filename=$(basename "$url") - local filepath="$CACHE_DIR/$filename" + local filepath="$dir/$filename" if [ ! -f "$filepath" ]; then echo "Downloading $filename..." >&2 @@ -95,81 +88,23 @@ let return 1 } fi - - echo "$filepath" } - # Function to get random element from array - random_choice() { - local arr=("$@") - local size=''${#arr[@]} - local idx=$((RANDOM % size)) - echo "''${arr[$idx]}" - } - - # Get list of connected monitors and their orientations - readarray -t MONITORS < <(${pkgs.hyprland}/bin/hyprctl monitors -j | \ - ${pkgs.jq}/bin/jq -r '.[] | "\(.name)|\(.width)|\(.height)|\(.transform)"') - - # Apply wallpapers to each monitor - for monitor_info in "''${MONITORS[@]}"; do - IFS='|' read -r name width height transform <<< "$monitor_info" - - # Determine if monitor is vertical (considering transform) - # transform 1 or 3 means 90/270 degree rotation - if [[ "$transform" == "1" || "$transform" == "3" ]]; then - # Transform swaps width/height, so check original dimensions - if [ "$width" -lt "$height" ]; then - # After transform, it's horizontal - wallpaper_url=$(random_choice "''${HORIZONTAL[@]}") - else - # After transform, it's vertical - wallpaper_url=$(random_choice "''${VERTICAL[@]}") - fi - else - # No rotation or 180 degree rotation - if [ "$width" -lt "$height" ]; then - wallpaper_url=$(random_choice "''${VERTICAL[@]}") - else - wallpaper_url=$(random_choice "''${HORIZONTAL[@]}") - fi - fi - - # Download and apply wallpaper - wallpaper_path=$(get_wallpaper "$wallpaper_url") - if [ -n "$wallpaper_path" ]; then - echo "Setting $name to $wallpaper_path" >&2 - ${pkgs.hyprland}/bin/hyprctl hyprpaper wallpaper "$name,$wallpaper_path,cover" - fi + echo "Fetching horizontal wallpapers..." + for url in "''${HORIZONTAL[@]}"; do + download "$url" "$HORIZONTAL_DIR" done + + echo "Fetching vertical wallpapers..." + for url in "''${VERTICAL[@]}"; do + download "$url" "$VERTICAL_DIR" + done + + echo "Done. Wallpapers cached in:" + echo " Horizontal: $HORIZONTAL_DIR" + echo " Vertical: $VERTICAL_DIR" ''; in { - # Export for use in monitors.nix - home.file.".local/bin/hyprpaper-rotate".source = rotateScript; - - # Systemd service and timer for rotation - systemd.user.services.hyprpaper-rotate = { - Unit = { - Description = "Rotate Hyprland wallpapers"; - After = [ "graphical-session.target" ]; - }; - Service = { - Type = "oneshot"; - ExecStart = "${rotateScript}"; - }; - }; - - systemd.user.timers.hyprpaper-rotate = { - Unit = { - Description = "Rotate Hyprland wallpapers every 12 hours"; - }; - Timer = { - OnUnitActiveSec = "12h"; - Persistent = true; - }; - Install = { - WantedBy = [ "timers.target" ]; - }; - }; + home.file.".local/bin/wallpaper-fetch".source = fetchScript; } diff --git a/home/common/programs/kitty/default.nix b/home/common/programs/kitty/default.nix index b747c31..6922431 100644 --- a/home/common/programs/kitty/default.nix +++ b/home/common/programs/kitty/default.nix @@ -63,10 +63,8 @@ "f7>/" = "goto_session"; }; - # Default theme - Catppuccin-Mocha (dark) - # This will be overridden by darkman scripts extraConfig = '' - include current-theme.conf + include themes/noctalia.conf ''; }; diff --git a/hosts/arrakis/default.nix b/hosts/arrakis/default.nix index a72d326..a156231 100644 --- a/hosts/arrakis/default.nix +++ b/hosts/arrakis/default.nix @@ -69,4 +69,6 @@ enable = true; platform = "ipu6ep"; }; + + services.fprintd.enable = true; }