Compare commits

...

5 commits

Author SHA1 Message Date
92995bac8b
progress flake.lock 2026-03-26 09:43:39 +10:00
fac35b5010
add waybar to hyprland 2026-03-26 09:42:29 +10:00
4467238597
TODO fix kanshi 2026-03-26 09:42:29 +10:00
463beff6e3
fix nixcord config layout changed 2026-03-26 09:42:28 +10:00
3272e94157
create elvish home-manager module 2026-03-26 09:42:28 +10:00
10 changed files with 357 additions and 17 deletions

View file

@ -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)

31
flake.lock generated
View file

@ -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,

View file

@ -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

View file

@ -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";

View file

@ -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) */

View file

@ -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;
};
}

View file

@ -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;
}

View file

@ -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;
};
};
}

View file

@ -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 [];

View file

@ -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 = [