This commit is contained in:
Simon Gardling 2025-02-04 14:27:15 -05:00
parent 6815ec12ce
commit 42cd641f30
Signed by: titaniumtown
GPG Key ID: 9AB28AC10ECE533D
20 changed files with 362 additions and 488 deletions

View File

@ -48,7 +48,9 @@
# kernel options # kernel options
boot = { boot = {
kernelPackages = pkgs.linuxPackages_cachyos-lto; #cachyos-lto currently broken
# kernelPackages = pkgs.linuxPackages_cachyos-lto;
kernelPackages = pkgs.linuxPackages_latest;
kernel.sysctl = { kernel.sysctl = {
# dmesg shushhhhh # dmesg shushhhhh

12
etcnixos/flake.lock generated
View File

@ -34,11 +34,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1738552004, "lastModified": 1738675414,
"narHash": "sha256-eYE+8F0ZrSIYvlVkgTjTBlnM1COqUdSs4GKyWnel6I4=", "narHash": "sha256-DwKipTgF2DEyNm6+Rj6FXg0DbNNNbt+h4fj9aTO4Q68=",
"owner": "chaotic-cx", "owner": "chaotic-cx",
"repo": "nyx", "repo": "nyx",
"rev": "894d1db77131a4a449d1993c7ba314ee15dd4e36", "rev": "59029b0faeee6d2d5284af29830d85fb2caa30ee",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -310,11 +310,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1738410390, "lastModified": 1738546358,
"narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=", "narHash": "sha256-nLivjIygCiqLp5QcL7l56Tca/elVqM9FG1hGd9ZSsrg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3a228057f5b619feb3186e986dbe76278d707b6e", "rev": "c6e957d81b96751a3d5967a0fd73694f303cc914",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -38,7 +38,6 @@
"mreow" "mreow"
"yarn" "yarn"
]; ];
in in
{ {
nixosConfigurations = nixpkgs.lib.foldl' ( nixosConfigurations = nixpkgs.lib.foldl' (

View File

@ -10,6 +10,7 @@
# https://github.com/quickemu-project/quickemu # https://github.com/quickemu-project/quickemu
(quickemu.overrideAttrs (old: { (quickemu.overrideAttrs (old: {
patches = [ patches = [
# patch to allow forcing a specific ISO file via an environment variable `FILE_NAME`
(pkgs.fetchpatch { (pkgs.fetchpatch {
url = "https://github.com/Titaniumtown/quickemu/commit/f96d52a6b6f4b3187171d8cab61a273475da3b6c.diff"; url = "https://github.com/Titaniumtown/quickemu/commit/f96d52a6b6f4b3187171d8cab61a273475da3b6c.diff";
sha256 = "vXVI4EeJGhOlx8ARTCvB98Ajalk0bVakL98WojqcI3c="; sha256 = "vXVI4EeJGhOlx8ARTCvB98Ajalk0bVakL98WojqcI3c=";
@ -42,11 +43,6 @@
url = "https://github.com/Scrut1ny/Hypervisor-Phantom/raw/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/QEMU/intel-qemu-9.2.0.patch"; url = "https://github.com/Scrut1ny/Hypervisor-Phantom/raw/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/QEMU/intel-qemu-9.2.0.patch";
sha256 = "kXY6R/0Tsotf0mGUIevDLlLWHEznnF1dt0K2ayX7XAg="; sha256 = "kXY6R/0Tsotf0mGUIevDLlLWHEznnF1dt0K2ayX7XAg=";
}) })
(pkgs.fetchpatch {
url = "https://github.com/Scrut1ny/Hypervisor-Phantom/raw/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/QEMU/qemu-9.2.0-libnfs6.patch";
sha256 = "DkkC7KiQLnL7jbBOtgyLKVvozEG388hdfl5seEqvu3o=";
})
]; ];
}) })
); );
@ -55,6 +51,7 @@
(pkgs.OVMF.overrideAttrs (old: { (pkgs.OVMF.overrideAttrs (old: {
secureBoot = true; secureBoot = true;
tpmSupport = true; tpmSupport = true;
# TODO! add patches from: https://github.com/Scrut1ny/Hypervisor-Phantom/tree/main/Hypervisor-Phantom/patches/EDK2
})).fd })).fd
]; ];
}; };
@ -64,14 +61,14 @@
users.users."${username}".extraGroups = [ "libvirtd" ]; users.users."${username}".extraGroups = [ "libvirtd" ];
boot.kernelPatches = [ # boot.kernelPatches = [
{ # {
name = "undetected-kvm"; # name = "undetected-kvm";
patch = pkgs.fetchurl { # patch = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/Scrut1ny/Hypervisor-Phantom/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/Kernel/linux-6.13-svm.patch"; # url = "https://raw.githubusercontent.com/Scrut1ny/Hypervisor-Phantom/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/Kernel/linux-6.13-svm.patch";
sha256 = "zz18xerutulLGzlHhnu26WCY8rVQXApyeoDtCjbejIk="; # sha256 = "zz18xerutulLGzlHhnu26WCY8rVQXApyeoDtCjbejIk=";
}; # };
} # }
]; # ];
} }

View File

@ -54,11 +54,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1738610386, "lastModified": 1738667255,
"narHash": "sha256-yb6a5efA1e8xze1vcdN2HBxqYr340EsxFMrDUHL3WZM=", "narHash": "sha256-sMMQb9NydZqQ/MvvtPp+Ny0W9P0Jk0moU7SrTBlO5Vo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "066ba0c5cfddbc9e0dddaec73b1561ad38aa8abe", "rev": "7abcf59a365430b36f84eaa452a466b11e469e33",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -79,11 +79,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable" "xwayland-satellite-unstable": "xwayland-satellite-unstable"
}, },
"locked": { "locked": {
"lastModified": 1738583235, "lastModified": 1738659223,
"narHash": "sha256-Tk5w3uqp045W/W0mDQT0swwy90ex0l3JWS2crimG8Wo=", "narHash": "sha256-fr3uPkLEDdmyD3CQwFBcRDl96VmkK0Lgr21BIxqk+gY=",
"owner": "sodiboo", "owner": "sodiboo",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "1511396846427b58f1d6ca5442a228ede7673c67", "rev": "297a7208e396ab6e9de88363c538baec8d75ccbb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -112,11 +112,11 @@
"niri-unstable": { "niri-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1738579367, "lastModified": 1738654964,
"narHash": "sha256-820QsR/C9+Gyn3v65LHNwwW7KxSA6u6MQtky3SUrZ3A=", "narHash": "sha256-30l3hOfTW1kJXcTRQsJ9f0/wE1aaTTACKb4ch6ZlLNU=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "553b1ba85256e2cb290e8a67f709a14e603606bc", "rev": "7d24ad23c2bc690b22b1f13ad4598dc8323d128b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -127,11 +127,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1738410390, "lastModified": 1738546358,
"narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=", "narHash": "sha256-nLivjIygCiqLp5QcL7l56Tca/elVqM9FG1hGd9ZSsrg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3a228057f5b619feb3186e986dbe76278d707b6e", "rev": "c6e957d81b96751a3d5967a0fd73694f303cc914",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -143,11 +143,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1738435198, "lastModified": 1738574474,
"narHash": "sha256-5+Hmo4nbqw8FrW85FlNm4IIrRnZ7bn0cmXlScNsNRLo=", "narHash": "sha256-rvyfF49e/k6vkrRTV4ILrWd92W+nmBDfRYZgctOyolQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "f6687779bf4c396250831aa5a32cbfeb85bb07a3", "rev": "fecfeb86328381268e29e998ddd3ebc70bbd7f7c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -242,11 +242,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1738639173, "lastModified": 1738682295,
"narHash": "sha256-fZnh8ypF2NJ99heI3C/MdtvRUDlIhuSCnhduKEJy86o=", "narHash": "sha256-Jx0SfHYrCFWztBYV6ySVBCcYlEA90NVNOUZLEm9DSu4=",
"owner": "0xc000022070", "owner": "0xc000022070",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "5bce21504d22f7d9d984b4f008cbc74b4ce76273", "rev": "c49f8dcb66ff8cb75fd8de4ca40ea953a97a140a",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -45,6 +45,7 @@
username = "primary"; username = "primary";
homeDirectory = "/home/${username}"; homeDirectory = "/home/${username}";
hostname = nixpkgs.lib.strings.removeSuffix "\n" (builtins.readFile /etc/hostname); hostname = nixpkgs.lib.strings.removeSuffix "\n" (builtins.readFile /etc/hostname);
pkgs = import nixpkgs { }; pkgs = import nixpkgs { };
# stolen from: https://stackoverflow.com/a/42398526 # stolen from: https://stackoverflow.com/a/42398526

View File

@ -2,15 +2,12 @@
pkgs, pkgs,
lib, lib,
inputs, inputs,
optimizeWithFlags,
... ...
}: }:
{ {
imports = [ imports = [
./no-gui.nix ./no-gui.nix
./progs/alacritty.nix ./progs/alacritty.nix
# gpt4all broken https://github.com/NixOS/nixpkgs/pull/346185
./progs/gpt4all/gpt4all.nix ./progs/gpt4all/gpt4all.nix
./progs/trezor.nix ./progs/trezor.nix
]; ];
@ -114,31 +111,31 @@
savvycan savvycan
# nerdfonts
# simple screen recording on wayland # simple screen recording on wayland
wl-screenrec wl-screenrec
gimp
] ]
++ (builtins.filter lib.isDerivation (builtins.attrValues nerd-fonts)); ++ (builtins.filter lib.isDerivation (builtins.attrValues nerd-fonts));
programs.zed-editor = { # programs.zed-editor = {
enable = true; # enable = true;
userSettings = { # userSettings = {
ui_font_size = 16; # ui_font_size = 16;
buffer_font_size = 16; # buffer_font_size = 16;
theme = { # theme = {
mode = "system"; # mode = "system";
light = "Gruvbox Dark Hard"; # light = "Gruvbox Dark Hard";
dark = "One Dark"; # dark = "One Dark";
}; # };
}; # };
extensions = [ # extensions = [
"nix" # "nix"
"sql" # "sql"
"CSV" # "CSV"
"assembly" # "assembly"
]; # ];
}; # };
# make chromium-based stuff use wayland # make chromium-based stuff use wayland
home.file.".config/chromium-flags.conf".text = "--ozone-platform-hint=auto"; home.file.".config/chromium-flags.conf".text = "--ozone-platform-hint=auto";

View File

@ -61,6 +61,7 @@
gping # `ping`... but with a graph!! gping # `ping`... but with a graph!!
tldr # `man` but more straight-forward and simpler tldr # `man` but more straight-forward and simpler
ripgrep # grep, but written in rust, respects .gitignore, and very very fast, command is `rg` ripgrep # grep, but written in rust, respects .gitignore, and very very fast, command is `rg`
lurk # better strace
# adds `sensors` command # adds `sensors` command
lm_sensors lm_sensors
@ -142,6 +143,9 @@
nixpkgs-review nixpkgs-review
nmap nmap
# terminal image viewer
timg
]; ];
# home.file.".cargo/config.toml".text = '' # home.file.".cargo/config.toml".text = ''

View File

@ -0,0 +1,108 @@
$background: #1e1e2e;
$pink: #f5c2e7;
$lavendar: #b4befe;
$red: #f38ba8;
$maroon: #eba0ac;
$peach: #fab387;
$yellow: #f9e2af;
$green: #a6e3a1;
$text: #cdd6f4;
$subtext: #a6adc8;
$surface: #585b70;
* {
color: $text;
font-family: CaskaydiaCove Nerd Font Mono;
font-weight: 600;
font-size: 10pt;
padding: 0 1px;
}
.red { color: $red; }
.maroon { color: $maroon; }
.peach { color: $peach; }
.yellow { color: $yellow; }
.green { color: $green; }
.lavendar { color: $lavendar; }
.symbol {
color: $lavendar;
font-size: 20px;
}
.button {
* {
all: unset;
margin: 0 5px;
font-size:14pt;
transition: color 0.2s ease-in-out;
}
&:hover * {
color: $pink;
}
}
.bluetooth * {
font-size: 10pt;
padding: 0 0.3em;
}
.padded > *:not(:last-child) {
padding: 0 10px;
border-right: 1px solid $surface;
}
.background {
border: 1px solid $pink;
background-color: $background;
border-radius: 12px;
opacity: 0.8;
}
scale trough {
margin: 0 10px;
border: none;
background-color: #FFF;
min-height: 3px;
min-width: 100px;
& slider {
box-shadow: none;
background-image: none;
border: none;
background-color: $pink;
min-width: 5pt;
min-height: 5pt;
margin: -5pt;
}
& highlight {
border: none;
background-color: $lavendar;
}
}
.workspaces * {
padding: 0 8px;
font-size: 14pt;
transition: color 0.2s ease-in-out;
&:hover * {
color: $pink;
}
.empty * {
color: $subtext;
}
.current * {
color: $green;
}
}
.clipboard {
color: $subtext;
}
.time {
padding-right: 10px;
}

View File

@ -0,0 +1,117 @@
(defwindow statusbar
:monitor 0
:stacking "fg"
:exclusive true
:geometry (geometry
:y "0.5%"
:width "100%"
:height "24px"
:anchor "top center")
(statusbar))
(defwidget statusbar []
(centerbox
(brightness-ctl)
; (window-title)
(time)
(box :space-evenly false :halign 'end' :class 'padded'
(clipboard)
(battery)
(bluetooth)
(wifi))
)
)
(defwidget cmd-slider [?symbol value command max colour]
(box :space-evenly false
(label :text symbol :class "symbol")
(scale
:min 0 :max max
:value value
:round-digits 0
:timeout "200ms"
:onchange command)
(label :text "${value}%" :class colour)))
(defwidget window-title []
(label
:text windowtitle
:tooltip windowtitle))
(defpoll windowtitle :interval "1s" `scripts/currentWindow.fish`)
(defpoll currentworkspace :interval "1s" `scripts/currentWorkspace.fish`)
(defwidget brightness-ctl []
(cmd-slider :symbol "󰃠" :value brightness
:command `brightnessctl set {}%`
:max 101 :colour "${
brightness >= 80 ? "green" :
brightness >= 50 ? "yellow" :
brightness >= 30 ? "peach" :
brightness >= 10 ? "maroon" : "red"
}"))
(defpoll brightness :interval "1s" `brightnessctl -m | awk -F, '{print $4+0}'`)
(defwidget clipboard []
(label :text clipboard-short :tooltip clipboard :class "clipboard"))
(defpoll clipboard :interval "5s" `scripts/clipboardInfo.zsh all`)
(defpoll clipboard-short :interval "5s" `scripts/clipboardInfo.zsh head`)
(defwidget wifi []
(eventbox
:class "button ${wifi-strength.colour}"
(label
:text {wifi-strength.icon}
:tooltip "Connected To: ${wifi-name}")))
(defpoll wifi-strength :interval "10s" `scripts/wifiInfo.zsh strength`)
(defpoll wifi-name :interval "1m" `scripts/wifiInfo.zsh name`)
(defwidget bluetooth []
(eventbox
:class "bluetooth button ${ bluetooth-name != "" ? "green" : "lavendar" }"
:onclick `blueman-manager &`
(label
:text "${bluetooth-name} 󰂯")))
(defpoll bluetooth-name :interval "10s" `bluetoothctl devices Connected | awk '{print $3}'`)
(defwidget time []
(box
:space-evenly false
:class "time"
:tooltip {time.long}
(label :class "yellow" :text {time.hour})
(label :text ":")
(label :class "yellow" :text {time.minute})))
(defpoll time :interval "1s" `scripts/dateInfo.fish`)
; TODO: make this a package or something, not using rust-script
(defpoll powerstats :interval "2s" `~/Documents/power_bat.rs`)
(defwidget battery []
(box :space-evenly false
:tooltip powerstats
(label
:text "${EWW_BATTERY.BAT1.status == "Charging" ? "󰂄" :
EWW_BATTERY.BAT1.capacity >= 90 ? "󰁹" :
EWW_BATTERY.BAT1.capacity >= 80 ? "󰂂" :
EWW_BATTERY.BAT1.capacity >= 70 ? "󰂁" :
EWW_BATTERY.BAT1.capacity >= 60 ? "󰂀" :
EWW_BATTERY.BAT1.capacity >= 50 ? "󰁿" :
EWW_BATTERY.BAT1.capacity >= 40 ? "󰁾" :
EWW_BATTERY.BAT1.capacity >= 30 ? "󰁽" :
EWW_BATTERY.BAT1.capacity >= 20 ? "󰁼" :
EWW_BATTERY.BAT1.capacity >= 10 ? "󰁻" : "󰁺"
} "
:class "${
EWW_BATTERY.BAT1.capacity >= 80 ? "green" :
EWW_BATTERY.BAT1.capacity >= 50 ? "yellow" :
EWW_BATTERY.BAT1.capacity >= 30 ? "peach" :
EWW_BATTERY.BAT1.capacity >= 10 ? "maroon" : "red"
}")
(label :text "${EWW_BATTERY.BAT1.capacity}%" :class "yellow")))

View File

@ -0,0 +1,14 @@
#!/usr/bin/env zsh
if wl-paste | iconv -f UTF8 > /dev/null; then
case $1 in
head)
wl-paste 2> /dev/null |
head -1 |
awk 'length > 20{$0 = substr($0, 1, 17) "..."} {printf "%s", $0}' |
sed 's/^[[:space:]]*//g'
echo "";;
all)
wl-paste 2> /dev/null
true;;
esac
fi

View File

@ -0,0 +1,2 @@
#!/usr/bin/env fish
niri msg focused-window | rg Title | sed -E "s/[[:space:]]+Title\: //g" | sed "s/\"//g"

View File

@ -0,0 +1,3 @@
#!/usr/bin/env fish
niri msg workspaces | rg "^ \*" | sed -E 's/[[:space:]]+\* //g'

View File

@ -0,0 +1,2 @@
#!/usr/bin/env fish
date +'{"long":"%a %b %e %H:%M:%S %Z %Y","hour":"%H","minute":"%M"}'

View File

@ -0,0 +1,23 @@
#!/usr/bin/env zsh
export CHARSET=ASCII
case $1 in
name)
nmcli -f IN-USE,SSID d w | grep '*' | sed 's/[\* ]//g' | cat
exit 0;;
strength)
str=$(nmcli -f ACTIVE,BARS d w | grep 'yes' | tr -d ' yesno')
case ${str: 0:-1} in
'****')
icon="󰤨"; colour="green";;
'***')
icon="󰤥"; colour="yellow";;
'**')
icon="󰤢"; colour="peach";;
'*')
icon="󰤟"; colour="maroon";;
*)
icon="󰤯"; colour="red";;
esac
echo "{\"icon\":\"$icon\",\"colour\":\"$colour\"}"
exit 0;;
esac

View File

@ -0,0 +1,13 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
zsh
bluez
brightnessctl
];
programs.eww = {
enable = true;
configDir = ./config;
};
}

View File

@ -1,121 +0,0 @@
{
pkgs,
config,
lib,
...
}:
{
# https://community.frame.work/t/speakers-sound-quality/1078/83
# Filter: ON HPQ Fc 100.0 Hz Gain 0.0 dB Q 1.0
# Filter: ON PK Fc 150.0 Hz Gain 4.02 dB Q 3.0
# Filter: ON PK Fc 600.0 Hz Gain -5.07 dB Q 4.000000000000008
# Filter: ON PK Fc 1200.0 Hz Gain -3.49 dB Q 4.17
# Filter: ON PK Fc 2000.0 Hz Gain 1.43 dB Q 4.0
# Filter: ON PK Fc 5300.0 Hz Gain 3.84 dB Q 2.64
# Filter: ON HSC Fc 6000.0 Hz Gain 4.02 dB Q 4.36
# Filter: ON PK Fc 7500.0 Hz Gain -2.09 dB Q 3.0
# Filter: ON PK Fc 8000.0 Hz Gain 2.01 dB Q 4.36
# Filter: ON PK Fc 900.0 Hz Gain -4.12 dB Q 5.909999999999967
home.file.".config/easyeffects/output/${config.services.easyeffects.preset}.json".text =
let
baseBand = {
mode = "RLC (BT)";
mute = false;
solo = false;
slope = "1x";
type = "Bell";
};
bandList = [
{
frequency = 100.0;
gain = 0.0;
q = 1.0;
slope = "x4";
type = "Hi-pass";
}
{
frequency = 150.0;
gain = 4.02;
q = 3.0;
}
{
frequency = 600.0;
gain = -5.07;
q = 4.000000000000008;
}
{
frequency = 1200.0;
gain = -3.49;
q = 4.17;
}
{
frequency = 2000.0;
gain = 1.43;
q = 4.0;
}
{
frequency = 5300.0;
gain = 3.84;
q = 2.64;
}
{
frequency = 6000.0;
gain = 4.02;
q = 4.36;
type = "Hi-shelf";
}
{
frequency = 7500.0;
gain = -2.09;
q = 3.0;
}
{
frequency = 8000.0;
gain = 2.01;
q = 4.36;
}
{
frequency = 900.0;
gain = -4.12;
q = 5.909999999999967;
}
];
bands = builtins.listToAttrs (
map (f: {
name = "band${toString f.snd}";
value = baseBand // f.fst;
}) (lib.lists.zipLists bandList (lib.range 0 (lib.length (bandList))))
);
in
builtins.toJSON {
output = {
blocklist = [ ];
equalizer = {
balance = 0.0;
bypass = false;
input-gain = 0.0;
left = bands;
right = bands;
mode = "IIR";
num-bands = 10;
output-gain = -1.5;
pitch-left = 0.0;
pitch-right = 0.0;
split-channels = false;
};
plugins_order = [
"equalizer"
];
};
};
services.easyeffects = {
enable = true;
package = pkgs.easyeffects;
preset = "framework";
};
}

View File

@ -1,7 +1,6 @@
{ {
config, config,
pkgs, pkgs,
homeDirectory,
... ...
}: }:
{ {
@ -34,14 +33,23 @@
focus-ring = { focus-ring = {
enable = true; enable = true;
active = { active = {
color = "pink"; color = "#bf7778";
}; };
}; };
}; };
spawn-at-startup = [ spawn-at-startup = [
# waybar (status bar) # waybar (status bar)
{ command = [ "${pkgs.waybar}/bin/waybar" ]; } # { command = [ "${pkgs.waybar}/bin/waybar" ]; }
{
command = [
"${config.programs.eww.package}/bin/eww"
"-c"
"${config.programs.eww.configDir}"
"open"
"statusbar"
];
}
# swaybg works on more than just sway (sets a wallpaper) # swaybg works on more than just sway (sets a wallpaper)
{ {
@ -52,10 +60,11 @@
]; ];
} }
# Xwayland on niri via xwayland-satellite
{ {
command = [ command = [
"${pkgs.xwayland-satellite-unstable}/bin/xwayland-satellite" "${pkgs.xwayland-satellite}/bin/xwayland-satellite"
(builtins.toString config.programs.niri.settings.environment.DISPLAY) config.programs.niri.settings.environment.DISPLAY
]; ];
} }
]; ];

View File

@ -1,294 +0,0 @@
{ pkgs, ... }:
{
programs.waybar = {
enable = true;
settings.mainBar = {
layer = "top";
position = "top";
# mod = "dock";
# exclusive = true;
# gtk-layer-shell = true;
margin-bottom = -1;
# passthrough = false;
height = 32;
modules-left = [
"niri/workspaces"
"niri/window"
];
modules-center = [ "clock" ];
modules-right = [
"cpu"
"memory"
"tray"
"bluetooth"
"pulseaudio"
"network"
"battery"
];
"niri/workspaces" = {
format = "{icon}";
format-icons = {
# Icons by state
active = "";
default = "";
};
};
"niri/window" = {
format = "{}";
};
cpu = {
interval = 5;
format = " {usage}%";
max-length = 10;
};
memory = {
interval = 10;
format = " {percentage}%";
max-length = 10;
tooltip = true;
tooltip-format = "RAM - {used:0.1f}GiB used";
};
tray = {
icon-size = 18;
spacing = 3;
};
clock = {
format = " {:%R\n %d.%m.%Y}";
tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "year";
mode-mon-col = 3;
weeks-pos = "right";
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
days = "<span color='#ecc6d9'><b>{}</b></span>";
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
};
};
actions = {
on-click-right = "mode";
on-click-forward = "tz_up";
on-click-backward = "tz_down";
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
};
network = {
format-wifi = " {icon}";
tooltip-format-wifi = "{essid} ({signalStrength}%)";
format-ethernet = " ";
format-disconnected = "󰌙 ";
format-icons = [
"󰤯 "
"󰤟 "
"󰤢 "
"󰤢 "
"󰤨 "
];
# tooltip = false;
};
battery = {
states = {
good = 95;
warning = 30;
critical = 20;
};
format = " {icon} {capacity}%";
format-charging = " {capacity}%";
format-plugged = " {capacity}%";
format-alt = "{time} {icon}";
format-icons = [
"󰂎"
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
};
# not actually pulseaudio-specific (I use pipewire!)
pulseaudio = {
max-volume = 100;
scroll-step = 10;
format = "{icon}";
tooltip-format = "{desc} ({volume}%)";
format-muted = "🔇";
format-icons = {
default = [
" "
" "
" "
];
};
on-click = "${pkgs.pwvucontrol}/bin/pwvucontrol";
};
bluetooth = {
format = " ({status}) ";
format-connected = " {device_alias}";
format-connected-battery = " {device_alias} {device_battery_percentage}%";
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected";
tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}";
tooltip-format-enumerate-connected = "{device_alias}\t{device_address}";
tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
on-click = "${pkgs.blueman}/bin/blueman-manager";
};
};
style = ''
/*base background color*/
/* color picked from a celeste background bc it looks pretty and matches my background */
@define-color bg_main rgba(39.6, 51.4, 76.1, 1.0);
@define-color bg_main_tooltip rgba(0, 0, 0, 0.7);
/*base background color of selections */
@define-color bg_hover rgba(200, 200, 200, 0.3);
/*base background color of active elements */
@define-color bg_active rgba(100, 100, 100, 0.5);
/*base border color*/
@define-color border_main rgba(255, 255, 255, 0.2);
/*text color for entries, views and content in general */
@define-color content_main white;
/*text color for entries that are unselected */
@define-color content_inactive rgba(255, 255, 255, 0.25);
* {
text-shadow: none;
box-shadow: none;
border: none;
border-radius: 0;
font-family: "Segoe UI", "Ubuntu";
font-weight: 600;
font-size: 12.7px;
}
window#waybar {
background: @bg_main;
border-top: 0;
color: @content_main;
}
tooltip {
background: @bg_main_tooltip;
border-radius: 5px;
border-width: 1px;
border-style: solid;
border-color: @border_main;
}
tooltip label {
color: @content_main;
}
#taskbar {
}
#taskbar button {
min-width: 130px;
border-bottom: 3px solid rgba(255, 255, 255, 0.3);
margin-left: 2px;
margin-right: 2px;
padding-left: 8px;
padding-right: 8px;
color: white;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#taskbar button.active {
border-bottom: 3px solid white;
background: @bg_active;
}
#taskbar button:hover {
border-bottom: 3px solid white;
background: @bg_hover;
color: @content_main;
}
#cpu, #memory {
padding:3px;
}
#window {
border-radius: 10px;
margin-left: 20px;
margin-right: 20px;
}
#tray {
margin-left: 5px;
margin-right: 5px;
}
#tray > .passive {
border-bottom: none;
}
#tray > .active {
border-bottom: 3px solid white;
}
#tray > .needs-attention {
border-bottom: 3px solid @warning_color;
}
#tray > widget {
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#tray > widget:hover {
background: @bg_hover;
}
#pulseaudio {
font-family: "JetBrains Mono Nerd Font";
padding-left: 3px;
padding-right: 3px;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#pulseaudio:hover {
background: @bg_hover;
}
#network {
padding-left: 3px;
padding-right: 3px;
}
#clock {
padding-right: 5px;
padding-left: 5px;
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
}
#clock:hover {
background: @bg_hover;
}
'';
};
}

View File

@ -1,7 +1,6 @@
{ {
config, config,
pkgs, pkgs,
lib,
homeDirectory, homeDirectory,
... ...
}: }:
@ -12,12 +11,11 @@
# niri wayland compositor # niri wayland compositor
./progs/niri.nix ./progs/niri.nix
# waybar for status bar # statusbar
./progs/waybar.nix ./progs/eww/eww.nix
# lockscreen
./progs/swaylock.nix ./progs/swaylock.nix
# ./progs/framework-13-easyeffects.nix
]; ];
home.packages = with pkgs; [ home.packages = with pkgs; [