From c9521463054b86a2e857ebf150b0260062189a80 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 11:42:51 +1000 Subject: [PATCH 01/31] add keyd service --- groups/cryos/default.nix | 3 ++- groups/cryos/keybinds.nix | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 groups/cryos/keybinds.nix diff --git a/groups/cryos/default.nix b/groups/cryos/default.nix index 236930f..d00bae3 100644 --- a/groups/cryos/default.nix +++ b/groups/cryos/default.nix @@ -1,6 +1,7 @@ -{lib, ...}: { +{...}: { imports = [ ./programs.nix + ./keybinds.nix ]; boot.loader = { diff --git a/groups/cryos/keybinds.nix b/groups/cryos/keybinds.nix new file mode 100644 index 0000000..25a3f19 --- /dev/null +++ b/groups/cryos/keybinds.nix @@ -0,0 +1,19 @@ +{...}: { + services.keyd = { + enable = true; + keyboards.default = { + ids = ["*"]; + settings = { + main = { + capslock = "meta"; + + # NOTE: unsure whether or not i like oneshot... + # shift = "oneshot(shift)"; + # control = "oneshot(control)"; + # leftalt = "oneshot(alt)"; + # rightalt = "oneshot(rightalt)"; + }; + }; + }; + }; +} From 8dffcd33863fe40f435901ce0dd5f7b4f91c93f5 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 11:44:25 +1000 Subject: [PATCH 02/31] add nix-search-tv --- groups/cryos/programs.nix | 7 ++++++- homes/me/default.nix | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/groups/cryos/programs.nix b/groups/cryos/programs.nix index ee38f86..6b2fd55 100644 --- a/groups/cryos/programs.nix +++ b/groups/cryos/programs.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + upkgs, + ... +}: { environment.systemPackages = with pkgs; [ # Shell bash @@ -45,6 +49,7 @@ nix-prefetch-git nix-index nix-unit + upkgs.nix-search-tv # Python python312 # I use 3.12 since it's in a pretty stable state now diff --git a/homes/me/default.nix b/homes/me/default.nix index 89d16b5..34c608f 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -26,7 +26,9 @@ home = { shellAliases = { + # nix nd = "nix develop"; + ntv = "nix-search-tv"; rebuild = "nh os switch ~/flake"; trybuild = "nh os test ~/flake"; brip = "batgrep"; # bat + ripgrep From f9f0e9b9c7b7cd5a1fe0cac6070739b4cf4a2f13 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 11:47:30 +1000 Subject: [PATCH 03/31] add decompile shell function --- homes/modules/fish.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/homes/modules/fish.nix b/homes/modules/fish.nix index ddfbcf7..34a2950 100755 --- a/homes/modules/fish.nix +++ b/homes/modules/fish.nix @@ -65,6 +65,10 @@ rg --files | rg $args end + function decompile + objdump --disassemble --demangle --debugging --debugging-tags $argv | bat --language asm + end + set -g fish_greeting (rand_greet) From 64325631a6339452cfcf195569d85c4322c6ec5d Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 11:47:57 +1000 Subject: [PATCH 04/31] configure bat --- homes/me/default.nix | 11 ++-- homes/modules/bat.nix | 131 +++++++++++++++++++++++++++++++++-------- homes/modules/fish.nix | 6 -- 3 files changed, 114 insertions(+), 34 deletions(-) diff --git a/homes/me/default.nix b/homes/me/default.nix index 34c608f..6380ca2 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -31,8 +31,10 @@ ntv = "nix-search-tv"; rebuild = "nh os switch ~/flake"; trybuild = "nh os test ~/flake"; - brip = "batgrep"; # bat + ripgrep - man = "batman"; # bat + man + + # shell utilities + rgf = "rg --files | rg"; + watch = "viddy"; }; pointerCursor = { @@ -45,14 +47,13 @@ packages = with pkgs; [ # for services.gnome-keyring - pkgs.gcr # provides org.gnome.keyring.SystemPrompter + gcr # provides org.gnome.keyring.SystemPrompter seahorse # gui - krita + krita tor-browser fuzzel - speedtest-cli ]; }; diff --git a/homes/modules/bat.nix b/homes/modules/bat.nix index fca2231..70268f5 100755 --- a/homes/modules/bat.nix +++ b/homes/modules/bat.nix @@ -1,24 +1,109 @@ -{ - config, - pkgs, - ... -}: { - # like `/bin/cat` but with syntax highlighting - # TODO: change the pager (maybe use Github:sachaos/viddy instead) - programs.bat = { - enable = true; - config = { - pager = "less -FR"; - theme = "Dracula"; - }; - }; +let + # Module Meta Configuration + setShellAliases = true; + supportBash = true; + supportZsh = true; + supportFish = true; +in + { + osConfig, + config, + pkgs, + lib, + username, + ... + }: let + inherit + (builtins) + elemAt + ; - # other commands that make normal utils prettier - home.packages = with pkgs.bat-extras; [ - batdiff - batgrep - batman - batwatch - prettybat - ]; -} + inherit + (lib) + flip + mkIf + optional + splitString + ; + + cfg = config.programs.bat; + + # NOTE: `.pname` can be used instead of `.meta.mainProgram` + # NOTE: but then `pkgs.bash` would return `"bash-interactive"` which is annoying... + shellPkg = osConfig.users.users.${username}.shell; + shell = shellPkg.meta.mainProgram; + + pager = + cfg.config.pager + |> splitString " " + |> flip elemAt 0; + in { + programs.bat = { + enable = true; + config = { + # WARNING: pager must be set for this module to function + # NOTE: not sure whether to use ov/moor/viddy as my pager? + pager = "less -FR"; + # theme = "Dracula"; + }; + }; + + home = { + shellAliases = mkIf setShellAliases { + bat = "prettybat"; + cat = "prettybat"; + diff = "batdiff"; + brg = "batgrep"; + man = "batman"; + # watch = "batwatch"; # NOTE: using viddy instead atm + }; + + sessionVariables = { + PAGER = pager; + + # REF: https://github.com/eth-p/bat-extras/blob/master/doc/batpipe.md + BATPIPE_ENABLE_COLOR = "true"; + BATPIPE_INSIDE_LESS = "true"; + BATPIPE_TERM_WIDTH = "-"; # hyphone -> auto detect + }; + + packages = with pkgs.bat-extras; + [ + batdiff + batgrep + batman + batpipe + batwatch + prettybat + ] + ++ (with pkgs; [ + bat + entr # required by pkgs.bat-extras.batwatch + ripgrep # required by pkgs.bat-extras.batgrep + delta # required by pkgs.bat-extras.batdiff + ]) + ++ optional (pkgs?${pager}) pkgs.${pager}; + }; + + # Configure the user's shell to source batpipe + # WARNING: only currently supports bash, zsh, & fish + programs = { + bash = mkIf (supportBash || shell == "bash") { + initExtra = '' + eval "$(batpipe)" + ''; + }; + + zsh = mkIf (supportZsh || shell == "zsh") { + initContent = '' + eval "$(batpipe)" + ''; + }; + + fish = mkIf (supportFish || shell == "fish") { + interactiveShellInit = '' + eval (batpipe) + ''; + }; + }; + } diff --git a/homes/modules/fish.nix b/homes/modules/fish.nix index 34a2950..dd14c45 100755 --- a/homes/modules/fish.nix +++ b/homes/modules/fish.nix @@ -1,5 +1,4 @@ { - config, lib, pkgs, ... @@ -60,9 +59,6 @@ curl -sL "https://www.gitignore.io/api/$type" end - # ripgrep on files - function rgf - rg --files | rg $args end function decompile @@ -70,8 +66,6 @@ end set -g fish_greeting (rand_greet) - - ''; shellAliases = { From 719bd1de6b5b839fe31a35f9be7a16086e4966a8 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 11:48:09 +1000 Subject: [PATCH 05/31] update TODO --- TODO.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index 023c781..d370575 100644 --- a/TODO.md +++ b/TODO.md @@ -1,9 +1,13 @@ - [ ] Update the README.md - [ ] switch ssh keys to ECC (fuck RSA) -- [ ] forgejo not post-quantum (fix that) -- [X] migrate forge.dobutterfliescry.net -> tearforge.net -- [X] rename forgejo user to git - [ ] setup my own VPN - [ ] connect matcha to my VPN - [ ] use matcha to build stuff instead of using my laptop + +- [X] update bat config +- [ ] switch to zsh? or maybe elvish? +- [ ] switch to neovim +- [ ] switch to mangowc + +- [ ] fix my fuck ass emojis From 85071855ec06a2cd5b5377d50fbccd67b4d91bd7 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 12:26:35 +1000 Subject: [PATCH 06/31] reorganise /homes --- homes/me/default.nix | 118 ++-------- homes/{modules => me/modules/cli}/git.nix | 0 homes/me/modules/cli/ssh.nix | 46 ++++ homes/modules/ags/config.js | 30 --- homes/modules/ags/default.nix | 12 - homes/modules/ags/style.css | 0 homes/modules/ags/widgets/applauncher.js | 125 ----------- homes/modules/ags/widgets/bar.ts | 38 ---- homes/modules/ags/widgets/fullscreen.js | 23 -- homes/modules/ags/widgets/notifications.js | 122 ---------- homes/modules/{ => apps}/obs.nix | 0 homes/modules/{ => cli}/bat.nix | 0 homes/modules/{ => cli}/btop.nix | 0 homes/modules/cli/hyfetch.nix | 22 ++ homes/modules/{ => cli}/tmux.nix | 0 homes/modules/{ => de}/mako.nix | 0 homes/modules/fish.nix | 88 -------- homes/modules/rofi.nix | 13 -- homes/modules/services/ssh-agent.nix | 16 ++ homes/modules/shell/fish.nix | 73 ++++++ homes/modules/shell/zsh.nix | 17 ++ homes/modules/term/default.nix | 9 - homes/modules/term/rio.nix | 6 +- homes/modules/theme.rasi | 209 ------------------ homes/modules/wm/default.nix | 39 ---- homes/modules/wm/hypr/hyprland.nix | 29 --- homes/modules/wm/hyprland/default.nix | 26 +++ .../wm/{hypr => hyprland}/hypridle.nix | 0 .../wm/{hypr => hyprland}/hyprlock.nix | 0 homes/modules/{ => wm/hyprland}/kanshi.nix | 6 +- .../wm/{mangowc.nix => mango/default.nix} | 0 homes/modules/wofi.nix | 183 --------------- 32 files changed, 219 insertions(+), 1031 deletions(-) rename homes/{modules => me/modules/cli}/git.nix (100%) create mode 100644 homes/me/modules/cli/ssh.nix delete mode 100755 homes/modules/ags/config.js delete mode 100644 homes/modules/ags/default.nix delete mode 100755 homes/modules/ags/style.css delete mode 100755 homes/modules/ags/widgets/applauncher.js delete mode 100755 homes/modules/ags/widgets/bar.ts delete mode 100755 homes/modules/ags/widgets/fullscreen.js delete mode 100644 homes/modules/ags/widgets/notifications.js rename homes/modules/{ => apps}/obs.nix (100%) rename homes/modules/{ => cli}/bat.nix (100%) rename homes/modules/{ => cli}/btop.nix (100%) create mode 100644 homes/modules/cli/hyfetch.nix rename homes/modules/{ => cli}/tmux.nix (100%) rename homes/modules/{ => de}/mako.nix (100%) delete mode 100755 homes/modules/fish.nix delete mode 100755 homes/modules/rofi.nix create mode 100644 homes/modules/services/ssh-agent.nix create mode 100755 homes/modules/shell/fish.nix create mode 100644 homes/modules/shell/zsh.nix delete mode 100644 homes/modules/term/default.nix delete mode 100755 homes/modules/theme.rasi delete mode 100644 homes/modules/wm/default.nix delete mode 100755 homes/modules/wm/hypr/hyprland.nix create mode 100755 homes/modules/wm/hyprland/default.nix rename homes/modules/wm/{hypr => hyprland}/hypridle.nix (100%) rename homes/modules/wm/{hypr => hyprland}/hyprlock.nix (100%) rename homes/modules/{ => wm/hyprland}/kanshi.nix (97%) rename homes/modules/wm/{mangowc.nix => mango/default.nix} (100%) delete mode 100755 homes/modules/wofi.nix diff --git a/homes/me/default.nix b/homes/me/default.nix index 6380ca2..8f4c8ea 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -1,27 +1,28 @@ {pkgs, ...}: { imports = [ - ../modules/fish.nix - ../modules/btop.nix - ../modules/tmux.nix - ../modules/git.nix - ../modules/bat.nix - ../modules/term/foot.nix + ./modules/cli/git.nix + ./modules/cli/ssh.nix + ../modules/term/foot.nix + ../modules/shell/fish.nix + ../modules/shell/zsh.nix ../modules/editor/helix.nix ../modules/editor/neovim + ../modules/cli/bat.nix + ../modules/cli/btop.nix + ../modules/cli/hyfetch.nix + ../modules/cli/tmux.nix + ../modules/apps/firefox.nix ../modules/apps/zen-browser.nix ../modules/apps/thunderbird.nix ../modules/apps/nixcord.nix ../modules/apps/spicetify.nix - # ../modules/wm - ../modules/wm/mangowc.nix - # ../modules/wm/hypr/hyprland.nix - # ../modules/wm/hypr/hyprlock.nix - ../modules/kanshi.nix - ../modules/mako.nix + ../modules/wm/hyprland + ../modules/wm/mango + ../modules/de/mako.nix ]; home = { @@ -33,6 +34,10 @@ trybuild = "nh os test ~/flake"; # shell utilities + ls = "eza --color=auto"; + l = "eza -Alh --color=auto --icons=auto"; + ll = "eza -lh --color=auto --icons=auto"; + li = "eza --color=auto --git-ignore"; rgf = "rg --files | rg"; watch = "viddy"; }; @@ -84,98 +89,9 @@ style.name = "gtk2"; }; - programs = { - hyfetch = { - enable = true; - settings = { - backend = "neofetch"; - args = null; - distro = null; - - preset = "transfeminine"; # "nonbinary"; - pride_month_disable = false; - custom_ascii_path = null; - - mode = "rgb"; - light_dark = "dark"; - auto_detect_light_dark = true; - lightness = 0.65; - color_align = { - mode = "horizontal"; - }; - }; - }; - - zsh = { - enable = true; - enableCompletion = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - - history = { - size = 10000; - ignoreAllDups = true; - path = "$HOME/.zsh_history"; - ignorePatterns = [ - "rm *" - ]; - }; - }; - - # set ssh profiles - # WARNING: this DOES NOT start the ssh-agent - # WARNING: for that you need to use `services.ssh-agent.enable` - ssh = { - enable = true; - forwardAgent = false; - addKeysToAgent = "yes"; - - matchBlocks = { - butterfly = { - hostname = "dobutterfliescry.net"; - user = "cry"; - port = 42069; - identityFile = "~/keys/butterfly"; - setEnv = { - TERM = "xterm-256color"; - }; - }; - hyrule = { - hostname = "hyrule.dobutterfliescry.net"; - user = "cry"; - port = 42069; - identityFile = "~/keys/hyrule"; - setEnv = { - TERM = "xterm-256color"; - }; - }; - matcha = { - hostname = "192.168.88.250"; - user = "emile"; - port = 22; - identityFile = "~/keys/matcha"; - }; - youcue = { - hostname = "moss.labs.eait.uq.edu.au"; - user = "s4740056"; - port = 22; - identityFile = "~/keys/other/youcue"; - setEnv = { - TERM = "xterm-256color"; - }; - }; - }; - }; - }; - services = { - # enable OpenSSH private key agent - # ssh-agent.enable = true; - gnome-keyring.enable = true; }; - # the ssh-agent won't set this for itself... - # systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent"; home.stateVersion = "24.05"; # don't change this } diff --git a/homes/modules/git.nix b/homes/me/modules/cli/git.nix similarity index 100% rename from homes/modules/git.nix rename to homes/me/modules/cli/git.nix diff --git a/homes/me/modules/cli/ssh.nix b/homes/me/modules/cli/ssh.nix new file mode 100644 index 0000000..7e4e694 --- /dev/null +++ b/homes/me/modules/cli/ssh.nix @@ -0,0 +1,46 @@ +{...}: { + # set ssh profiles + # WARNING: this DOES NOT start the ssh-agent + # WARNING: for that you need to use `services.ssh-agent.enable` + programs.ssh = { + enable = true; + forwardAgent = false; + addKeysToAgent = "yes"; + + matchBlocks = { + butterfly = { + hostname = "dobutterfliescry.net"; + user = "cry"; + port = 42069; + identityFile = "~/keys/butterfly"; + setEnv = { + TERM = "xterm-256color"; + }; + }; + hyrule = { + hostname = "hyrule.dobutterfliescry.net"; + user = "cry"; + port = 42069; + identityFile = "~/keys/hyrule"; + setEnv = { + TERM = "xterm-256color"; + }; + }; + matcha = { + hostname = "192.168.88.250"; + user = "emile"; + port = 22; + identityFile = "~/keys/matcha"; + }; + youcue = { + hostname = "moss.labs.eait.uq.edu.au"; + user = "s4740056"; + port = 22; + identityFile = "~/keys/other/youcue"; + setEnv = { + TERM = "xterm-256color"; + }; + }; + }; + }; +} diff --git a/homes/modules/ags/config.js b/homes/modules/ags/config.js deleted file mode 100755 index 5a11efc..0000000 --- a/homes/modules/ags/config.js +++ /dev/null @@ -1,30 +0,0 @@ -import { AppLauncher } from "./widgets/applauncher.js" -//import { Notifications } from "./widgets/notifications.js" - -/* -const date = Variable('', { - poll: [1000, 'date'], -}) -*/ - -/* -const Bar = (monitor = 0) => Widget.Window({ - monitor, - name: 'bar${monitor}', - anchor: ['top', 'left', 'right'], - child: Widget.Label({ label: date.bind() }), - }) -*/ - -App.config({ - style: "./style.css", - // icons: "./assets", - windows: [ - //Bar(), - AppLauncher, - //Notifications() - ] - // gtkTheme: "Adwaita-dark", - // cursorTheme: "Qogir", - // iconTheme: "MoreWaita",[] -}) diff --git a/homes/modules/ags/default.nix b/homes/modules/ags/default.nix deleted file mode 100644 index 448e32e..0000000 --- a/homes/modules/ags/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{pkgs, ...}: { - programs.ags = { - enable = true; - configDir = ./.; - - extraPackages = with pkgs; [ - gtksourceview - webkitgtk - accountsservice - ]; - }; -} diff --git a/homes/modules/ags/style.css b/homes/modules/ags/style.css deleted file mode 100755 index e69de29..0000000 diff --git a/homes/modules/ags/widgets/applauncher.js b/homes/modules/ags/widgets/applauncher.js deleted file mode 100755 index d94244a..0000000 --- a/homes/modules/ags/widgets/applauncher.js +++ /dev/null @@ -1,125 +0,0 @@ -const { query } = await Service.import("applications"); -const WINDOW_NAME = "applauncher"; - -const AppItem = app => Widget.Button({ - on_clicked: () => { - App.closeWindow(WINDOW_NAME) - app.launch() - }, - attribute: { app }, - child: Widget.Box({ - children: [ - Widget.Icon({ - icon: app.icon_name || "", - size: 42, - }), - Widget.Label({ - class_name: "title", - label: app.name, - xalign: 0, - vpack: "center", - truncate: "end", - css: "margin-left: 10px;" - }), - ], - }), -}) - -const AppLauncherWidget = ({ width = 500, height = 500, spacing = 12 }) => { - let applications = query("").map(AppItem) - - const list = Widget.Box({ - vertical: true, - children: applications, - spacing, - }) - - function refresh() { - applications = query("").map(AppItem) - list.children = applications - } - - const entry = Widget.Entry({ - placeholder_text: "Search", - hexpand: true, - css: "min-height: 50px;", - - // launch first item when Enter is pressed - on_accept: () => { - // only consider applications that are visible in the list - const results = applications.filter((item) => item.visible); - if (results[0]) { - App.toggleWindow(WINDOW_NAME); - results[0].attribute.app.launch() - } - }, - - // filter the applications based on search term - on_change: ({ text }) => applications.forEach(item => { - item.visible = item.attribute.app.match(text ?? "") - }), - }) - - return Widget.Box({ - vertical: false, - children: [ - // LEFT - Widget.Box({ - vertical: true, - css: `min-width: ${width}px;` - + `min-height: ${height}px;` - + "background-image: url('https://images2.alphacoders.com/135/1351579.png');" - + "background-size: cover;" - + "background-position: center;" - + "background-repeat: no-repeat;", - children: [ - // align the entry field with the app list - Widget.Box({ - css: `margin: ${spacing * 2}px;`, - child: entry, - }), - ], - }), - - // RIGHT - Widget.Box({ - vertical: true, - css: `margin: ${spacing * 2}px;`, - child: - // make scrollable - Widget.Scrollable({ - hscroll: "never", - css: `min-width: ${width}px; min-height: ${height}px;`, - child: list, - }), - - setup: self => self.hook(App, (_, windowName, visible) => { - if (windowName !== WINDOW_NAME) - return - - // when the launcher becomes visible - if (visible) { - refresh() - entry.text = "" - entry.grab_focus() - } - }), - }), - ], - }) -} - -// the app launcher should be a singleton -export const AppLauncher = Widget.Window({ - name: WINDOW_NAME, - setup: self => self.keybind("Escape", () => { - App.closeWindow(WINDOW_NAME) - }), - visible: false, - keymode: "exclusive", - child: AppLauncherWidget({ - width: 500, - height: 500, - spacing: 12, - }), -}) diff --git a/homes/modules/ags/widgets/bar.ts b/homes/modules/ags/widgets/bar.ts deleted file mode 100755 index 8f361ac..0000000 --- a/homes/modules/ags/widgets/bar.ts +++ /dev/null @@ -1,38 +0,0 @@ -import options from "options"p - -const { start, center, end } = options.bar.layout - -// place all your bar widgets in here -const widgets = { - expander: () => Widget.Box({ expand: true}), -} - - -//export type BarWidget = keyof typeof widget; - -export default (monitor: number) => Widget.Window({ - monitor, - class_name: "bar", - name: "bar-${monitor}", - // anchor: position.bind().as(pos => [pos, "left", "right"]), - anchor: ["top", "left", "right"], - child: Widget.CenterBox({ - // ensure bar is shown - css: "min-width: 2px; min-height: 2px;" - startWidget: Widget.Box({ - hexpand: true, - // map all start widgets to be childen - childen: start.bind().as(s => s.map(w => widgets[w]())) - }), - centerWidget: Widget.Box({ - hpack: "center", - // map all center widgets to be childen - childen: center.bind().as(c => c.map(w => widgets[w]())) - }), - endWidget: Widget.Box({ - hexpand: true - // map all end widgets to be childen - childen: end.bind().as(e => e.map(w => widgets[w]())) - }), - }) -}) diff --git a/homes/modules/ags/widgets/fullscreen.js b/homes/modules/ags/widgets/fullscreen.js deleted file mode 100755 index 72682f2..0000000 --- a/homes/modules/ags/widgets/fullscreen.js +++ /dev/null @@ -1,23 +0,0 @@ -const WINDOW_NAME = "fullscreen"; - -const Fullscreen = (children) => Widget.Box({ - vertical: true, - css: "background-image: url('~/downloads/wallpaper/kill-my-firstborn/astronaut-pink-blue.png');", - //+ "background-size: cover;" - //+ "background-position: center;" - //+ "background-repeat: no-repeat;", - children: children, -}) - -export const fullscreen = Widget.Window({ - name: WINDOW_NAME, - setup: self => self.keybind("Escape", () => { - App.closeWindow(WINDOW_NAME) - }), - anchor: ["top", "bottom", "left", "right"], - visible: false, - keymode: "exclusive", - child: Fullscreen( - Widget.Label({"Hello World"}); - ) -}) diff --git a/homes/modules/ags/widgets/notifications.js b/homes/modules/ags/widgets/notifications.js deleted file mode 100644 index 3af9fcf..0000000 --- a/homes/modules/ags/widgets/notifications.js +++ /dev/null @@ -1,122 +0,0 @@ -const notifications = await Service.import("notifications"); - -function NotificationIcon({ app_entry, app_icon, image}) { - if (image) { - return Widget.Box({ - css: `background-image: url("${image}");` - + "background-size: contain;" - + "background-repeat: no-repeat;" - + "background-position: center;" - }) - } - - let icon = "dialog-information-symbolic" - if (Utils.lookUpIcon(app_icon)) - icon = app_icon - - if (app_entry && Utils.lookUpIcon(app_entry)) - icon = app_entry - - return Widget.Box({ - child: Widget.Icon(icon), - }) -} - - -function Notification(n) { - const icon = Widget.Box({ - vpack: "start", - class_name: "icon", - child: NotificationIcon(n), - }) - - const title = Widget.Label({ - class_name: "title", - xalign: 0, - justification: "left", - hexpand: true, - max_width_chars: 24, - truncate: "end", - wrap: true, - label: n.summary, - use_markup: true, - }) - - const body = Widget.Label({ - class_name: "body", - hexpand: true, - use_markup: true, - xalign: 0, - justification: "left", - label: n.body, - wrap: true, - }) - - const actions = Widget.Box({ - class_name: "actions", - children: n.actions.map(({ id, label}) => Widget.Button({ - class_name: "action-button", - on_clicked: () => { - n.invoke(id), - n.dismiss() - }, - hexpand: true, - child: Widget.Label(label), - })), - }) - - return Widget.EventBox( - { - attribute: {id: n.id}, - on_primary_click: n.dismiss, - }, - Widget.Box( - { - class_name: `notification ${n.urgency}`, - vertical: true, - }, - Widget.Box([ - icon, - Widget.Box( - { vertical: true }, - title, - body, - ), - ]), - actions, - ), - ) -} - -export function Notifications(monitor = 0) { - const list = Widget.Box({ - vertical: true, - children: notifications.popups.map(Notification), - }) - - function onNotified(_, id) { - const n = notifications.getNotification(id) - if (n) - list.children = [Notification(n), ...list.children] - } - - function onDismissed(_, id) { - list.children.find(n => n.attribute.id === id)?.destroy() - } - - list.hook(notifications, onNotified, "notified") - .hook(notifications, onDismissed, "dismissed") - - return Widget.Window({ - monitor, - class_name: "notifications-widget", - name: `notifications-${monitor}`, - anchor: ["top", "left"], - child: Widget.Box({ - css: "min-width: 2px; min-height: 2px;", - class_name: "notifications", - vertical: true, - child: list, - }), - }) -} diff --git a/homes/modules/obs.nix b/homes/modules/apps/obs.nix similarity index 100% rename from homes/modules/obs.nix rename to homes/modules/apps/obs.nix diff --git a/homes/modules/bat.nix b/homes/modules/cli/bat.nix similarity index 100% rename from homes/modules/bat.nix rename to homes/modules/cli/bat.nix diff --git a/homes/modules/btop.nix b/homes/modules/cli/btop.nix similarity index 100% rename from homes/modules/btop.nix rename to homes/modules/cli/btop.nix diff --git a/homes/modules/cli/hyfetch.nix b/homes/modules/cli/hyfetch.nix new file mode 100644 index 0000000..b0a64a0 --- /dev/null +++ b/homes/modules/cli/hyfetch.nix @@ -0,0 +1,22 @@ +{...}: { + programs.hyfetch = { + enable = true; + settings = { + backend = "neofetch"; + args = null; + distro = null; + + preset = "transfeminine"; # "nonbinary"; + pride_month_disable = false; + custom_ascii_path = null; + + mode = "rgb"; + light_dark = "dark"; + auto_detect_light_dark = true; + lightness = 0.65; + color_align = { + mode = "horizontal"; + }; + }; + }; +} diff --git a/homes/modules/tmux.nix b/homes/modules/cli/tmux.nix similarity index 100% rename from homes/modules/tmux.nix rename to homes/modules/cli/tmux.nix diff --git a/homes/modules/mako.nix b/homes/modules/de/mako.nix similarity index 100% rename from homes/modules/mako.nix rename to homes/modules/de/mako.nix diff --git a/homes/modules/fish.nix b/homes/modules/fish.nix deleted file mode 100755 index dd14c45..0000000 --- a/homes/modules/fish.nix +++ /dev/null @@ -1,88 +0,0 @@ -{ - lib, - pkgs, - ... -}: { - options = { - morphBashToFish = lib.mkEnableOption "morphBashToFish"; - }; - - # TODO: make the greeting controllable (ie so my VPS can be different) - config = { - programs.fish = { - enable = true; - generateCompletions = true; - - # vendor = { - # config.enable = true; - # functions.enable = true; - # completions.enable = true; - # }; - - interactiveShellInit = let - greetings = - [ - "Welcome weary traveller to my shop" - "It's dangerous to go alone! Take this." - "Do butterflies cry when they're sad?" - "I hope they do" - "I think Alice is lost..." - "I once again retreat to the sanctuary of my virtual realm" - - "Something wicked this way comes" - "May your L's be many... and your bitches few" - - "What a horrible night to have a curse." - "The ancient spirits of light and dark have been released." - "The god of the stars rejects your offering. The ritual can only be performed at night." - "You should have just died..." - "Supreme Witch, Calamitas has killed every player!" - - "A broken heart beats in fractals" # Key Fairy - - "Remember our promise" # Signalis - ] - |> map (x: "\"${x}\"") - |> builtins.concatStringsSep " "; - in '' - # add dotnet completions if it exists (ie we're in a virtual environment) - if type -q dotnet - complete -f -c dotnet -a "(dotnet complete (commandline -cp))" - end - - function rand_greet - set greetings ${greetings} - echo -n $greetings[(random 1 (count $greetings))] - end - - function gitignore -a type - curl -sL "https://www.gitignore.io/api/$type" - end - - end - - function decompile - objdump --disassemble --demangle --debugging --debugging-tags $argv | bat --language asm - end - - set -g fish_greeting (rand_greet) - ''; - - shellAliases = { - brip = "batgrep"; # bat + ripgrep - man = "batman"; # bat + man - ls = "eza --color=auto"; - l = "eza -Alh --color=auto --icons=auto"; - ll = "eza -lh --color=auto --icons=auto"; - li = "eza --color=auto --git-ignore"; - }; - - plugins = [ - { - name = "grc"; - src = pkgs.fishPlugins.grc.src; - } - ]; - }; - }; -} diff --git a/homes/modules/rofi.nix b/homes/modules/rofi.nix deleted file mode 100755 index 6d05543..0000000 --- a/homes/modules/rofi.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ - config, - pkgs, - ... -}: { - programs.rofi = { - enable = true; - package = pkgs.rofi-wayland; - font = "JetBrains Mono Nerd Font 10"; - location = "center"; - terminal = "${pkgs.rio}/bin/rio"; - }; -} diff --git a/homes/modules/services/ssh-agent.nix b/homes/modules/services/ssh-agent.nix new file mode 100644 index 0000000..a0b505c --- /dev/null +++ b/homes/modules/services/ssh-agent.nix @@ -0,0 +1,16 @@ +{osConfig, ...}: { + assertions = [ + { + assertion = !osConfig.services.gnupg.agent.enable; + message = '' + It is not recommended to enable both `homeConfig.services.ssh-agent.enable` and `osConfig.services.gnupg.agent.enable`! + ''; + } + ]; + + # enable OpenSSH private key agent + services.ssh-agent.enable = true; + + # WARNING: the ssh-agent won't set this for itself... + systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent"; +} diff --git a/homes/modules/shell/fish.nix b/homes/modules/shell/fish.nix new file mode 100755 index 0000000..af2d8d3 --- /dev/null +++ b/homes/modules/shell/fish.nix @@ -0,0 +1,73 @@ +{pkgs, ...}: { + programs.fish = { + enable = true; + generateCompletions = true; + + interactiveShellInit = let + greetings = + [ + # Official _cry64 quotes + "Do butterflies cry when they're sad?" + "I hope they do" + "I think Alice is lost..." + "I once again retreat to the sanctuary of my virtual realm" + + # Unknown + "Welcome weary traveler to my shop" + + # Legend of Zelda + "It's dangerous to go alone! Take this." + + # ULTRAKILL + "Something wicked this way comes" + "May your L's be many... and your bitches few" + + # Terraria + "What a horrible night to have a curse." + "The ancient spirits of light and dark have been released." + + # Calamity + "The god of the stars rejects your offering. The ritual can only be performed at night." + "You should have just died..." + "Supreme Witch, Calamitas has killed every player!" + + # Key Fairy + "A broken heart beats in fractals" + + # Signalis + "Remember our promise" + ] + |> map (x: "\"${x}\"") + |> builtins.concatStringsSep " "; + in '' + # add dotnet completions if it exists (ie we're in a virtual environment) + if type -q dotnet + complete -f -c dotnet -a "(dotnet complete (commandline -cp))" + end + + function rand_greet + set greetings ${greetings} + echo -n $greetings[(random 1 (count $greetings))] + end + + function gitignore -a type + curl -sL "https://www.gitignore.io/api/$type" + end + + end + + function decompile + objdump --disassemble --demangle --debugging --debugging-tags $argv | bat --language asm + end + + set -g fish_greeting (rand_greet) + ''; + + plugins = [ + { + name = "grc"; + src = pkgs.fishPlugins.grc.src; + } + ]; + }; +} diff --git a/homes/modules/shell/zsh.nix b/homes/modules/shell/zsh.nix new file mode 100644 index 0000000..361191e --- /dev/null +++ b/homes/modules/shell/zsh.nix @@ -0,0 +1,17 @@ +{...}: { + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + history = { + size = 10000; + ignoreAllDups = true; + path = "$HOME/.zsh_history"; + ignorePatterns = [ + "rm *" + ]; + }; + }; +} diff --git a/homes/modules/term/default.nix b/homes/modules/term/default.nix deleted file mode 100644 index d446b15..0000000 --- a/homes/modules/term/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - lib, - ... -}: -{ - options = { - - } -} diff --git a/homes/modules/term/rio.nix b/homes/modules/term/rio.nix index 88ef968..3b540dd 100755 --- a/homes/modules/term/rio.nix +++ b/homes/modules/term/rio.nix @@ -1,8 +1,4 @@ -{ - config, - pkgs, - ... -}: { +{pkgs, ...}: { home = { packages = [ pkgs.rio diff --git a/homes/modules/theme.rasi b/homes/modules/theme.rasi deleted file mode 100755 index 07c375d..0000000 --- a/homes/modules/theme.rasi +++ /dev/null @@ -1,209 +0,0 @@ -/** - * - * Author : Aditya Shakya (adi1090x) - * Github : @adi1090x - * - * Rofi Theme File - * Rofi Version: 1.7.3 - **/ - -/*****----- Configuration -----*****/ -configuration { - modi: "drun,run,filebrowser,window"; - show-icons: true; - display-drun: "APPS"; - display-run: "RUN"; - display-filebrowser: "FILES"; - display-window: "WINDOW"; - drun-display-format: "{name}"; - window-format: "{w} · {c} · {t}"; -} - -/*****----- Global Properties -----*****/ -* { - font: "JetBrains Mono Nerd Font 10"; - background: #11092D; - background-alt: #281657; - foreground: #FFFFFF; - selected: #DF5296; - active: #6E77FF; - urgent: #8E3596; -} - -/*****----- Main Window -----*****/ -window { - /* properties for window widget */ - transparency: "real"; - location: center; - anchor: center; - fullscreen: false; - width: 1000px; - x-offset: 0px; - y-offset: 0px; - - /* properties for all widgets */ - enabled: true; - border-radius: 15px; - cursor: "default"; - background-color: @background; -} - -/*****----- Main Box -----*****/ -mainbox { - enabled: true; - spacing: 0px; - background-color: transparent; - orientation: horizontal; - children: [ "imagebox", "listbox" ]; -} - -imagebox { - padding: 20px; - background-color: transparent; - background-image: url("~/.config/rofi/images/j.jpg", height); - orientation: vertical; - children: [ "inputbar", "dummy", "mode-switcher" ]; -} - -listbox { - spacing: 20px; - padding: 20px; - background-color: transparent; - orientation: vertical; - children: [ "message", "listview" ]; -} - -dummy { - background-color: transparent; -} - -/*****----- Inputbar -----*****/ -inputbar { - enabled: true; - spacing: 10px; - padding: 15px; - border-radius: 10px; - background-color: @background-alt; - text-color: @foreground; - children: [ "textbox-prompt-colon", "entry" ]; -} -textbox-prompt-colon { - enabled: true; - expand: false; - str: ""; - background-color: inherit; - text-color: inherit; -} -entry { - enabled: true; - background-color: inherit; - text-color: inherit; - cursor: text; - placeholder: "Search"; - placeholder-color: inherit; -} - -/*****----- Mode Switcher -----*****/ -mode-switcher{ - enabled: true; - spacing: 20px; - background-color: transparent; - text-color: @foreground; -} -button { - padding: 15px; - border-radius: 10px; - background-color: @background-alt; - text-color: inherit; - cursor: pointer; -} -button selected { - background-color: @selected; - text-color: @foreground; -} - -/*****----- Listview -----*****/ -listview { - enabled: true; - columns: 1; - lines: 8; - cycle: true; - dynamic: true; - scrollbar: false; - layout: vertical; - reverse: false; - fixed-height: true; - fixed-columns: true; - - spacing: 10px; - background-color: transparent; - text-color: @foreground; - cursor: "default"; -} - -/*****----- Elements -----*****/ -element { - enabled: true; - spacing: 15px; - padding: 8px; - border-radius: 10px; - background-color: transparent; - text-color: @foreground; - cursor: pointer; -} -element normal.normal { - background-color: inherit; - text-color: inherit; -} -element normal.urgent { - background-color: @urgent; - text-color: @foreground; -} -element normal.active { - background-color: @active; - text-color: @foreground; -} -element selected.normal { - background-color: @selected; - text-color: @foreground; -} -element selected.urgent { - background-color: @urgent; - text-color: @foreground; -} -element selected.active { - background-color: @urgent; - text-color: @foreground; -} -element-icon { - background-color: transparent; - text-color: inherit; - size: 32px; - cursor: inherit; -} -element-text { - background-color: transparent; - text-color: inherit; - cursor: inherit; - vertical-align: 0.5; - horizontal-align: 0.0; -} - -/*****----- Message -----*****/ -message { - background-color: transparent; -} -textbox { - padding: 15px; - border-radius: 10px; - background-color: @background-alt; - text-color: @foreground; - vertical-align: 0.5; - horizontal-align: 0.0; -} -error-message { - padding: 15px; - border-radius: 20px; - background-color: @background; - text-color: @foreground; -} diff --git a/homes/modules/wm/default.nix b/homes/modules/wm/default.nix deleted file mode 100644 index 8c0cc95..0000000 --- a/homes/modules/wm/default.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - pkgs, - lib, - ... -}: let - inherit - (lib) - mkEnableOption - mkOption - types - ; -in { - imports = [ - ./hypr/hyprland.nix - ./mangowc.nix - ]; - - options.cryos = { - wm = { - default = mkOption { - type = types.enum ["mangowc" "hyprland"]; - default = "mangowc"; - example = "hyprland"; - description = "Window manager to boot by default."; - }; - hyprland.enabled = mkEnableOption "hyprland"; - mangowc.enabled = mkEnableOption "mangowc"; - }; - }; - - config = { - xdg.portal = { - enable = true; - extraPortals = with pkgs; [ - # xdg-desktop-portal-gtk - ]; - }; - }; -} diff --git a/homes/modules/wm/hypr/hyprland.nix b/homes/modules/wm/hypr/hyprland.nix deleted file mode 100755 index 77b3b44..0000000 --- a/homes/modules/wm/hypr/hyprland.nix +++ /dev/null @@ -1,29 +0,0 @@ -# NOTE: hyprland must be enabled in BOTH your host config (for running hyprland) -# NOTE: and your home-manager config (for managing hyprland's config files) -{ - pkgs, - inputs, - ... -}: { - config = { - wayland.windowManager.hyprland = { - enable = true; - # package = pkgs.hyprland; - package = null; - portalPackage = null; - - xwayland.enable = true; - - # systemd = { - # enable = true; - # # enable autostart of applications - # # REF: `man 8 systemd-xdg-autostart-generator` - # enableXdgAutostart = true; - # }; - - # plugins = with inputs; [ - # split-monitor-workspaces.packages.${pkgs.system}.split - # ]; - }; - }; -} diff --git a/homes/modules/wm/hyprland/default.nix b/homes/modules/wm/hyprland/default.nix new file mode 100755 index 0000000..ee7ff2d --- /dev/null +++ b/homes/modules/wm/hyprland/default.nix @@ -0,0 +1,26 @@ +# NOTE: hyprland must be enabled in BOTH your host config (for running hyprland) +# NOTE: and your home-manager config (for managing hyprland's config files) +{...}: { + imports = [ + ./kanshi.nix + ]; + + wayland.windowManager.hyprland = { + enable = true; + package = null; + portalPackage = null; + + xwayland.enable = true; + + # systemd = { + # enable = true; + # # enable autostart of applications + # # REF: `man 8 systemd-xdg-autostart-generator` + # enableXdgAutostart = true; + # }; + + # plugins = with inputs; [ + # split-monitor-workspaces.packages.${pkgs.system}.split + # ]; + }; +} diff --git a/homes/modules/wm/hypr/hypridle.nix b/homes/modules/wm/hyprland/hypridle.nix similarity index 100% rename from homes/modules/wm/hypr/hypridle.nix rename to homes/modules/wm/hyprland/hypridle.nix diff --git a/homes/modules/wm/hypr/hyprlock.nix b/homes/modules/wm/hyprland/hyprlock.nix similarity index 100% rename from homes/modules/wm/hypr/hyprlock.nix rename to homes/modules/wm/hyprland/hyprlock.nix diff --git a/homes/modules/kanshi.nix b/homes/modules/wm/hyprland/kanshi.nix similarity index 97% rename from homes/modules/kanshi.nix rename to homes/modules/wm/hyprland/kanshi.nix index 906f6a8..245b991 100755 --- a/homes/modules/kanshi.nix +++ b/homes/modules/wm/hyprland/kanshi.nix @@ -1,8 +1,4 @@ -{ - config, - pkgs, - ... -}: { +{...}: { # Change monitor positions # TODO: find a way to make this modular (ie put something different for my laptop) # my idea is to have a "monitors" module and use kanshi for wayland diff --git a/homes/modules/wm/mangowc.nix b/homes/modules/wm/mango/default.nix similarity index 100% rename from homes/modules/wm/mangowc.nix rename to homes/modules/wm/mango/default.nix diff --git a/homes/modules/wofi.nix b/homes/modules/wofi.nix deleted file mode 100755 index 81a25d3..0000000 --- a/homes/modules/wofi.nix +++ /dev/null @@ -1,183 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: { - programs.wofi = { - enable = true; - settings = { - location = "center"; - allow_markup = true; - width = 250; - }; - # Force the style to stop Stylix being a bitch and overwriting it - style = lib.mkForce '' - @define-color rosewater #f2d5cf; - @define-color rosewater-rgb rgb(242, 213, 207); - @define-color flamingo #eebebe; - @define-color flamingo-rgb rgb(238, 190, 190); - @define-color pink #f4b8e4; - @define-color pink-rgb rgb(244, 184, 228); - @define-color mauve #ca9ee6; - @define-color mauve-rgb rgb(202, 158, 230); - @define-color red #e78284; - @define-color red-rgb rgb(231, 130, 132); - @define-color maroon #ea999c; - @define-color maroon-rgb rgb(234, 153, 156); - @define-color peach #ef9f76; - @define-color peach-rgb rgb(239, 159, 118); - @define-color yellow #e5c890; - @define-color yellow-rgb rgb(229, 200, 144); - @define-color green #a6d189; - @define-color green-rgb rgb(166, 209, 137); - @define-color teal #81c8be; - @define-color teal-rgb rgb(129, 200, 190); - @define-color sky #99d1db; - @define-color sky-rgb rgb(153, 209, 219); - @define-color sapphire #85c1dc; - @define-color sapphire-rgb rgb(133, 193, 220); - @define-color blue #8caaee; - @define-color blue-rgb rgb(140, 170, 238); - @define-color lavender #babbf1; - @define-color lavender-rgb rgb(186, 187, 241); - @define-color text #c6d0f5; - @define-color text-rgb rgb(198, 208, 245); - @define-color subtext1 #b5bfe2; - @define-color subtext1-rgb rgb(181, 191, 226); - @define-color subtext0 #a5adce; - @define-color subtext0-rgb rgb(165, 173, 206); - @define-color overlay2 #949cbb; - @define-color overlay2-rgb rgb(148, 156, 187); - @define-color overlay1 #838ba7; - @define-color overlay1-rgb rgb(131, 139, 167); - @define-color overlay0 #737994; - @define-color overlay0-rgb rgb(115, 121, 148); - @define-color surface2 #626880; - @define-color surface2-rgb rgb(98, 104, 128); - @define-color surface1 #51576d; - @define-color surface1-rgb rgb(81, 87, 109); - @define-color surface0 #414559; - @define-color surface0-rgb rgb(65, 69, 89); - @define-color base #303446; - @define-color base-rgb rgb(48, 52, 70); - @define-color mantle #292c3c; - @define-color mantle-rgb rgb(41, 44, 60); - @define-color crust #232634; - @define-color crust-rgb rgb(35, 38, 52); - - * { - font-family: 'FiraCode Nerd Font'; - font-size: 16px; - } - - /* Window */ - window { - margin: 0px; - padding: 10px; - border: 0.16em solid @teal; - border-radius: 0.5em; - background-color: @base; - animation: slideIn 0.25s ease-in-out both; - } - - /* Slide In */ - @keyframes slideIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } - } - - /* Inner Box */ - #inner-box { - margin: 5px; - padding: 10px; - border: none; - background-color: @base; - /*animation: fadeIn 0.5s ease-in-out both;*/ - } - - /* Fade In */ - @keyframes fadeIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } - } - - /* Outer Box */ - #outer-box { - margin: 5px; - padding: 10px; - border: none; - background-color: @base; - } - - /* Scroll */ - #scroll { - margin: 0px; - padding: 10px; - border: none; - background-color: @base; - } - - /* Input */ - #input { - margin: 5px 20px; - padding: 10px; - border: none; - border-radius: 0.25em; - color: @text; - background-color: @base; - animation: fadeIn 0.25s ease-in-out both; - } - - #input image { - border: none; - color: @red; - } - - #input * { - outline: 4px solid @red!important; - } - - /* Text */ - #text { - margin: 5px; - border: none; - color: @text; - animation: fadeIn 0.5s ease-in-out both; - } - - #entry { - background-color: @base; - } - - #entry arrow { - border: none; - color: @teal; - } - - /* Selected Entry */ - #entry:selected { - border: 0.10em solid @teal; - border-radius: 0.25em; - } - - #entry:selected #text { - color: @teal; - } - - #entry:drop(active) { - background-color: @lavender!important; - } - ''; - }; -} From d9d253fd2ad8f416e09d1474bbc2e850211a03a3 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 12:30:39 +1000 Subject: [PATCH 07/31] remove loose files --- TODO.md | 14 +++++++++++++- colors.rasi | 20 -------------------- patches | 11 ----------- 3 files changed, 13 insertions(+), 32 deletions(-) delete mode 100644 colors.rasi delete mode 100644 patches diff --git a/TODO.md b/TODO.md index d370575..0bdc861 100644 --- a/TODO.md +++ b/TODO.md @@ -5,9 +5,21 @@ - [ ] connect matcha to my VPN - [ ] use matcha to build stuff instead of using my laptop -- [X] update bat config - [ ] switch to zsh? or maybe elvish? - [ ] switch to neovim - [ ] switch to mangowc - [ ] fix my fuck ass emojis + +# add sddm profile pic +systemd.tmpfiles.rules = let + imagePath = /${root}/homes/aurora/profile.png; + in + lib.mkIf (builtins.pathExists imagePath) [ + "L /var/lib/AccountsService/icons/${config.home.username} - - - - ${imagePath}" + ]; + + +# Cerulean should automatically add set home-managers `home.username` and `home.homeDirectory` +# (this can be done by using .extendModule from the nixos module system :3) + diff --git a/colors.rasi b/colors.rasi deleted file mode 100644 index a36f6aa..0000000 --- a/colors.rasi +++ /dev/null @@ -1,20 +0,0 @@ -* { - background: rgba(51,37,65,0.9); - foreground: rgba(198,186,227,0.9); - color00: rgba(78,66,70,0.9); - color01: rgba(111,91,159,0.9); - color02: rgba(120,98,164,0.9); - color03: rgba(131,128,181,0.9); - color04: rgba(154,127,183,0.9); - color05: rgba(157,129,185,0.9); - color06: rgba(123,153,183,0.9); - color07: rgba(165,148,207,0.9); - color08: rgba(115,103,145,0.9); - color09: rgba(129,102,193,0.9); - color10: rgba(140,112,199,0.9); - color11: rgba(145,141,218,0.9); - color12: rgba(170,126,217,0.9); - color13: rgba(174,130,220,0.9); - color14: rgba(135,181,228,0.9); - color15: rgba(165,148,207,0.9); -} diff --git a/patches b/patches deleted file mode 100644 index 6607af5..0000000 --- a/patches +++ /dev/null @@ -1,11 +0,0 @@ -# add sddm profile pic -systemd.tmpfiles.rules = let - imagePath = /${root}/homes/aurora/profile.png; - in - lib.mkIf (builtins.pathExists imagePath) [ - "L /var/lib/AccountsService/icons/${config.home.username} - - - - ${imagePath}" - ]; - - -# Cerulean should automatically add set home-managers `home.username` and `home.homeDirectory` -# (this can be done by using .extendModule from the nixos module system :3) From 01d136b291722bf0f98921f293bde80083735001 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 12:32:14 +1000 Subject: [PATCH 08/31] WARNING: migrate hyprland to unstable also removing my glaze patch --- flake.nix | 8 ++----- overlays/default.nix | 52 ++++++++++++++++++++++---------------------- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/flake.nix b/flake.nix index 4d6e468..c6d00fb 100644 --- a/flake.nix +++ b/flake.nix @@ -16,9 +16,7 @@ nt.url = "git+https://tearforge.net/cry/nt"; cerulean = { - # url = "github:cry128/cerulean/v0.2.5-alpha"; url = "github:cry128/cerulean/refactor/snowflake"; - # url = "/home/me/cry/mk/cerulean"; inputs = { nt.follows = "nt"; systems.follows = "systems"; @@ -42,12 +40,10 @@ }; hyprland = { - # FUCK HYPRLAND - # url = "github:hyprwm/Hyprland/4152ac76d0813d9d0f67d2f04653a13fa6e17433"; - url = "git+https://tearforge.net/cry/Hyprland"; + url = "github:hyprwm/Hyprland"; inputs = { - nixpkgs.follows = "nixpkgs"; + nixpkgs.follows = "nixpkgs-unstable"; systems.follows = "systems"; }; }; diff --git a/overlays/default.nix b/overlays/default.nix index cf79fa8..9cc26d6 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -48,34 +48,34 @@ xdg-desktop-portal-hyprland = lib.mkIf (inputs?hyprland) inputs.hyprland.packages.${system}.xdg-desktop-portal-hyprland; - hyprland-git = - lib.mkIf (inputs?hyprland) - (inputs.hyprland.packages.${system}.hyprland.overrideAttrs (final: prev: { - patches = let - glaze_version = pkgs.glaze.version; - in - prev.patches - ++ [ - '' - diff --git a/hyprpm/CMakeLists.txt b/hyprpm/CMakeLists.txt - index 9f1318f4..7d5b8eda 100644 - --- a/hyprpm/CMakeLists.txt - +++ b/hyprpm/CMakeLists.txt - @@ -11,9 +11,9 @@ set(CMAKE_CXX_STANDARD 23) + # hyprland-git = + # lib.mkIf (inputs?hyprland) + # (inputs.hyprland.packages.${system}.hyprland.overrideAttrs (final: prev: { + # patches = let + # glaze_version = pkgs.glaze.version; + # in + # prev.patches + # ++ [ + # '' + # diff --git a/hyprpm/CMakeLists.txt b/hyprpm/CMakeLists.txt + # index 9f1318f4..7d5b8eda 100644 + # --- a/hyprpm/CMakeLists.txt + # +++ b/hyprpm/CMakeLists.txt + # @@ -11,9 +11,9 @@ set(CMAKE_CXX_STANDARD 23) - pkg_check_modules(hyprpm_deps REQUIRED IMPORTED_TARGET tomlplusplus hyprutils>=0.7.0) + # pkg_check_modules(hyprpm_deps REQUIRED IMPORTED_TARGET tomlplusplus hyprutils>=0.7.0) - -find_package(glaze 7.0.0 QUIET) - +find_package(glaze ${glaze_version} QUIET) - if (NOT glaze_FOUND) - - set(GLAZE_VERSION v7.0.0) - + set(GLAZE_VERSION v${glaze_version}) - message(STATUS "glaze dependency not found, retrieving ''${GLAZE_VERSION} with FetchContent") - include(FetchContent) - FetchContent_Declare( - '' - ]; - })); + # -find_package(glaze 7.0.0 QUIET) + # +find_package(glaze ${glaze_version} QUIET) + # if (NOT glaze_FOUND) + # - set(GLAZE_VERSION v7.0.0) + # + set(GLAZE_VERSION v${glaze_version}) + # message(STATUS "glaze dependency not found, retrieving ''${GLAZE_VERSION} with FetchContent") + # include(FetchContent) + # FetchContent_Declare( + # '' + # ]; + # })); prismlauncher = pkgs.prismlauncher.overrideAttrs (final: prev: { buildInputs = From c9bdad1a22f0f1901c54f1e0ce0e8409b169d73c Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 12:35:02 +1000 Subject: [PATCH 09/31] ok maybe leave the glaze patch i updated it to get the version properly though (ie for any nixpkgs channel) --- overlays/default.nix | 52 ++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/overlays/default.nix b/overlays/default.nix index 9cc26d6..dfeb277 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -48,34 +48,34 @@ xdg-desktop-portal-hyprland = lib.mkIf (inputs?hyprland) inputs.hyprland.packages.${system}.xdg-desktop-portal-hyprland; - # hyprland-git = - # lib.mkIf (inputs?hyprland) - # (inputs.hyprland.packages.${system}.hyprland.overrideAttrs (final: prev: { - # patches = let - # glaze_version = pkgs.glaze.version; - # in - # prev.patches - # ++ [ - # '' - # diff --git a/hyprpm/CMakeLists.txt b/hyprpm/CMakeLists.txt - # index 9f1318f4..7d5b8eda 100644 - # --- a/hyprpm/CMakeLists.txt - # +++ b/hyprpm/CMakeLists.txt - # @@ -11,9 +11,9 @@ set(CMAKE_CXX_STANDARD 23) + hyprland-git = + lib.mkIf (inputs?hyprland) + (inputs.hyprland.packages.${system}.hyprland.overrideAttrs (final: prev: { + patches = let + glaze_version = inputs.hyprland.inputs.nixpkgs.legacyPackages.glaze.version; + in + prev.patches + ++ [ + '' + diff --git a/hyprpm/CMakeLists.txt b/hyprpm/CMakeLists.txt + index 9f1318f4..7d5b8eda 100644 + --- a/hyprpm/CMakeLists.txt + +++ b/hyprpm/CMakeLists.txt + @@ -11,9 +11,9 @@ set(CMAKE_CXX_STANDARD 23) - # pkg_check_modules(hyprpm_deps REQUIRED IMPORTED_TARGET tomlplusplus hyprutils>=0.7.0) + pkg_check_modules(hyprpm_deps REQUIRED IMPORTED_TARGET tomlplusplus hyprutils>=0.7.0) - # -find_package(glaze 7.0.0 QUIET) - # +find_package(glaze ${glaze_version} QUIET) - # if (NOT glaze_FOUND) - # - set(GLAZE_VERSION v7.0.0) - # + set(GLAZE_VERSION v${glaze_version}) - # message(STATUS "glaze dependency not found, retrieving ''${GLAZE_VERSION} with FetchContent") - # include(FetchContent) - # FetchContent_Declare( - # '' - # ]; - # })); + -find_package(glaze 7.0.0 QUIET) + +find_package(glaze ${glaze_version} QUIET) + if (NOT glaze_FOUND) + - set(GLAZE_VERSION v7.0.0) + + set(GLAZE_VERSION v${glaze_version}) + message(STATUS "glaze dependency not found, retrieving ''${GLAZE_VERSION} with FetchContent") + include(FetchContent) + FetchContent_Declare( + '' + ]; + })); prismlauncher = pkgs.prismlauncher.overrideAttrs (final: prev: { buildInputs = From ce49b845d9a32cf25327502388e8a01a67cc9fa2 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 12:35:15 +1000 Subject: [PATCH 10/31] progress flake.lock --- flake.lock | 92 +++++++++++++++++++++++++++--------------------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/flake.lock b/flake.lock index bcbce8e..e79a42f 100644 --- a/flake.lock +++ b/flake.lock @@ -37,11 +37,11 @@ ] }, "locked": { - "lastModified": 1772292445, - "narHash": "sha256-4F1Q7U313TKUDDovCC96m/Za4wZcJ3yqtu4eSrj8lk8=", + "lastModified": 1773436376, + "narHash": "sha256-OUPRrprbgN27BXHuWkMAPSCfLLQ/uwpWghEfKYN2iAg=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "1dbbba659c1cef0b0202ce92cadfe13bae550e8f", + "rev": "43f10d24391692bba3d762931ee35e7f17f8e8b8", "type": "github" }, "original": { @@ -422,11 +422,11 @@ ] }, "locked": { - "lastModified": 1753964049, - "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", + "lastModified": 1772461003, + "narHash": "sha256-pVICsV7FtcEeVwg5y/LFh3XFUkVJninm/P1j/JHzEbM=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", + "rev": "b62396457b9cfe2ebf24fe05404b09d2a40f8ed7", "type": "github" }, "original": { @@ -451,11 +451,11 @@ ] }, "locked": { - "lastModified": 1770511807, - "narHash": "sha256-suKmSbSk34uPOJDTg/GbPrKEJutzK08vj0VoTvAFBCA=", + "lastModified": 1772461523, + "narHash": "sha256-mI6A51do+hEUzeJKk9YSWfVHdI/SEEIBi2tp5Whq5mI=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "7c75487edd43a71b61adb01cae8326d277aab683", + "rev": "7d63c04b4a2dd5e59ef943b4b143f46e713df804", "type": "github" }, "original": { @@ -476,7 +476,7 @@ "hyprwayland-scanner": "hyprwayland-scanner", "hyprwire": "hyprwire", "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ], "pre-commit-hooks": "pre-commit-hooks", "systems": [ @@ -485,17 +485,17 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1772862346, - "narHash": "sha256-cfzHdBAkACrE2kuFlVPub2W7qZwobsrHcmYhoKVLtdY=", - "ref": "refs/heads/main", - "rev": "b41882c169f589848f0efb10c88c1dad383af04b", - "revCount": 6999, - "type": "git", - "url": "https://tearforge.net/cry/Hyprland" + "lastModified": 1774136452, + "narHash": "sha256-pSwj8WNWXMuZaDqCyhQwlngRD3JyNmZwldSe6UqWAos=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "bf31f642b08a8d8ca796a1b713285f2580805c2f", + "type": "github" }, "original": { - "type": "git", - "url": "https://tearforge.net/cry/Hyprland" + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" } }, "hyprland-guiutils": { @@ -531,11 +531,11 @@ ] }, "locked": { - "lastModified": 1767023960, - "narHash": "sha256-R2HgtVS1G3KSIKAQ77aOZ+Q0HituOmPgXW9nBNkpp3Q=", + "lastModified": 1772467975, + "narHash": "sha256-kipyuDBxrZq+beYpZqWzGvFWm4QbayW9agAvi94vDXY=", "owner": "hyprwm", "repo": "hyprland-guiutils", - "rev": "c2e906261142f5dd1ee0bfc44abba23e2754c660", + "rev": "5e1c6b9025aaf4d578f3eff7c0eb1f0c197a9507", "type": "github" }, "original": { @@ -556,11 +556,11 @@ ] }, "locked": { - "lastModified": 1765214753, - "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", + "lastModified": 1772460177, + "narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", + "rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917", "type": "github" }, "original": { @@ -585,11 +585,11 @@ ] }, "locked": { - "lastModified": 1771866172, - "narHash": "sha256-fYFoXhQLrm1rD8vSFKQBOEX4OGCuJdLt1amKfHd5GAw=", + "lastModified": 1772459629, + "narHash": "sha256-/iwvNUYShmmnwmz/czEUh6+0eF5vCMv0xtDW0STPIuM=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "0b219224910e7642eb0ed49f0db5ec3d008e3e41", + "rev": "7615ee388de18239a4ab1400946f3d0e498a8186", "type": "github" }, "original": { @@ -637,11 +637,11 @@ ] }, "locked": { - "lastModified": 1764592794, - "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", + "lastModified": 1772462885, + "narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=", "owner": "hyprwm", "repo": "hyprtoolkit", - "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", + "rev": "9af245a69fa6b286b88ddfc340afd288e00a6998", "type": "github" }, "original": { @@ -662,11 +662,11 @@ ] }, "locked": { - "lastModified": 1771271487, - "narHash": "sha256-41gEiUS0Pyw3L/ge1l8MXn61cK14VAhgWB/JV8s/oNI=", + "lastModified": 1773948364, + "narHash": "sha256-S76omfIVQ1TpGiXFbqih6o6XcH3sA5+5QI+SXB4HvlY=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "340a792e3b3d482c4ae5f66d27a9096bdee6d76d", + "rev": "b85b779e3e3a1adcd9b098e3447cf48f9e780b35", "type": "github" }, "original": { @@ -687,11 +687,11 @@ ] }, "locked": { - "lastModified": 1770501770, - "narHash": "sha256-NWRM6+YxTRv+bT9yvlhhJ2iLae1B1pNH3mAL5wi2rlQ=", + "lastModified": 1772459835, + "narHash": "sha256-978jRz/y/9TKmZb/qD4lEYHCQGHpEXGqy+8X2lFZsak=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "0bd8b6cde9ec27d48aad9e5b4deefb3746909d40", + "rev": "0a692d4a645165eebd65f109146b8861e3a925e7", "type": "github" }, "original": { @@ -716,11 +716,11 @@ ] }, "locked": { - "lastModified": 1771606233, - "narHash": "sha256-F3PLUqQ/TwgR70U+UeOqJnihJZ2EuunzojYC4g5xHr0=", + "lastModified": 1773074819, + "narHash": "sha256-qRqYnXiKoJLRTcfaRukn7EifmST2IVBUMZOeZMAc5UA=", "owner": "hyprwm", "repo": "hyprwire", - "rev": "06c7f1f8c4194786c8400653c4efc49dc14c0f3a", + "rev": "f68afd0e73687598cc2774804fedad76693046f0", "type": "github" }, "original": { @@ -1206,11 +1206,11 @@ ] }, "locked": { - "lastModified": 1772024342, - "narHash": "sha256-+eXlIc4/7dE6EcPs9a2DaSY3fTA9AE526hGqkNID3Wg=", + "lastModified": 1772893680, + "narHash": "sha256-JDqZMgxUTCq85ObSaFw0HhE+lvdOre1lx9iI6vYyOEs=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "6e34e97ed9788b17796ee43ccdbaf871a5c2b476", + "rev": "8baab586afc9c9b57645a734c820e4ac0a604af9", "type": "github" }, "original": { @@ -1512,11 +1512,11 @@ ] }, "locked": { - "lastModified": 1761431178, - "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", + "lastModified": 1772669058, + "narHash": "sha256-XhnY0aRuDo5LT8pmJVPofPOgO2hAR7T+XRoaQxtNPzQ=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", + "rev": "906d0ac159803a7df2dc1f948df9327670380f69", "type": "github" }, "original": { From 428c2eb64f329f35b3cdcbf798a731dd5b61cb62 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 13:54:14 +1000 Subject: [PATCH 11/31] finally manage hyprland declaratively!! --- homes/modules/wm/hyprland/default.nix | 360 +++++++++++++++++++++++++- 1 file changed, 355 insertions(+), 5 deletions(-) diff --git a/homes/modules/wm/hyprland/default.nix b/homes/modules/wm/hyprland/default.nix index ee7ff2d..e82b8ee 100755 --- a/homes/modules/wm/hyprland/default.nix +++ b/homes/modules/wm/hyprland/default.nix @@ -1,10 +1,18 @@ # NOTE: hyprland must be enabled in BOTH your host config (for running hyprland) # NOTE: and your home-manager config (for managing hyprland's config files) -{...}: { +{ + hostname, + pkgs, + ... +}: { imports = [ ./kanshi.nix ]; + home.packages = with pkgs; [ + playerctl + ]; + wayland.windowManager.hyprland = { enable = true; package = null; @@ -12,15 +20,357 @@ xwayland.enable = true; - # systemd = { + # systemd= { # enable = true; # # enable autostart of applications # # REF: `man 8 systemd-xdg-autostart-generator` # enableXdgAutostart = true; # }; - # plugins = with inputs; [ - # split-monitor-workspaces.packages.${pkgs.system}.split - # ]; + settings = { + "$MOD" = "ALT"; + + # applications + "$editor" = "hx"; + "$terminal" = "foot"; + "$menu" = "fuzzel"; + "$colorpicker" = "hyprpicker | head -c 7 | wl-copy"; + "$screenshot_region" = "hyprshot -m region --clipboard-only"; + "$screenshot_window" = "hyprshot -m window --clipboard-only"; + "$cursorLock" = "~/scripts/bin/hyprland-cursor-lock"; + + # startup programs + exec-once = [ + "mako &" + "awww-daemon &" + + # "wl-paste --type text --watch cliphist store" + # "wl-paste --type image --watch cliphist store" + # "wl-clip-persist --clipboard regular" + # "playerctld daemon" + + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + ]; + + # monitor configuration + monitor = + if hostname == "lolcathost" + then [ + "eDP-1, highres@highrr, 0x0, 1.0" # Programming + # "eDP-1, highres@highrr, 0x0, 1.5" # Comfy + ] + else if hostname == "myputer" + then [ + "DP-2, 3840x2160@59.99700, 0x0, 1.5" + "HDMI-A-1, 1920x1080@119.98Hz, 2560x0, 1.0" + ] + else []; + + # .__. .___ __..___. . . .___ .___. ._. __ __. + # [__] [__ (__ | |__| [__ | | / ` (__ + # | | [___ .__) | | | [___ | _|_ \__. .__) + general = { + gaps_in = 12; # margin between windows + gaps_out = 25; # margin from windows to monitor edge + gaps_workspaces = 0; # margin between workspaces (stacks with gaps_out) + # float_gaps = 0; # gaps_out but for floating windows + + border_size = 4; + + "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + "col.inactive_border" = "rgba(00000000)"; + + # Enable resizing windows by clicking and dragging the border + resize_on_border = true; + + # REF: https://wiki.hyprland.org/Configuring/Tearing/ + allow_tearing = false; + + layout = "dwindle"; + + snap = { + enabled = false; + window_gap = 10; + monitor_gap = 10; + border_overlap = false; + # respect_gaps = false; + }; + }; + + decoration = { + rounding = 20; + rounding_power = 4.0; # Lp norm + border_part_of_window = true; # consider border as part of its window + # screen_shader = ...; # path to custom GLSL fragment shader + + # window Transparency + active_opacity = 1.0; + inactive_opacity = 0.95; + fullscreen_opacity = 1.0; # fullscreened windows + # inactive Window Dimming + dim_inactive = false; + dim_strength = 0.5; + dim_special = 0.2; + dim_around = 0.4; + + blur = { + enabled = true; + new_optimizations = true; + xray = false; # floating windows xray through tiling windows + ignore_opacity = true; + + # blur Parameters + size = 8; + passes = 1; + noise = 0.0117; # default + contrast = 0.8916; # default + brightness = 0.8172; # default + vibrancy = 0.1696; # default + vibrancy_darkness = 0.0; # default + + # blurring For Specific Window Types + special = false; # blur special windows + popups = false; # blur popups + popups_ignorealpha = 0.2; + input_methods = false; + input_methods_ignorealpha = 0.2; + }; + + shadow = { + enabled = true; + ignore_window = true; # only render at edges (not behind) + + range = 3; + render_power = 1; # falloff rate + sharp = false; # aka infinite shadow.render_power + offset = "0 0"; # vec2 + scale = 1.0; + + color = "rgba(00000000)"; + color_inactive = "rgba(000000ff)"; # defaults to shadow.color if unset + }; + }; + + # REF: https://cubic-bezier.com + bezier = [ + "easeOutQuint,0.23,1,0.32,1" + "easeInOutCubic,0.65,0.05,0.36,1" + "linear,0,0,1,1" + "almostLinear,0.5,0.5,0.75,1.0" + "quick,0.15,0,0.1,1" + ]; + + # REF: https://wiki.hyprland.org/Configuring/Animations + # Animation Declaration Format: + # "animation = NAME, ENABLE, SPEED, BEZIER [,STYLE]" + # NOTE: SPEED is in ds (where 1ds = 100ms) + animations = [ + "global, 1, 10, default" + "border, 1, 5.39, easeOutQuint" + + "windowsIn, 1, 4, linear, slide bottom" + "windowsOut, 1, 10, linear, popin" + + "fadeIn, 1, 1.73, almostLinear" + "fadeOut, 1, 1.46, almostLinear" + "fade, 1, 3.03, quick" + + "layers, 1, 3.81, easeOutQuint" + "layersIn, 1, 4, easeOutQuint, fade" + "layersOut, 1, 1.5, linear, fade" + + "fadeLayersIn, 1, 1.79, almostLinear" + "fadeLayersOut, 1, 1.39, almostLinear" + + "workspaces, 1, 1.94, almostLinear, fade" + "workspacesIn, 1, 1.21, almostLinear, fade" + "workspacesOut, 1, 1.94, almostLinear, fade" + ]; + + # REF: https://wiki.hyprland.org/Configuring/Dwindle-Layout + dwindle = { + # master switch for pseudotiling. enabling is bound to MOD + P in the keybinds section below + pseudotile = true; + preserve_split = true; # You probably want this + }; + + # REF: https://wiki.hyprland.org/Configuring/Master-Layout + master = { + new_status = "master"; + }; + + misc = { + #force_default_wallpaper = -1; # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = true; + disable_splash_rendering = true; + + enable_anr_dialog = false; + font_family = "Geist Mono"; + }; + + input = { + # kb_layout = "us"; + # kb_variant = + # kb_model = + # kb_options = + # kb_rules = + + follow_mouse = 1; + + sensitivity = 0; # -1.0 - 1.0, 0 means no modification + accel_profile = "flat"; + force_no_accel = false; # not recommended to turn on + + repeat_rate = 50; + repeat_delay = 300; + + touchpad = { + natural_scroll = hostname == "lolcathost"; + }; + }; + + cursor.no_hardware_cursors = true; + + # standard keypress bindings + bind = [ + # terminal commands + "$MOD, RETURN, exec, $terminal" + "$MOD SHIFT, RETURN, exec, $terminal -D `[ -f ~/cry/.projdir ] && cat ~/cry/.projdir || echo ~`" + + # btop + "$MOD, P, exec, bash -c \"{ hyprctl clients | rg '^\w*title: btop' &>/dev/null; } && hyprctl dispatch closewindow title:btop || $terminal -T btop btop & disown\"" + + "$MOD, R, exec, $menu" + + # lock mouse to window (mostly, for gaming) + "$MOD, F1, exec, pkill hyprland-cursor || $cursorLock" + "$MOD, F2, exec, $colorpicker" + + # screenshots + "$MOD, S, exec, $screenshot_region" + "$MOD SHIFT, S, exec, $screenshot_window" + + "$MOD, F, fullscreen" + "$MOD SHIFT, F, fullscreenstate, 0 3" # fakefullscreen + "$MOD, C, killactive" + "$MOD SHIFT, Delete, exit" + + # switch window + "$MOD, left, movefocus, l" + "$MOD, right, movefocus, r" + "$MOD, up, movefocus, u" + "$MOD, down, movefocus, d" + "$MOD, H, movefocus, l" + "$MOD, J, movefocus, d" + "$MOD, K, movefocus, u" + "$MOD, L, movefocus, r" + + # switch workspaces + "$MOD, 1, workspace, 1" + "$MOD, 2, workspace, 2" + "$MOD, 3, workspace, 3" + "$MOD, 4, workspace, 4" + "$MOD, 5, workspace, 5" + "$MOD, 6, workspace, 6" + "$MOD, 7, workspace, 7" + "$MOD, 8, workspace, 8" + "$MOD, 9, workspace, 9" + "$MOD, 0, workspace, 10" + "$MOD SHIFT, left, workspace, e-1" + "$MOD SHIFT, right, workspace, e+1" + + # move window to workspace + "$MOD SHIFT, 1, movetoworkspace, 1" + "$MOD SHIFT, 2, movetoworkspace, 2" + "$MOD SHIFT, 3, movetoworkspace, 3" + "$MOD SHIFT, 4, movetoworkspace, 4" + "$MOD SHIFT, 5, movetoworkspace, 5" + "$MOD SHIFT, 6, movetoworkspace, 6" + "$MOD SHIFT, 7, movetoworkspace, 7" + "$MOD SHIFT, 8, movetoworkspace, 8" + "$MOD SHIFT, 9, movetoworkspace, 9" + "$MOD SHIFT, 0, movetoworkspace, 10" + + # move workspace to monitor + "$MOD TAB, 1, movecurrentworkspacetomonitor, DP-2" + "$MOD TAB, 2, movecurrentworkspacetomonitor, HDMA-A-1" + ]; + + # bindings for mouse + bindm = [ + "$MOD, mouse:272, movewindow" + "$MOD, mouse:273, resizewindow" + ]; + + # bindings that work even while screen is locked + bindl = [ + # WARNING: requires `pkgs.playerctl` + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPause, exec, playerctl play-pause" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioPrev, exec, playerctl previous" + ]; + + # bindings that work even while screen is locked + # and also repeat when the key is held + bindel = [ + ",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ",XF86MonBrightnessUp, exec, brightnessctl s 10%+" + ",XF86MonBrightnessDown, exec, brightnessctl s 10%-" + ]; + + windowrule = [ + # btop process manager + { + name = "terminal-manager"; + "match:class" = "^(foot)$"; + "match:title" = "^(btop)$"; + float = true; + center = true; + size = "(monitor_w*0.65) (monitor_h*0.65)"; + } + + # ignore maximize requests from apps + { + name = "suppress-maximize"; + suppress_event = "maximize"; + "match:class" = ".*"; + } + + # fix some dragging issues with XWayland + { + name = "no-focus"; + no_focus = "on"; + "match:class" = "^$"; + "match:title" = "^$"; + "match:xwayland" = true; + "match:float" = true; + "match:fullscreen" = false; + "match:pin" = false; + } + + # TODO: style fakefullscreen windows to clearly indicate their difference + # { + # name = "fake-fullscreen"; + # } + ]; + + # █▀▀ █▄░█ █░█   █░█ ▄▀█ █▀█ + # ██▄ █░▀█ ▀▄▀   ▀▄▀ █▀█ █▀▄ + env = [ + "XCURSOR_THEME,Bibata-Modern-Ice" + "XCURSOR_SIZE,16" + "HYPRCURSOR_THEME,Bibata-Modern-Ice" + "HYPRCURSOR_SIZE,16" + + "QT_QPA_PLATFORM,wayland" + "QT_QPA_PLATFORMTHEME,xdgdesktopportal" # makes portals work correctly + "XDG_MENU_PREFIX,arch-" + "XDG_CURRENT_DESKTOP,Hyprland" + ]; + }; }; } From 907f048cd3ee75e8fb51a12beb8d60090dec0246 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 13:55:02 +1000 Subject: [PATCH 12/31] ignore hidden --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 31f728a..e3d65a5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ -ISSUES/ -secrets/ +hidden/ result rebuild*.log From c23c949bf330c2abed660ccbb098549c8d8dd8e2 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 14:00:44 +1000 Subject: [PATCH 13/31] add nix-search-tv overlay --- groups/cryos/programs.nix | 8 ++------ overlays/default.nix | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/groups/cryos/programs.nix b/groups/cryos/programs.nix index 6b2fd55..9d7eaa7 100644 --- a/groups/cryos/programs.nix +++ b/groups/cryos/programs.nix @@ -1,8 +1,4 @@ -{ - pkgs, - upkgs, - ... -}: { +{pkgs, ...}: { environment.systemPackages = with pkgs; [ # Shell bash @@ -49,7 +45,7 @@ nix-prefetch-git nix-index nix-unit - upkgs.nix-search-tv + ns # nix-search-tv overlay # Python python312 # I use 3.12 since it's in a pretty stable state now diff --git a/overlays/default.nix b/overlays/default.nix index dfeb277..b4d7680 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -10,6 +10,20 @@ lib ; in { + ns = pkgs.writeShellApplication { + name = "ns"; + runtimeInputs = with pkgs; [ + fzf + nix-search-tv + ]; + text = builtins.readFile "${pkgs.nix-search-tv.src}/nixpkgs.sh"; + + excludeShellChecks = [ + # SC2016 (info): Expressions don't expand in single quotes, use double quotes for that. + "SC2016" + ]; + }; + angry-oxide = import ../packages/angryoxide { inherit pkgs lib; }; From 9a2324c2eb9abdf27cc6748608b6ba3b97cb7137 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 14:00:50 +1000 Subject: [PATCH 14/31] fix fish config --- homes/modules/shell/fish.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/homes/modules/shell/fish.nix b/homes/modules/shell/fish.nix index af2d8d3..07f3f59 100755 --- a/homes/modules/shell/fish.nix +++ b/homes/modules/shell/fish.nix @@ -54,8 +54,6 @@ curl -sL "https://www.gitignore.io/api/$type" end - end - function decompile objdump --disassemble --demangle --debugging --debugging-tags $argv | bat --language asm end From de45ceb4fe7fd3db6698ad3a4f7af4eb6f503c94 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 14:45:26 +1000 Subject: [PATCH 15/31] x_x --- groups/server/default.nix | 2 +- homes/me/modules/cli/ssh.nix | 2 +- homes/modules/editor/vscode.nix | 3 +-- hosts/butterfly/services/forgejo.nix | 4 ++-- hosts/butterfly/services/mailserver.nix | 4 ++-- hosts/matcha/default.nix | 1 - hosts/modules/langs/dotnet.nix | 1 - packages/angryoxide/default.nix | 3 +-- packages/chameleonultragui/default.nix | 1 - packages/ekphos/default.nix | 1 - 10 files changed, 8 insertions(+), 14 deletions(-) diff --git a/groups/server/default.nix b/groups/server/default.nix index cb55017..20da14e 100644 --- a/groups/server/default.nix +++ b/groups/server/default.nix @@ -16,7 +16,7 @@ # accept Lets Encrypt's security policy acme = { acceptTerms = true; - defaults.email = "eclarkboman@gmail.com"; + defaults.email = "them@dobutterfliescry.net"; }; # allow SSH keys for passwordless auth diff --git a/homes/me/modules/cli/ssh.nix b/homes/me/modules/cli/ssh.nix index 7e4e694..34247c8 100644 --- a/homes/me/modules/cli/ssh.nix +++ b/homes/me/modules/cli/ssh.nix @@ -28,7 +28,7 @@ }; matcha = { hostname = "192.168.88.250"; - user = "emile"; + user = "cry"; port = 22; identityFile = "~/keys/matcha"; }; diff --git a/homes/modules/editor/vscode.nix b/homes/modules/editor/vscode.nix index f824b1c..7724723 100644 --- a/homes/modules/editor/vscode.nix +++ b/homes/modules/editor/vscode.nix @@ -1,5 +1,4 @@ { - config, lib, pkgs, vscodium ? false, @@ -20,7 +19,7 @@ homepage ? null, changelog ? null, license ? null, - maintainers ? [lib.maintainers.emileclarkb], + maintainers ? [], }: with pkgs.vscode-utils.buildVscodeMarketplaceExtension; { ${publisher}.${name} = buildVscodeMarketplaceExtension { diff --git a/hosts/butterfly/services/forgejo.nix b/hosts/butterfly/services/forgejo.nix index 1e1c782..65a126f 100644 --- a/hosts/butterfly/services/forgejo.nix +++ b/hosts/butterfly/services/forgejo.nix @@ -97,9 +97,9 @@ in { THEMES = "forgejo-auto,forgejo-light,forgejo-dark"; }; "ui.meta" = { - AUTHOR = "Emile Clark-Boman - emileclarkb"; + AUTHOR = "_cry64"; DESCRIPTION = "This is my personal self-hosted git forge, where I keep and maintain personal projects! PS do butterflies cry when they're sad?"; - KEYWORDS = "emile,clark,boman,clarkboman,emileclarkb,git,forge,forgejo,self-hosted,dobutterfliescry,butterfly,butterflies,cry,tearforge"; + KEYWORDS = "emile,clark,boman,clarkboman,emileclarkb,cry,_cry64,cry64,dobutterfliescry,butterfly,butterflies,git,forge,forgejo,self-hosted,tearforge"; }; markdown = { diff --git a/hosts/butterfly/services/mailserver.nix b/hosts/butterfly/services/mailserver.nix index cd2adfc..7602302 100644 --- a/hosts/butterfly/services/mailserver.nix +++ b/hosts/butterfly/services/mailserver.nix @@ -24,8 +24,8 @@ # NOTE: generate hashes with `mkpasswd -sm bcrypt` loginAccounts = { - "me@imbored.dev" = { - aliases = ["emile@imbored.dev"]; + "them@dobutterfliescry.net" = { + aliases = ["cry@dobutterfliescry.net"]; hashedPasswordFile = let CWD = builtins.getEnv "PWD"; # XXX: TODO: use a secrets manager! diff --git a/hosts/matcha/default.nix b/hosts/matcha/default.nix index 4d5d322..ac62e39 100644 --- a/hosts/matcha/default.nix +++ b/hosts/matcha/default.nix @@ -19,7 +19,6 @@ users.users.cry = { openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDYwbPjW26fHivB+UpxRArY7nFI09VLAD9xxOiPk/u+YPAOVR8SYTpsHj3L8kI3ENRtt3PRJb97ZfLpPaAJ0LJiZv4qzisDjbfck12FxSDseQlF2JaJZ4wrJ9llcqJbRLKd5wV4KotrDm8Ct2JSBFOdTBQBGJqtNrLOcAtDqVmDPXsWyONINegtcYHumTbJcQU1ksCABdjW5R1dhJesOuMOM8EvrUtDyftvD7sgnBlXTzybP9c1AphUuBMSR5yEz/cDl+iPtQq7tgB+iepCCuNMGQu1wZFPBCMrZtMoxq6gzmZ4oV+W6tfmGEbtdkY+ix+2j960Zngcw7Gj+aYyMY2TyVJuJmIvlzfcrlsbr1TH35Y/5oYhJA+X6aFpgomUsurJ6/QdI1wQ+ceUCnZEeg/8z+WNaq/Bp2hPzT9Y7SPWolpaotDhh9wiuyVqn5VQqwL2lELfvZM4Lu8l6vRPDeMZTemI1nc5jg3aVpJqZTPqFVcCWrWXfdCFwnfy/SdU0JAprCzVvoqkwDHsJwkxY/NcxlNGNha+8oYZgSH1CZhEp3Z7CDJCTDd5PxxCQHs90ENCWFsoGQIV01dAgwD63460En9q2kGr6gO2aRewMD5Vr8AzeGV87vsR3ARpPQVzEWLX08B076Idjwrz8aebdRYBEg7WCxRe5UVI1i/V8j/zQw== emile@deadlyserver.com" "ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAGEvtRs3C4hjSuvVm2lukqOvObCz5gVlFthcvpGHAqlBgZo47CNJM78WoviEQWceqtu9ZzJdRJ7qEK9ZGvTM0XTSgExkOs6YdS3J7M3i3YS1vcj9KVPinLhiE90aED/319pbYKFrRs/lRzl8XLeaPNqenNMNJBqeary8+r5u9JC6zYCeQ== me@lolcathost" ]; }; diff --git a/hosts/modules/langs/dotnet.nix b/hosts/modules/langs/dotnet.nix index 4a42f74..74ba955 100644 --- a/hosts/modules/langs/dotnet.nix +++ b/hosts/modules/langs/dotnet.nix @@ -36,7 +36,6 @@ meta = { homepage = "https://github.com/unoplatform/uno.check"; license = licenses.mit; - maintainers = [maintainers.emileclarkb]; }; }; }; diff --git a/packages/angryoxide/default.nix b/packages/angryoxide/default.nix index 7610848..d9a7632 100644 --- a/packages/angryoxide/default.nix +++ b/packages/angryoxide/default.nix @@ -10,7 +10,6 @@ angryoxide-meta = { homepage = "https://github.com/${angryoxide-owner}/${angryoxide-pname}"; license = lib.licenses.gpl3; - maintainers = [lib.maintainers.emileclarkb]; }; # "Vendored LibWifi used in AngryOxide" @@ -66,7 +65,7 @@ meta = { - description = "AngryOxide's source files isolated by (@emileclarkb) into a separate Nix derivation."; + description = "AngryOxide's source files isolated by @_cry64 into a separate Nix derivation."; } // angryoxide-meta; }; diff --git a/packages/chameleonultragui/default.nix b/packages/chameleonultragui/default.nix index 0aa10ec..13c78b4 100644 --- a/packages/chameleonultragui/default.nix +++ b/packages/chameleonultragui/default.nix @@ -463,7 +463,6 @@ rec { description = "A GUI for the Chameleon Ultra written in Flutter for crossplatform"; homepage = "https://github.com/GameTec-live/ChameleonUltraGUI"; license = licenses.gpl3; - maintainers = [maintainers.emileclarkb]; platforms = platforms.linux; }; } diff --git a/packages/ekphos/default.nix b/packages/ekphos/default.nix index 8e90cab..2dc837e 100644 --- a/packages/ekphos/default.nix +++ b/packages/ekphos/default.nix @@ -20,6 +20,5 @@ in description = "A lightweight, fast, terminal-based markdown research tool inspired by Obsidian"; homepage = "https://github.com/hanebox/ekphos"; license = lib.licenses.mit; - maintainers = [lib.maintainers.emileclarkb]; }; } From 60848d83d7fb7a72d563d29beb9893af632f2553 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Tue, 10 Mar 2026 00:30:49 +1000 Subject: [PATCH 16/31] ignore non-root secrets --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index e3d65a5..1eafeff 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ hidden/ result rebuild*.log + +secrets/ +!/secrets From e1c361ac23a7715db4307d14b1f4e20c7755e42b Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 23:34:23 +1000 Subject: [PATCH 17/31] disable equibop ghosted plugin --- homes/modules/apps/nixcord.nix | 2 +- secrets/user.yaml | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 secrets/user.yaml diff --git a/homes/modules/apps/nixcord.nix b/homes/modules/apps/nixcord.nix index 96ec353..672e5a6 100644 --- a/homes/modules/apps/nixcord.nix +++ b/homes/modules/apps/nixcord.nix @@ -49,7 +49,7 @@ separatedDiffs = false; }; fakeNitro.enable = true; - ghosted.enable = true; + ghosted.enable = false; noF1.enable = true; noMaskedUrlPaste.enable = true; messageLatency = { diff --git a/secrets/user.yaml b/secrets/user.yaml new file mode 100644 index 0000000..e0e129a --- /dev/null +++ b/secrets/user.yaml @@ -0,0 +1,19 @@ +hashedPassword: ENC[AES256_GCM,data:yUPHY0xg91BNSOkF5PcBkZyacJO7W6OvTE4o8X83i/386D1V/jnRfOpgNZ5FvAwdyA2SNPaeW1gIyLmYbbQGXVLvOPNeRL1Aog==,iv:fz177ve/GlW27NR1CzPGlhWGSM3yaIvN8daEF9xLsM0=,tag:Qv9lXYhj/I6jVzhi7WtuLg==,type:str] +ilovecryPassword: ENC[AES256_GCM,data:3c1ljqAdtiCz8csYW4GJjJUsFpxwh+mjBBWRS7RUg81SC0bdmuSYjKfBFuTu6ML0ZL1p8DXk2elUwV3fMa4RuBami5tIXh7bpw==,iv:eJokDF2GYazbHtlFUjjnK4wsdM1vbn629xkZNSaTdFA=,tag:5mWfg/HoSsnQ+9gX8p26rw==,type:str] +sops: + lastmodified: "2026-03-08T01:44:57Z" + mac: ENC[AES256_GCM,data:geIyLVMcLvGp0/9Yz23/ijZy3oVq1FXVJHobovomCj1oFxSqdsds/w+w/TBmXJ30fvfdXpLULnr6AwwNxSYuNTfm3tXR+EBq0tg1bagbpk6SABOq0TNFRkdfJVyyeVTl/mxBaeHVnPcrV3O50LGGVKdcHkeUFlhuaAqXmYxsq+U=,iv:SvR4yTi1UoSMJldS4NuhGbkNHjdKOo5dw9XhfSsItF8=,tag:AHWXHFVUQkqgJ+KhIuqZEg==,type:str] + pgp: + - created_at: "2026-03-08T01:32:54Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + hF4DuHhvXXGIWHkSAQdAh2Khre0KhjaZPgN4PxO2zm31TkUguTW9OdmCDHyQvAww + dON+Q1s0jOh2hEMmEOF5MJcJnAXHXix8WiSsNTpqnZSS0or3QNH8fUUBCgR3t73r + 0l4BTv46Cj7+PrpUG4l8BbhYWfiu7N0vex4NbpCfyHKTMDLiFSEf9U4BOzkmNkGs + mB+Hw58WwIaru5JueFztwvflE5ysxb9Wk/1PZ6zTpmiq6Rm+WgYydb5vq699DEKC + =oQCe + -----END PGP MESSAGE----- + fp: 9D052B0EEB1CC3283E3E320FF68745A836CA0412 + unencrypted_suffix: _unencrypted + version: 3.11.0 From c79ac20f79261667b873c0dedd15dd8064023a5b Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 23:36:29 +1000 Subject: [PATCH 18/31] 99-silent-bell.conf --- groups/cryos/default.nix | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/groups/cryos/default.nix b/groups/cryos/default.nix index d00bae3..dd4af16 100644 --- a/groups/cryos/default.nix +++ b/groups/cryos/default.nix @@ -84,10 +84,20 @@ alsa.support32Bit = true; # pulse.enable = true; # jack.enable = true; + + # disable X11 bell module, which plays a sound on urgency hint + extraConfig = { + pipewire."99-silent-bell.conf" = { + "context.properties" = { + "module.x11.bell" = false; + }; + }; + }; }; }; - security.rtkit.enable = true; # I *think* this is for pipewire + # allows pipewire to use the realtime scheduler for increased performance + security.rtkit.enable = true; # ---- ENVIRONMENT VARIABLES ---- environment = { From fa1df304a6ff3929488be908ea46526fe23707c5 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 23:40:19 +1000 Subject: [PATCH 19/31] git merge with upstream --- flake.lock | 368 ++++++----------------------------------------------- 1 file changed, 37 insertions(+), 331 deletions(-) diff --git a/flake.lock b/flake.lock index e79a42f..f378aea 100644 --- a/flake.lock +++ b/flake.lock @@ -1,22 +1,5 @@ { "nodes": { - "abseil-src": { - "flake": false, - "locked": { - "lastModified": 1722535511, - "narHash": "sha256-51jpDhdZ0n+KLmxh8KVaTz53pZAB0dHjmILFX+OLud4=", - "owner": "abseil", - "repo": "abseil-cpp", - "rev": "4447c7562e3bc702ade25105912dce503f0c4010", - "type": "github" - }, - "original": { - "owner": "abseil", - "ref": "20240722.0", - "repo": "abseil-cpp", - "type": "github" - } - }, "aquamarine": { "inputs": { "hyprutils": [ @@ -50,23 +33,6 @@ "type": "github" } }, - "asio-src": { - "flake": false, - "locked": { - "lastModified": 1702548444, - "narHash": "sha256-8Xo6J6+dTvDtsthjbLMMTInHMDnMMM0rQwzbZu70J/s=", - "owner": "chriskohlhoff", - "repo": "asio", - "rev": "22ccfc94fc77356f7820601f9f33b9129a337d2d", - "type": "github" - }, - "original": { - "owner": "chriskohlhoff", - "ref": "asio-1-30-0", - "repo": "asio", - "type": "github" - } - }, "awww": { "inputs": { "flake-compat": "flake-compat", @@ -119,23 +85,6 @@ "type": "github" } }, - "curl-src": { - "flake": false, - "locked": { - "lastModified": 1743572790, - "narHash": "sha256-huAGWNm2rYBmgzUuYQ21IYp2skyQECelEkXPMBJY3cE=", - "owner": "curl", - "repo": "curl", - "rev": "1c3149881769e7bd79b072e48374e4c2b3678b2f", - "type": "github" - }, - "original": { - "owner": "curl", - "ref": "curl-8_13_0", - "repo": "curl", - "type": "github" - } - }, "deploy-rs": { "inputs": { "flake-compat": "flake-compat_2", @@ -273,11 +222,11 @@ ] }, "locked": { - "lastModified": 1769996383, - "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "lastModified": 1772408722, + "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", + "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", "type": "github" }, "original": { @@ -326,23 +275,6 @@ "type": "github" } }, - "fmt-src": { - "flake": false, - "locked": { - "lastModified": 1758127535, - "narHash": "sha256-AZDmIeU1HbadC+K0TIAGogvVnxt0oE9U6ocpawIgl6g=", - "owner": "fmtlib", - "repo": "fmt", - "rev": "e424e3f2e607da02742f73db84873b8084fc714c", - "type": "github" - }, - "original": { - "owner": "fmtlib", - "ref": "12.0.0", - "repo": "fmt", - "type": "github" - } - }, "gitignore": { "inputs": { "nixpkgs": [ @@ -392,11 +324,11 @@ ] }, "locked": { - "lastModified": 1770260404, - "narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=", + "lastModified": 1772985280, + "narHash": "sha256-FdrNykOoY9VStevU4zjSUdvsL9SzJTcXt4omdEDZDLk=", "owner": "nix-community", "repo": "home-manager", - "rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b", + "rev": "8f736f007139d7f70752657dff6a401a585d6cbc", "type": "github" }, "original": { @@ -729,91 +661,6 @@ "type": "github" } }, - "incbin-src": { - "flake": false, - "locked": { - "lastModified": 1748303270, - "narHash": "sha256-vgOfViZnWTKpBB6vDNDJSB3YuuGGVhg++zsi9Ubatno=", - "owner": "graphitemaster", - "repo": "incbin", - "rev": "22061f51fe9f2f35f061f85c2b217b55dd75310d", - "type": "github" - }, - "original": { - "owner": "graphitemaster", - "repo": "incbin", - "rev": "22061f51fe9f2f35f061f85c2b217b55dd75310d", - "type": "github" - } - }, - "json-src": { - "flake": false, - "locked": { - "lastModified": 1744360948, - "narHash": "sha256-cECvDOLxgX7Q9R3IE86Hj9JJUxraDQvhoyPDF03B2CY=", - "owner": "nlohmann", - "repo": "json", - "rev": "55f93686c01528224f448c19128836e7df245f72", - "type": "github" - }, - "original": { - "owner": "nlohmann", - "ref": "v3.12.0", - "repo": "json", - "type": "github" - } - }, - "libgit2-src": { - "flake": false, - "locked": { - "lastModified": 1749227175, - "narHash": "sha256-/xI3v7LNhpgfjv/m+sZwYDhhYvS6kQYxiiiG3+EF8Mw=", - "owner": "libgit2", - "repo": "libgit2", - "rev": "0060d9cf5666f015b1067129bd874c6cc4c9c7ac", - "type": "github" - }, - "original": { - "owner": "libgit2", - "ref": "v1.9.1", - "repo": "libgit2", - "type": "github" - } - }, - "luajit-src": { - "flake": false, - "locked": { - "lastModified": 1763177035, - "narHash": "sha256-oYD86MqmlJpiCuEs4LwVtxvarPtz1RPWm8nJqNE0sBs=", - "owner": "SteamClientHomebrew", - "repo": "LuaJIT", - "rev": "89550023569c3e195e75e12951c067fe5591e0d2", - "type": "github" - }, - "original": { - "owner": "SteamClientHomebrew", - "ref": "v2.1", - "repo": "LuaJIT", - "type": "github" - } - }, - "luajson-src": { - "flake": false, - "locked": { - "lastModified": 1763065879, - "narHash": "sha256-5Mdp4jp+rqz2ufkBa1gMfd8nep+Um+mBdr6+Ut6yz9I=", - "owner": "SteamClientHomebrew", - "repo": "LuaJSON", - "rev": "0c1fabf07c42f3907287d1e4f729e0620c1fe6fd", - "type": "github" - }, - "original": { - "owner": "SteamClientHomebrew", - "repo": "LuaJSON", - "rev": "0c1fabf07c42f3907287d1e4f729e0620c1fe6fd", - "type": "github" - } - }, "mango": { "inputs": { "flake-parts": "flake-parts", @@ -823,11 +670,11 @@ "scenefx": "scenefx" }, "locked": { - "lastModified": 1771732288, - "narHash": "sha256-N1H7LMWXYNn7zN9ghp4vHlBs4O/Rw/+ZEoPUpm9ozw4=", + "lastModified": 1773034081, + "narHash": "sha256-tH1yy1LQYtmGWnCU7whsdX0iGpc2dvaJ+7p6rvuKkHg=", "owner": "DreamMaoMao", "repo": "mango", - "rev": "6b2d694b234cae9876eb81e27991439eb51860f1", + "rev": "db30977196b91cfe2e5db8e9829faafe13417bd9", "type": "github" }, "original": { @@ -877,112 +724,6 @@ "type": "github" } }, - "millennium": { - "inputs": { - "abseil-src": "abseil-src", - "asio-src": "asio-src", - "curl-src": "curl-src", - "fmt-src": "fmt-src", - "incbin-src": "incbin-src", - "json-src": "json-src", - "libgit2-src": "libgit2-src", - "luajit-src": "luajit-src", - "luajson-src": "luajson-src", - "millennium-src": "millennium-src", - "minhook-src": "minhook-src", - "mini-src": "mini-src", - "minizip-src": "minizip-src", - "nixpkgs": [ - "nixpkgs-unstable" - ], - "re2-src": "re2-src", - "websocketpp-src": "websocketpp-src", - "zlib-src": "zlib-src" - }, - "locked": { - "dir": "packages/nix", - "lastModified": 1772390578, - "narHash": "sha256-3yQlDZz9JZqPFiYYj8fQkpCXUzjlAw4s7zaZ2n0wFmE=", - "owner": "SteamClientHomebrew", - "repo": "millennium", - "rev": "41d8c701e1f1ed4362e8378d12bbe5cb0cb811d6", - "type": "github" - }, - "original": { - "dir": "packages/nix", - "owner": "SteamClientHomebrew", - "repo": "millennium", - "type": "github" - } - }, - "millennium-src": { - "flake": false, - "locked": { - "lastModified": 1770463863, - "narHash": "sha256-MceGTpXobCAh5Ll/1iTWcEf6/nHY3Ll1t06JxbYc+Co=", - "owner": "SteamClientHomebrew", - "repo": "Millennium", - "rev": "1bc62c94a06f25f7e8d7e269f11cd968cf576bff", - "type": "github" - }, - "original": { - "owner": "SteamClientHomebrew", - "repo": "Millennium", - "rev": "1bc62c94a06f25f7e8d7e269f11cd968cf576bff", - "type": "github" - } - }, - "minhook-src": { - "flake": false, - "locked": { - "lastModified": 1743163800, - "narHash": "sha256-0eGFfg365bb4zic1WTHMvKHbxuhhGp72/clu8OklHXs=", - "owner": "TsudaKageyu", - "repo": "minhook", - "rev": "c3fcafdc10146beb5919319d0683e44e3c30d537", - "type": "github" - }, - "original": { - "owner": "TsudaKageyu", - "ref": "v1.3.4", - "repo": "minhook", - "type": "github" - } - }, - "mini-src": { - "flake": false, - "locked": { - "lastModified": 1743356736, - "narHash": "sha256-zBFFOlECbie7+62fTGf+NP4gNmfv2Qddw3ys6xn7o9U=", - "owner": "metayeti", - "repo": "mINI", - "rev": "52b66e987cb56171dc91d96115cdf094b6e4d7a0", - "type": "github" - }, - "original": { - "owner": "metayeti", - "ref": "0.9.18", - "repo": "mINI", - "type": "github" - } - }, - "minizip-src": { - "flake": false, - "locked": { - "lastModified": 1746408966, - "narHash": "sha256-I3CZwtfJMsZYQOMdGhooUN8vssnQj6rCzv8F+rne3vg=", - "owner": "zlib-ng", - "repo": "minizip-ng", - "rev": "f3ed731e27a97e30dffe076ed5e0537daae5c1bd", - "type": "github" - }, - "original": { - "owner": "zlib-ng", - "ref": "4.0.10", - "repo": "minizip-ng", - "type": "github" - } - }, "nix-flatpak": { "locked": { "lastModified": 1767983141, @@ -1069,11 +810,11 @@ ] }, "locked": { - "lastModified": 1771375681, - "narHash": "sha256-qDDw0ruBZ1kt63j4uVP5Xrd1OxGKIYrSFnig0z6ozSw=", + "lastModified": 1772891434, + "narHash": "sha256-+MUN+5lOvWS6T4pvIZBGL4AKJkflLXGgVRYTlNeZEiE=", "owner": "FlameFlag", "repo": "nixcord", - "rev": "d030dbb48ab020092681a39c878c1d48a553ffc1", + "rev": "fc63af2dbc92cdcfeb6c650d986280057b0f135c", "type": "github" }, "original": { @@ -1084,11 +825,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1771903837, - "narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=", + "lastModified": 1772822230, + "narHash": "sha256-yf3iYLGbGVlIthlQIk5/4/EQDZNNEmuqKZkQssMljuw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951", + "rev": "71caefce12ba78d84fe618cf61644dce01cf3a96", "type": "github" }, "original": { @@ -1115,11 +856,11 @@ }, "nixpkgs-lib_2": { "locked": { - "lastModified": 1769909678, - "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", + "lastModified": 1772328832, + "narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "72716169fe93074c333e8d0173151350670b824c", + "rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742", "type": "github" }, "original": { @@ -1130,11 +871,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1772170669, - "narHash": "sha256-ClBvX0YzaJOaGZInNi0e3mFknzr/rAdwKbWrjO1j1sg=", + "lastModified": 1773068446, + "narHash": "sha256-MCEmktH6AFJH8Pg1rBGB2Q0FhS5z5K87IsMbUU8uzHI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ee234284495a7ff3ecffb062595102fdc4fbe617", + "rev": "70b7278e2c0acc26ad3360551bf9c15c5ccc0acd", "type": "github" }, "original": { @@ -1146,11 +887,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1771008912, - "narHash": "sha256-gf2AmWVTs8lEq7z/3ZAsgnZDhWIckkb+ZnAo5RzSxJg=", + "lastModified": 1772773019, + "narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a82ccc39b39b621151d6732718e3e250109076fa", + "rev": "aca4d95fce4914b3892661bcb80b8087293536c6", "type": "github" }, "original": { @@ -1219,23 +960,6 @@ "type": "github" } }, - "re2-src": { - "flake": false, - "locked": { - "lastModified": 1762353507, - "narHash": "sha256-0J1HVk+eR7VN0ymucW9dNlT36j16XIfCzcs1EVyEIEU=", - "owner": "google", - "repo": "re2", - "rev": "927f5d53caf8111721e734cf24724686bb745f55", - "type": "github" - }, - "original": { - "owner": "google", - "ref": "2025-11-05", - "repo": "re2", - "type": "github" - } - }, "root": { "inputs": { "awww": "awww", @@ -1309,11 +1033,11 @@ ] }, "locked": { - "lastModified": 1769900466, - "narHash": "sha256-WeoJBj/PhqFCCJEIycTipqPbKm5BpQT2uzFTYcYZ30I=", + "lastModified": 1771956684, + "narHash": "sha256-+EtzmEzGA2xqwIvKrP0euYaOzrmTQWEWAiWV+k2WBEM=", "owner": "uiriansan", "repo": "SilentSDDM", - "rev": "a44caf771b4cb72f5c2514f7d488455b0fa860d2", + "rev": "34f82e1fb8412fff78b82a0dcce763492b36054c", "type": "github" }, "original": { @@ -1369,11 +1093,11 @@ ] }, "locked": { - "lastModified": 1772494187, - "narHash": "sha256-6ksgNAFXVK+Cg/6ww7bB2nJUPZlnS75UwZC7G+L03EE=", + "lastModified": 1773007504, + "narHash": "sha256-4NtiCDH3RunKbrlWvPCB6dyTjCwqdrHaBDeMCzG6gIA=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "915ab06b046d05613041780c575c62a32fe67cea", + "rev": "434e63b851f9139aaeddc3b8de44d47992828b3b", "type": "github" }, "original": { @@ -1467,23 +1191,6 @@ "type": "github" } }, - "websocketpp-src": { - "flake": false, - "locked": { - "lastModified": 1587320717, - "narHash": "sha256-9fIwouthv2GcmBe/UPvV7Xn9P2o0Kmn2hCI4jCh0hPM=", - "owner": "zaphoyd", - "repo": "websocketpp", - "rev": "56123c87598f8b1dd471be83ca841ceae07f95ba", - "type": "github" - }, - "original": { - "owner": "zaphoyd", - "ref": "0.8.2", - "repo": "websocketpp", - "type": "github" - } - }, "xdph": { "inputs": { "hyprland-protocols": [ @@ -1551,17 +1258,16 @@ "zlib-src": { "flake": false, "locked": { - "lastModified": 1754565515, - "narHash": "sha256-c2RYqHi3hj/ViBzJcYWoNib27GAbq/B1SJUfvG7CPG4=", - "owner": "zlib-ng", - "repo": "zlib-ng", - "rev": "425439062b114a0f6cf625022c41d929c7e879f9", + "lastModified": 1772945022, + "narHash": "sha256-Fv14NttjL/7xfi6eVwrSEBAyBvDjI00RLiRNqA5apcw=", + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "rev": "3a6a5ca7fb48cc8fd8183386506a06579d1d79dc", "type": "github" }, "original": { - "owner": "zlib-ng", - "ref": "2.2.5", - "repo": "zlib-ng", + "owner": "0xc000022070", + "repo": "zen-browser-flake", "type": "github" } } From a8fde8ae1b8a725ed162b9c4732cbd7b51f6cbea Mon Sep 17 00:00:00 2001 From: _cry64 Date: Sun, 22 Mar 2026 23:40:27 +1000 Subject: [PATCH 20/31] testing out sops a lil bit more --- .sops.yaml | 2 +- hosts/lolcathost/default.nix | 39 +++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/.sops.yaml b/.sops.yaml index 540522e..fcf0a45 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -4,6 +4,6 @@ keys: creation_rules: - path_regex: secrets/[^/]+\.(yaml|json|env|ini)$ key_groups: - - age: + - pgp: - *cry - *idk diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index e3a1309..2e2e450 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -1,4 +1,9 @@ -{...}: { +{ + root, + config, + pkgs, + ... +}: { imports = [ ./hardware.nix ]; @@ -17,6 +22,38 @@ libinput.enable = true; }; + # users = { + # users = { + # # literally me fr (personal account) + # ilovecry = { + # isNormalUser = true; + # extraGroups = ["wheel"]; + # shell = pkgs.bash; + # # hashedPasswordFile = config.sops.secrets.ilovecryPassword.path; + # }; + # }; + # }; + + # sops = { + # defaultSopsFile = /${root}/secrets/user.yaml; + # # age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"]; + # secrets = { + # "hashedPassword" = { + # neededForUsers = true; + # }; + # "ilovecryPassword" = { + # neededForUsers = true; + # }; + # # "gitlab/oauth_token" = {}; + # # "tailscale/authkey" = {}; + # # "guest_accounts.json" = {}; + # # "npmrc" = { + # # owner = "youruser"; + # # path = "/home/youruser/.npmrc"; + # # }; + # }; + # }; + # DO NOT MODIFY system.stateVersion = "24.05"; # Did you read the comment? } From 3272e9415755ebc4e6a024c78036d31217fcb9e9 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Thu, 26 Mar 2026 09:32:49 +1000 Subject: [PATCH 21/31] create elvish home-manager module --- homes/me/default.nix | 7 ++++++- homes/modules/shell/elvish.nix | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 homes/modules/shell/elvish.nix diff --git a/homes/me/default.nix b/homes/me/default.nix index 8f4c8ea..b800d70 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -4,8 +4,10 @@ ./modules/cli/ssh.nix ../modules/term/foot.nix - ../modules/shell/fish.nix ../modules/shell/zsh.nix + ../modules/shell/zsh.nix + ../modules/shell/fish.nix + ../modules/shell/elvish.nix ../modules/editor/helix.nix ../modules/editor/neovim @@ -23,8 +25,11 @@ ../modules/wm/hyprland ../modules/wm/mango ../modules/de/mako.nix + ../modules/de/waybar ]; + programs.elvish.enable = true; + home = { shellAliases = { # nix diff --git a/homes/modules/shell/elvish.nix b/homes/modules/shell/elvish.nix new file mode 100644 index 0000000..44a19dd --- /dev/null +++ b/homes/modules/shell/elvish.nix @@ -0,0 +1,29 @@ +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.programs.elvish; +in { + options.programs.elvish = { + enable = lib.mkEnableOption "elvish"; + }; + + config = lib.mkIf cfg.enable { + home = { + packages = with pkgs; [elvish]; + + file.".elvish/nix.elv".source = let + elvish-modules = pkgs.fetchFromGitHub { + owner = "zzamboni"; + repo = "elvish-modules"; + rev = "9005c970346ab06214b3cd3ed3e70f04f3c632ba"; + hash = "sha256-/Dwtl12QzPvMoMMGoj+v3dwX2ZwFT8t/bohVy1zDE0c="; + }; + in + builtins.toPath "${elvish-modules}/nix.elv"; + # /${builtins.toPath elvish-modules.outPath}/nix.elv; + }; + }; +} From 463beff6e3dd8899b94c0464a013e3ec46dbe246 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Thu, 26 Mar 2026 09:33:43 +1000 Subject: [PATCH 22/31] fix nixcord config layout changed --- homes/modules/apps/nixcord.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/homes/modules/apps/nixcord.nix b/homes/modules/apps/nixcord.nix index 672e5a6..f614844 100644 --- a/homes/modules/apps/nixcord.nix +++ b/homes/modules/apps/nixcord.nix @@ -5,7 +5,7 @@ programs.nixcord = { enable = true; - equibop.enable = true; + # equibop.enable = true; discord = { vencord.enable = false; @@ -18,6 +18,7 @@ "base16-colors.css" ]; plugins = { + invisibleChat.enable = true; anonymiseFileNames = { enable = true; anonymiseByDefault = true; @@ -68,7 +69,6 @@ forwardAnywhere.enable = true; spotifyCrack.enable = true; spotifyShareCommands.enable = true; - spotifyControls.enable = true; fullUserInChatbox.enable = true; gifPaste.enable = true; ignoreActivities = { @@ -96,6 +96,11 @@ revealAllSpoilers.enable = true; serverInfo.enable = true; serverListIndicators.enable = true; + musicControls = { + enable = true; + showSpotifyControls.enable = true; + showSpotifyLyrics.enable = true; + }; showHiddenChannels.enable = true; showHiddenThings.enable = true; showTimeoutDuration = { @@ -133,7 +138,6 @@ whoReacted.enable = true; whosWatching.enable = true; quickReply.enable = true; - questCompleter.enable = true; shikiCodeblocks = { enable = true; useDevIcon = "COLOR"; From 4467238597802fa33b6f01a2ccf0b26919a783ee Mon Sep 17 00:00:00 2001 From: _cry64 Date: Thu, 26 Mar 2026 09:33:59 +1000 Subject: [PATCH 23/31] TODO fix kanshi --- TODO.md | 3 ++- homes/modules/wm/hyprland/default.nix | 7 +++---- homes/modules/wm/hyprland/kanshi.nix | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/TODO.md b/TODO.md index 0bdc861..b20a2be 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1,5 @@ +- [ ] get kanshi working with hyprland + - [ ] Update the README.md - [ ] switch ssh keys to ECC (fuck RSA) @@ -22,4 +24,3 @@ systemd.tmpfiles.rules = let # Cerulean should automatically add set home-managers `home.username` and `home.homeDirectory` # (this can be done by using .extendModule from the nixos module system :3) - diff --git a/homes/modules/wm/hyprland/default.nix b/homes/modules/wm/hyprland/default.nix index e82b8ee..8e4454f 100755 --- a/homes/modules/wm/hyprland/default.nix +++ b/homes/modules/wm/hyprland/default.nix @@ -41,6 +41,7 @@ # startup programs exec-once = [ + # TODO: make these independent of hyprland, add these to the "mako &" "awww-daemon &" @@ -48,8 +49,6 @@ # "wl-paste --type image --watch cliphist store" # "wl-clip-persist --clipboard regular" # "playerctld daemon" - - "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" ]; # monitor configuration @@ -61,8 +60,8 @@ ] else if hostname == "myputer" then [ - "DP-2, 3840x2160@59.99700, 0x0, 1.5" - "HDMI-A-1, 1920x1080@119.98Hz, 2560x0, 1.0" + "DP-2, 3840x2160@60.00Hz, 0x0, 1.0" + "HDMI-A-1, 1920x1080@119.98Hz, 3840x0, 1.0" ] else []; diff --git a/homes/modules/wm/hyprland/kanshi.nix b/homes/modules/wm/hyprland/kanshi.nix index 245b991..919eee7 100755 --- a/homes/modules/wm/hyprland/kanshi.nix +++ b/homes/modules/wm/hyprland/kanshi.nix @@ -3,7 +3,7 @@ # TODO: find a way to make this modular (ie put something different for my laptop) # my idea is to have a "monitors" module and use kanshi for wayland services.kanshi = { - enable = true; + enable = false; systemdTarget = "hyprland-session.target"; # You can find your monitors in hyprland by using `hyprctl monitors all` settings = [ From fac35b501001a9d972913644f0509a89657b886f Mon Sep 17 00:00:00 2001 From: _cry64 Date: Thu, 26 Mar 2026 09:36:33 +1000 Subject: [PATCH 24/31] add waybar to hyprland --- homes/modules/de/waybar/colors.css | 19 +++ homes/modules/de/waybar/default.nix | 101 ++++++++++++++++ homes/modules/de/waybar/style.css | 164 ++++++++++++++++++++++++++ homes/modules/wm/hyprland/default.nix | 1 + 4 files changed, 285 insertions(+) create mode 100644 homes/modules/de/waybar/colors.css create mode 100644 homes/modules/de/waybar/default.nix create mode 100644 homes/modules/de/waybar/style.css diff --git a/homes/modules/de/waybar/colors.css b/homes/modules/de/waybar/colors.css new file mode 100644 index 0000000..98bb26f --- /dev/null +++ b/homes/modules/de/waybar/colors.css @@ -0,0 +1,19 @@ +@define-color colorbg #26233a; +@define-color colorfg #eb6f92; + +@define-color color00 #26233a; /* black (Overlay) */ +@define-color color01 #eb6f92; /* red (Love) */ +@define-color color02 #9ccfd8; /* green (Foam) */ +@define-color color03 #f6c177; /* yellow (Gold) */ +@define-color color04 #31748f; /* blue (Pine) */ +@define-color color05 #c4a7e7; /* magenta (Iris) */ +@define-color color06 #ebbcba; /* cyan (Rose) */ +@define-color color07 #e0def4; /* white (Text) */ +@define-color color08 #47435d; /* bright black (lighter Overlay) */ +@define-color color09 #ff98ba; /* bright red (lighter Love) */ +@define-color color10 #c5f9ff; /* bright green (lighter Foam) */ +@define-color color11 #ffeb9e; /* bright yellow (lighter Gold) */ +@define-color color12 #5b9ab7; /* bright blue (lighter Pine) */ +@define-color color13 #eed0ff; /* bright magenta (lighter Iris) */ +@define-color color14 #ffe5e3; /* bright cyan (lighter Rose) */ +@define-color color15 #fefcff; /* bright white (lighter Text) */ diff --git a/homes/modules/de/waybar/default.nix b/homes/modules/de/waybar/default.nix new file mode 100644 index 0000000..33e7a42 --- /dev/null +++ b/homes/modules/de/waybar/default.nix @@ -0,0 +1,101 @@ +{upkgs, ...}: { + programs.waybar = { + enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + # modules-left = ["hyprland/workspaces" "wlr/taskbar" "custom/media"]; + modules-left = ["hyprland/workspaces" "wlr/taskbar"]; + modules-center = ["clock"]; + modules-right = ["cpu" "memory" "network" "pulseaudio" "privacy" "tray"]; + + # left + "hyprland/workspaces" = { + format = "{id}"; + }; + "ext/workspaces" = { + # not enabled yet, hyprland and mango need two different configs ;-; + format = "{id}"; + ignore-hidden = true; + on-click = "activate"; + }; + "wlr/taskbar" = { + format = "{icon}"; + icon-size = 12; + }; + # "custom/media" = { + # exec = "auroramedia"; + # return-type = "json"; + # escape = true; + # restart-interval = 1; + # }; + + # center + "clock" = { + format = "{:%Y %b %a %d %H:%M:%S}"; + interval = 1; + tooltip = false; + }; + + # right + "cpu" = { + format = " {usage}%"; + interval = 1; + }; + "memory" = { + format = " {used:0.1f} / {total:0.1f} GiB"; + interval = 1; + }; + "network" = { + format = "{bandwidthUpBytes}  {bandwidthDownBytes}  {ifname}"; + format-wifi = " {bandwidthUpBytes}  {bandwidthDownBytes} "; + format-ethernet = "󰈀 {bandwidthUpBytes}  {bandwidthDownBytes} "; + format-disconnected = "no internet ~ rawr! ~ x3"; # empty format hides module + interval = 1; + max-length = 32; + }; + "pulseaudio" = { + format = "{icon} {volume}%"; + format-muted = " {volume}%"; + format-icons = { + default = [ + "" + "" + "" + ]; + }; + "scroll-step" = 5; + }; + "privacy" = { + icon-size = 12; + icon-spacing = 5; + transition-duration = 200; + modules = [ + { + type = "screenshare"; + tooltip = true; + tooltip-icon-size = 12; + } + { + type = "audio-in"; + tooltip = true; + tooltip-icon-size = 12; + } + ]; + }; + "tray" = { + icon-size = 12; + spacing = 10; + # fixes spotify not showing up when "close button should minimize the Spotify window" is false + show-passive-items = true; + }; + }; + }; + + style = + builtins.readFile ./colors.css + + builtins.readFile ./style.css; + }; +} diff --git a/homes/modules/de/waybar/style.css b/homes/modules/de/waybar/style.css new file mode 100644 index 0000000..294991c --- /dev/null +++ b/homes/modules/de/waybar/style.css @@ -0,0 +1,164 @@ +* { + border: none; + border-radius: 0; + font-family: 'GeistMono Nerd Font'; + font-size: 15px; + font-weight: bold; + min-height: 10px; +} +window#waybar { + background: rgba(0, 0, 0, 0); +} +/* +adds a margin around the edge of the taskbar, surrounding the modules, +spacing it out from the edge of the screen and windows below +*/ +window#waybar > box { + margin: 0px 12px; +} + +tooltip { + background: @colorbg; + color: @colorfg; + opacity: 0.9; + padding: 4px; + border-radius: 12px; + border: 1px solid @color01; +} +tooltip label { + background: rgba(0, 0, 0, 0); + color: @colorfg; +} + +#clock, +#memory, +#network, +#workspaces, +#taskbar, +#cpu, +#pulseaudio, +#privacy, +#tray, +#custom-media { + background: @colorbg; + color: @colorfg; + opacity: 0.9; + padding: 4px 16px; + border-radius: 32px; + border: 1px solid @color01; +} + +/* +left-side modules +*/ +#workspaces, +#taskbar, +#custom-media { + margin: 4px 4px 4px 0px; +} + +/* +center modules +*/ +#clock { + margin: 4px 0px 4px 0px; +} + +/* +right-side modules +*/ +#memory, +#network, +#cpu, +#pulseaudio, +#tray, +#privacy { + margin: 4px 0px 4px 4px; +} + +#workspaces, +#taskbar { + padding: 0px; +} + +#taskbar.empty { + opacity: 0; + padding: 0px; + margin: 0px; + border: none; +} +#tray.empty { + opacity: 0; + padding: 0; + margin: 0; + border: none; +} + +/* + connects the workspace and taskbar together :3 +*/ +/* +#workspaces { + margin: 4px 0px 4px 12px; + padding: 0px 8px 0px 0px; + border-radius: 100px 0px 0px 100px; + border-width: 1px 0px 1px 1px; +} +#taskbar { + margin: 4px 0px 4px 0px; + padding: 0px 0px 0px 8px; + border-radius: 0px 100px 100px 0px; +} +*/ + +#cpu { + margin: 4px 0 4px 0; + border-radius: 32px 0px 0px 32px; +} +#memory { + margin: 4px 0 4px 0; + border-radius: 0px; + border-width: 1px 0px 1px 0px; +} +#network { + margin: 4px 0 4px 0; + border-radius: 0px 32px 32px 0px; +} + +#workspaces button { + padding: 2px 4px; + border-radius: 32px; + color: @colorfg; +} +#workspaces button:hover { + background: @colorfg; + color: @colorbg; + opacity: 0.8; +} +#workspaces button.active { + background: @colorfg; + color: @colorbg; +} + +#taskbar button { + padding: 2px 4px; + border-radius: 32px; + color: @colorfg; +} +#taskbar button:hover { + background: @colorfg; + color: @colorbg; + opacity: 0.8; +} +#taskbar button.active { + background: @colorfg; + color: @colorbg; +} +/* + icons in each button on the taskbar to correct + for them not being properly centred sometimes :3 +*/ +#taskbar button box image { + padding-left: 2px; +} + diff --git a/homes/modules/wm/hyprland/default.nix b/homes/modules/wm/hyprland/default.nix index 8e4454f..de9666c 100755 --- a/homes/modules/wm/hyprland/default.nix +++ b/homes/modules/wm/hyprland/default.nix @@ -44,6 +44,7 @@ # TODO: make these independent of hyprland, add these to the "mako &" "awww-daemon &" + "waybar &" # "wl-paste --type text --watch cliphist store" # "wl-paste --type image --watch cliphist store" From 92995bac8bdcfefd85577f675b8ac51bbfdb0a62 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Thu, 26 Mar 2026 09:38:33 +1000 Subject: [PATCH 25/31] progress flake.lock --- flake.lock | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/flake.lock b/flake.lock index f378aea..59d65a3 100644 --- a/flake.lock +++ b/flake.lock @@ -240,11 +240,11 @@ "nixpkgs-lib": "nixpkgs-lib_2" }, "locked": { - "lastModified": 1769996383, - "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "lastModified": 1772408722, + "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", + "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", "type": "github" }, "original": { @@ -807,14 +807,15 @@ "flake-parts": "flake-parts_3", "nixpkgs": [ "nixpkgs" - ] + ], + "nixpkgs-nixcord": "nixpkgs-nixcord" }, "locked": { - "lastModified": 1772891434, - "narHash": "sha256-+MUN+5lOvWS6T4pvIZBGL4AKJkflLXGgVRYTlNeZEiE=", + "lastModified": 1774312874, + "narHash": "sha256-mFc7Iy+Oqwr7Vwb7CmNIWilSYiTw2857imf6Rb75ITg=", "owner": "FlameFlag", "repo": "nixcord", - "rev": "fc63af2dbc92cdcfeb6c650d986280057b0f135c", + "rev": "71f4b3f92ca534c3665deb63e229195955d96cf9", "type": "github" }, "original": { @@ -885,6 +886,22 @@ "type": "github" } }, + "nixpkgs-nixcord": { + "locked": { + "lastModified": 1773222311, + "narHash": "sha256-BHoB/XpbqoZkVYZCfXJXfkR+GXFqwb/4zbWnOr2cRcU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0590cd39f728e129122770c029970378a79d076a", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-unstable": { "locked": { "lastModified": 1772773019, From 4eb0378a6567678d3e421f8b1003ef43e1441cb2 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Thu, 26 Mar 2026 09:46:12 +1000 Subject: [PATCH 26/31] fix MOD!=SUPER on lolcathost --- homes/modules/wm/hyprland/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homes/modules/wm/hyprland/default.nix b/homes/modules/wm/hyprland/default.nix index de9666c..f77e554 100755 --- a/homes/modules/wm/hyprland/default.nix +++ b/homes/modules/wm/hyprland/default.nix @@ -28,7 +28,10 @@ # }; settings = { - "$MOD" = "ALT"; + "$MOD" = + if hostname == "myputer" + then "ALT" # my SUPER key broke ;w; + else "SUPER"; # applications "$editor" = "hx"; From c8172255a4a31733de5335b4005480a1c150e6e7 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Thu, 26 Mar 2026 09:47:41 +1000 Subject: [PATCH 27/31] update millennium --- flake.lock | 308 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 301 insertions(+), 7 deletions(-) diff --git a/flake.lock b/flake.lock index 59d65a3..4306f69 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,22 @@ { "nodes": { + "abseil-src": { + "flake": false, + "locked": { + "lastModified": 1722535511, + "narHash": "sha256-51jpDhdZ0n+KLmxh8KVaTz53pZAB0dHjmILFX+OLud4=", + "owner": "abseil", + "repo": "abseil-cpp", + "rev": "4447c7562e3bc702ade25105912dce503f0c4010", + "type": "github" + }, + "original": { + "owner": "abseil", + "ref": "20240722.0", + "repo": "abseil-cpp", + "type": "github" + } + }, "aquamarine": { "inputs": { "hyprutils": [ @@ -33,6 +50,23 @@ "type": "github" } }, + "asio-src": { + "flake": false, + "locked": { + "lastModified": 1702548444, + "narHash": "sha256-8Xo6J6+dTvDtsthjbLMMTInHMDnMMM0rQwzbZu70J/s=", + "owner": "chriskohlhoff", + "repo": "asio", + "rev": "22ccfc94fc77356f7820601f9f33b9129a337d2d", + "type": "github" + }, + "original": { + "owner": "chriskohlhoff", + "ref": "asio-1-30-0", + "repo": "asio", + "type": "github" + } + }, "awww": { "inputs": { "flake-compat": "flake-compat", @@ -85,6 +119,23 @@ "type": "github" } }, + "curl-src": { + "flake": false, + "locked": { + "lastModified": 1743572790, + "narHash": "sha256-huAGWNm2rYBmgzUuYQ21IYp2skyQECelEkXPMBJY3cE=", + "owner": "curl", + "repo": "curl", + "rev": "1c3149881769e7bd79b072e48374e4c2b3678b2f", + "type": "github" + }, + "original": { + "owner": "curl", + "ref": "curl-8_13_0", + "repo": "curl", + "type": "github" + } + }, "deploy-rs": { "inputs": { "flake-compat": "flake-compat_2", @@ -275,6 +326,23 @@ "type": "github" } }, + "fmt-src": { + "flake": false, + "locked": { + "lastModified": 1758127535, + "narHash": "sha256-AZDmIeU1HbadC+K0TIAGogvVnxt0oE9U6ocpawIgl6g=", + "owner": "fmtlib", + "repo": "fmt", + "rev": "e424e3f2e607da02742f73db84873b8084fc714c", + "type": "github" + }, + "original": { + "owner": "fmtlib", + "ref": "12.0.0", + "repo": "fmt", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -661,6 +729,91 @@ "type": "github" } }, + "incbin-src": { + "flake": false, + "locked": { + "lastModified": 1748303270, + "narHash": "sha256-vgOfViZnWTKpBB6vDNDJSB3YuuGGVhg++zsi9Ubatno=", + "owner": "graphitemaster", + "repo": "incbin", + "rev": "22061f51fe9f2f35f061f85c2b217b55dd75310d", + "type": "github" + }, + "original": { + "owner": "graphitemaster", + "repo": "incbin", + "rev": "22061f51fe9f2f35f061f85c2b217b55dd75310d", + "type": "github" + } + }, + "json-src": { + "flake": false, + "locked": { + "lastModified": 1744360948, + "narHash": "sha256-cECvDOLxgX7Q9R3IE86Hj9JJUxraDQvhoyPDF03B2CY=", + "owner": "nlohmann", + "repo": "json", + "rev": "55f93686c01528224f448c19128836e7df245f72", + "type": "github" + }, + "original": { + "owner": "nlohmann", + "ref": "v3.12.0", + "repo": "json", + "type": "github" + } + }, + "libgit2-src": { + "flake": false, + "locked": { + "lastModified": 1749227175, + "narHash": "sha256-/xI3v7LNhpgfjv/m+sZwYDhhYvS6kQYxiiiG3+EF8Mw=", + "owner": "libgit2", + "repo": "libgit2", + "rev": "0060d9cf5666f015b1067129bd874c6cc4c9c7ac", + "type": "github" + }, + "original": { + "owner": "libgit2", + "ref": "v1.9.1", + "repo": "libgit2", + "type": "github" + } + }, + "luajit-src": { + "flake": false, + "locked": { + "lastModified": 1763177035, + "narHash": "sha256-oYD86MqmlJpiCuEs4LwVtxvarPtz1RPWm8nJqNE0sBs=", + "owner": "SteamClientHomebrew", + "repo": "LuaJIT", + "rev": "89550023569c3e195e75e12951c067fe5591e0d2", + "type": "github" + }, + "original": { + "owner": "SteamClientHomebrew", + "ref": "v2.1", + "repo": "LuaJIT", + "type": "github" + } + }, + "luajson-src": { + "flake": false, + "locked": { + "lastModified": 1763065879, + "narHash": "sha256-5Mdp4jp+rqz2ufkBa1gMfd8nep+Um+mBdr6+Ut6yz9I=", + "owner": "SteamClientHomebrew", + "repo": "LuaJSON", + "rev": "0c1fabf07c42f3907287d1e4f729e0620c1fe6fd", + "type": "github" + }, + "original": { + "owner": "SteamClientHomebrew", + "repo": "LuaJSON", + "rev": "0c1fabf07c42f3907287d1e4f729e0620c1fe6fd", + "type": "github" + } + }, "mango": { "inputs": { "flake-parts": "flake-parts", @@ -724,6 +877,112 @@ "type": "github" } }, + "millennium": { + "inputs": { + "abseil-src": "abseil-src", + "asio-src": "asio-src", + "curl-src": "curl-src", + "fmt-src": "fmt-src", + "incbin-src": "incbin-src", + "json-src": "json-src", + "libgit2-src": "libgit2-src", + "luajit-src": "luajit-src", + "luajson-src": "luajson-src", + "millennium-src": "millennium-src", + "minhook-src": "minhook-src", + "mini-src": "mini-src", + "minizip-src": "minizip-src", + "nixpkgs": [ + "nixpkgs-unstable" + ], + "re2-src": "re2-src", + "websocketpp-src": "websocketpp-src", + "zlib-src": "zlib-src" + }, + "locked": { + "dir": "packages/nix", + "lastModified": 1774360398, + "narHash": "sha256-IvuZMTxTe5osTszZp4r27X/F0R7FVhLWkP7g6pYMgTs=", + "owner": "SteamClientHomebrew", + "repo": "millennium", + "rev": "4378aac79283a11912dd1a7adf89f79ab3736a87", + "type": "github" + }, + "original": { + "dir": "packages/nix", + "owner": "SteamClientHomebrew", + "repo": "millennium", + "type": "github" + } + }, + "millennium-src": { + "flake": false, + "locked": { + "lastModified": 1770463863, + "narHash": "sha256-MceGTpXobCAh5Ll/1iTWcEf6/nHY3Ll1t06JxbYc+Co=", + "owner": "SteamClientHomebrew", + "repo": "Millennium", + "rev": "1bc62c94a06f25f7e8d7e269f11cd968cf576bff", + "type": "github" + }, + "original": { + "owner": "SteamClientHomebrew", + "repo": "Millennium", + "rev": "1bc62c94a06f25f7e8d7e269f11cd968cf576bff", + "type": "github" + } + }, + "minhook-src": { + "flake": false, + "locked": { + "lastModified": 1743163800, + "narHash": "sha256-0eGFfg365bb4zic1WTHMvKHbxuhhGp72/clu8OklHXs=", + "owner": "TsudaKageyu", + "repo": "minhook", + "rev": "c3fcafdc10146beb5919319d0683e44e3c30d537", + "type": "github" + }, + "original": { + "owner": "TsudaKageyu", + "ref": "v1.3.4", + "repo": "minhook", + "type": "github" + } + }, + "mini-src": { + "flake": false, + "locked": { + "lastModified": 1743356736, + "narHash": "sha256-zBFFOlECbie7+62fTGf+NP4gNmfv2Qddw3ys6xn7o9U=", + "owner": "metayeti", + "repo": "mINI", + "rev": "52b66e987cb56171dc91d96115cdf094b6e4d7a0", + "type": "github" + }, + "original": { + "owner": "metayeti", + "ref": "0.9.18", + "repo": "mINI", + "type": "github" + } + }, + "minizip-src": { + "flake": false, + "locked": { + "lastModified": 1746408966, + "narHash": "sha256-I3CZwtfJMsZYQOMdGhooUN8vssnQj6rCzv8F+rne3vg=", + "owner": "zlib-ng", + "repo": "minizip-ng", + "rev": "f3ed731e27a97e30dffe076ed5e0537daae5c1bd", + "type": "github" + }, + "original": { + "owner": "zlib-ng", + "ref": "4.0.10", + "repo": "minizip-ng", + "type": "github" + } + }, "nix-flatpak": { "locked": { "lastModified": 1767983141, @@ -977,6 +1236,23 @@ "type": "github" } }, + "re2-src": { + "flake": false, + "locked": { + "lastModified": 1762353507, + "narHash": "sha256-0J1HVk+eR7VN0ymucW9dNlT36j16XIfCzcs1EVyEIEU=", + "owner": "google", + "repo": "re2", + "rev": "927f5d53caf8111721e734cf24724686bb745f55", + "type": "github" + }, + "original": { + "owner": "google", + "ref": "2025-11-05", + "repo": "re2", + "type": "github" + } + }, "root": { "inputs": { "awww": "awww", @@ -1208,6 +1484,23 @@ "type": "github" } }, + "websocketpp-src": { + "flake": false, + "locked": { + "lastModified": 1587320717, + "narHash": "sha256-9fIwouthv2GcmBe/UPvV7Xn9P2o0Kmn2hCI4jCh0hPM=", + "owner": "zaphoyd", + "repo": "websocketpp", + "rev": "56123c87598f8b1dd471be83ca841ceae07f95ba", + "type": "github" + }, + "original": { + "owner": "zaphoyd", + "ref": "0.8.2", + "repo": "websocketpp", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ @@ -1275,16 +1568,17 @@ "zlib-src": { "flake": false, "locked": { - "lastModified": 1772945022, - "narHash": "sha256-Fv14NttjL/7xfi6eVwrSEBAyBvDjI00RLiRNqA5apcw=", - "owner": "0xc000022070", - "repo": "zen-browser-flake", - "rev": "3a6a5ca7fb48cc8fd8183386506a06579d1d79dc", + "lastModified": 1754565515, + "narHash": "sha256-c2RYqHi3hj/ViBzJcYWoNib27GAbq/B1SJUfvG7CPG4=", + "owner": "zlib-ng", + "repo": "zlib-ng", + "rev": "425439062b114a0f6cf625022c41d929c7e879f9", "type": "github" }, "original": { - "owner": "0xc000022070", - "repo": "zen-browser-flake", + "owner": "zlib-ng", + "ref": "2.2.5", + "repo": "zlib-ng", "type": "github" } } From 14f04b488de4ad5ddfde2469243f5899cfb65dfd Mon Sep 17 00:00:00 2001 From: _cry64 Date: Thu, 26 Mar 2026 09:53:37 +1000 Subject: [PATCH 28/31] fix nixcord config again... --- homes/modules/apps/nixcord.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homes/modules/apps/nixcord.nix b/homes/modules/apps/nixcord.nix index f614844..ff9ce6d 100644 --- a/homes/modules/apps/nixcord.nix +++ b/homes/modules/apps/nixcord.nix @@ -98,8 +98,8 @@ serverListIndicators.enable = true; musicControls = { enable = true; - showSpotifyControls.enable = true; - showSpotifyLyrics.enable = true; + showSpotifyControls = true; + showSpotifyLyrics = true; }; showHiddenChannels.enable = true; showHiddenThings.enable = true; From 8f5943b9f59db30f9419008d51c31eb4738df3cf Mon Sep 17 00:00:00 2001 From: _cry64 Date: Thu, 26 Mar 2026 11:28:49 +1000 Subject: [PATCH 29/31] mako force to DP-2 --- homes/modules/de/mako.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/homes/modules/de/mako.nix b/homes/modules/de/mako.nix index 762cd96..dca8a73 100644 --- a/homes/modules/de/mako.nix +++ b/homes/modules/de/mako.nix @@ -1,4 +1,8 @@ -{...}: let +{ + lib, + hostname, + ... +}: let dracula = rec { background = "#282A36"; border = cyan; @@ -15,6 +19,7 @@ in { enable = true; settings = { actions = true; + output = lib.optionalString (hostname == "myputer") "DP-2"; anchor = "top-right"; layer = "overlay"; sort = "-time"; @@ -36,7 +41,7 @@ in { ignore-timeout = false; "actionable=true" = { - anchor = "top-left"; + anchor = "top-right"; }; "urgency=low" = { From 990216c8a559378618a5c103025f91720104fae5 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Fri, 27 Mar 2026 11:38:13 +1000 Subject: [PATCH 30/31] fix discord being a shit ass program --- groups/cryde/programs.nix | 2 -- homes/modules/apps/nixcord.nix | 12 ++++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/groups/cryde/programs.nix b/groups/cryde/programs.nix index 3605866..4505a42 100644 --- a/groups/cryde/programs.nix +++ b/groups/cryde/programs.nix @@ -25,8 +25,6 @@ # Games upkgs.olympus # celeste - discord - discordo upkgs.ekphos prismlauncher # minecraft diff --git a/homes/modules/apps/nixcord.nix b/homes/modules/apps/nixcord.nix index ff9ce6d..2913e85 100644 --- a/homes/modules/apps/nixcord.nix +++ b/homes/modules/apps/nixcord.nix @@ -1,11 +1,19 @@ -{inputs, ...}: { +{ + inputs, + pkgs, + ... +}: { imports = [ inputs.nixcord.homeModules.nixcord ]; + home.packages = with pkgs; [ + discordo + ]; + programs.nixcord = { enable = true; - # equibop.enable = true; + equibop.enable = true; discord = { vencord.enable = false; From 71af6bd2c6bc281604d0fc5a9cc18548c36cd7cf Mon Sep 17 00:00:00 2001 From: _cry64 Date: Fri, 27 Mar 2026 11:38:25 +1000 Subject: [PATCH 31/31] style waybar --- homes/modules/de/waybar/default.nix | 26 ++++++++------------------ homes/modules/de/waybar/style.css | 1 + 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/homes/modules/de/waybar/default.nix b/homes/modules/de/waybar/default.nix index 33e7a42..96be196 100644 --- a/homes/modules/de/waybar/default.nix +++ b/homes/modules/de/waybar/default.nix @@ -1,4 +1,4 @@ -{upkgs, ...}: { +{...}: { programs.waybar = { enable = true; settings = { @@ -6,8 +6,8 @@ layer = "top"; position = "top"; height = 30; - # modules-left = ["hyprland/workspaces" "wlr/taskbar" "custom/media"]; - modules-left = ["hyprland/workspaces" "wlr/taskbar"]; + + modules-left = ["hyprland/workspaces"]; modules-center = ["clock"]; modules-right = ["cpu" "memory" "network" "pulseaudio" "privacy" "tray"]; @@ -21,20 +21,10 @@ ignore-hidden = true; on-click = "activate"; }; - "wlr/taskbar" = { - format = "{icon}"; - icon-size = 12; - }; - # "custom/media" = { - # exec = "auroramedia"; - # return-type = "json"; - # escape = true; - # restart-interval = 1; - # }; # center "clock" = { - format = "{:%Y %b %a %d %H:%M:%S}"; + format = "{:%b %a | %d %r}"; interval = 1; tooltip = false; }; @@ -49,10 +39,10 @@ interval = 1; }; "network" = { - format = "{bandwidthUpBytes}  {bandwidthDownBytes}  {ifname}"; - format-wifi = " {bandwidthUpBytes}  {bandwidthDownBytes} "; - format-ethernet = "󰈀 {bandwidthUpBytes}  {bandwidthDownBytes} "; - format-disconnected = "no internet ~ rawr! ~ x3"; # empty format hides module + format = "{bandwidthUpBits}  {bandwidthDownBits}  {ifname}"; + format-wifi = " {bandwidthUpBits}  {bandwidthDownBits}  {ifname}"; + format-ethernet = "󰈀 {bandwidthUpBits}  {bandwidthDownBits}  {ifname}"; + format-disconnected = "no internet ~ rawr! ~ ;w;"; # empty format hides module interval = 1; max-length = 32; }; diff --git a/homes/modules/de/waybar/style.css b/homes/modules/de/waybar/style.css index 294991c..09740c6 100644 --- a/homes/modules/de/waybar/style.css +++ b/homes/modules/de/waybar/style.css @@ -123,6 +123,7 @@ right-side modules #network { margin: 4px 0 4px 0; border-radius: 0px 32px 32px 0px; + min-width: 100px; /* surely there's a better way to fix the size? */ } #workspaces button {