this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ariade: switch to noctalia

Aria 75637e79 58bc15d4

+988 -566
+2
nix/modules/default.nix
··· 20 20 "${inputs.tangled}/nix/modules/appview.nix" 21 21 "${inputs.tangled}/nix/modules/spindle.nix" 22 22 (import "${inputs.tranquil-pds}/module.nix" { }) 23 + "${inputs.noctalia-shell}/nix/nixos-module.nix" 23 24 24 25 ../../cal-bridge/module.nix 25 26 ../../arialog/module.nix ··· 42 43 ./programs/bash.nix 43 44 ./programs/firefox/default.nix 44 45 ./programs/git.nix 46 + ./programs/noctalia-shell.nix 45 47 ./programs/proton.nix 46 48 ./programs/signal.nix 47 49 ./programs/ssh.nix
+210
nix/modules/programs/noctalia-shell.nix
··· 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 6 + }: 7 + let 8 + cfg = config.programs.noctalia-shell; 9 + jsonFormat = pkgs.formats.json { }; 10 + tomlFormat = pkgs.formats.toml { }; 11 + 12 + generateJson = 13 + name: value: 14 + if lib.isString value then 15 + pkgs.writeText "noctalia-${name}.json" value 16 + else if builtins.isPath value || lib.isStorePath value then 17 + value 18 + else 19 + jsonFormat.generate "noctalia-${name}.json" value; 20 + in 21 + { 22 + options.programs.noctalia-shell = { 23 + enable = lib.mkEnableOption "Noctalia shell configuration"; 24 + 25 + package = lib.mkOption { 26 + type = lib.types.nullOr lib.types.package; 27 + description = "The noctalia-shell package to use"; 28 + }; 29 + 30 + settings = lib.mkOption { 31 + type = 32 + with lib.types; 33 + oneOf [ 34 + jsonFormat.type 35 + str 36 + path 37 + ]; 38 + default = { }; 39 + example = lib.literalExpression '' 40 + { 41 + bar = { 42 + position = "bottom"; 43 + floating = true; 44 + backgroundOpacity = 0.95; 45 + }; 46 + general = { 47 + animationSpeed = 1.5; 48 + radiusRatio = 1.2; 49 + }; 50 + colorSchemes = { 51 + darkMode = true; 52 + useWallpaperColors = true; 53 + }; 54 + } 55 + ''; 56 + description = '' 57 + Noctalia shell configuration settings as an attribute set, string 58 + or filepath, to be written to ~/.config/noctalia/settings.json. 59 + ''; 60 + }; 61 + 62 + colors = lib.mkOption { 63 + type = 64 + with lib.types; 65 + oneOf [ 66 + jsonFormat.type 67 + str 68 + path 69 + ]; 70 + default = { }; 71 + example = lib.literalExpression '' 72 + { 73 + mError = "#dddddd"; 74 + mOnError = "#111111"; 75 + mOnPrimary = "#111111"; 76 + mOnSecondary = "#111111"; 77 + mOnSurface = "#828282"; 78 + mOnSurfaceVariant = "#5d5d5d"; 79 + mOnTertiary = "#111111"; 80 + mOutline = "#3c3c3c"; 81 + mPrimary = "#aaaaaa"; 82 + mSecondary = "#a7a7a7"; 83 + mShadow = "#000000"; 84 + mSurface = "#111111"; 85 + mSurfaceVariant = "#191919"; 86 + mTertiary = "#cccccc"; 87 + } 88 + ''; 89 + description = '' 90 + Noctalia shell color configuration as an attribute set, string 91 + or filepath, to be written to ~/.config/noctalia/colors.json. 92 + ''; 93 + }; 94 + 95 + user-templates = lib.mkOption { 96 + default = { }; 97 + type = 98 + with lib.types; 99 + oneOf [ 100 + tomlFormat.type 101 + str 102 + path 103 + ]; 104 + example = lib.literalExpression '' 105 + { 106 + templates = { 107 + neovim = { 108 + input_path = "~/.config/noctalia/templates/template.lua"; 109 + output_path = "~/.config/nvim/generated.lua"; 110 + post_hook = "pkill -SIGUSR1 nvim"; 111 + }; 112 + }; 113 + } 114 + ''; 115 + description = '' 116 + Template definitions for Noctalia, to be written to ~/.config/noctalia/user-templates.toml. 117 + 118 + This option accepts: 119 + - a Nix attrset (converted to TOML automatically) 120 + - a string containing raw TOML 121 + - a path to an existing TOML file 122 + ''; 123 + }; 124 + 125 + plugins = lib.mkOption { 126 + type = 127 + with lib.types; 128 + oneOf [ 129 + jsonFormat.type 130 + str 131 + path 132 + ]; 133 + default = { }; 134 + example = lib.literalExpression '' 135 + { 136 + sources = [ 137 + { 138 + enabled = true; 139 + name = "Noctalia Plugins"; 140 + url = "https://github.com/noctalia-dev/noctalia-plugins"; 141 + } 142 + ]; 143 + states = { 144 + catwalk = { 145 + enabled = true; 146 + sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins"; 147 + }; 148 + }; 149 + version = 2; 150 + } 151 + ''; 152 + description = '' 153 + Noctalia shell plugin configuration as an attribute set, string 154 + or filepath, to be written to ~/.config/noctalia/plugins.json. 155 + ''; 156 + }; 157 + 158 + pluginSettings = lib.mkOption { 159 + type = 160 + with lib.types; 161 + attrsOf (oneOf [ 162 + jsonFormat.type 163 + str 164 + path 165 + ]); 166 + default = { }; 167 + example = lib.literalExpression '' 168 + { 169 + catwalk = { 170 + minimumThreshold = 25; 171 + hideBackground = true; 172 + }; 173 + } 174 + ''; 175 + description = '' 176 + Each plugin’s settings as an attribute set, string 177 + or filepath, to be written to ~/.config/noctalia/plugins/plugin-name/settings.json. 178 + ''; 179 + }; 180 + }; 181 + 182 + config = lib.mkIf cfg.enable { 183 + environment.home = { 184 + ".config/noctalia/settings.json" = lib.mkIf (cfg.settings != { }) { 185 + source = generateJson "settings" cfg.settings; 186 + }; 187 + ".config/noctalia/colors.json" = lib.mkIf (cfg.colors != { }) { 188 + source = generateJson "colors" cfg.colors; 189 + }; 190 + ".config/noctalia/plugins.json" = lib.mkIf (cfg.plugins != { }) { 191 + source = generateJson "plugins" cfg.plugins; 192 + }; 193 + ".config/noctalia/user-templates.toml" = lib.mkIf (cfg.user-templates != { }) { 194 + source = 195 + if lib.isString cfg.user-templates then 196 + pkgs.writeText "noctalia-user-templates.toml" cfg.user-templates 197 + else if builtins.isPath cfg.user-templates || lib.isStorePath cfg.user-templates then 198 + cfg.user-templates 199 + else 200 + tomlFormat.generate "noctalia-user-templates.toml" cfg.user-templates; 201 + }; 202 + } 203 + // lib.mapAttrs' ( 204 + name: value: 205 + lib.nameValuePair ".config/noctalia/plugins/${name}/settings.json" { 206 + source = generateJson "${name}-settings" value; 207 + } 208 + ) cfg.pluginSettings; 209 + }; 210 + }
-25
nix/modules/services/ariade/apps/battery.nix
··· 1 - { 2 - pkgs, 3 - config, 4 - lib, 5 - ... 6 - }: 7 - let 8 - inherit (lib) mkIf; 9 - cfg = config.services.ariade; 10 - in 11 - mkIf (cfg.hasBattery && cfg.enable) { 12 - systemd.user.services.batsignal = { 13 - description = "batsignal - battery monitor daemon"; 14 - after = [ "graphical-session.target" ]; 15 - partOf = [ "graphical-session.target" ]; 16 - wantedBy = [ "graphical-session.target" ]; 17 - 18 - serviceConfig = { 19 - Type = "simple"; 20 - ExecStart = "${lib.getExe pkgs.batsignal} -c 10 -w 20"; 21 - Restart = "on-failure"; 22 - RestartSec = 1; 23 - }; 24 - }; 25 - }
-3
nix/modules/services/ariade/apps/default.nix
··· 2 2 { 3 3 imports = [ 4 4 ./ghostty.nix 5 - ./battery.nix 6 - ./dunst.nix 7 - ./eww 8 5 ]; 9 6 }
-72
nix/modules/services/ariade/apps/dunst.nix
··· 1 - { 2 - pkgs, 3 - config, 4 - lib, 5 - ... 6 - }: 7 - let 8 - inherit (lib) mkIf; 9 - cfg = config.services.ariade; 10 - 11 - toDunstIni = lib.generators.toINI { 12 - mkKeyValue = 13 - key: value: 14 - let 15 - value' = 16 - if lib.isBool value then 17 - (lib.hm.booleans.yesNo value) 18 - else if lib.isString value then 19 - ''"${value}"'' 20 - else 21 - toString value; 22 - in 23 - "${key}=${value'}"; 24 - }; 25 - in 26 - mkIf cfg.enable { 27 - systemd.user.services.dunst = { 28 - description = "Dunst notification daemon"; 29 - after = [ "graphical-session.target" ]; 30 - partOf = [ "graphical-session.target" ]; 31 - wantedBy = [ "graphical-session.target" ]; 32 - 33 - serviceConfig = { 34 - Type = "dbus"; 35 - BusName = "org.freedesktop.Notifications"; 36 - ExecStart = "${pkgs.dunst}/bin/dunst"; 37 - }; 38 - }; 39 - 40 - environment.home.".config/dunst/dunstrc".text = 41 - let 42 - inherit (config.colours.values) 43 - accent 44 - base 45 - peach 46 - text 47 - ; 48 - in 49 - toDunstIni { 50 - global = { 51 - follow = "keyboard"; 52 - font = "Sans 16"; 53 - 54 - frame_color = "${accent.hex}"; 55 - separator_color = "frame"; 56 - }; 57 - 58 - urgency_low = { 59 - background = "${base.hex}"; 60 - foreground = "${text.hex}"; 61 - }; 62 - urgency_normal = { 63 - background = "${base.hex}"; 64 - foreground = "${text.hex}"; 65 - }; 66 - urgency_critical = { 67 - background = "${text.hex}"; 68 - foreground = "${base.hex}"; 69 - frame_color = "${peach.hex}"; 70 - }; 71 - }; 72 - }
-18
nix/modules/services/ariade/apps/eww/default.nix
··· 1 - { 2 - config, 3 - lib, 4 - pkgs, 5 - ... 6 - }@inp: 7 - with lib; 8 - let 9 - cfg = config.services.ariade; 10 - in 11 - mkIf cfg.enable { 12 - environment.systemPackages = [ pkgs.eww ]; 13 - 14 - environment.home = { 15 - ".config/eww/eww.scss".text = import ./eww.scss.nix inp; 16 - ".config/eww/eww.yuck".text = import ./eww.yuck.nix inp; 17 - }; 18 - }
-93
nix/modules/services/ariade/apps/eww/eww.scss.nix
··· 1 - { config, ... }: 2 - with config.colours.values; 3 - '' 4 - 5 - $bg: ${base.hex}; 6 - $bg-lighter: ${crust.hex}; 7 - $fg: ${text.hex}; 8 - $red: ${red.hex}; 9 - $accent: ${accent.hex}; 10 - 11 - * { all: unset; } 12 - 13 - .layout-box { 14 - font-family: 'Symbols Nerd Font Mono', sans-serif; 15 - padding: 5em; 16 - color: $fg; 17 - 18 - background: rgba(0, 0, 0, 0.8); 19 - animation: fade 200ms; 20 - } 21 - 22 - @keyframes fade { 23 - from { 24 - opacity: 0; 25 - } 26 - to { 27 - opacity: 1; 28 - } 29 - } 30 - 31 - .stat-box { 32 - background: $bg-lighter; 33 - :first-child { 34 - background: $bg; 35 - } 36 - label { 37 - font-family: monospace; 38 - font-size: 1.5em; 39 - padding: 0.75rem; 40 - } 41 - } 42 - 43 - .close-btn { 44 - font-size: 1.5em; 45 - &:hover { 46 - color: $red; 47 - } 48 - } 49 - 50 - .revealer-icon { 51 - font-size: 1.5em; 52 - padding: 0.75rem; 53 - background: $bg; 54 - } 55 - 56 - .revealed { 57 - padding-left: 1rem; 58 - } 59 - 60 - .btns-box { 61 - font-size: 1.5em; 62 - 63 - button { 64 - font-family: 'Symbols Nerd Font Mono'; 65 - padding: 0.75em; 66 - background-color: $bg; 67 - 68 - &:hover { 69 - transition: 200ms linear background-color, border-radius; 70 - background-color: $bg-lighter; 71 - } 72 - 73 - &:first-child { 74 - color: $red; 75 - } 76 - } 77 - } 78 - 79 - 80 - scale trough { 81 - all: unset; 82 - border-radius: 5px; 83 - min-height: 10px; 84 - min-width: 80px; 85 - margin: .3rem 0 .3rem 0; 86 - } 87 - 88 - 89 - .volbar trough highlight { 90 - background-color: $accent; 91 - border-radius: 5px; 92 - } 93 - ''
-65
nix/modules/services/ariade/apps/eww/eww.yuck.nix
··· 1 - { 2 - config, 3 - ... 4 - }: 5 - let 6 - cfg = config.services.ariade; 7 - in 8 - '' 9 - (defwindow overlay 10 - :monitor 0 11 - :stacking "fg" 12 - :windowtype "desktop" 13 - :wm-ignore true 14 - :geometry (geometry :width "100%" :height "100%") 15 - (overlay_layout)) 16 - 17 - (defpoll time :interval "5s" 18 - :initial "{\"hour\": 0, \"min\": 0}" 19 - `date +'{"hour":"%H","min":"%M"}'`) 20 - 21 - (defpoll date :interval "1h" 22 - :initial "{\"weekday\": \"\", \"day\": 0, \"month\": 0}" 23 - `date +'{"weekday": "%a", "day":"%d","month":"%m"}'`) 24 - 25 - (defpoll volume :interval "5s" 26 - :initial 0.0 27 - `wpctl get-volume @DEFAULT_SINK@ | cut -d ' ' -f 2 | sed 's/\\.//'`) 28 - 29 - (defwidget overlay_layout [] 30 - (box :class "layout-box" :space-evenly false :orientation "vertical" 31 - (box :valign "start" :space-evenly false :spacing 25 32 - ${if cfg.hasBattery then "(_battery)" else ""} 33 - (_volume) 34 - (box :hexpand true :halign "end" 35 - (button :onclick "eww close overlay" :class "close-btn" ""))) 36 - (box :vexpand true) 37 - (box :space-evenly false :hexpand true :vexpand false :spacing 10 38 - (_stat :icon "" :value "''${date.weekday} ''${date.day}/''${date.month}") 39 - (_stat :icon "" :value "''${time.hour}:''${time.min}") 40 - (_stat :icon "" :value "''${round(EWW_CPU.avg, 2)}") 41 - (_stat :icon "" :value "''${round(EWW_RAM.used_mem_perc, 2)}%") 42 - ))) 43 - 44 - 45 - (defwidget _battery [] 46 - (_stat :icon "''${EWW_BATTERY.BAT1.status == 'Charging' ? '' : ''}" 47 - :value "''${EWW_BATTERY.BAT1.capacity }%")) 48 - 49 - (defwidget _volume [] 50 - (box :vexpand true :space-evenly false 51 - :class "revealer-icon" 52 - (label :text "") 53 - (scale :class "revealed volbar" 54 - :value volume 55 - :orientation "h" 56 - :max 100 57 - :min 0 58 - :onchange "wpctl set-volume @DEFAULT_SINK@ {}%" ))) 59 - 60 - (defwidget _stat [icon value] 61 - (box :class "stat-box" :spacing 5 :vexpand true :space-evenly false 62 - (label :text icon) 63 - (label :text value))) 64 - 65 - ''
nix/modules/services/ariade/avatar.png

This is a binary file and will not be displayed.

+45 -3
nix/modules/services/ariade/default.nix
··· 1 1 { 2 2 lib, 3 + pkgs, 4 + config, 3 5 ... 4 - }: 6 + }@inp: 5 7 with lib; 8 + let 9 + generateTextImage = import ./generateTextImage.nix inp; 10 + cfg = config.services.ariade; 11 + in 6 12 { 7 13 imports = [ 8 14 ./tuigreet.nix 9 15 ./environment.nix 10 16 ./apps/default.nix 11 17 ./niri/default.nix 12 - ./lock/default.nix 13 - ./paper/default.nix 18 + ./noctalia.nix 14 19 ]; 15 20 options.services.ariade = { 16 21 enable = mkEnableOption "Aria's Desktop Environment"; ··· 29 34 kbLayout = mkOption { 30 35 type = types.str; 31 36 default = "gb"; 37 + }; 38 + 39 + monitorSize = 40 + let 41 + sizeOpt = mkOption { 42 + type = types.int; 43 + }; 44 + in 45 + { 46 + x = sizeOpt // { 47 + default = 1920; 48 + }; 49 + y = sizeOpt // { 50 + default = 1080; 51 + }; 52 + }; 53 + asciiArt = mkOption { 54 + type = types.str; 55 + default = " "; 56 + }; 57 + asciiArtFont = mkOption { 58 + type = types.path; 59 + default = "${pkgs.monaspace}/share/fonts/truetype/MonaspaceNeonFrozen-Regular.ttf"; 60 + }; 61 + wallpaper = mkOption { 62 + type = types.path; 63 + default = generateTextImage { 64 + sizeX = cfg.monitorSize.x; 65 + sizeY = cfg.monitorSize.y; 66 + font = cfg.asciiArtFont; 67 + 68 + bgColour = config.colours.values.crust.hex; 69 + textColour = config.colours.values.accent.hex; 70 + 71 + inherit (cfg) asciiArt; 72 + caption = "aria@${config.networking.hostName}"; 73 + }; 32 74 }; 33 75 }; 34 76 }
+1 -6
nix/modules/services/ariade/environment.nix
··· 19 19 in 20 20 mkIf cfg.enable (mkMerge [ 21 21 { 22 - # Misc desktop tools 23 - environment.systemPackages = [ 24 - pkgs.pavucontrol # Audio control 25 - (mkIf (!cfg.externalMonitors) pkgs.brightnessctl) 26 - ]; 27 - 28 22 # Main desktop user 29 23 users.users.aria = { 30 24 hashedPasswordFile = config.age.secrets.aria-password.path; ··· 117 111 [ 118 112 "local-fs.target" 119 113 ]; 114 + 120 115 } 121 116 122 117 (
-64
nix/modules/services/ariade/lock/default.nix
··· 1 - { 2 - pkgs, 3 - lib, 4 - config, 5 - ... 6 - }@inp: 7 - let 8 - inherit (lib) 9 - concatStrings 10 - mapAttrsToList 11 - isPath 12 - isBool 13 - mkIf 14 - types 15 - mkOption 16 - ; 17 - inherit (builtins) toString; 18 - cfg = config.services.ariade; 19 - toHyprconf = import ../toHyprconf.nix lib; 20 - generateTextImage = import ../generateTextImage.nix inp; 21 - in 22 - { 23 - options.services.ariade = { 24 - lockscreen = mkOption { 25 - type = types.path; 26 - default = generateTextImage { 27 - sizeX = cfg.monitorSize.x; 28 - sizeY = cfg.monitorSize.y; 29 - font = cfg.asciiArtFont; 30 - 31 - bgColour = config.colours.values.crust.hex; 32 - textColour = config.colours.values.text.hex; 33 - 34 - inherit (config.services.ariade) asciiArt; 35 - caption = '' 36 - aria@${config.networking.hostName} 37 - locked 38 - ''; 39 - }; 40 - }; 41 - }; 42 - config = mkIf (cfg.enable && cfg.lockScreen) { 43 - environment.systemPackages = [ pkgs.swaylock ]; 44 - 45 - services.hypridle.enable = true; 46 - environment.home.".config/hypr/hypridle.conf".text = toHyprconf { 47 - attrs = import ./hypridle_config.nix inp; 48 - }; 49 - 50 - environment.home.".config/swaylock/config".text = 51 - let 52 - settings = import ./swaylock_config.nix inp; 53 - in 54 - concatStrings ( 55 - mapAttrsToList ( 56 - n: v: 57 - if isBool v && !v then 58 - "" 59 - else 60 - (if isBool v then n else n + "=" + (if isPath v then "${v}" else toString v)) + "\n" 61 - ) settings 62 - ); 63 - }; 64 - }
-23
nix/modules/services/ariade/lock/hypridle_config.nix
··· 1 - _: { 2 - general = { 3 - after_sleep_cmd = "hyprctl dispatch dpms on"; 4 - ignore_dbus_inhibit = false; 5 - lock_cmd = "/run/current-system/sw/bin/swaylock"; 6 - before_sleep_cmd = "loginctl lock-session"; 7 - }; 8 - listener = [ 9 - { 10 - timeout = 60; 11 - on-timeout = "light -O && light -S 5"; 12 - on-resume = "light -I"; 13 - } 14 - { 15 - timeout = 300; 16 - on-timeout = "loginctl lock-session"; 17 - } 18 - { 19 - timeout = 600; 20 - on-timeout = "systemctl sleep"; 21 - } 22 - ]; 23 - }
-44
nix/modules/services/ariade/lock/swaylock_config.nix
··· 1 - { 2 - lib, 3 - config, 4 - ... 5 - }: 6 - let 7 - inherit (lib) substring head; 8 - cfg = config.services.ariade; 9 - colours = config.colours.values; 10 - rmHex = str: substring 1 6 str; 11 - in 12 - { 13 - font = head config.fonts.fontconfig.defaultFonts.monospace; 14 - font-size = 24; 15 - image = builtins.toString cfg.lockscreen; 16 - indicator-radius = 100; 17 - 18 - inside-color = rmHex colours.base.hex; 19 - inside-clear-color = rmHex colours.base.hex; 20 - inside-caps-lock-color = rmHex colours.base.hex; 21 - inside-ver-color = rmHex colours.base.hex; 22 - inside-wrong-color = rmHex colours.base.hex; 23 - 24 - text-color = rmHex colours.text.hex; 25 - text-clear-color = rmHex colours.text.hex; 26 - text-caps-lock-color = rmHex colours.sky.hex; 27 - text-ver-color = rmHex colours.yellow.hex; 28 - text-wrong-color = rmHex colours.red.hex; 29 - 30 - bs-hl-color = rmHex colours.pink.hex; 31 - caps-lock-bs-hl-color = rmHex colours.pink.hex; 32 - 33 - caps-lock-key-hl-color = rmHex colours.accent.hex; 34 - ring-caps-lock-color = rmHex colours.accent.hex; 35 - 36 - ring-color = rmHex colours.accent.hex; 37 - ring-clear-color = rmHex colours.base.hex; 38 - ring-ver-color = rmHex colours.yellow.hex; 39 - ring-wrong-color = rmHex colours.red.hex; 40 - line-uses-ring = true; 41 - 42 - daemonize = true; 43 - show-failed-attempts = true; 44 - }
+20 -23
nix/modules/services/ariade/niri/config.kdl.nix
··· 81 81 82 82 // Suggested binds for running programs: terminal, app launcher, screen locker. 83 83 Mod+T { spawn "ghostty"; } 84 - Mod+Return { spawn "j4-dmenu-desktop" "--dmenu" "fzf-popup \"fzf < /proc/$$/fd/0 > /proc/$$/fd/1\""; } 85 - Mod+d { spawn "bash" "-c" "if pgrep eww; then pkill eww; else eww daemon && eww open overlay; fi"; } 84 + Mod+D { spawn-sh "noctalia-shell ipc call controlCenter toggle"; } 85 + Mod+Return { spawn-sh "noctalia-shell ipc call launcher toggle"; } 86 86 Mod+m { spawn "fzf-popup" "actions-fzf"; } 87 87 Ctrl+Shift+L { ${ 88 - if cfg.lockScreen then ''spawn "loginctl" "lock-session";'' else "power-off-monitors;" 88 + if cfg.lockScreen then 89 + ''spawn-sh "noctalia-shell ipc call lockScreen lock";'' 90 + else 91 + "power-off-monitors;" 89 92 } } 90 93 91 - XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; } 92 - F8 allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; } 93 - XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } 94 - F7 allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } 95 - XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } 96 - F6 allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } 94 + XF86AudioRaiseVolume { spawn "noctalia-shell" "ipc" "call" "volume" "increase"; } 95 + F8 { spawn "noctalia-shell" "ipc" "call" "volume" "increase"; } 96 + XF86AudioLowerVolume { spawn "noctalia-shell" "ipc" "call" "volume" "decrease"; } 97 + F7 { spawn "noctalia-shell" "ipc" "call" "volume" "decrease"; } 98 + XF86AudioMute { spawn "noctalia-shell" "ipc" "call" "volume" "muteOutput"; } 99 + F6 { spawn "noctalia-shell" "ipc" "call" "volume" "muteOutput"; } 97 100 98 - ${ 99 - if cfg.externalMonitors then 100 - '' 101 - XF86MonBrightnessUp allow-when-locked=true { spawn "ddcutil" "setvcp" "0x10" "+" "5" "-d" "1"; } 102 - F10 allow-when-locked=true { spawn "ddcutil" "setvcp" "0x10" "+" "5" "-d" "1"; } 103 - XF86MonBrightnessDown allow-when-locked=true { spawn "ddcutil" "setvcp" "0x10" "-" "5" "-d" "1"; } 104 - F9 allow-when-locked=true { spawn "ddcutil" "setvcp" "0x10" "-" "5" "-d" "1"; } 105 - '' 106 - else 107 - '' 108 - XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "set" "5%+"; } 109 - XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "set" "5%-"; } 110 - '' 111 - } 101 + XF86MonBrightnessUp { spawn "noctalia-shell" "ipc" "call" "brightness" "increase"; } 102 + F10 { spawn "noctalia-shell" "ipc" "call" "brightness" "increase"; } 103 + XF86MonBrightnessDown { spawn "noctalia-shell" "ipc" "call" "brightness" "decrease"; } 104 + F9 { spawn "noctalia-shell" "ipc" "call" "brightness" "decrease"; } 112 105 113 106 Mod+O repeat=false { toggle-overview; } 114 107 Mod+Q repeat=false { close-window; } ··· 220 213 Mod+Shift+E { quit; } 221 214 Ctrl+Alt+Delete { quit; } 222 215 } 216 + overview { 217 + backdrop-color "${config.colours.values.crust.hex}" 218 + } 223 219 220 + spawn-at-startup "noctalia-shell" 224 221 ${cfg.niri.extraConfig} 225 222 ''
-11
nix/modules/services/ariade/niri/default.nix
··· 23 23 environment.systemPackages = mkMerge [ 24 24 [ 25 25 pkgs.xwayland-satellite 26 - 27 26 pkgs.fzf 28 - pkgs.j4-dmenu-desktop 29 - (pkgs.writeShellApplication { 30 - name = "fzf-popup"; 31 - runtimeInputs = [ 32 - pkgs.ghostty 33 - ]; 34 - 35 - text = ''ghostty --class=com.mitchellh.ghostty.popup --font-size=18 --gtk-single-instance=false --quit-after-last-window-closed=true --quit-after-last-window-closed-delay= --initial-command="shell:$*" --shell-integration=none''; 36 - }) 37 - 38 27 ] 39 28 (mkIf cfg.externalMonitors [ pkgs.ddcutil ]) 40 29 ];
+667
nix/modules/services/ariade/noctalia.nix
··· 1 + { config, pkgs, ... }: 2 + { 3 + environment.systemPackages = [ 4 + pkgs.noctalia-shell 5 + pkgs.quickshell 6 + pkgs.wl-clipboard 7 + ]; 8 + 9 + programs.noctalia-shell = { 10 + enable = true; 11 + settings = { 12 + appLauncher = { 13 + autoPasteClipboard = false; 14 + clipboardWatchImageCommand = "wl-paste --type image --watch cliphist store"; 15 + clipboardWatchTextCommand = "wl-paste --type text --watch cliphist store"; 16 + clipboardWrapText = true; 17 + customLaunchPrefix = ""; 18 + customLaunchPrefixEnabled = false; 19 + density = "default"; 20 + enableClipPreview = true; 21 + enableClipboardChips = true; 22 + enableClipboardHistory = false; 23 + enableClipboardSmartIcons = true; 24 + enableSessionSearch = true; 25 + enableSettingsSearch = false; 26 + enableWindowsSearch = false; 27 + iconMode = "tabler"; 28 + ignoreMouseInput = false; 29 + overviewLayer = false; 30 + pinnedApps = [ ]; 31 + position = "center"; 32 + screenshotAnnotationTool = ""; 33 + showCategories = false; 34 + showIconBackground = false; 35 + sortByMostUsed = true; 36 + terminalCommand = "alacritty -e"; 37 + viewMode = "list"; 38 + }; 39 + audio = { 40 + mprisBlacklist = [ ]; 41 + preferredPlayer = ""; 42 + spectrumFrameRate = 30; 43 + spectrumMirrored = true; 44 + visualizerType = "linear"; 45 + volumeFeedback = false; 46 + volumeFeedbackSoundFile = ""; 47 + volumeOverdrive = false; 48 + volumeStep = 5; 49 + }; 50 + bar = { 51 + autoHideDelay = 500; 52 + autoShowDelay = 150; 53 + backgroundOpacity = 0.93; 54 + barType = "simple"; 55 + capsuleColorKey = "none"; 56 + capsuleOpacity = 1; 57 + contentPadding = 2; 58 + density = "mini"; 59 + displayMode = "always_visible"; 60 + enableExclusionZoneInset = true; 61 + fontScale = 1; 62 + frameRadius = 12; 63 + frameThickness = 8; 64 + hideOnOverview = false; 65 + marginHorizontal = 4; 66 + marginVertical = 4; 67 + middleClickAction = "none"; 68 + middleClickCommand = ""; 69 + middleClickFollowMouse = false; 70 + monitors = [ ]; 71 + mouseWheelAction = "none"; 72 + mouseWheelWrap = true; 73 + outerCorners = true; 74 + position = "top"; 75 + reverseScroll = false; 76 + rightClickAction = "controlCenter"; 77 + rightClickCommand = ""; 78 + rightClickFollowMouse = true; 79 + screenOverrides = [ ]; 80 + showCapsule = false; 81 + showOnWorkspaceSwitch = true; 82 + showOutline = false; 83 + useSeparateOpacity = false; 84 + widgetSpacing = 6; 85 + widgets = { 86 + center = [ 87 + { 88 + compactMode = false; 89 + hideMode = "hidden"; 90 + hideWhenIdle = false; 91 + id = "MediaMini"; 92 + maxWidth = 500; 93 + panelShowAlbumArt = false; 94 + scrollingMode = "hover"; 95 + showAlbumArt = false; 96 + showArtistFirst = true; 97 + showProgressRing = false; 98 + showVisualizer = true; 99 + textColor = "none"; 100 + useFixedWidth = false; 101 + visualizerType = "linear"; 102 + } 103 + ]; 104 + left = [ 105 + { 106 + clockColor = "none"; 107 + customFont = ""; 108 + formatHorizontal = "ddd HH:mm"; 109 + formatVertical = "HH mm - dd MM"; 110 + id = "Clock"; 111 + tooltipFormat = "HH:mm ddd, MMM dd"; 112 + useCustomFont = false; 113 + } 114 + { 115 + compactMode = true; 116 + diskPath = "/"; 117 + iconColor = "primary"; 118 + id = "SystemMonitor"; 119 + showCpuCores = false; 120 + showCpuFreq = false; 121 + showCpuTemp = true; 122 + showCpuUsage = true; 123 + showDiskAvailable = false; 124 + showDiskUsage = false; 125 + showDiskUsageAsPercent = false; 126 + showGpuTemp = false; 127 + showLoadAverage = false; 128 + showMemoryAsPercent = true; 129 + showMemoryUsage = true; 130 + showNetworkStats = true; 131 + showSwapUsage = false; 132 + textColor = "none"; 133 + useMonospaceFont = true; 134 + usePadding = false; 135 + } 136 + ]; 137 + right = [ 138 + { 139 + blacklist = [ ]; 140 + chevronColor = "none"; 141 + colorizeIcons = false; 142 + drawerEnabled = true; 143 + hidePassive = false; 144 + id = "Tray"; 145 + pinned = [ ]; 146 + } 147 + { 148 + iconColor = "none"; 149 + id = "KeepAwake"; 150 + textColor = "none"; 151 + } 152 + { 153 + deviceNativePath = "__default__"; 154 + displayMode = "graphic-clean"; 155 + hideIfIdle = false; 156 + hideIfNotDetected = true; 157 + id = "Battery"; 158 + showNoctaliaPerformance = false; 159 + showPowerProfiles = false; 160 + } 161 + { 162 + displayMode = "onhover"; 163 + iconColor = "none"; 164 + id = "Volume"; 165 + middleClickCommand = "pwvucontrol || pavucontrol"; 166 + textColor = "none"; 167 + } 168 + { 169 + applyToAllMonitors = false; 170 + displayMode = "onhover"; 171 + iconColor = "none"; 172 + id = "Brightness"; 173 + textColor = "none"; 174 + } 175 + { 176 + colorizeDistroLogo = false; 177 + colorizeSystemIcon = "none"; 178 + customIconPath = ""; 179 + enableColorization = false; 180 + icon = "noctalia"; 181 + id = "ControlCenter"; 182 + useDistroLogo = false; 183 + } 184 + ]; 185 + }; 186 + }; 187 + brightness = { 188 + backlightDeviceMappings = [ ]; 189 + brightnessStep = 5; 190 + enableDdcSupport = true; 191 + enforceMinimum = true; 192 + }; 193 + calendar = { 194 + cards = [ 195 + { 196 + enabled = true; 197 + id = "calendar-header-card"; 198 + } 199 + { 200 + enabled = true; 201 + id = "calendar-month-card"; 202 + } 203 + { 204 + enabled = true; 205 + id = "weather-card"; 206 + } 207 + ]; 208 + }; 209 + colorSchemes = { 210 + darkMode = true; 211 + generationMethod = "tonal-spot"; 212 + manualSunrise = "06:30"; 213 + manualSunset = "18:30"; 214 + monitorForColors = ""; 215 + predefinedScheme = "Catppuccin"; 216 + schedulingMode = "off"; 217 + syncGsettings = true; 218 + useWallpaperColors = false; 219 + }; 220 + controlCenter = { 221 + cards = [ 222 + { 223 + enabled = true; 224 + id = "profile-card"; 225 + } 226 + { 227 + enabled = true; 228 + id = "shortcuts-card"; 229 + } 230 + { 231 + enabled = true; 232 + id = "audio-card"; 233 + } 234 + { 235 + enabled = false; 236 + id = "brightness-card"; 237 + } 238 + { 239 + enabled = true; 240 + id = "weather-card"; 241 + } 242 + { 243 + enabled = true; 244 + id = "media-sysmon-card"; 245 + } 246 + ]; 247 + diskPath = "/"; 248 + position = "close_to_bar_button"; 249 + shortcuts = { 250 + left = [ 251 + { id = "Network"; } 252 + { id = "Bluetooth"; } 253 + { id = "WallpaperSelector"; } 254 + { id = "NoctaliaPerformance"; } 255 + ]; 256 + right = [ 257 + { id = "Notifications"; } 258 + { id = "PowerProfile"; } 259 + { id = "KeepAwake"; } 260 + { id = "NightLight"; } 261 + ]; 262 + }; 263 + }; 264 + desktopWidgets = { 265 + enabled = false; 266 + gridSnap = false; 267 + gridSnapScale = false; 268 + monitorWidgets = [ ]; 269 + overviewEnabled = true; 270 + }; 271 + dock = { 272 + animationSpeed = 1; 273 + backgroundOpacity = 1; 274 + colorizeIcons = false; 275 + deadOpacity = 0.6; 276 + displayMode = "auto_hide"; 277 + dockType = "floating"; 278 + enabled = false; 279 + floatingRatio = 1; 280 + groupApps = false; 281 + groupClickAction = "cycle"; 282 + groupContextMenuMode = "extended"; 283 + groupIndicatorStyle = "dots"; 284 + inactiveIndicators = false; 285 + indicatorColor = "primary"; 286 + indicatorOpacity = 0.6; 287 + indicatorThickness = 3; 288 + launcherIcon = ""; 289 + launcherIconColor = "none"; 290 + launcherPosition = "end"; 291 + launcherUseDistroLogo = false; 292 + monitors = [ ]; 293 + onlySameOutput = true; 294 + pinnedApps = [ ]; 295 + pinnedStatic = false; 296 + position = "bottom"; 297 + showDockIndicator = false; 298 + showLauncherIcon = false; 299 + sitOnFrame = false; 300 + size = 1; 301 + }; 302 + general = { 303 + allowPanelsOnScreenWithoutBar = true; 304 + allowPasswordWithFprintd = false; 305 + animationDisabled = false; 306 + animationSpeed = 2; 307 + autoStartAuth = false; 308 + avatarImage = ./avatar.png; 309 + boxRadiusRatio = 1; 310 + clockFormat = "hh\\nmm"; 311 + clockStyle = "analog"; 312 + compactLockScreen = false; 313 + dimmerOpacity = 0.2; 314 + enableBlurBehind = true; 315 + enableLockScreenCountdown = true; 316 + enableLockScreenMediaControls = true; 317 + enableShadows = true; 318 + forceBlackScreenCorners = false; 319 + iRadiusRatio = 1; 320 + keybinds = { 321 + keyDown = [ "Down" ]; 322 + keyEnter = [ 323 + "Return" 324 + "Enter" 325 + ]; 326 + keyEscape = [ "Esc" ]; 327 + keyLeft = [ "Left" ]; 328 + keyRemove = [ "Del" ]; 329 + keyRight = [ "Right" ]; 330 + keyUp = [ "Up" ]; 331 + }; 332 + language = ""; 333 + lockOnSuspend = true; 334 + lockScreenAnimations = true; 335 + lockScreenBlur = 0; 336 + lockScreenCountdownDuration = 3000; 337 + lockScreenMonitors = [ ]; 338 + lockScreenTint = 0; 339 + passwordChars = false; 340 + radiusRatio = 1; 341 + reverseScroll = false; 342 + scaleRatio = 0.8; 343 + screenRadiusRatio = 1; 344 + shadowDirection = "bottom_right"; 345 + shadowOffsetX = 2; 346 + shadowOffsetY = 3; 347 + showChangelogOnStartup = true; 348 + showHibernateOnLockScreen = false; 349 + showScreenCorners = false; 350 + showSessionButtonsOnLockScreen = true; 351 + smoothScrollEnabled = true; 352 + telemetryEnabled = false; 353 + }; 354 + hooks = { 355 + colorGeneration = ""; 356 + darkModeChange = ""; 357 + enabled = false; 358 + performanceModeDisabled = ""; 359 + performanceModeEnabled = ""; 360 + screenLock = ""; 361 + screenUnlock = ""; 362 + session = ""; 363 + startup = ""; 364 + wallpaperChange = ""; 365 + }; 366 + idle = { 367 + customCommands = "[]"; 368 + enabled = true; 369 + fadeDuration = 5; 370 + lockCommand = ""; 371 + lockTimeout = 360; 372 + resumeLockCommand = ""; 373 + resumeScreenOffCommand = ""; 374 + resumeSuspendCommand = ""; 375 + screenOffCommand = ""; 376 + screenOffTimeout = 300; 377 + suspendCommand = ""; 378 + suspendTimeout = 600; 379 + }; 380 + location = { 381 + analogClockInCalendar = false; 382 + autoLocate = false; 383 + firstDayOfWeek = -1; 384 + hideWeatherCityName = false; 385 + hideWeatherTimezone = false; 386 + name = "Edinburgh, UK"; 387 + showCalendarEvents = true; 388 + showCalendarWeather = true; 389 + showWeekNumberInCalendar = false; 390 + use12hourFormat = false; 391 + useFahrenheit = false; 392 + weatherEnabled = true; 393 + weatherShowEffects = true; 394 + weatherTaliaMascotAlways = false; 395 + }; 396 + network = { 397 + bluetoothAutoConnect = true; 398 + bluetoothDetailsViewMode = "grid"; 399 + bluetoothHideUnnamedDevices = false; 400 + bluetoothRssiPollIntervalMs = 60000; 401 + bluetoothRssiPollingEnabled = false; 402 + disableDiscoverability = false; 403 + networkPanelView = "wifi"; 404 + wifiDetailsViewMode = "grid"; 405 + }; 406 + nightLight = { 407 + autoSchedule = true; 408 + dayTemp = "6500"; 409 + enabled = false; 410 + forced = false; 411 + manualSunrise = "06:30"; 412 + manualSunset = "18:30"; 413 + nightTemp = "4000"; 414 + }; 415 + noctaliaPerformance = { 416 + disableDesktopWidgets = true; 417 + disableWallpaper = true; 418 + }; 419 + notifications = { 420 + backgroundOpacity = 1; 421 + clearDismissed = true; 422 + criticalUrgencyDuration = 15; 423 + density = "default"; 424 + enableBatteryToast = true; 425 + enableKeyboardLayoutToast = true; 426 + enableMarkdown = false; 427 + enableMediaToast = false; 428 + enabled = true; 429 + location = "top_right"; 430 + lowUrgencyDuration = 3; 431 + monitors = [ ]; 432 + normalUrgencyDuration = 8; 433 + overlayLayer = true; 434 + respectExpireTimeout = false; 435 + saveToHistory = { 436 + critical = true; 437 + low = true; 438 + normal = true; 439 + }; 440 + sounds = { 441 + criticalSoundFile = ""; 442 + enabled = false; 443 + excludedApps = "discord,firefox,chrome,chromium,edge"; 444 + lowSoundFile = ""; 445 + normalSoundFile = ""; 446 + separateSounds = false; 447 + volume = 0.5; 448 + }; 449 + }; 450 + osd = { 451 + autoHideMs = 2000; 452 + backgroundOpacity = 1; 453 + enabled = true; 454 + enabledTypes = [ 455 + 0 456 + 1 457 + 2 458 + ]; 459 + location = "top_right"; 460 + monitors = [ ]; 461 + overlayLayer = true; 462 + }; 463 + plugins = { 464 + autoUpdate = false; 465 + notifyUpdates = true; 466 + }; 467 + sessionMenu = { 468 + countdownDuration = 10000; 469 + enableCountdown = true; 470 + largeButtonsLayout = "single-row"; 471 + largeButtonsStyle = true; 472 + position = "center"; 473 + powerOptions = [ 474 + { 475 + action = "lock"; 476 + command = ""; 477 + countdownEnabled = true; 478 + enabled = true; 479 + keybind = "1"; 480 + } 481 + { 482 + action = "suspend"; 483 + command = ""; 484 + countdownEnabled = true; 485 + enabled = true; 486 + keybind = "2"; 487 + } 488 + { 489 + action = "hibernate"; 490 + command = ""; 491 + countdownEnabled = true; 492 + enabled = true; 493 + keybind = "3"; 494 + } 495 + { 496 + action = "reboot"; 497 + command = ""; 498 + countdownEnabled = true; 499 + enabled = true; 500 + keybind = "4"; 501 + } 502 + { 503 + action = "logout"; 504 + command = ""; 505 + countdownEnabled = true; 506 + enabled = true; 507 + keybind = "5"; 508 + } 509 + { 510 + action = "shutdown"; 511 + command = ""; 512 + countdownEnabled = true; 513 + enabled = true; 514 + keybind = "6"; 515 + } 516 + { 517 + action = "rebootToUefi"; 518 + command = ""; 519 + countdownEnabled = true; 520 + enabled = true; 521 + keybind = "7"; 522 + } 523 + { 524 + action = "userspaceReboot"; 525 + command = ""; 526 + countdownEnabled = true; 527 + enabled = false; 528 + keybind = ""; 529 + } 530 + ]; 531 + showHeader = true; 532 + showKeybinds = true; 533 + }; 534 + settingsVersion = 59; 535 + systemMonitor = { 536 + batteryCriticalThreshold = 5; 537 + batteryWarningThreshold = 20; 538 + cpuCriticalThreshold = 90; 539 + cpuWarningThreshold = 80; 540 + criticalColor = ""; 541 + diskAvailCriticalThreshold = 10; 542 + diskAvailWarningThreshold = 20; 543 + diskCriticalThreshold = 90; 544 + diskWarningThreshold = 80; 545 + enableDgpuMonitoring = false; 546 + 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"; 547 + gpuCriticalThreshold = 90; 548 + gpuWarningThreshold = 80; 549 + memCriticalThreshold = 90; 550 + memWarningThreshold = 80; 551 + swapCriticalThreshold = 90; 552 + swapWarningThreshold = 80; 553 + tempCriticalThreshold = 90; 554 + tempWarningThreshold = 80; 555 + useCustomColors = false; 556 + warningColor = ""; 557 + }; 558 + templates = { 559 + activeTemplates = [ 560 + { 561 + enabled = true; 562 + id = "gtk"; 563 + } 564 + { 565 + enabled = true; 566 + id = "discord"; 567 + } 568 + { 569 + enabled = true; 570 + id = "btop"; 571 + } 572 + { 573 + enabled = true; 574 + id = "niri"; 575 + } 576 + { 577 + enabled = true; 578 + id = "ghostty"; 579 + } 580 + ]; 581 + enableUserTheming = false; 582 + }; 583 + ui = { 584 + boxBorderEnabled = false; 585 + fontDefault = "Sans Serif"; 586 + fontDefaultScale = 1; 587 + fontFixed = "monospace"; 588 + fontFixedScale = 1; 589 + panelBackgroundOpacity = 0.93; 590 + panelsAttachedToBar = true; 591 + scrollbarAlwaysVisible = false; 592 + settingsPanelMode = "attached"; 593 + settingsPanelSideBarCardStyle = false; 594 + tooltipsEnabled = true; 595 + translucentWidgets = false; 596 + }; 597 + wallpaper = { 598 + automationEnabled = false; 599 + directory = "/home/aria/Pictures/Wallpapers"; 600 + enableMultiMonitorDirectories = false; 601 + enabled = true; 602 + favorites = [ ]; 603 + fillColor = "#000000"; 604 + fillMode = "crop"; 605 + hideWallpaperFilenames = true; 606 + linkLightAndDarkWallpapers = true; 607 + monitorDirectories = [ ]; 608 + overviewBlur = 0.4; 609 + overviewEnabled = false; 610 + overviewTint = 0.6; 611 + panelPosition = "follow_bar"; 612 + randomIntervalSec = 300; 613 + setWallpaperOnAllMonitors = true; 614 + showHiddenFiles = false; 615 + skipStartupTransition = false; 616 + solidColor = "#1a1a2e"; 617 + sortOrder = "name"; 618 + transitionDuration = 1500; 619 + transitionEdgeSmoothness = 0.05; 620 + transitionType = [ 621 + "fade" 622 + "disc" 623 + "stripes" 624 + "wipe" 625 + "pixelate" 626 + "honeycomb" 627 + ]; 628 + useOriginalImages = false; 629 + useSolidColor = false; 630 + useWallhaven = false; 631 + viewMode = "single"; 632 + wallhavenApiKey = ""; 633 + wallhavenCategories = "111"; 634 + wallhavenOrder = "desc"; 635 + wallhavenPurity = "100"; 636 + wallhavenQuery = ""; 637 + wallhavenRatios = ""; 638 + wallhavenResolutionHeight = ""; 639 + wallhavenResolutionMode = "atleast"; 640 + wallhavenResolutionWidth = ""; 641 + wallhavenSorting = "relevance"; 642 + wallpaperChangeMode = "random"; 643 + }; 644 + }; 645 + 646 + colors = { 647 + mPrimary = config.colours.values.accent.hex; 648 + mOnPrimary = config.colours.values.crust.hex; 649 + mSecondary = config.colours.values.pink.hex; 650 + mOnSecondary = config.colours.values.crust.hex; 651 + mTertiary = config.colours.values.mauve.hex; 652 + mOnTertiary = config.colours.values.crust.hex; 653 + mError = config.colours.values.red.hex; 654 + mOnError = config.colours.values.crust.hex; 655 + mSurface = config.colours.values.base.hex; 656 + mOnSurface = config.colours.values.text.hex; 657 + mSurfaceVariant = config.colours.values.surface0.hex; 658 + mOnSurfaceVariant = config.colours.values.text.hex; 659 + mOutline = config.colours.values.text.hex; 660 + mShadow = config.colours.values.crust.hex; 661 + mHover = config.colours.values.mauve.hex; 662 + mOnHover = config.colours.values.crust.hex; 663 + }; 664 + }; 665 + 666 + environment.home."Pictures/Wallpapers/default.png".source = config.services.ariade.wallpaper; 667 + }
-102
nix/modules/services/ariade/paper/default.nix
··· 1 - { 2 - pkgs, 3 - lib, 4 - config, 5 - ... 6 - }@inp: 7 - let 8 - inherit (lib) 9 - mkIf 10 - types 11 - mkOption 12 - ; 13 - cfg = config.services.ariade; 14 - toHyprconf = import ../toHyprconf.nix lib; 15 - generateTextImage = import ../generateTextImage.nix inp; 16 - in 17 - { 18 - imports = [ 19 - ./hyprpaper_config.nix 20 - ]; 21 - options = { 22 - services.ariade = { 23 - monitorSize = 24 - let 25 - sizeOpt = mkOption { 26 - type = types.int; 27 - }; 28 - in 29 - { 30 - x = sizeOpt // { 31 - default = 1920; 32 - }; 33 - y = sizeOpt // { 34 - default = 1080; 35 - }; 36 - }; 37 - asciiArt = mkOption { 38 - type = types.str; 39 - default = " "; 40 - }; 41 - asciiArtFont = mkOption { 42 - type = types.path; 43 - default = "${pkgs.monaspace}/share/fonts/truetype/MonaspaceNeonFrozen-Regular.ttf"; 44 - }; 45 - wallpaper = mkOption { 46 - type = types.path; 47 - default = generateTextImage { 48 - sizeX = cfg.monitorSize.x; 49 - sizeY = cfg.monitorSize.y; 50 - font = cfg.asciiArtFont; 51 - 52 - bgColour = config.colours.values.crust.hex; 53 - textColour = config.colours.values.accent.hex; 54 - 55 - inherit (cfg) asciiArt; 56 - caption = "aria@${config.networking.hostName}"; 57 - }; 58 - }; 59 - }; 60 - 61 - programs.hyprpaper.settings = mkOption { 62 - default = { }; 63 - type = 64 - with types; 65 - let 66 - valueType = 67 - nullOr (oneOf [ 68 - bool 69 - int 70 - float 71 - str 72 - (attrsOf valueType) 73 - (listOf valueType) 74 - ]) 75 - // { 76 - description = "Hyprland configuration value"; 77 - }; 78 - in 79 - valueType; 80 - }; 81 - }; 82 - 83 - config = mkIf cfg.enable { 84 - systemd.user.services.hyprpaper = { 85 - description = "Wallpaper"; 86 - partOf = [ "graphical-session.target" ]; 87 - startLimitIntervalSec = 350; 88 - startLimitBurst = 30; 89 - wantedBy = [ "graphical-session.target" ]; 90 - after = [ "wayland-session-waitenv.service" ]; 91 - 92 - serviceConfig = { 93 - ExecStart = "${pkgs.hyprpaper}/bin/hyprpaper"; 94 - Restart = "on-failure"; 95 - RestartSec = 3; 96 - }; 97 - }; 98 - environment.home.".config/hypr/hyprpaper.conf".text = toHyprconf { 99 - attrs = config.programs.hyprpaper.settings; 100 - }; 101 - }; 102 - }
-14
nix/modules/services/ariade/paper/hyprpaper_config.nix
··· 1 - { config, ... }: 2 - { 3 - programs.hyprpaper.settings = { 4 - wallpaper = [ 5 - { 6 - monitor = ""; 7 - path = builtins.toString config.services.ariade.wallpaper; 8 - } 9 - ]; 10 - 11 - splash = false; 12 - ipc = false; 13 - }; 14 - }
+32
nix/npins/sources.json
··· 87 87 "url": "https://github.com/aMOPel/nixpkgs/archive/c9801acc8c4fac6377d076bc1c102b15bd9cfa6f.tar.gz", 88 88 "hash": "sha256-dRhVt0aFDyTqppyzRLxiO1JZEAoIA2fUnaeyJTe+UwU=" 89 89 }, 90 + "noctalia-qs": { 91 + "type": "GitRelease", 92 + "repository": { 93 + "type": "GitHub", 94 + "owner": "noctalia-dev", 95 + "repo": "noctalia-qs" 96 + }, 97 + "pre_releases": false, 98 + "version_upper_bound": null, 99 + "release_prefix": null, 100 + "submodules": false, 101 + "version": "v0.0.12", 102 + "revision": "e7224b756dcd10eec040df818a4c7a0fda5d6eff", 103 + "url": "https://api.github.com/repos/noctalia-dev/noctalia-qs/tarball/refs/tags/v0.0.12", 104 + "hash": "sha256-79JP2QTdvp1jg7HGxAW+xzhzhLnlKUi8yGXq9nDCeH0=" 105 + }, 106 + "noctalia-shell": { 107 + "type": "GitRelease", 108 + "repository": { 109 + "type": "GitHub", 110 + "owner": "noctalia-dev", 111 + "repo": "noctalia-shell" 112 + }, 113 + "pre_releases": false, 114 + "version_upper_bound": null, 115 + "release_prefix": null, 116 + "submodules": false, 117 + "version": "v4.7.5", 118 + "revision": "8b0c7c288063e5048a439ca308dd65f7044f42b6", 119 + "url": "https://api.github.com/repos/noctalia-dev/noctalia-shell/tarball/refs/tags/v4.7.5", 120 + "hash": "sha256-0xoCuJSRSWcn4mCX382lCxqLbnuOrrqS4dOcdpoUmZg=" 121 + }, 90 122 "tangled": { 91 123 "type": "GitRelease", 92 124 "repository": {
+11
nix/pkgs/default.nix
··· 88 88 tranquil-frontend = final.callPackage "${inputs.tranquil-pds}/frontend.nix" { 89 89 inherit (import inputs.nixpkgs-deno { }) fetchDenoDeps; 90 90 }; 91 + 92 + # From inputs.noctalia-qs 93 + quickshell = final.callPackage "${inputs.noctalia-qs}/nix/package.nix" { 94 + version = inputs.noctalia-qs.version; 95 + gitRev = inputs.noctalia-qs.revision; 96 + }; 97 + 98 + # From inputs.noctalia-shell 99 + noctalia-shell = final.callPackage "${inputs.noctalia-shell}/nix/package.nix" { 100 + version = inputs.noctalia-shell.version; 101 + }; 91 102 }