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/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, 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/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"; 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/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; + }; + }; +} diff --git a/homes/modules/wm/hyprland/default.nix b/homes/modules/wm/hyprland/default.nix index e82b8ee..de9666c 100755 --- a/homes/modules/wm/hyprland/default.nix +++ b/homes/modules/wm/hyprland/default.nix @@ -41,15 +41,15 @@ # startup programs exec-once = [ + # 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" # "wl-clip-persist --clipboard regular" # "playerctld daemon" - - "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" ]; # monitor configuration @@ -61,8 +61,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 = [