feat: huge

This commit is contained in:
jacekpoz 2023-09-08 16:10:15 +02:00
parent b07966a102
commit cdafce17bc
No known key found for this signature in database
GPG key ID: 94E812A8B12AAE3C
86 changed files with 5091 additions and 2614 deletions

2323
flake.lock

File diff suppressed because it is too large Load diff

View file

@ -18,10 +18,7 @@
hyprland.url = "github:hyprwm/Hyprland";
hyprcontrib = {
url = "github:hyprwm/contrib";
inputs.hyprland.follows = "hyprland";
};
hyprcontrib.url = "github:hyprwm/contrib";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
@ -29,7 +26,7 @@
};
split-monitor-workspaces = {
url = "github:jacekpoz/split-monitor-workspaces";
url = "github:NotAShelf/split-monitor-workspaces";
inputs.hyprland.follows = "hyprland";
};
@ -74,5 +71,10 @@
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
helix.url = "github:helix-editor/helix";
neovim-flake = {
url = "github:NotAShelf/neovim-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
};
}

View file

@ -1,38 +0,0 @@
{
config,
inputs,
lib,
pkgs,
...
}: {
imports = [
];
config = {
programs = {
home-manager.enable = true;
};
home = {
username = "chmura";
packages = with pkgs; [
git
exa
ripgrep
btop
firejail
zellij
cargo
rustc
nodejs
unzip
cmake
gcc
trash-cli
];
stateVersion = lib.mkDefault "23.11";
};
};
}

View file

@ -1,21 +0,0 @@
{
inputs,
pkgs,
self,
...
}: let
mkNixPak = inputs.nixpak.lib.nixpak {
inherit (pkgs) lib;
inherit pkgs;
};
in {
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
extraSpecialArgs = {inherit inputs self mkNixPak;}; # let home-manager access inputs and self
users = {
jacek = import ./jacek;
#chmura = import ./chmura;
};
};
}

View file

@ -1,22 +0,0 @@
{
config,
pkgs,
...
}:
{
config = {
programs.git = {
enable = true;
userName = "jacekpoz";
userEmail = "jacekpoz@cock.li";
includes = [
{
contents = { core.editor = "${pkgs.neovim}/bin/nvim"; };
}
{
contents = { init.defaultBranch = "master"; };
}
];
};
};
}

View file

@ -1,24 +0,0 @@
{
config,
...
}: {
config = {
programs.starship = {
enable = true;
enableZshIntegration = true;
settings = {
add_newline = false;
command_timeout = 1000;
line_break = {
disabled = true;
};
directory = {
truncation_length = 3;
truncate_to_repo = false;
truncation_symbol = "/";
read_only = "";
};
};
};
};
}

View file

@ -1,11 +0,0 @@
{
config,
...
}: {
config = {
programs.zoxide = {
enable = true;
enableZshIntegration = true;
};
};
}

View file

@ -1,54 +0,0 @@
{
config,
pkgs,
...
}: {
config = {
programs.zsh = {
enable = true;
shellAliases = {
cl = "clear";
cp = "cp -ivr";
mv = "mv -iv";
rm = "trash -v";
l = "ls -A --color=auto";
e = "exa -lha --git";
untar = "tar -xvf";
untargz = "tar -xzf";
mnt = "udisksctl mount -b";
umnt = "udisksctl unmount -b";
v = "nvim";
kys = "shutdown now";
gpl = "curl https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE";
agpl = "curl https://www.gnu.org/licenses/agpl-3.0.txt -o LICENSE";
wget = "wget --hsts-file=\"${config.xdg.dataHome}/wget-hsts\"";
g = "git";
};
initExtra = ''
bindkey '^H' backward-kill-word
'';
history = {
path = "${config.xdg.dataHome}/zsh/zsh_history";
size = 999999999;
extended = true;
ignoreSpace = true;
};
enableAutosuggestions = true;
enableCompletion = true;
autocd = false;
dotDir = ".config/zsh";
plugins = [
{
name = "fast-syntax-highlighting";
file = "fast-syntax-highlighting.plugin.zsh";
src = pkgs.fetchFromGitHub {
owner = "zdharma-continuum";
repo = "fast-syntax-highlighting";
rev = "cf318e06a9b7c9f2219d78f41b46fa6e06011fd9";
sha256 = "sha256-RVX9ZSzjBW3LpFs2W86lKI6vtcvDWP6EPxzeTcRZua4=";
};
}
];
};
};
}

View file

@ -1,184 +0,0 @@
{
config,
inputs,
lib,
pkgs,
...
}: {
imports = [
inputs.hyprland.homeManagerModules.default
inputs.anyrun.homeManagerModules.default
./gui
./tui
./cli
./services
./other
];
config = {
programs = {
home-manager.enable = true;
direnv = {
enable = true;
nix-direnv.enable = true;
};
};
home = {
username = "jacek";
homeDirectory = "/home/jacek";
packages = let
hyprcontrib = inputs.hyprcontrib.packages.${pkgs.system};
shadower = inputs.shadower.packages.${pkgs.system};
nix-gaming = inputs.nix-gaming.packages.${pkgs.system};
fenix = inputs.fenix.packages.${pkgs.system};
nixpkgs-wayland = inputs.nixpkgs-wayland.packages.${pkgs.system};
in with pkgs; [
git
librewolf-wayland
keepassxc
exa
ripgrep
libnotify
rofi-wayland
rofi-calc
webcord-vencord
session-desktop
signal-desktop-beta
schildichat-desktop
obs-studio
heroic
steam
ungoogled-chromium
amdgpu_top
tor-browser-bundle-bin
mullvad-browser
thunderbird
telegram-desktop
livecaptions
gimp
helvum
ddccontrol
ddccontrol-db
bluez
blueman
easyeffects
fcitx5
fcitx5-gtk
fcitx5-skk
fcitx5-configtool
firejail
lbry
#libreoffice-fresh
minetest
airshipper
onionshare-gui
prismlauncher
qbittorrent
retroarchFull
ventoy-full
zathura
zellij
nodejs
unzip
cmake
gcc
nixpkgs-wayland.sway-unwrapped
caprine-bin
libsForQt5.kdenlive
telegram-desktop
waypipe
trash-cli
bibata-cursors
nixpkgs-wayland.swww
opentabletdriver
networkmanagerapplet
nixpkgs-wayland.wl-clipboard
nixpkgs-wayland.wlsunset
xdg-utils
hyprpicker
hyprcontrib.hyprprop
hyprcontrib.grimblast
shadower.shadower
pamixer
brightnessctl
dig
bottles
lutris
nodePackages_latest.pnpm
nodePackages_latest.prisma
prisma-engines
openssl
pkg-config
docker
docker-compose
postgresql
nix-gaming.osu-stable
nix-gaming.osu-lazer-bin
swappy
nixpkgs-wayland.imv
pcmanfm
anytype
xdg-ninja
auto-cpufreq
gnupg
pinentry-qt
age
rage
fd
udisks
ffmpeg
xdg-desktop-portal-gtk
ghc
ghcid
cabal-install
yt-dlp
filelight
(fenix.complete.withComponents [
"cargo"
"clippy"
"rust-src"
"rustc"
"rustfmt"
])
wayland
showmethekey
polkit
libsForQt5.polkit-kde-agent
asciinema
asciinema-agg
du-dust
mullvad-vpn
appimage-run
file
virt-manager
weechat
flowblade
hyfetch
git-annex
gamemode
croc
linuxKernel.packages.linux_xanmod_latest.cpupower
uutils-coreutils
anki
alsa-utils
speechd
arcanPackages.espeak
ezquake
imagemagick
weston
pavucontrol
psmisc
mesa-demos
nnn
aseprite-unfree
jq
nixpkgs-wayland.eww-wayland
];
stateVersion = lib.mkDefault "23.11";
};
};
}

View file

@ -1,54 +0,0 @@
* {
all: unset; //Unsets everything so you can style everything from scratch
}
//Global Styles
.bar {
background-color: #3a3a3a;
color: #b0b4bc;
padding: 10px;
}
// Styles on classes (see eww.yuck for more information)
.sidestuff slider {
all: unset;
color: #ffd5cd;
}
.metric scale trough highlight {
all: unset;
background-color: #D35D6E;
color: #000000;
border-radius: 10px;
}
.metric scale trough {
all: unset;
background-color: #4e4e4e;
border-radius: 50px;
min-height: 3px;
min-width: 50px;
margin-left: 10px;
margin-right: 20px;
}
.metric scale trough highlight {
all: unset;
background-color: #D35D6E;
color: #000000;
border-radius: 10px;
}
.metric scale trough {
all: unset;
background-color: #4e4e4e;
border-radius: 50px;
min-height: 3px;
min-width: 50px;
margin-left: 10px;
margin-right: 20px;
}
.label-ram {
font-size: large;
}
.workspaces button:hover {
color: #D35D6E;
}

View file

@ -1,75 +0,0 @@
(defwidget bar []
(centerbox :orientation "h"
(workspaces)
(music)
(sidestuff)))
(defwidget sidestuff []
(box :class "sidestuff" :orientation "h" :space-evenly false :halign "end"
(metric :label "🔊"
:value volume
:onchange "amixer -D pulse sset Master {}%")
(metric :label ""
:value {EWW_RAM.used_mem_perc}
:onchange "")
(metric :label "💾"
:value {round((1 - (EWW_DISK["/"].free / EWW_DISK["/"].total)) * 100, 0)}
:onchange "")
time))
(defwidget workspaces []
(box :class "workspaces"
:orientation "h"
:space-evenly true
:halign "start"
:spacing 10
(button :onclick "wmctrl -s 0" 1)
(button :onclick "wmctrl -s 1" 2)
(button :onclick "wmctrl -s 2" 3)
(button :onclick "wmctrl -s 3" 4)
(button :onclick "wmctrl -s 4" 5)
(button :onclick "wmctrl -s 5" 6)
(button :onclick "wmctrl -s 6" 7)
(button :onclick "wmctrl -s 7" 8)
(button :onclick "wmctrl -s 8" 9)))
(defwidget music []
(box :class "music"
:orientation "h"
:space-evenly false
:halign "center"
{music != "" ? "🎵${music}" : ""}))
(defwidget metric [label value onchange]
(box :orientation "h"
:class "metric"
:space-evenly false
(box :class "label" label)
(scale :min 0
:max 101
:active {onchange != ""}
:value value
:onchange onchange)))
(deflisten music :initial ""
"playerctl --follow metadata --format '{{ artist }} - {{ title }}' || true")
(defpoll volume :interval "1s"
"scripts/getvol")
(defpoll time :interval "10s"
"date '+%H:%M %b %d, %Y'")
(defwindow bar
:monitor 0
:windowtype "dock"
:geometry (geometry :x "0%"
:y "0%"
:width "90%"
:height "10px"
:anchor "top center")
:reserve (struts :side "top" :distance "4%")
(bar))

View file

@ -1,333 +0,0 @@
{
config,
lib,
inputs,
pkgs,
mkNixPak,
...
}: {
config = let
buildFirefoxXpiAddon = lib.makeOverridable ({
stdenv ? pkgs.stdenv,
fetchurl ? pkgs.fetchurl,
pname,
version,
addonId,
url,
sha256,
...
}:
stdenv.mkDerivation {
name = "${pname}-${version}";
src = fetchurl {inherit url sha256;};
preferLocalBuild = true;
allowSubstitutes = true;
buildCommand = ''
dst="$out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9397384}"
mkdir -p "$dst"
install -v -m644 "$src" "$dst/${addonId}.xpi"
'';
});
extra-addons = {
yomichan = buildFirefoxXpiAddon {
pname = "yomichan";
version = "20.5.22.1";
addonId = "{a9226ee9-7998-47bd-b72e-a1b56df7f77b}";
url = "https://addons.mozilla.org/firefox/downloads/file/3585060/yomichan-20.5.22.1.xpi";
sha256 = "sha256-/icvPD/nCJYS31owfYMD25QzFjsxAqapy/UAehhxsy8=";
};
};
in {
programs.firefox = {
enable = true;
package = pkgs.firefox-devedition;
profiles = {
"schizo.dev-edition-default" = {
id = 0;
name = "dev-edition-default";
isDefault = true;
search = {
default = "SearXNG Sapti";
engines = {
"SearXNG Sapti" = {
urls = [{ template = "https://search.sapti.me/search?q={searchTerms}"; }];
iconUpdateURL = "https://search.sapti.me/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = [ "@sx" ];
};
"NixOS Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "channel"; value = "unstable"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@np" ];
};
"NixOS Options" = {
urls = [{
template = "https://search.nixos.org/options";
params = [
{ name = "channel"; value = "unstable"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@no" ];
};
"NixOS Wiki" = {
urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
iconUpdateURL = "https://nixos.wiki/favicon.png";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = [ "@nw" ];
};
"Home Manager Option Search" = {
urls = [{ template = "https://mipmip.github.io/home-manager-option-search/?query={searchTerms}"; }];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@hm" ];
};
};
force = true;
};
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
ublock-origin
sponsorblock
tridactyl
violentmonkey
darkreader
keepassxc-browser
redirector
auto-tab-discard
extra-addons.yomichan
];
settings = {
"browser.aboutConfig.showWarning" = false;
"browser.startup.page" = 0;
"browser.startup.homepage" = "about:home";
"browser.newtabpage.enabled" = true;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.default.sites" = "";
"geo.provider.network.url" = "";
"geo.provider.network.logging.enabled" = false;
"geo.provider.ms-windows-location" = false;
"geo.provider.use_corelocation" = false;
"geo.provider.use_gpsd" = false;
"geo.provider.use_geoclue" = false;
"intl.accept_langauges" = "en-US";
"javascript.use_us_english_locale" = true;
"extensions.getAddons.showPane" = false;
"extensions.htmlaboutaddons.recommendations.enabled" = false;
"browser.discovery.enabled" = false;
# this shit doesn't work thanks to firefox's
# fucking retarded ass decisions
# but I'm gonna keep it anyway
"extensions.unifiedExtensions.enabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.server" = "data:,";
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"toolkit.telemetry.updatePing.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"toolkit.telemetry.coverage.opt-out" = true;
"toolkit.coverage.endpoint.base" = "";
"browser.ping-centre.telemetry" = false;
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
"browser.newtabpage.activity-stream.telemetry" = false;
"app.shield.optoutstudies.enabled" = false;
"app.normandy.enabled" = false;
"app.normandy.api_url" = "";
"breakpad.reportURL" = "";
"browser.tabs.crashReporting.sendReport" = false;
"browser.crashReports.unsubmittedCheck.enabled" = false;
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
"captivedetect.canonicalURL" = "";
"network.captive-portal-service.enabled" = false;
"network.connectivity-service.enabled" = false;
"browser.safebrowsing.malware.enabled" = false;
"browser.safebrowsing.phishing.enabled" = false;
"browser.safebrowsing.downloads.enabled" = false;
"browser.safebrowsing.downloads.remote.enabled" = false;
"browser.safebrowsing.downloads.remote.url" = "";
"browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false;
"browser.safebrowsing.downloads.remote.block_uncommon" = false;
"browser.safebrowsing.allowOverride" = false;
"network.prefetch-next" = false;
"network.dns.disablePrefetch" = true;
"network.dns.disablePrefetchFromHTTPS" = true;
"network.predictor.enabled" = false;
"network.predictor.enable-prefetch" = false;
"network.http.speculative.parallel-limit" = 0;
"browser.places.speculativeConnect.enabled" = false;
"browser.send_pings" = false;
"network.dns.disableIPv6" = true;
"network.proxy.socks_remote_dns" = true;
"network.file.disable_unc_paths" = true;
"network.gio.supported-protocols" = "";
"network.proxy.failover_direct" = false;
"network.proxy.allow_bypass" = false;
# "network.trr.mode" = 5; TODO read about this
"browser.fixup.alternate.enabled" = false;
# TODO do I want this
"browser.search.suggest.enabled" = true;
"browser.urlbar.suggest.searches" = true;
"browser.urlbar.speculativeConnect.enabled" = false;
"browser.urlbar.dnsResolveSingleWordsAfterSearch" = 0;
"browser.urlbar.suggest.quicksuggest.nonsponsored" = false;
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
"browser.formfill.enable" = false;
"layout.css.visited_links_enabled" = false;
"signon.autofillForms" = false;
"signon.formlessCapture.enabled" = false;
# TODO find some info about this
"network.auth.subresource-http-auth-allow" = 0;
"network.http.windows-sso.enabled" = false;
# TODO read about these until...
"browser.cache.disk.enable" = true;
"browser.privatebrowsing.forceMediaMemoryCache" = true;
"media.memory_cache_max_size" = 65536;
"browser.sessionstore.privacy_level" = 2;
# here
"toolkit.winRegisterApplicationRestart" = false;
# TODO favicons might be cool though
"browser.shell.shortcutFavicons" = false;
"security.ssl.require_safe_negotiation" = true;
"security.tls.enable_0rtt_data" = true;
# TODO read and think about it
"security.OCSP.enabled" = 1;
"security.OCSP.require" = true;
"security.family_safety.mode" = 0;
"security.cert_pinning.enforcement_level" = 2;
# TODO read about the next 2
"security.remote_settings.crlite_filters.enabled" = true;
"security.pki.crlite_mode" = 2;
# TODO if images break it's probably this
"security.mixed_content.block_display_content" = true;
"dom.security.https_only_mode" = true;
"dom.security.https_only_mode_pbm" = true;
"dom.security.https_only_mode.upgrade_local" = true;
"dom.security.https_only_mode_send_http_background_request" = false;
"security.ssl.treat_unsafe_negotiation_as_broken" = true;
"browser.xul.error_pages.expert_bad_cert" = true;
"network.http.referer.XOriginPolicy" = 2;
"network.http.referer.XOriginTrimmingPolicy" = 2;
"privacy.userContext.enabled" = true;
"privacy.userContext.ui.enabled" = true;
"privacy.userContext.newTabContainerOnLeftClick.enabled" = true;
# TODO read about these 2
"media.peerconnection.ice.proxy_only_if_behind_proxy" = true;
"media.peerconnection.ice.default_address_only" = true;
"media.peerconnection.ice.no_host" = true;
# TODO remove this if some codecs or shit don't work
"media.gmp-provider.enabled" = false;
# I think this is for netflix and shit
"media.gmp-widevinecdm.enabled" = false;
# disables DRM in general
"media.eme.enabled" = false;
# and the ui for it just in case
"browser.eme.ui.enabled" = false;
"dom.disable_window_move_resize" = true;
"accessibility.force_disabled" = 1;
"browser.helperApps.deleteTempFileOnExit" = true;
# TODO what the fuck is uitour
"browser.uitour.enabled" = false;
"browser.uitour.url" = "";
"devtools.debugger.remote-enabled" = false;
"middlemouse.contentLoadURL" = false;
"permissions.default.shortcuts" = 2;
"permissions.manager.defaultsUrl" = "";
# TODO what is this
"webchannel.allowObject.urlWhitelist" = "";
"network.IDN_show_punycode" = true;
"pdfjs.disabled" = false;
"pdfjs.enableScripting" = false;
"network.protocol-handler.external.ms-windows-store" = false;
"permissions.delegation.enabled" = false;
"browser.download.useDownloadDir" = true;
"browser.download.alwaysOpenPanel" = false;
"browser.download.manager.addToRecentDocs" = true;
"browser.download.always_ask_before_handling_new_types" = true;
# if extensions break go here
"extensions.enabledScopes" = 5;
"extensions.autoDisableScopes" = 15;
# TODO rethink this
"extensions.postDownloadThirdPartyPrompt" = true;
"extensions.webextensions.restrictedDomains" = "";
"browser.contentblocking.category" = "strict";
"privacy.antitracking.enableWebcompat" = false;
"privacy.partition.serviceWorkers" = true;
"privacy.partition.always_partition_third_party_non_cookie_storage" = true;
"privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage" = false;
"privacy.sanitize.sanitizeOnShutdown" = true;
"privacy.clearOnShutdown.cache" = true;
"privacy.clearOnShutdown.downloads" = true;
"privacy.clearOnShutdown.formdata" = true;
"privacy.clearOnShutdown.history" = true;
"privacy.clearOnShutdown.sessions" = true;
"privacy.clearOnShutdown.siteSettings" = true;
# if true I can't recover from crashes according to arkenfox
"privacy.clearOnShutdown.openWindows" = false;
"privacy.clearOnShutdown.cookies" = true;
"privacy.clearOnShutdown.offlineApps" = true;
"privacy.clearsitedata.cache.enabled" = true;
"privacy.cpd.cache" = true;
"privacy.cpd.formdata" = true;
"privacy.cpd.history" = true;
"privacy.cpd.sessions" = true;
"privacy.cpd.offlineApps" = true;
"privacy.cpd.cookies" = true;
"privacy.cpd.downloads" = true;
"privacy.cpd.openWindows" = false;
"privacy.cpd.passwords" = true;
"privacy.cpd.siteSettings" = true;
"privacy.sanitize.timeSpan" = 0;
"privacy.resistFingerprint" = false;
# we won't be installing extensions through mozilla's website I don't think
"privacy.resistFingerprinting.block_mozAddonManager" = true;
"privacy.resistFingerprinting.letterboxing" = true;
"layout.css.font-visibility.resistFingerprinting" = 1;
"browser.display.use_system_colors" = false;
"widget.non-native-theme.enabled" = true;
"browser.link.open_newwindow" = 3;
"browser.link.open_newwindow.restriction" = 0;
"webgl.disabled" = false;
"signon.rememberSignons" = false;
"permissions.memory_only" = true;
"security.nocertdb" = true;
"browser.chrome.site_icons" = true;
"browser.session.max_tabs_undo" = 0;
"browser.sessionstore.resume_from_crash" = true;
"browser.urlbar.autoFill" = false;
"places.history.enabled" = false;
"extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false;
"extensions.formautofill.heuristics.enabled" = false;
"dom.popup_allowed_events" = "click dblclick mousedown pointerdown";
"javascript.options.ion" = false;
"javascript.options.baselinejit" = false;
"javascript.options.jit_trustedprincipals" = true;
"javascript.options.wasm" = false;
"extensions.blocklist.enabled" = true;
"network.http.referer.spoofSource" = false;
"security.dialog_enable_delay" = 1000;
"privacy.firstparty.isolate" = false;
"extensions.webcompat.enable_shims" = true;
"security.tls.version.enable-deprecated" = false;
"extensions.webcompat-reporter.enabled" = false;
"gfx.webrender.all" = true;
"media.ffmpeg.vaapi.enabled" = true;
};
};
};
};
};
}

View file

@ -1,110 +0,0 @@
{
config,
inputs,
pkgs,
...
}:
{
config = {
programs.foot = {
enable = true;
package = inputs.nixpkgs-wayland.packages.${pkgs.system}.foot;
server.enable = true;
settings = {
main = {
term = "xterm-256color";
app-id = "foot";
title = "foot";
locked-title = "no";
font = "JetBrains Mono Nerd Font:size=16";
line-height = 20;
letter-spacing = 0;
horizontal-letter-offset = 0;
vertical-letter-offset = -0.75;
box-drawings-uses-font-glyphs = "no";
dpi-aware = "no";
initial-window-size-chars = "104x36";
initial-window-mode = "windowed";
pad = "5x5 center";
resize-delay-ms = 100;
notify = "notify-send -a \${app-id} -i \${app-id} \${title} \${body}";
bold-text-in-bright = "no";
word-delimiters = ",`|:\"'()[]{}<>";
selection-target = "primary";
};
bell = {
urgent = "yes";
notify = "yes";
command = "notify-send bell";
command-focused = "no";
};
scrollback = {
lines = 100000;
multiplier = 10.0;
indicator-position = "relative";
indicator-format = "line";
};
url = {
launch = "xdg-open \${url}";
label-letters = "sadfjklewcmpgh";
osc8-underline = "always";
protocols = "http, https, ftp, ftps, file, gemini, gopher, irc, ircs";
uri-characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+=\"'()[]";
};
cursor = {
style = "block";
blink = "no";
};
mouse = {
hide-when-typing = "yes";
alternate-scroll-mode = "yes";
};
colors = {
alpha = 0.85;
foreground = "dee1e6";
background = "101419";
# Normal/regular colors (color palette 0-7)
regular0 = "c5c8cd"; # black
regular1 = "bd3c42"; # red
regular2 = "69b373"; # green
regular3 = "ceac67"; # yellow
regular4 = "4d82c8"; # blue
regular5 = "a367cb"; # magenta
regular6 = "519bc6"; # cyan
regular7 = "101419"; # white
# Bright colors (color palette 8-15)
bright0 = "989ba0"; # bright black
bright1 = "c24147"; # bright red
bright2 = "6eb878"; # bright green
bright3 = "d3b16c"; # bright yellow
bright4 = "5287cd"; # bright blue
bright5 = "a86cd0"; # bright magenta
bright6 = "56a0cb"; # bright cyan
bright7 = "1f2328"; # bright white
};
csd = {
preferred = "server";
};
key-bindings = {
show-urls-launch = "Control+Shift+u";
unicode-input = "Control+Shift+i";
};
mouse-bindings = {
selection-override-modifiers = "Shift";
primary-paste = "BTN_MIDDLE";
select-begin = "BTN_LEFT";
select-begin-block = "Control+BTN_LEFT";
select-extend = "BTN_RIGHT";
select-extend-character-wise = "Control+BTN_RIGHT";
select-word = "BTN_LEFT-2";
select-word-whitespace = "Control+BTN_LEFT-2";
select-row = "BTN_LEFT-3";
};
};
};
};
}

View file

@ -1,42 +0,0 @@
{
config,
inputs,
pkgs,
...
}: {
config = {
gtk = {
enable = true;
theme = {
name = "Catppuccin-Mocha-Standard-Green-dark";
package = pkgs.catppuccin-gtk.override {
size = "standard";
accents = [ "green" ];
variant = "mocha";
tweaks = [ "normal" ];
};
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.catppuccin-papirus-folders.override {
accent = "green";
flavor = "mocha";
};
};
};
home = {
sessionVariables = {
GTK_THEME = "${config.gtk.theme.name}";
GTK_USE_PORTAL = "1";
};
pointerCursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
gtk.enable = true;
x11.enable = true;
};
};
};
}

View file

@ -1,300 +0,0 @@
{
config,
inputs,
pkgs,
...
}: {
config = {
wayland.windowManager.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
plugins = [
inputs.hyprland-plugins.packages.${pkgs.system}.csgo-vulkan-fix
inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces
];
extraConfig = ''
#laptop
monitor=eDP-1,2560@1440@165,0x0,1
#second monitor
monitor=HDMI-A-1,2560x1440@144,2560x0,1
workspace = 1, monitor:eDP-1, default:true
workspace = 2, monitor:eDP-1
workspace = 3, monitor:eDP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:eDP-1
workspace = 6, monitor:eDP-1
workspace = 7, monitor:eDP-1
workspace = 8, monitor:eDP-1
workspace = 9, monitor:eDP-1
workspace = 10, monitor:eDP-1
workspace = 11, monitor:HDMI-A-1, default:true
workspace = 12, monitor:HDMI-A-1
workspace = 13, monitor:HDMI-A-1
workspace = 14, monitor:HDMI-A-1
workspace = 15, monitor:HDMI-A-1
workspace = 16, monitor:HDMI-A-1
workspace = 17, monitor:HDMI-A-1
workspace = 18, monitor:HDMI-A-1
workspace = 19, monitor:HDMI-A-1
workspace = 20, monitor:HDMI-A-1
workspace = special:btop, allpseudo
workspace = special:amdgpu_top, allpseudo
workspace = special:helvum, allpseudo
workspace = special:nixos, allpseudo, gapsin:0, gapsout:0
input {
kb_layout=pl
kb_variant=
kb_model=
kb_options=
kb_rules=
follow_mouse=1
touchpad {
disable_while_typing=true
}
repeat_rate = 50
repeat_delay = 250
}
general {
sensitivity=1.0 # for mouse cursor
gaps_in=5
gaps_out=5
#gaps_in=0
#gaps_out=0
border_size=2
#border_size=1
apply_sens_to_raw=0 # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse)
#no_border_on_floating=true
}
decoration {
#rounding=0
rounding=10
blur {
enabled=1
size=3
passes=2
}
drop_shadow=1
shadow_range=15
shadow_render_power=2
shadow_ignore_window=1
shadow_offset= 2 4
shadow_scale=1
}
gestures {
workspace_swipe=1
workspace_swipe_distance=200
workspace_swipe_invert=1
workspace_swipe_min_speed_to_force=20
workspace_swipe_cancel_ratio=0.5
}
bezier=dupa, 0.1, 0.9, 0.1, 1.05
animations {
enabled=1
animation=windows,1,4,dupa,popin
animation=windowsOut,1,7,dupa,slide
animation=border,1,15,default
animation=fade,1,10,default
animation=workspaces,1,5,dupa,slidevert
}
dwindle {
no_gaps_when_only=1
}
misc {
enable_swallow=0
swallow_regex=foot
focus_on_activate=true
vrr=1
animate_manual_resizes=false
animate_mouse_windowdragging=false
}
windowrulev2 = float, title:^(.*)(Tor Browser)(.*)$
windowrulev2 = float, class:^(mullvadbrowser)$
windowrulev2 = float, class:^(foot)$
windowrulev2 = float, class:^(mpv)$
windowrulev2 = float, class:^(imv)$
windowrulev2 = float, class:^(Vieb)$
windowrulev2 = float, title:^(Picture-in-Picture)$
windowrulev2 = float, title:^(.*)(Choose User Profile)(.*)$
windowrulev2 = float, class:^(code), title: ^(Open*)
windowrulev2 = size 70% 70%, class:^(code), title: ^(Open*)
windowrulev2 = center, class: ^(code), title: ^(Open*)
windowrulev2 = float, class:^(org.keepassxc.KeePassXC)$
windowrulev2 = size 960 670, title:^(ROG Control Center)$
bind = SUPER, RETURN, exec, foot
bind = SUPER, W, exec, firefox
bind = SUPERSHIFT, W, exec, librewolf
bind = SUPER, Q, killactive
bind = SUPER, F, fullscreen, 0
bind = SUPER, M, fullscreen, 1
bind = SUPER, D, exec, pkill anyrun || anyrun
bind = SUPER, SPACE, togglefloating,
bind = SUPERSHIFT, C, centerwindow
bind = SUPER, R, bringactivetotop
binde = SUPER, H, movefocus, l
binde = SUPER, J, movefocus, d
binde = SUPER, K, movefocus, u
binde = SUPER, L, movefocus, r
binde = SUPERCTRL, J, focusmonitor, l
binde = SUPERCTRL, K, focusmonitor, r
bind = SUPER, 1, split-workspace, 1
bind = SUPER, 2, split-workspace, 2
bind = SUPER, 3, split-workspace, 3
bind = SUPER, 4, split-workspace, 4
bind = SUPER, 5, split-workspace, 5
bind = SUPER, 6, split-workspace, 6
bind = SUPER, 7, split-workspace, 7
bind = SUPER, 8, split-workspace, 8
bind = SUPER, 9, split-workspace, 9
bind = SUPER, 0, split-workspace, 10
bind = SUPERSHIFT, 1, split-movetoworkspacesilent, 1
bind = SUPERSHIFT, 2, split-movetoworkspacesilent, 2
bind = SUPERSHIFT, 3, split-movetoworkspacesilent, 3
bind = SUPERSHIFT, 4, split-movetoworkspacesilent, 4
bind = SUPERSHIFT, 5, split-movetoworkspacesilent, 5
bind = SUPERSHIFT, 6, split-movetoworkspacesilent, 6
bind = SUPERSHIFT, 7, split-movetoworkspacesilent, 7
bind = SUPERSHIFT, 8, split-movetoworkspacesilent, 8
bind = SUPERSHIFT, 9, split-movetoworkspacesilent, 9
bind = SUPERSHIFT, 0, split-movetoworkspacesilent, 10
bindle = , XF86MonBrightnessUp, exec, ~/Scripts/notif_brightness.sh set +5%
bindle = , XF86MonBrightnessDown, exec, ~/Scripts/notif_brightness.sh set 5%-
bindl = , XF86AudioMedia, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioStop, exec, playerctl stop
bindl = , XF86AudioPrev, exec, playerctl previous
bindl = , XF86AudioNext, exec, playerctl next
bindle = , XF86AudioRaiseVolume, exec, ~/Scripts/notif_volume.sh -ui 5
bindle = , XF86AudioLowerVolume, exec, ~/Scripts/notif_volume.sh -ud 5
bindl = , XF86AudioMute, exec, ~/Scripts/notif_volume.sh --toggle-mute
# https://github.com/n3oney/shadower
bind = SUPER, S, exec, grimblast save area - | shadower | tee "$(xdg-user-dir PICTURES)/Screenshots/$(date +'screenshot-%Y%m%d%H%M%S.png')" | wl-copy && notify-send "Screenshot taken"
bind = SUPERSHIFT, S, exec, grimblast save area - | swappy -f - -o - | shadower | tee "$(xdg-user-dir PICTURES)/Screenshots/$(date +'screenshot-%Y%m%d%H%M%S.png')" | wl-copy && notify-send "Screenshot taken"
bind = SUPERCONTROL, S, exec, grimblast save area - | tee "$(xdg-user-dir PICTURES)/Screenshots/$(date +'screenshot-%Y%m%d%H%M%S.png')" | wl-copy && notify-send "Screenshot taken"
bind = SUPERSHIFT, R, exec, hyprctl reload
bind = SUPER, P, pin
bind = , XF86Launch1, exec, rog-control-center
binde = , XF86Launch3, exec, asusctl led-mode -n
bind = , XF86Launch4, exec, asusctl profile -n; pkill -SIGRTMIN+8 waybar
binde = , XF86KbdBrightnessUp, exec, asusctl -n
binde = , XF86KbdBrightnessDown, exec, asusctl -p
bind = , XF86TouchpadToggle, exec,
bind = SUPER, T, exec, grim -g "$(slurp)" -t ppm - | tesseract -l pol - - | wl-copy && notify-send "Copied text: " "\"$(wl-paste)\""
bind = SUPER, SEMICOLON, exec, ~/.config/rofi/powermenu/type-2/powermenu.sh
bind = SUPER, X, exec, keepassxc
bind = SUPERSHIFT, M, exec, ~/Scripts/man.sh
bind = SUPER, E, exec, wl-paste | spd-say -e -w -i 10
bind = SUPERCONTROL, E, exec, wl-paste | spd-say -e -w -i 10 -l pl
bind = SUPERSHIFT, E, exec, spd-say -C
bind = SUPER, G, togglegroup
binde = SUPERSHIFT, G, changegroupactive, f
bind = SUPERCONTROL, R, exec, replay-sorcery save
bind = SUPERCONTROL, X, exec, ${pkgs.xdg-desktop-portal-hyprland}/libexec/xdg-desktop-portal-hyprland -r
bind = SUPERSHIFT, X, exec, hyprctl kill
bind = SUPER, B, togglespecialworkspace, btop
bind = SUPER, A, togglespecialworkspace, amdgpu_top
bind = SUPER, V, togglespecialworkspace, helvum
bind = SUPER, N, togglespecialworkspace, nixos
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:273, resizewindow
binds {
pass_mouse_when_bound=0
}
exec=systemctl restart --user waybar.service
exec=pkill btop
exec=pkill amdgpu_top
exec=pkill helvum
exec=[workspace special:btop silent;tile] foot btop
exec=[workspace special:amdgpu_top silent] amdgpu_top --gui -i 0
exec=[workspace special:amdgpu_top silent] amdgpu_top --gui -i 1
exec=[workspace special:helvum silent] helvum
exec-once=[workspace special:nixos silent;tile] cd niksos; foot
exec-once=foot --server
exec-once=hyprctl setcursor Bibata-Modern-Classic 24
exec-once=wl-paste --watch cliphist store
exec-once=hyprctl dispatch exec "swww init" && sleep 0.5
exec=swww img -o eDP-1 ~/catppuccin-wall0.png
exec=swww img -o HDMI-A-1 ~/catppuccin-wall1.png
exec-once=rog-control-center
exec-once=wlsunset -S 06:00 -s 20:00
exec-once=sleep 1 && keepassxc
exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
#exec-once=foot -e nvim ~/todo.md
exec-once=nm-applet --indicator
exec-once=blueman-applet
exec-once=$HOME/.local/share/hyprload/hyprload.sh
#exec-once=fcitx5 -d
exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=$XDG_CURRENT_DESKTOP
# no black border on grimblast screenshots
layerrule = noanim, ^(selection)$
layerrule = blur, ^(waybar)$
# temporary fix to swaylock screenshoting rofi before locking
layerrule = noanim, ^(rofi)$
layerrule = blur, ^(anyrun)$
general {
col.active_border=0xFFF5C2E7
col.inactive_border=0xFF45475A
col.group_border_active=0xFFA6E3A1
col.group_border=0xFF45475A
}
decoration {
col.shadow=0xAF1E1E2E
}
plugin {
csgo-vulkan-fix {
res_w = 2560
res_h = 1440
}
split-monitor-workspaces {
count = 10
}
}
'';
};
};
}

View file

@ -1,27 +0,0 @@
{
config,
pkgs,
...
}: {
config = {
programs.mpv = {
enable = true;
config = {
vo = "gpu-next";
hwdec = "auto";
gpu-api = "vulkan";
vulkan-device = "AMD Radeon RX 6800M (RADV NAVI22)";
volume = 50;
osc = "no";
osd-bar = "no";
border = "no";
};
scripts = with pkgs.mpvScripts; [
mpris
thumbfast
sponsorblock
uosc
];
};
};
}

View file

@ -1,57 +0,0 @@
{
config,
inputs,
pkgs,
...
}: {
# thanks raf :3 https://github.com/NotAShelf/nyx/blob/main/homes/notashelf/themes/qt.nix
config = {
qt = {
enable = true;
#platformTheme = "qtct";
style = {
name = "Catppuccin-Mocha-Dark";
package = pkgs.catppuccin-kde.override {
flavour = "mocha";
accents = [ "green" ];
};
};
};
home = {
packages = with pkgs; [
qt5.qttools
qt6Packages.qtstyleplugin-kvantum
libsForQt5.qtstyleplugin-kvantum
libsForQt5.qt5ct
breeze-icons
];
sessionVariables = {
QT_STYLE_OVERRIDE = "kvantum";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
QT_QPA_PLATFORM = "wayland;xcb";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
DISABLE_QT_COMPAT = "0";
};
};
xdg.configFile = {
"Kvantum/catppuccin/catppuccin.kvconfig".source = builtins.fetchurl {
url = "https://raw.githubusercontent.com/catppuccin/Kvantum/main/src/Catppuccin-Mocha-Green/Catppuccin-Mocha-Green.kvconfig";
sha256 = "16ry4k09nf5w1gyawwz2ny14zn6infqk40l35lqlg30lhgbdmr5f";
};
"Kvantum/catppuccin/catppuccin.svg".source = builtins.fetchurl {
url = "https://raw.githubusercontent.com/catppuccin/Kvantum/main/src/Catppuccin-Mocha-Green/Catppuccin-Mocha-Green.svg";
sha256 = "1djh625qag34rjsp7y67nzbi9nbmiwgq63ydfizsh65n3fyfakf1";
};
"Kvantum/kvantum.kvconfig".text = ''
[General]
theme=catppuccin
[Applications]
catppuccin=qt5ct, org.qbittorrent.qBittorrent, hyprland-share-picker
'';
};
};
}

View file

@ -1,14 +0,0 @@
{
config,
pkgs,
...
}: {
config = {
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
cycle = true;
terminal = "foot";
};
};
}

View file

@ -1,58 +0,0 @@
{
config,
inputs,
pkgs,
...
}: {
config = {
programs.swaylock = {
enable = true;
package = inputs.nixpkgs-wayland.packages.${pkgs.system}.swaylock-effects;
settings = {
daemonize = true;
show-failed-attempts = true;
clock = true;
screenshots = true;
effect-blur = "9x5";
effect-vignette = "0.5:0.5";
indicator = true;
indicator-radius = 200;
indicator-thickness = 20;
color = "1e1e2e";
bs-hl-color = "f5e0dc";
caps-lock-bs-hl-color = "f5e0dc";
caps-lock-key-hl-color = "a6e3a1";
inside-color = "00000000";
inside-clear-color = "00000000";
inside-caps-lock-color = "00000000";
inside-ver-color = "00000000";
inside-wrong-color = "00000000";
key-hl-color = "a6e3a1";
layout-bg-color = "00000000";
layout-border-color = "00000000";
layout-text-color = "cdd6f4";
line-color = "00000000";
line-clear-color = "00000000";
line-caps-lock-color = "00000000";
line-ver-color = "00000000";
line-wrong-color = "00000000";
ring-color = "b4befe";
ring-clear-color = "f5e0dc";
ring-caps-lock-color = "fab387";
ring-ver-color = "89b4fa";
ring-wrong-color = "eba0ac";
separator-color = "00000000";
text-color = "cdd6f4";
text-clear-color = "f5e0dc";
text-caps-lock-color = "fab387";
text-ver-color = "89b4fa";
text-wrong-color = "eba0ac";
grace = 2;
grace-no-mouse = true;
grace-no-touch = true;
fade-in = 0.2;
ignore-empty-password = true;
};
};
};
}

View file

@ -1,527 +0,0 @@
{
config,
inputs,
pkgs,
...
}: {
config = {
programs.waybar = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.waybar-hyprland;
systemd.enable = true;
settings.mainBar = {
gtk-layer-shell = true;
layer = "top";
modules-left = [ "custom/launcher" "custom/xwayland" "tray" "wlr/workspaces" ];
modules-center = [ "hyprland/window" ];
modules-right = [ "custom/dnd" "backlight" "cava" "pulseaudio" "clock" "battery" "custom/power" ];
pulseaudio = {
tooltip = false;
scroll-step = "1";
format = " {icon} {volume}%";
format-muted = " 󰸈 {volume}%";
format-icons = {
default = ["󰕿" "󰖀" "󰕾"];
};
on-click = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
};
"wlr/workspaces" = {
sort-by-name = true;
sort-by-coordinates = false;
on-click = "activate";
on-scroll = "~/Scripts/cycle_workspace.sh 1";
active-only = false;
format = "{icon}";
format-icons = {
"1" = "1";
"2" = "2";
"3" = "3";
"4" = "4";
"5" = "5";
"6" = "6";
"7" = "7";
"8" = "8";
"9" = "9";
"10" = "10";
"11" = "1";
"12" = "2";
"13" = "3";
"14" = "4";
"15" = "5";
"16" = "6";
"17" = "7";
"18" = "8";
"19" = "9";
"20" = "10";
};
persistent_workspaces = {
"1" = [ "eDP-1" ];
"2" = [ "eDP-1" ];
"3" = [ "eDP-1" ];
"4" = [ "eDP-1" ];
"5" = [ "eDP-1" ];
"6" = [ "eDP-1" ];
"7" = [ "eDP-1" ];
"8" = [ "eDP-1" ];
"9" = [ "eDP-1" ];
"10" = [ "eDP-1" ];
"11" = [ "HDMI-A-1" ];
"12" = [ "HDMI-A-1" ];
"13" = [ "HDMI-A-1" ];
"14" = [ "HDMI-A-1" ];
"15" = [ "HDMI-A-1" ];
"16" = [ "HDMI-A-1" ];
"17" = [ "HDMI-A-1" ];
"18" = [ "HDMI-A-1" ];
"19" = [ "HDMI-A-1" ];
"20" = [ "HDMI-A-1" ];
};
};
network = {
tooltip = false;
format = "{ipaddr} {icon}";
format-alt = "{icon}";
format-icons = {
wifi = [ "󰖩" ];
ethernet = [ "󰈀" ];
disconnected = [ "󰖪" ];
};
on-click-right = "foot -e nmtui";
};
backlight = {
interval = 1;
align = 0;
rotate = 0;
format = "{icon} {percent}%";
format-icons = [ "󰃚" "󰃛" "󰃜" "󰃝" "󰃞" "󰃟" "󰃠" ];
on-scroll-up = "~/Scripts/bright.sh s +1%";
on-scroll-down = "~/Scripts/bright.sh s 1%-";
smooth-scrolling-threshold = 1;
};
battery = {
interval = 1;
states = {
good = 75;
warning = 30;
critical = 20;
};
format = "{icon}{capacity}%";
format-charging = "󰚥{icon}{capacity}% 󱐋{power}";
format-discharging = "{icon}{capacity}% 󱐋{power}";
format-icons = ["󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
format-charging-icons = ["󰢟" "󰢜" "󰂆" "󰂇" "󰂈" "󰢝" "󰂉" "󰢞" "󰂊" "󰂋" "󰂅"];
};
tray = {
icon-size = 18;
spacing = 10;
};
clock = {
interval = 1;
format = "{:󱑁 %H:%M:%S 󰃰 %d/%m/%Y}";
format-alt = "{:󱑁 %H:%M:%S}";
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='#EBDBB2'><b>{}</b></span>";
days = "<span color='#B16286'><b>{}</b></span>";
weeks = "<span color='#458588'><b>T{:%W}</b></span>";
weekdays = "<span color='#D79921'><b>{}</b></span>";
today = "<span color='#CC241D'><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";
};
};
};
cpu = {
interval = 1;
format = "󰻠 {}%";
max-length = 10;
};
memory = {
interval = 1;
format = "󰍛 {}%";
max-length = 10;
};
"custom/media" = {
interval = 30;
format = "{icon} {}";
return-type = "json";
max-length = 20;
format-icons = {
spotify = " ";
default = " ";
};
escape = true;
exec = "$HOME/.config/system_scripts/mediaplayer.py 2> /dev/null";
on-click = "playerctl play-pause";
};
"custom/launcher" = {
format = "󰣇 ";
on-click = "~/.config/rofi/launchers/type-2/launcher.sh";
on-click-right = "pkill rofi";
};
"custom/power" = {
format = "󰐥";
on-click = "~/.config/rofi/powermenu/type-2/powermenu.sh";
};
"hyprland/window" = {
format = "{}";
separate-outputs = true;
};
gamemode = {
format = "{glyph}";
format-alt = "{glyph} {count}";
glyph = "󰊴";
hide-not-running = true;
use-icon = true;
icon-name = "input-gaming-symbolic";
icon-spacing = 4;
icon-size = 20;
tooltip = true;
tooltip-format = "Games running: {count}";
};
"custom/dnd" = {
exec = "~/Scripts/waybar-dunst.sh";
on-click = "~/Scripts/dnd.sh";
restart-interval = 1;
tooltip = false;
};
cava = {
framerate = 165;
autosens = 1;
sensitivity = 100;
bars = 14;
lower_cutoff_freq = 50;
higher_cutoff_freq = 10000;
method = "pipewire";
source = "auto";
stereo = true;
reverse = false;
bar_delimiter = 0;
monstercat = false;
waves = false;
noise_reduction = 0.77;
input_delay = 2;
format-icons = ["" "" "" "" "" "" "" "" ];
actions = {
on-click-right = "mode";
};
};
"custom/power_profile" = {
exec = "asusctl profile -p | sed s:'Active profile is'::";
interval = 30;
format = "󰈐{}";
format-alt-click = "click-right";
format-alt = "󰈐";
on-click = "asusctl profile -n; pkill -SIGRTMIN+8 waybar";
signal = 8;
};
"custom/xwayland" = {
exec = "hyprctl clients | rg -e 'xwayland: [1]' | wc -l";
interval = 1;
format = "X {}";
};
};
style = ''
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;
@define-color text #cdd6f4;
@define-color subtext0 #a6adc8;
@define-color subtext1 #bac2de;
@define-color surface0 #313244;
@define-color surface1 #45475a;
@define-color surface2 #585b70;
@define-color overlay0 #6c7086;
@define-color overlay1 #7f849c;
@define-color overlay2 #9399b2;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color sapphire #74c7ec;
@define-color sky #89dceb;
@define-color teal #94e2d5;
@define-color green #a6e3a1;
@define-color yellow #f9e2af;
@define-color peach #fab387;
@define-color maroon #eba0ac;
@define-color red #f38ba8;
@define-color mauve #cba6f7;
@define-color pink #f5c2e7;
@define-color flamingo #f2cdcd;
@define-color rosewater #f5e0dc;
* {
border-radius: 10px;
font-family: Material Design Icons;
font-size: 16px;
color: @text;
}
window#waybar {
background-color: alpha(@base, 0.5);
border-radius: 0px;
}
window#waybar.hidden {
opacity: 0.2;
}
#window {
margin-top: 4px;
margin-bottom: 4px;
padding-left: 5px;
padding-right: 5px;
background: @mantle;
color: @teal;
font-family: JetBrains Mono;
}
#workspaces {
padding-left: 5px;
}
#workspaces button {
border-radius: 15px;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px;
margin-top: 6px;
margin-right: 3px;
margin-bottom: 6px;
margin-left: 3px;
background-color: @mantle;
min-width: 24px;
}
#workspaces button.active {
padding-top: 0px;
padding-bottom: 0px;
padding-right: 0px;
padding-left: 0px;
margin-top: 6px;
margin-right: 3px;
margin-bottom: 6px;
margin-left: 3px;
background-color: @blue;
min-width: 24px;
}
#workspaces button:hover {
background: alpha(@mantle, 0.7);
transition-property: background, min-width;
transition-duration: 0.5s;
transition-timing-function: ease;
}
#workspaces button.focused {
background-color: @yellow;
}
#workspaces button.urgent {
background-color: @red;
}
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
.modules-right > widget:first-child > #workspaces {
margin-right: 0;
}
#pulseaudio {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 0px;
padding-left: 0px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @peach;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
#cava {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
margin-right: 0px;
padding-left: 10px;
padding-right: 0px;
transition: none;
background: @mantle;
color: @peach;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
#battery {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @teal;
}
@keyframes blink {
to {
background-color: @red;
}
}
#battery.charging, #battery.plugged {
background-color: @mantle;
}
#battery.critical:not(.charging) {
background-color: @mantle;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#backlight {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @yellow;
}
#clock {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition-property: min-width;
transition-duration: 0.5s;
background: @mantle;
color: @pink;
}
#custom-power_profile {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @rosewater;
}
#tray {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
}
#custom-launcher {
font-size: 16px;
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 5px;
transition: none;
background: @mantle;
color: @blue;
}
#custom-power {
font-size: 20px;
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
margin-right: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @red;
}
#custom-wallpaper {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
}
#custom-updates {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
}
#custom-media {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
}
#custom-dnd {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @flamingo;
}
#custom-xwayland {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @green;
}
'';
};
};
}

View file

@ -1,58 +0,0 @@
{
config,
pkgs,
...
}: let
primary_browser = "firefox.desktop";
secondary_browser = "librewolf.desktop";
mail_client = "thunderbird.desktop";
file_manager = "pcmanfm.desktop";
media_player = "mpv.desktop";
image_viewer = "imv.desktop";
text_editor = "nvim.desktop";
in {
config = {
xdg.mimeApps = {
enable = true;
defaultApplications = {
"text/html" = [ primary_browser secondary_browser ];
"x-scheme-handler/http" = [ primary_browser secondary_browser ];
"x-scheme-handler/https" = [ primary_browser secondary_browser ];
"x-scheme-handler/about" = [ primary_browser secondary_browser ];
"x-scheme-handler/unknown" = [ primary_browser secondary_browser ];
"x-scheme-handler/mailto" = [ mail_client ];
"message/rfc822" = [ mail_client ];
"x-scheme-handler/mid" = [ mail_client ];
"inode/directory" = [ file_manager ];
"x-scheme-handler/heroic" = [ "heroic.desktop" ];
"audio/mp3" = [ media_player ];
"audio/ogg" = [ media_player ];
"audio/mpeg" = [ media_player ];
"audio/aac" = [ media_player ];
"audio/opus" = [ media_player ];
"audio/wav" = [ media_player ];
"audio/webm" = [ media_player ];
"audio/3gpp" = [ media_player ];
"audio/3gpp2" = [ media_player ];
"video/mp4" = [ media_player ];
"video/x-msvideo" = [ media_player ];
"video/mpeg" = [ media_player ];
"video/ogg" = [ media_player ];
"video/mp2t" = [ media_player ];
"video/webm" = [ media_player ];
"video/3gpp" = [ media_player ];
"video/3gpp2" = [ media_player ];
"image/png" = [ image_viewer ];
"image/jpeg" = [ image_viewer ];
"image/gif" = [ image_viewer ];
"image/avif" = [ image_viewer ];
"image/bmp" = [ image_viewer ];
"image/vnd.microsoft.icon" = [ image_viewer ];
"image/svg+xml" = [ image_viewer ];
"image/tiff" = [ image_viewer ];
"image/webp" = [ image_viewer ];
"text/plain" = [ text_editor ];
};
};
};
}

View file

@ -1,88 +0,0 @@
{
config,
inputs,
pkgs,
...
}: {
config = {
services.dunst = {
enable = true;
package = inputs.nixpkgs-wayland.packages.${pkgs.system}.dunst;
settings = {
global = {
monitor = 1;
follow = "none";
width = 300;
height = 300;
origin = "top-center";
offset = "0x15";
scale = 0;
notification_limit = 3;
idle_threshold = 120;
progress_bar = true;
progress_bar_height = 10;
progress_bar_frame_width = 0;
progress_bar_min_width = 150;
progress_bar_max_width = 300;
indicate_hidden = "yes";
transparency = 10;
separator_height = 2;
padding = 10;
frame_width = 3;
frame_color = "#89B4FA";
separator_color = "frame";
highlight = "#89DCEB";
sort = "yes";
font = "JetBrains Mono 12";
line_height = 0;
markup = "full";
format = "<b>%s</b>\n%b";
alignment = "right";
vertical_alignment = "center";
show_age_threshold = 60;
ellipsize = "middle";
ignore_newline = "no";
stack_duplicates = true;
hide_duplicate_count = false;
show_indicators = "yes";
icon_position = "left";
min_icon_size = 0;
max_icon_size = 32;
sticky_history = "yes";
history_length = 20;
dmenu = "${pkgs.rofi-wayland}/bin/rofi";
browser = "${pkgs.xdg-utils}/bin/xdg-open";
always_run_script = true;
title = "Dunst";
class = "dunst";
corner_radius = 10;
ignore_dbusclose = false;
force_xwayland = false;
force_xinerama = false;
mouse_left_click = "do_action, close_current";
mouse_middle_click = "context";
mouse_right_click = "close_all";
};
experimental = {
per_monitor_dpi = false;
};
urgency_low = {
background = "#1E1E2E";
foreground = "#CDD6F4";
timeout = 5;
};
urgency_normal = {
background = "#1E1E2E";
foreground = "#CDD6F4";
timeout = 6;
};
urgency_critical = {
background = "#1E1E2E";
foreground = "#CDD6F4";
frame_color = "#FAB387";
timeout = 0;
};
};
};
};
}

View file

@ -1,22 +0,0 @@
{
config,
...
}: {
config = {
programs.btop = {
enable = true;
settings = {
theme_background = false;
vim_keys = true;
update_ms = 100;
cpu_single_graph = true;
clock_format = "%X";
use_fstab = true;
io_mode = true;
net_sync = true;
net_iface = "enp4s0";
log_level = "WARNING";
};
};
};
}

View file

@ -1,52 +0,0 @@
{
config,
lib,
inputs,
pkgs,
...
}: {
programs.helix = {
enable = true;
package = inputs.helix.packages.${pkgs.system}.helix;
settings = {
theme = "catppuccin_mocha";
editor = {
scrolloff = 7;
mouse = false;
middle-click-paste = false;
line-number = "relative";
auto-completion = false;
auto-format = false;
completion-replace = true;
true-color = true;
undercurl = true;
rulers = [ 80 ];
bufferline = "multiple";
color-modes = true;
lsp = {
display-messages = true;
display-inlay-hints = true;
};
cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
auto-pairs = false;
whitespace.render.newline = "all";
indent-guides.render = true;
};
};
languages = {
language-server = {
nil.command = lib.getExe pkgs.nil;
};
language = [
{
name = "rust";
auto-format = false;
}
];
};
};
}

View file

@ -1,116 +0,0 @@
{
config,
inputs,
pkgs,
...
}: {
xdg.configFile."nvim" = { source = ./lua; recursive = true; };
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
withPython3 = true;
#plugins = {
# plenary-nvim.enable = true;
# fugitive.enable = true;
# airline = {
# enable = true;
# powerline = true;
# theme = "gruvbox";
# };
# treesitter = {
# enable = true;
# grammars = [
# "bash"
# "c"
# "cmake"
# "comment"
# "cpp"
# "css"
# "git_config"
# "git_rebase"
# "gitattributes"
# "gitcommit"
# "gitignore"
# "html"
# "ini"
# "java"
# "json"
# "kotlin"
# "lua"
# "markdown"
# "markdown_inline"
# "meson"
# "ninja"
# "nix"
# "python"
# "regex"
# "ron"
# "rust"
# "sql"
# "toml"
# "typescript"
# "vim"
# "vimdoc"
# "wgsl"
# "yaml"
# ];
# };
# coq-nvim = {
# enable = true;
# autoStart = "shut-up";
# installArtifacts = true;
# recommendedKeymaps = true;
# };
# gitsigns = {
# enable = true;
# signcolumn = true;
# numhl = true;
# wordDiff = true;
# currentLineBlame = true;
# };
# lsp = {
# enable = true;
# coqSupport = true;
# servers = {
# bashls.enable = true;
# clangd.enable = true;
# cssls.enable = true;
# html.enable = true;
# kotlin-language-server.enable = true;
# ltex.enable = true;
# nil.enable = true;
# rust-analyzer.enable = true;
# };
# };
# telescope.enable = true;
# comment.enable = true;
#};
#mappings = {
#
#};
#options = {
# number = true;
# relativenumber = true;
# autoread = true;
# so = 7;
# cmdheight = 1;
# ignorecase = true;
# smartcase = true;
# showmatch = true;
# timeoutlen = 500;
# encoding = "utf8";
# smarttab = true;
# shiftwidth = 4;
# tabstop = 4;
# expandtab = true;
# linebreak = true;
# smartindent = true;
# updatetime = 300;
# hidden = true;
# background = "dark";
# mousemoveevent = true;
#};
};
}

View file

@ -1,8 +1,4 @@
{
config,
pkgs,
...
}: {
_: {
services.ankisyncd = {
enable = true;
};

View file

@ -1,5 +1,4 @@
{
config,
pkgs,
inputs,
...

View file

@ -1,7 +1,7 @@
{
config,
pkgs,
inputs,
hostname,
username,
...
}: {
# fuck broadcom
@ -21,10 +21,12 @@
];
trusted-users = [
"root"
"chmura"
username
];
};
networking.hostName = hostname;
programs.zsh.enable = true;
programs.direnv = {
@ -32,7 +34,7 @@
nix-direnv.enable = true;
};
users.users.chmura = {
users.users.${username} = {
isNormalUser = true;
extraGroups = [ "wheel" "docker" ];
shell = pkgs.zsh;

25
hosts/chmura/freshrss.nix Normal file
View file

@ -0,0 +1,25 @@
_: {
services.freshrss = {
enable = true;
baseUrl = "https://f.jacekpoz.pl:4834";
database = {
port = 7425;
tableprefix = "freshrss";
type = "pgsql";
};
defaultUser = "jacek";
language = "pl";
passwordFile = "/run/secrets/freshrss";
virtualHost = null;
};
services.caddy = {
enable = true;
virtualHosts."f.jacekpoz.pl".extraConfig = ''
reverse_proxy * localhost:4834
'';
};
networking.firewall.allowedTCPPorts = [ 4834 ];
networking.firewall.allowedUDPPorts = [ 4834 ];
}

View file

@ -1,9 +1,4 @@
{
config,
pkgs,
inputs,
...
}: {
_: {
services.grafana = {
enable = true;
settings.server = {

View file

@ -0,0 +1,115 @@
{
lib,
inputs,
pkgs,
self,
username,
...
}: let
mkNixPak = inputs.nixpak.lib.nixpak {
inherit (pkgs) lib;
inherit pkgs;
};
in {
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
extraSpecialArgs = {inherit inputs self mkNixPak;};
users.${username} = {
imports = [
inputs.neovim-flake.homeManagerModules.default
../../modules/cli/starship.nix
../../modules/cli/zsh.nix
../../modules/tui/btop.nix
../../modules/tui/neovim
];
programs = {
home-manager.enable = true;
direnv = {
enable = true;
nix-direnv.enable = true;
};
};
home = {
inherit username;
homeDirectory = "/home/${username}";
packages = let
fenix = inputs.fenix.packages.${pkgs.system};
in with pkgs; [
git
eza
ripgrep
firejail
zellij
nodejs
unzip
cmake
gcc
trash-cli
dig
nodePackages_latest.pnpm
nodePackages_latest.prisma
prisma-engines
openssl
pkg-config
docker
docker-compose
postgresql
xdg-ninja
auto-cpufreq
gnupg
age
rage
fd
udisks
ffmpeg
ghc
ghcid
cabal-install
yt-dlp
(fenix.complete.withComponents [
"cargo"
"clippy"
"rust-src"
"rustc"
"rustfmt"
])
polkit
asciinema
asciinema-agg
du-dust
appimage-run
file
weechat
hyfetch
git-annex
croc
uutils-coreutils
imagemagick
psmisc
nnn
jq
fq
gnumake
gdb
tea
codeberg-cli
progress
parallel
p7zip
xxd
meson
lshw
tree
smartmontools
];
stateVersion = lib.mkDefault "23.11";
};
};
};
}

View file

@ -1,8 +1,4 @@
{
config,
pkgs,
...
}: {
_: {
services.i2pd = {
enable = true;
ifname = "enp6s0";

View file

@ -1,5 +1,4 @@
{
config,
pkgs,
...
}: {

View file

@ -0,0 +1,12 @@
_: {
services.transmission = {
enable = true;
home = "/media/Torrent";
openFirewall = true;
openRPCPort = true;
settings = {
rpc-bind-address = "0.0.0.0";
};
};
}

View file

@ -3,33 +3,35 @@
inputs,
...
}: let
self = inputs.self;
inherit (inputs) self;
home-manager = inputs.home-manager.nixosModules.home-manager;
home-configs = import ../homes;
inherit (inputs.home-manager.nixosModules) home-manager;
laptopHostname = "niks";
serverHostname = "chmura";
in {
niks = lib.nixosSystem {
${laptopHostname} = lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {inherit lib inputs self;};
specialArgs = {
inherit lib inputs self;
hostname = laptopHostname;
username = "jacek";
};
modules = [
{networking.hostName = "niks";}
./niks
]
++ [
./${laptopHostname}
home-manager
home-configs
];
};
chmura = lib.nixosSystem {
${serverHostname} = lib.nixosSystem {
system = "x86_86-linux";
specialArgs = {inherit lib inputs self;};
specialArgs = {
inherit lib inputs self;
hostname = serverHostname;
username = "chmura";
};
modules = [
{networking.hostName = "chmura";}
./chmura
]
++ [
./${serverHostname}
home-manager
home-configs
];
};
}

View file

@ -1,7 +1,10 @@
{
config,
pkgs,
lib,
inputs,
hostname,
username,
...
}: {
nixpkgs = {
@ -19,7 +22,10 @@
boot = {
loader = {
systemd-boot.enable = true;
systemd-boot = {
enable = true;
memtest86.enable = true;
};
efi.canTouchEfiVariables = true;
};
kernelPackages = pkgs.linuxPackages_xanmod_latest;
@ -40,41 +46,80 @@
];
};
documentation = {
enable = true;
dev.enable = true;
doc.enable = true;
info.enable = true;
man = {
enable = true;
generateCaches = true;
man-db.enable = false;
mandoc.enable = true;
};
nixos = {
includeAllModules = true;
};
};
networking = {
hostName = hostname;
networkmanager.enable = true;
firewall.checkReversePath = "loose";
};
time.timeZone = "Europe/Warsaw";
nix.settings = {
experimental-features = [
"flakes"
"nix-command"
];
substituters = [
"https://hyprland.cachix.org"
"https://nix-gaming.cachix.org"
"https://anyrun.cachix.org"
"https://nix-community.cachix.org"
"https://nixpkgs-wayland.cachix.org"
"https://helix.cachix.org"
];
trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="
"anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
"helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs="
];
keep-outputs = true;
keep-derivations = true;
# don't wait for network to boot faster
# https://old.reddit.com/r/NixOS/comments/vdz86j/how_to_remove_boot_dependency_on_network_for_a
systemd = {
targets.network-online.wantedBy = lib.mkForce []; # default is [ "multi-user.target" ]
services.NetworkManager-wait-online.wantedBy = lib.mkForce []; # default is [ "network-online.target" ]
};
programs.zsh.enable = true;
systemd.oomd = {
enable = true;
enableUserServices = true;
};
virtualisation.libvirtd.enable = true;
time.timeZone = "Europe/Warsaw";
nix = {
settings = {
experimental-features = [
"flakes"
"nix-command"
];
substituters = [
"https://hyprland.cachix.org"
"https://nix-gaming.cachix.org"
"https://anyrun.cachix.org"
"https://nix-community.cachix.org"
"https://nixpkgs-wayland.cachix.org"
"https://helix.cachix.org"
];
trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="
"anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
"helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs="
];
keep-outputs = true;
keep-derivations = true;
};
};
virtualisation = {
libvirtd = {
enable = true;
onBoot = "ignore";
qemu = {
ovmf.enable = true;
runAsRoot = false;
swtpm.enable = true;
};
};
};
programs.dconf.enable = true;
# https://github.com/NixOS/nixpkgs/issues/158025
@ -84,21 +129,26 @@
fonts.packages = with pkgs; [
material-design-icons
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
(nerdfonts.override { fonts = [
"JetBrainsMono"
"Iosevka"
]; })
noto-fonts
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-emoji
];
users.users.jacek = {
users.users.${username} = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "libvirtd" ];
shell = pkgs.zsh;
};
programs.zsh.enable = true;
environment = {
shells = with pkgs; [zsh];
shells = [ pkgs.zsh ];
pathsToLink = [ "/share/zsh" ];
enableAllTerminfo = true;
sessionVariables = {
@ -144,6 +194,10 @@
CHROME_EXECUTABLE = "${pkgs.ungoogled-chromium}/bin/chromium";
};
systemPackages = with pkgs; [
man-pages
man-pages-posix
];
};
services = {
@ -155,6 +209,7 @@
udev.packages = [ pkgs.yubikey-personalization ];
udisks2.enable = true;
dbus.enable = true;
};
programs.gnupg.agent = {
@ -176,21 +231,25 @@
};
};
virtualisation.docker = {
xdg.portal = {
enable = true;
storageDriver = "btrfs";
rootless = {
extraPortals = with pkgs; [
xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk
];
};
services.btrfs = {
autoScrub = {
enable = true;
setSocketVariable = true;
interval = "weekly";
};
};
swapDevices = [
{
device = "/var/lib/swapfile";
size = 16*1024;
}
];
services.psd = {
enable = true;
resyncTimer = "30m";
};
system.stateVersion = "23.11";
}

View file

@ -3,6 +3,7 @@ _: {
./configuration.nix
./greetd.nix
./hardware-configuration.nix
./home-manager.nix
#./mullvad.nix
./pipewire.nix
./ssh

View file

@ -1,35 +1,31 @@
{
config,
inputs,
pkgs,
username,
...
}: let
greeter = "gtkgreet";
swayConfig = pkgs.writeText "greetd-sway-config" ''
# https://github.com/swaywm/sway/issues/5732#issuecomment-1583336383
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
exec hash dbus-update-activation-environment 2>/dev/null && \
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
hyprlandConfig = pkgs.writeText "greetd-hyprland-config" ''
workspace=1,default:true,gapsout:0,gapsin:0,border:false,decorate:false
exec "${pkgs.greetd.${greeter}}/bin/${greeter} -l; swaymsg exit"
bindsym Mod4+shift+e exec swaynag \
-t warning \
-m 'What do you want to do?' \
-b 'Poweroff' 'systemctl poweroff' \
-b 'Reboot' 'systemctl reboot'
exec-once=systemctl --user stop waybar.service
exec-once=[workspace 1;fullscreen;noanim] ${pkgs.greetd.${greeter}}/bin/${greeter} -l; hyprctl dispatch exit
exec-once=hyprctl dispatch focuswindow gtkgreet
'';
in {
services.greetd = {
enable = true;
settings.default_session = {
command = "${pkgs.sway}/bin/sway --config ${swayConfig}";
user = "jacek";
command = "${inputs.hyprland.packages.${pkgs.system}.hyprland}/bin/Hyprland --config ${hyprlandConfig}";
user = username;
};
};
environment.etc = {
"greetd/environments".text = ''
Hyprland
sway
zsh
shutdown now
'';

View file

@ -18,6 +18,11 @@
fsType = "btrfs";
};
fileSystems."/run/media/data" =
{ device = "/dev/disk/by-uuid/32cf9449-1cd5-4328-974f-52d4e0a564cc";
fsType = "btrfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/52D3-DEAB";
fsType = "vfat";

213
hosts/niks/home-manager.nix Normal file
View file

@ -0,0 +1,213 @@
{
lib,
inputs,
pkgs,
self,
username,
...
}: let
mkNixPak = inputs.nixpak.lib.nixpak {
inherit (pkgs) lib;
inherit pkgs;
};
in {
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
extraSpecialArgs = {inherit inputs self mkNixPak;};
users.${username} = {
imports = [
inputs.hyprland.homeManagerModules.default
inputs.anyrun.homeManagerModules.default
inputs.neovim-flake.homeManagerModules.default
../../modules/cli
../../modules/gui
../../modules/tui
../../modules/other
../../modules/services
];
programs = {
home-manager.enable = true;
direnv = {
enable = true;
nix-direnv.enable = true;
};
};
home = {
inherit username;
homeDirectory = "/home/${username}";
packages = let
hyprcontrib = inputs.hyprcontrib.packages.${pkgs.system};
shadower = inputs.shadower.packages.${pkgs.system};
nix-gaming = inputs.nix-gaming.packages.${pkgs.system};
fenix = inputs.fenix.packages.${pkgs.system};
nixpkgs-wayland = inputs.nixpkgs-wayland.packages.${pkgs.system};
in with pkgs; [
git
librewolf-wayland
keepassxc
eza
ripgrep
libnotify
rofi-wayland
rofi-calc
webcord-vencord
session-desktop
signal-desktop-beta
schildichat-desktop
obs-studio
heroic
steam
ungoogled-chromium
amdgpu_top
tor-browser-bundle-bin
mullvad-browser
thunderbird
telegram-desktop
livecaptions
gimp
helvum
ddccontrol
ddccontrol-db
bluez
blueman
easyeffects
firejail
lbry
libreoffice-fresh
minetest
airshipper
onionshare-gui
prismlauncher
qbittorrent
retroarchFull
ventoy-full
zathura
zellij
nodejs
unzip
cmake
gcc
nixpkgs-wayland.sway-unwrapped
caprine-bin
libsForQt5.kdenlive
telegram-desktop
waypipe
trash-cli
bibata-cursors
nixpkgs-wayland.swww
opentabletdriver
networkmanagerapplet
nixpkgs-wayland.wl-clipboard
nixpkgs-wayland.wlsunset
xdg-utils
hyprpicker
hyprcontrib.hyprprop
hyprcontrib.grimblast
shadower.shadower
pamixer
brightnessctl
dig
bottles
lutris
nodePackages_latest.pnpm
nodePackages_latest.prisma
prisma-engines
openssl
pkg-config
docker
docker-compose
postgresql
nix-gaming.osu-stable
nix-gaming.osu-lazer-bin
swappy
nixpkgs-wayland.imv
pcmanfm
anytype
xdg-ninja
auto-cpufreq
gnupg
pinentry-qt
age
rage
fd
udisks
ffmpeg
ghc
ghcid
cabal-install
yt-dlp
filelight
(fenix.complete.withComponents [
"cargo"
"clippy"
"rust-src"
"rustc"
"rustfmt"
])
wayland
showmethekey
polkit
libsForQt5.polkit-kde-agent
asciinema
asciinema-agg
du-dust
mullvad-vpn
appimage-run
file
virt-manager
weechat
flowblade
hyfetch
git-annex
gamemode
croc
linuxKernel.packages.linux_xanmod_latest.cpupower
uutils-coreutils
anki
alsa-utils
speechd
arcanPackages.espeak
ezquake
imagemagick
weston
pavucontrol
psmisc
mesa-demos
nnn
aseprite-unfree
jq
fq
nixpkgs-wayland.eww-wayland
gnumake
gdb
tea
codeberg-cli
progress
parallel
p7zip
famistudio
milkytracker
furnace
xxd
tldr
mpc-cli
playerctl
xdg-user-dirs
meson
wiki-tui
lshw
tree
ydotool
piper
smartmontools
];
stateVersion = lib.mkDefault "23.11";
};
};
};
}

View file

@ -1,8 +1,9 @@
{
config,
pkgs,
...
}: {
hardware.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;

View file

@ -1,12 +1,46 @@
{
config,
pkgs,
...
}: {
_: {
imports = [ ./ssh-agent.nix ];
services.openssh = {
enable = true;
settings.PasswordAuthentication = false;
};
programs.ssh.extraConfig = ''
AddKeysToAgent yes
Host github
HostName github.com
User git
IdentityFile ~/.ssh/githubkey
IdentitiesOnly yes
Host git.dupa.edu.pl
HostName git.dupa.edu.pl
User git
IdentityFile ~/.ssh/gitdupaedupl
IdentitiesOnly yes
Host codeberg
HostName codeberg.org
User git
IdentityFile ~/.ssh/codeberg
IdentitiesOnly yes
Host gitlab
HostName gitlab.com
User git
IdentityFile ~/.ssh/gitlab
IdentitiesOnly yes
Host aur
IdentityFile ~/.ssh/aur
User aur
Host chmura
HostName 192.168.15.17
User chmura
IdentityFile ~/.ssh/chmura
IdentitiesOnly yes
Host malina
HostName 192.168.15.13
User malina
IdentityFile ~/.ssh/malina
IdentitiesOnly yes
'';
}

View file

@ -1,5 +1,4 @@
{
config,
pkgs,
...
}: {

View file

@ -1,8 +1,4 @@
{
config,
pkgs,
...
}: {
_: {
virtualisation = {
waydroid.enable = true;
lxd.enable = true;

View file

@ -2,7 +2,6 @@ _: {
imports = [
./git.nix
./starship.nix
./zoxide.nix
./zsh.nix
];
}

25
modules/cli/git.nix Normal file
View file

@ -0,0 +1,25 @@
{
pkgs,
...
}: {
programs.git = {
enable = true;
userName = "jacekpoz";
userEmail = "jacekpoz@cock.li";
signing = {
key = "0EEE6B0C9A8CC06820E59C3894E812A8B12AAE3C";
signByDefault = true;
};
includes = [
{
contents = { core.editor = "${pkgs.neovim-nightly}/bin/nvim"; };
}
{
contents = { init.defaultBranch = "master"; };
}
{
contents = { push.autoSetupRemote = true; };
}
];
};
}

18
modules/cli/starship.nix Normal file
View file

@ -0,0 +1,18 @@
_: {
programs.starship = {
enable = true;
enableZshIntegration = true;
settings = {
add_newline = false;
command_timeout = 1000;
line_break = {
disabled = true;
};
directory = {
truncation_length = 3;
truncate_to_repo = false;
truncation_symbol = "/";
};
};
};
}

64
modules/cli/zsh.nix Normal file
View file

@ -0,0 +1,64 @@
{
config,
pkgs,
...
}: {
programs.zsh = {
enable = true;
shellAliases = {
cl = "clear";
cp = "cp -ivr";
mv = "mv -iv";
rm = "trash -v";
l = "eza -a";
e = "eza -lha --git";
untar = "tar -xvf";
untargz = "tar -xzf";
mnt = "udisksctl mount -b";
umnt = "udisksctl unmount -b";
v = "nvim";
kys = "shutdown now";
gpl = "curl https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE";
agpl = "curl https://www.gnu.org/licenses/agpl-3.0.txt -o LICENSE";
wget = "wget --hsts-file=\"${config.xdg.dataHome}/wget-hsts\"";
g = "git";
woman = "man";
};
initExtra = ''
bindkey -e
'';
history = {
path = "${config.xdg.dataHome}/zsh/zsh_history";
size = 9999999999;
save = 9999999999;
extended = true;
ignoreSpace = true;
};
enableAutosuggestions = true;
enableCompletion = true;
autocd = false;
dotDir = ".config/zsh";
plugins = [
{
name = "fast-syntax-highlighting";
file = "fast-syntax-highlighting.plugin.zsh";
src = pkgs.fetchFromGitHub {
owner = "zdharma-continuum";
repo = "fast-syntax-highlighting";
rev = "cf318e06a9b7c9f2219d78f41b46fa6e06011fd9";
sha256 = "sha256-RVX9ZSzjBW3LpFs2W86lKI6vtcvDWP6EPxzeTcRZua4=";
};
}
{
name = "zsh-nix-shell";
file = "nix-shell.plugin.zsh";
src = pkgs.fetchFromGitHub {
owner = "chisui";
repo = "zsh-nix-shell";
rev = "v0.7.0";
sha256 = "0za4aiwwrlawnia4f29msk822rj9bgcygw6a8a6iikiwzjjz0g91";
};
}
];
};
}

View file

@ -1,5 +1,4 @@
{
config,
inputs,
pkgs,
...
@ -22,55 +21,65 @@
closeOnClick = true;
showResultsImmediately = true;
maxEntries = 50;
width.fraction = 0.3;
y.absolute = 15;
};
extraCss = ''
window {
background: transparent;
* {
all: unset;
font-family: Lexend;
font-size: 1.3rem;
}
#window,
#match,
#entry,
#plugin,
#main {
background: transparent;
}
#main { background: transparent; }
#match.activatable {
padding: 6px;
border-radius: 16px;
padding: .3rem .9rem;
margin-top: .01rem;
}
#match.activatable:first-child { margin-top: .7rem; }
#match.activatable:last-child { margin-bottom: .6rem; }
#plugin:hover #match.activatable {
border-radius: 10px;
color: white;
margin-top: 4px;
padding: .3rem;
margin-top: .01rem;
margin-bottom: 0;
}
#match.activatable:selected {
background: red;
color: black;
}
#match-title, #match-desc {
color: inherit;
#match:selected, #match:hover, #plugin:hover {
background: rgba(255, 255, 255, .1);
}
#entry {
color: white;
box-shadow: none;
border-radius: 10px;
border: 2px solid red;
background: rgba(255,255,255,.05);
border: 1px solid rgba(255,255,255,.1);
border-radius: 16px;
margin: .3rem;
padding: .3rem 1rem;
}
list > #plugin {
border-radius: 16px;
margin: 0 .3rem;
}
list > #plugin:first-child { margin-top: .3rem; }
list > #plugin:last-child { margin-bottom: .3rem; }
list > #plugin:hover { padding: .6rem; }
box#main {
background: rgba(36, 39, 58, 0.7);
border-radius: 16px;
padding: 8px;
box-shadow: 0px 2px 33px -5px rgba(0, 0, 0, 0.5);
}
row:first-child {
margin-top: 6px;
background: rgba(0, 0, 0, .5);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .1), 0 0 0 1px rgba(0, 0, 0, .5);
border-radius: 24px;
padding: .3rem;
}
'';
extraConfigFiles = {
"applications.ron".text = ''
Config(
@ -86,7 +95,7 @@
'';
"symbols.ron".text = ''
Config(
prefix: ":u",
prefix: ":s",
)
'';
"translate.ron".text = ''

View file

@ -1,7 +1,7 @@
_: {
imports = [
./anyrun.nix
./eww
./anyrun.nix
./firefox.nix
./foot.nix
./gtk.nix
@ -11,5 +11,6 @@ _: {
./rofi.nix
./swaylock.nix
./waybar.nix
./zathura.nix
];
}

View file

@ -0,0 +1,43 @@
* {
all: unset; //Unsets everything so you can style everything from scratch
border-radius: 10px;
font-family: Material Design Icons;
font-size: 16px;
color: #cdd6f4;
}
//Global Styles
.bar {
padding: 10px;
background-color: rgba(#1e1e2e, 0.5);
border-radius: 0px;
}
.time {
color: #f5c2e7;
}
tooltip.background {
background-color: #11111b;
border-radius: 10px;
color: #cdd6f4;
}
tooltip label {
margin: 6px;
}
.workspaces button {
font-size: 12px;
background-color: #181825;
border-radius: 15px;
padding-top: 5px;
padding-right: 5px;
padding-bottom: 5px;
padding-left: 5px;
}
.workspaces button.active {
background-color: #89b4fa;
}

View file

@ -0,0 +1,126 @@
(defwidget bar []
(centerbox :orientation "v"
(topstuff)
(centerstuff)
(bottomstuff)))
(defwidget topstuff []
(box :class "topstuff" :orientation "v" :valign "start"
(systray)
(workspaces)))
(defwidget centerstuff []
(box :class "centerstuff" :orientation "v" :valign "center"
;(label :text windowtitle)
))
(defwidget bottomstuff []
(box :class "bottomstuff" :orientation "v" :valign "end"
;(backlight)
(volume :volume {3})
(battery :capacity {EWW_BATTERY.BAT0.capacity} :status {EWW_BATTERY.BAT0.status})
(time)
(date)
))
(defwidget systray []
(label :text "st"))
(defwidget workspaces []
(box :class "workspaces"
:orientation "v"
:valign "start"
:spacing 10
(button :onclick "hyprctl dispatch split-workspace 1" 1)
(button :onclick "hyprctl dispatch split-workspace 2" 2)
(button :onclick "hyprctl dispatch split-workspace 3" 3)
(button :onclick "hyprctl dispatch split-workspace 4" 4)
(button :onclick "hyprctl dispatch split-workspace 5" 5)
(button :onclick "hyprctl dispatch split-workspace 6" 6)
(button :onclick "hyprctl dispatch split-workspace 7" 7)
(button :onclick "hyprctl dispatch split-workspace 8" 8)
(button :onclick "hyprctl dispatch split-workspace 9" 9)
(button :onclick "hyprctl dispatch split-workspace 10" 10)))
(defwidget volume [volume]
(box :orientation "v" :class "volume" :valign "center"
(label :text {
volume == 0 ? "󰸈" :
volume < 34 ? "󰕿" :
volume < 67 ? "󰖀" :
"󰕾"
})
(label :text volume)))
(defwidget battery [capacity status]
(box :orientation "v" :class "battery" :valign "center" :tooltip {status}
(label :text {status == 'Charging' ?
(capacity < 10 ? "󰢟" :
capacity < 20 ? "󰢜" :
capacity < 30 ? "󰂆" :
capacity < 40 ? "󰂇" :
capacity < 50 ? "󰂈" :
capacity < 60 ? "󰢝" :
capacity < 70 ? "󰂉" :
capacity < 80 ? "󰢞" :
capacity < 90 ? "󰂊" :
capacity < 100 ? "󰂋" :
"󰂅") :
(capacity < 10 ? "󰂎" :
capacity < 20 ? "󰁺" :
capacity < 30 ? "󰁻" :
capacity < 40 ? "󰁼" :
capacity < 50 ? "󰁽" :
capacity < 60 ? "󰁾" :
capacity < 70 ? "󰁿" :
capacity < 80 ? "󰂀" :
capacity < 90 ? "󰂁" :
capacity < 100 ? "󰂂" :
"󰁹")
})
(label :text capacity)))
(defwidget time []
(box :orientation "v" :class "time" :valign "center"
(label :text "󱑁")
(label :text hour)
(label :text minute)
(label :text second)))
(defpoll hour :interval "1s"
"date '+%H'")
(defpoll minute :interval "1s"
"date '+%M'")
(defpoll second :interval "1s"
"date '+%S'")
(defwidget date []
(box :orientation "v" :class "date" :valign "center"
(label :text "󰃰")
(label :text day)
(label :text month)
(label :text year)))
(defpoll day :interval "1s"
"date '+%d'")
(defpoll month :interval "1s"
"date '+%m'")
(defpoll year :interval "1s"
"date '+%y'")
(defwindow bar
:monitor 0
:windowtype "dock"
:geometry (geometry :x "0%"
:y "0%"
:height "100%"
:width "20px"
:anchor "center right")
:stacking "fg"
:namespace "eww"
:exclusive true
(bar))

View file

@ -1,5 +1,4 @@
{
config,
inputs,
pkgs,
...

469
modules/gui/firefox.nix Normal file
View file

@ -0,0 +1,469 @@
{
lib,
pkgs,
...
}: let
buildFirefoxXpiAddon = lib.makeOverridable ({
stdenv ? pkgs.stdenv,
fetchurl ? pkgs.fetchurl,
pname,
version,
addonId,
url,
sha256,
...
}:
stdenv.mkDerivation {
name = "${pname}-${version}";
src = fetchurl {inherit url sha256;};
preferLocalBuild = true;
allowSubstitutes = true;
buildCommand = ''
dst="$out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9397384}"
mkdir -p "$dst"
install -v -m644 "$src" "$dst/${addonId}.xpi"
'';
});
extra-addons = {
yomichan = buildFirefoxXpiAddon {
pname = "yomichan";
version = "20.5.22.1";
addonId = "{a9226ee9-7998-47bd-b72e-a1b56df7f77b}";
url = "https://addons.mozilla.org/firefox/downloads/file/3585060/yomichan-20.5.22.1.xpi";
sha256 = "sha256-/icvPD/nCJYS31owfYMD25QzFjsxAqapy/UAehhxsy8=";
};
};
searxng-name = "SearXNG Sapti";
searxng = {
urls = [{ template = "https://search.sapti.me/search?q={searchTerms}"; }];
iconUpdateURL = "https://search.sapti.me/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = [ "@sx" ];
};
logo = builtins.fetchurl {
url = "https://raw.githubusercontent.com/schizofox/assets/main/logo/logo.png";
sha256 = "1wjzivdmppbzrwdxhza5dzzljl3z59vfgggxim9xjb2rzr0wqyyf";
};
in {
xdg.desktopEntries = {
firefox-schizo = {
name = "Schizofox";
genericName = "Web Browser";
exec = "firefox --name firefox-schizo --profile /home/jacek/.mozilla/firefox/schizo %U";
icon = "${logo}";
terminal = false;
categories = [ "Network" "WebBrowser" ];
mimeType = [ "text/html" "text/xml" "application/xhtml+xml" "application/vnd.mozilla.xul+xml" "x-scheme-handler/http" "x-scheme-handler/https" ];
type = "Application";
startupNotify = true;
settings = {
StartupWMClass = "firefox-schizo";
};
};
firefox-unschizo = {
name = "Sanefox";
genericName = "Web Browser";
exec = "firefox --name firefox-sane --profile /home/jacek/.mozilla/firefox/unschizo %U";
icon = "${logo}";
terminal = false;
categories = [ "Network" "WebBrowser" ];
mimeType = [ "text/html" "text/xml" "application/xhtml+xml" "application/vnd.mozilla.xul+xml" "x-scheme-handler/http" "x-scheme-handler/https" ];
type = "Application";
startupNotify = true;
settings = {
StartupWMClass = "firefox-sane";
};
};
};
programs.firefox = {
enable = true;
package = pkgs.firefox-devedition;
profiles = {
"schizo" = {
id = 0;
isDefault = true;
search = {
default = "${searxng-name}";
force = true;
engines = {
"${searxng-name}" = searxng;
"NixOS Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "channel"; value = "unstable"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@np" ];
};
"NixOS Options" = {
urls = [{
template = "https://search.nixos.org/options";
params = [
{ name = "channel"; value = "unstable"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@no" ];
};
"NixOS Wiki" = {
urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
iconUpdateURL = "https://nixos.wiki/favicon.png";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = [ "@nw" ];
};
"Home Manager Option Search" = {
urls = [{ template = "https://mipmip.github.io/home-manager-option-search/?query={searchTerms}"; }];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@hm" ];
};
"Arch Wiki" = {
url = [{ template = "https://wiki.archlinux.org/index.php?search={searchTerms}"; }];
iconUpdateURL = "https://archlinux.org/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = [ "@aw" ];
};
"Gentoo Wiki" = {
url = [{ template = "https://wiki.gentoo.org/index.php?search={searchTerms}"; }];
iconUpdateURL = "https://www.gentoo.org/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = [ "@gw" ];
};
"Debian Wiki" = {
url = [{ template = "https://wiki.debian.org/FrontPage?action=fullsearch&value={searchTerms}"; }];
iconUpdateURL = "https://www.debian.org/favicon.ico";
updateInterval = 24 * 60 * 60 * 1000;
definedAliases = [ "@dw" ];
};
# GTFO
"Google".metaData.hidden = true;
"Bing".metaData.hidden = true;
"DuckDuckGo".metaData.hidden = true;
"Amazon.com".metaData.hidden = true;
};
};
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
ublock-origin
sponsorblock
tridactyl
violentmonkey
darkreader
keepassxc-browser
redirector
auto-tab-discard
extra-addons.yomichan
];
settings = {
"browser.aboutConfig.showWarning" = false;
"browser.startup.page" = 0;
"browser.startup.homepage" = "about:home";
"browser.newtabpage.enabled" = true;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.default.sites" = "";
"geo.provider.network.url" = "";
"geo.provider.network.logging.enabled" = false;
"geo.provider.ms-windows-location" = false;
"geo.provider.use_corelocation" = false;
"geo.provider.use_gpsd" = false;
"geo.provider.use_geoclue" = false;
"intl.accept_langauges" = "en-US";
"javascript.use_us_english_locale" = true;
"extensions.getAddons.showPane" = false;
"extensions.htmlaboutaddons.recommendations.enabled" = false;
"browser.discovery.enabled" = false;
# this shit doesn't work thanks to firefox's
# fucking retarded ass decisions
# but I'm gonna keep it anyway
"extensions.unifiedExtensions.enabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.server" = "data:,";
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"toolkit.telemetry.updatePing.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"toolkit.telemetry.coverage.opt-out" = true;
"toolkit.coverage.endpoint.base" = "";
"browser.ping-centre.telemetry" = false;
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
"browser.newtabpage.activity-stream.telemetry" = false;
"app.shield.optoutstudies.enabled" = false;
"app.normandy.enabled" = false;
"app.normandy.api_url" = "";
"breakpad.reportURL" = "";
"browser.tabs.crashReporting.sendReport" = false;
"browser.crashReports.unsubmittedCheck.enabled" = false;
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
"captivedetect.canonicalURL" = "";
"network.captive-portal-service.enabled" = false;
"network.connectivity-service.enabled" = false;
"browser.safebrowsing.malware.enabled" = false;
"browser.safebrowsing.phishing.enabled" = false;
"browser.safebrowsing.downloads.enabled" = false;
"browser.safebrowsing.downloads.remote.enabled" = false;
"browser.safebrowsing.downloads.remote.url" = "";
"browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false;
"browser.safebrowsing.downloads.remote.block_uncommon" = false;
"browser.safebrowsing.allowOverride" = false;
"network.prefetch-next" = false;
"network.dns.disablePrefetch" = true;
"network.dns.disablePrefetchFromHTTPS" = true;
"network.predictor.enabled" = false;
"network.predictor.enable-prefetch" = false;
"network.http.speculative.parallel-limit" = 0;
"browser.places.speculativeConnect.enabled" = false;
"browser.send_pings" = false;
"network.dns.disableIPv6" = true;
"network.proxy.socks_remote_dns" = true;
"network.file.disable_unc_paths" = true;
"network.gio.supported-protocols" = "";
"network.proxy.failover_direct" = false;
"network.proxy.allow_bypass" = false;
# "network.trr.mode" = 5; TODO read about this
"browser.fixup.alternate.enabled" = false;
# TODO do I want this
"browser.search.suggest.enabled" = true;
"browser.urlbar.suggest.searches" = true;
"browser.urlbar.speculativeConnect.enabled" = false;
"browser.urlbar.dnsResolveSingleWordsAfterSearch" = 0;
"browser.urlbar.suggest.quicksuggest.nonsponsored" = false;
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
"browser.formfill.enable" = false;
"layout.css.visited_links_enabled" = false;
"signon.autofillForms" = false;
"signon.formlessCapture.enabled" = false;
# TODO find some info about this
"network.auth.subresource-http-auth-allow" = 0;
"network.http.windows-sso.enabled" = false;
# TODO read about these until...
"browser.cache.disk.enable" = true;
"browser.privatebrowsing.forceMediaMemoryCache" = true;
"media.memory_cache_max_size" = 65536;
"browser.sessionstore.privacy_level" = 2;
# here
"toolkit.winRegisterApplicationRestart" = false;
# TODO favicons might be cool though
"browser.shell.shortcutFavicons" = false;
"security.ssl.require_safe_negotiation" = true;
"security.tls.enable_0rtt_data" = true;
# TODO read and think about it
"security.OCSP.enabled" = 1;
"security.OCSP.require" = true;
"security.family_safety.mode" = 0;
"security.cert_pinning.enforcement_level" = 2;
# TODO read about the next 2
"security.remote_settings.crlite_filters.enabled" = true;
"security.pki.crlite_mode" = 2;
# TODO if images break it's probably this
"security.mixed_content.block_display_content" = true;
"dom.security.https_only_mode" = true;
"dom.security.https_only_mode_pbm" = true;
"dom.security.https_only_mode.upgrade_local" = true;
"dom.security.https_only_mode_send_http_background_request" = false;
"security.ssl.treat_unsafe_negotiation_as_broken" = true;
"browser.xul.error_pages.expert_bad_cert" = true;
"network.http.referer.XOriginPolicy" = 2;
"network.http.referer.XOriginTrimmingPolicy" = 2;
"privacy.userContext.enabled" = true;
"privacy.userContext.ui.enabled" = true;
"privacy.userContext.newTabContainerOnLeftClick.enabled" = true;
# TODO read about these 2
"media.peerconnection.ice.proxy_only_if_behind_proxy" = true;
"media.peerconnection.ice.default_address_only" = true;
"media.peerconnection.ice.no_host" = true;
# TODO remove this if some codecs or shit don't work
"media.gmp-provider.enabled" = false;
# I think this is for netflix and shit
"media.gmp-widevinecdm.enabled" = false;
# disables DRM in general
"media.eme.enabled" = false;
# and the ui for it just in case
"browser.eme.ui.enabled" = false;
"dom.disable_window_move_resize" = true;
"accessibility.force_disabled" = 1;
"browser.helperApps.deleteTempFileOnExit" = true;
# TODO what the fuck is uitour
"browser.uitour.enabled" = false;
"browser.uitour.url" = "";
"devtools.debugger.remote-enabled" = false;
"middlemouse.contentLoadURL" = false;
"permissions.default.shortcuts" = 2;
"permissions.manager.defaultsUrl" = "";
# TODO what is this
"webchannel.allowObject.urlWhitelist" = "";
"network.IDN_show_punycode" = true;
"pdfjs.disabled" = false;
"pdfjs.enableScripting" = false;
"network.protocol-handler.external.ms-windows-store" = false;
"permissions.delegation.enabled" = false;
"browser.download.useDownloadDir" = true;
"browser.download.alwaysOpenPanel" = false;
"browser.download.manager.addToRecentDocs" = true;
"browser.download.always_ask_before_handling_new_types" = true;
# if extensions break go here
"extensions.enabledScopes" = 5;
"extensions.autoDisableScopes" = 15;
# TODO rethink this
"extensions.postDownloadThirdPartyPrompt" = true;
"extensions.webextensions.restrictedDomains" = "";
"browser.contentblocking.category" = "strict";
"privacy.antitracking.enableWebcompat" = false;
"privacy.partition.serviceWorkers" = true;
"privacy.partition.always_partition_third_party_non_cookie_storage" = true;
"privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage" = false;
"privacy.sanitize.sanitizeOnShutdown" = true;
"privacy.clearOnShutdown.cache" = true;
"privacy.clearOnShutdown.downloads" = true;
"privacy.clearOnShutdown.formdata" = true;
"privacy.clearOnShutdown.history" = true;
"privacy.clearOnShutdown.sessions" = true;
"privacy.clearOnShutdown.siteSettings" = true;
# if true I can't recover from crashes according to arkenfox
"privacy.clearOnShutdown.openWindows" = false;
"privacy.clearOnShutdown.cookies" = true;
"privacy.clearOnShutdown.offlineApps" = true;
"privacy.clearsitedata.cache.enabled" = true;
"privacy.cpd.cache" = true;
"privacy.cpd.formdata" = true;
"privacy.cpd.history" = true;
"privacy.cpd.sessions" = true;
"privacy.cpd.offlineApps" = true;
"privacy.cpd.cookies" = true;
"privacy.cpd.downloads" = true;
"privacy.cpd.openWindows" = false;
"privacy.cpd.passwords" = true;
"privacy.cpd.siteSettings" = true;
"privacy.sanitize.timeSpan" = 0;
"privacy.resistFingerprint" = false;
# we won't be installing extensions through mozilla's website I don't think
"privacy.resistFingerprinting.block_mozAddonManager" = true;
"privacy.resistFingerprinting.letterboxing" = true;
"layout.css.font-visibility.resistFingerprinting" = 1;
"browser.display.use_system_colors" = false;
"widget.non-native-theme.enabled" = true;
"browser.link.open_newwindow" = 3;
"browser.link.open_newwindow.restriction" = 0;
"webgl.disabled" = false;
"signon.rememberSignons" = false;
"permissions.memory_only" = true;
"security.nocertdb" = true;
"browser.chrome.site_icons" = true;
"browser.session.max_tabs_undo" = 0;
"browser.sessionstore.resume_from_crash" = true;
"browser.urlbar.autoFill" = false;
"places.history.enabled" = false;
"extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false;
"extensions.formautofill.heuristics.enabled" = false;
"dom.popup_allowed_events" = "click dblclick mousedown pointerdown";
"javascript.options.ion" = false;
"javascript.options.baselinejit" = false;
"javascript.options.jit_trustedprincipals" = true;
"javascript.options.wasm" = false;
"extensions.blocklist.enabled" = true;
"network.http.referer.spoofSource" = false;
"security.dialog_enable_delay" = 1000;
"privacy.firstparty.isolate" = false;
"extensions.webcompat.enable_shims" = true;
"security.tls.version.enable-deprecated" = false;
"extensions.webcompat-reporter.enabled" = false;
"gfx.webrender.all" = true;
"media.ffmpeg.vaapi.enabled" = true;
};
};
"unschizo" = {
id = 1;
isDefault = false;
search = {
default = "${searxng-name}";
force = true;
engines = {
"${searxng-name}" = searxng;
# GTFO
"Google".metaData.hidden = true;
"Bing".metaData.hidden = true;
"DuckDuckGo".metaData.hidden = true;
"Amazon.com".metaData.hidden = true;
};
};
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
ublock-origin
sponsorblock
dearrow
tridactyl
violentmonkey
darkreader
keepassxc-browser
auto-tab-discard
extra-addons.yomichan
];
settings = {
"browser.aboutConfig.showWarning" = false;
"browser.startup.page" = 0;
"browser.startup.homepage" = "about:home";
"browser.newtabpage.enabled" = true;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.default.sites" = "";
"extensions.getAddons.showPane" = false;
"extensions.htmlaboutaddons.recommendations.enabled" = false;
"browser.discovery.enabled" = false;
"extensions.unifiedExtensions.enabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.server" = "data:,";
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"toolkit.telemetry.updatePing.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"toolkit.telemetry.coverage.opt-out" = true;
"toolkit.coverage.endpoint.base" = "";
"browser.ping-centre.telemetry" = false;
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
"browser.newtabpage.activity-stream.telemetry" = false;
"app.shield.optoutstudies.enabled" = false;
"app.normandy.enabled" = false;
"app.normandy.api_url" = "";
"breakpad.reportURL" = "";
"browser.tabs.crashReporting.sendReport" = false;
"browser.crashReports.unsubmittedCheck.enabled" = false;
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
"captivedetect.canonicalURL" = "";
"network.captive-portal-service.enabled" = false;
"network.connectivity-service.enabled" = false;
"browser.safebrowsing.malware.enabled" = false;
"browser.safebrowsing.phishing.enabled" = false;
"browser.safebrowsing.downloads.enabled" = false;
"browser.safebrowsing.downloads.remote.enabled" = false;
"browser.safebrowsing.downloads.remote.url" = "";
"browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false;
"browser.safebrowsing.downloads.remote.block_uncommon" = false;
"browser.safebrowsing.allowOverride" = false;
"privacy.resistFingerprinting.block_mozAddonManager" = true;
"signon.rememberSignons" = false;
"gfx.webrender.all" = true;
"media.ffmpeg.vaapi.enabled" = true;
};
};
};
};
}

106
modules/gui/foot.nix Normal file
View file

@ -0,0 +1,106 @@
{
inputs,
pkgs,
...
}: {
programs.foot = {
enable = true;
package = inputs.nixpkgs-wayland.packages.${pkgs.system}.foot;
server.enable = true;
settings = {
main = {
term = "xterm-256color";
app-id = "foot";
title = "foot";
locked-title = "no";
font = "JetBrains Mono Nerd Font:size=16";
line-height = 20;
letter-spacing = 0;
horizontal-letter-offset = 0;
vertical-letter-offset = -0.75;
box-drawings-uses-font-glyphs = "no";
dpi-aware = "no";
initial-window-size-chars = "104x36";
initial-window-mode = "windowed";
pad = "5x5 center";
resize-delay-ms = 100;
notify = "notify-send -a \${app-id} -i \${app-id} \${title} \${body}";
bold-text-in-bright = "no";
word-delimiters = ",`|:\"'()[]{}<>";
selection-target = "primary";
};
bell = {
urgent = "yes";
notify = "yes";
command = "notify-send bell";
command-focused = "no";
};
scrollback = {
lines = 100000;
multiplier = 10.0;
indicator-position = "relative";
indicator-format = "line";
};
url = {
launch = "xdg-open \${url}";
label-letters = "sadfjklewcmpgh";
osc8-underline = "always";
protocols = "http, https, ftp, ftps, file, gemini, gopher, irc, ircs";
uri-characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+=\"'()[]";
};
cursor = {
style = "block";
blink = "no";
};
mouse = {
hide-when-typing = "yes";
alternate-scroll-mode = "yes";
};
colors = {
alpha = 0.85;
foreground = "dee1e6";
background = "101419";
# Normal/regular colors (color palette 0-7)
regular0 = "c5c8cd"; # black
regular1 = "bd3c42"; # red
regular2 = "69b373"; # green
regular3 = "ceac67"; # yellow
regular4 = "4d82c8"; # blue
regular5 = "a367cb"; # magenta
regular6 = "519bc6"; # cyan
regular7 = "101419"; # white
# Bright colors (color palette 8-15)
bright0 = "989ba0"; # bright black
bright1 = "c24147"; # bright red
bright2 = "6eb878"; # bright green
bright3 = "d3b16c"; # bright yellow
bright4 = "5287cd"; # bright blue
bright5 = "a86cd0"; # bright magenta
bright6 = "56a0cb"; # bright cyan
bright7 = "1f2328"; # bright white
};
csd = {
preferred = "server";
};
key-bindings = {
show-urls-launch = "Control+Shift+u";
unicode-input = "Control+Shift+i";
};
mouse-bindings = {
selection-override-modifiers = "Shift";
primary-paste = "BTN_MIDDLE";
select-begin = "BTN_LEFT";
select-begin-block = "Control+BTN_LEFT";
select-extend = "BTN_RIGHT";
select-extend-character-wise = "Control+BTN_RIGHT";
select-word = "BTN_LEFT-2";
select-word-whitespace = "Control+BTN_LEFT-2";
select-row = "BTN_LEFT-3";
};
};
};
}

39
modules/gui/gtk.nix Normal file
View file

@ -0,0 +1,39 @@
{
config,
pkgs,
...
}: {
gtk = {
enable = true;
theme = {
name = "Catppuccin-Mocha-Standard-Green-dark";
package = pkgs.catppuccin-gtk.override {
size = "standard";
accents = [ "green" ];
variant = "mocha";
tweaks = [ "normal" ];
};
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.catppuccin-papirus-folders.override {
accent = "green";
flavor = "mocha";
};
};
};
home = {
sessionVariables = {
GTK_THEME = "${config.gtk.theme.name}";
GTK_USE_PORTAL = "1";
};
pointerCursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
gtk.enable = true;
x11.enable = true;
};
};
}

303
modules/gui/hypr.nix Normal file
View file

@ -0,0 +1,303 @@
{
config,
inputs,
lib,
pkgs,
...
}: {
wayland.windowManager.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
plugins = [
inputs.hyprland-plugins.packages.${pkgs.system}.csgo-vulkan-fix
inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces
];
extraConfig = ''
#laptop
monitor=eDP-1,2560@1440@165,0x0,1
#second monitor
monitor=HDMI-A-1,2560x1440@144,2560x0,1
workspace = 1, monitor:eDP-1, default:true
workspace = 2, monitor:eDP-1
workspace = 3, monitor:eDP-1
workspace = 4, monitor:eDP-1
workspace = 5, monitor:eDP-1
workspace = 6, monitor:eDP-1
workspace = 7, monitor:eDP-1
workspace = 8, monitor:eDP-1
workspace = 9, monitor:eDP-1
workspace = 10, monitor:eDP-1
workspace = 11, monitor:HDMI-A-1, default:true
workspace = 12, monitor:HDMI-A-1
workspace = 13, monitor:HDMI-A-1
workspace = 14, monitor:HDMI-A-1
workspace = 15, monitor:HDMI-A-1
workspace = 16, monitor:HDMI-A-1
workspace = 17, monitor:HDMI-A-1
workspace = 18, monitor:HDMI-A-1
workspace = 19, monitor:HDMI-A-1
workspace = 20, monitor:HDMI-A-1
workspace = special:btop, allpseudo
workspace = special:amdgpu_top, allpseudo
workspace = special:helvum, allpseudo
workspace = special:nixos, allpseudo, gapsin:0, gapsout:0
input {
kb_layout=pl,ru
kb_variant=
kb_model=
kb_options=grp:alt_shift_toggle
kb_rules=
follow_mouse=1
touchpad {
disable_while_typing=false
}
repeat_rate = 50
repeat_delay = 250
}
general {
sensitivity=1.0 # for mouse cursor
gaps_in=5
gaps_out=5
#gaps_in=0
#gaps_out=0
border_size=2
#border_size=1
apply_sens_to_raw=0 # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse)
#no_border_on_floating=true
}
decoration {
#rounding=0
rounding=10
blur {
enabled=1
size=3
passes=2
}
drop_shadow=1
shadow_range=15
shadow_render_power=2
shadow_ignore_window=1
shadow_offset= 2 4
shadow_scale=1
}
gestures {
workspace_swipe=1
workspace_swipe_distance=200
workspace_swipe_invert=1
workspace_swipe_min_speed_to_force=20
workspace_swipe_cancel_ratio=0.5
}
bezier=dupa, 0.1, 0.9, 0.1, 1.05
animations {
enabled=1
animation=windows,1,4,dupa,popin
animation=windowsOut,1,7,dupa,slide
animation=border,1,15,default
animation=fade,1,10,default
animation=workspaces,1,5,dupa,slidevert
}
dwindle {
no_gaps_when_only=1
}
misc {
enable_swallow=0
swallow_regex=foot
focus_on_activate=true
vrr=1
animate_manual_resizes=false
animate_mouse_windowdragging=false
}
windowrulev2 = float, title:^(.*)(Tor Browser)(.*)$
windowrulev2 = float, class:^(mullvadbrowser)$
windowrulev2 = float, class:^(foot)$
windowrulev2 = float, class:^(mpv)$
windowrulev2 = float, class:^(imv)$
windowrulev2 = float, class:^(Vieb)$
windowrulev2 = float, title:^(Picture-in-Picture)$
windowrulev2 = float, title:^(.*)(Choose User Profile)(.*)$
windowrulev2 = float, class:^(xdg-desktop-portal-gtk)$
windowrulev2 = float, class:^(code), title: ^(Open*)
windowrulev2 = size 70% 70%, class:^(code), title: ^(Open*)
windowrulev2 = center, class: ^(code), title: ^(Open*)
windowrulev2 = float, class:^(org.keepassxc.KeePassXC)$
windowrulev2 = size 960 670, title:^(ROG Control Center)$
bind = SUPER, RETURN, exec, foot
bind = SUPER, W, exec, ${lib.removeSuffix " %U" config.xdg.desktopEntries.firefox-schizo.exec}
bind = SUPERSHIFT, W, exec, ${lib.removeSuffix " %U" config.xdg.desktopEntries.firefox-unschizo.exec}
bind = SUPER, Q, killactive
bind = SUPER, F, fullscreen, 0
bind = SUPER, M, fullscreen, 1
bind = SUPER, D, exec, pkill anyrun || anyrun
bind = SUPER, SPACE, togglefloating,
bind = SUPERSHIFT, C, centerwindow
bind = SUPER, R, bringactivetotop
binde = SUPER, H, movefocus, l
binde = SUPER, J, movefocus, d
binde = SUPER, K, movefocus, u
binde = SUPER, L, movefocus, r
binde = SUPERCTRL, J, focusmonitor, l
binde = SUPERCTRL, K, focusmonitor, r
bind = SUPER, 1, split-workspace, 1
bind = SUPER, 2, split-workspace, 2
bind = SUPER, 3, split-workspace, 3
bind = SUPER, 4, split-workspace, 4
bind = SUPER, 5, split-workspace, 5
bind = SUPER, 6, split-workspace, 6
bind = SUPER, 7, split-workspace, 7
bind = SUPER, 8, split-workspace, 8
bind = SUPER, 9, split-workspace, 9
bind = SUPER, 0, split-workspace, 10
bind = SUPERSHIFT, 1, split-movetoworkspacesilent, 1
bind = SUPERSHIFT, 2, split-movetoworkspacesilent, 2
bind = SUPERSHIFT, 3, split-movetoworkspacesilent, 3
bind = SUPERSHIFT, 4, split-movetoworkspacesilent, 4
bind = SUPERSHIFT, 5, split-movetoworkspacesilent, 5
bind = SUPERSHIFT, 6, split-movetoworkspacesilent, 6
bind = SUPERSHIFT, 7, split-movetoworkspacesilent, 7
bind = SUPERSHIFT, 8, split-movetoworkspacesilent, 8
bind = SUPERSHIFT, 9, split-movetoworkspacesilent, 9
bind = SUPERSHIFT, 0, split-movetoworkspacesilent, 10
bindle = , XF86MonBrightnessUp, exec, ~/Scripts/notif_brightness.sh set +5%
bindle = , XF86MonBrightnessDown, exec, ~/Scripts/notif_brightness.sh set 5%-
bindl = , XF86AudioMedia, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioStop, exec, playerctl stop
bindl = , XF86AudioPrev, exec, playerctl previous
bindl = , XF86AudioNext, exec, playerctl next
bindle = , XF86AudioRaiseVolume, exec, ~/Scripts/notif_volume.sh -ui 5
bindle = , XF86AudioLowerVolume, exec, ~/Scripts/notif_volume.sh -ud 5
bindl = , XF86AudioMute, exec, ~/Scripts/notif_volume.sh --toggle-mute
# https://github.com/n3oney/shadower
bind = SUPER, S, exec, grimblast save area - | shadower | tee "$(xdg-user-dir PICTURES)/Screenshots/$(date +'screenshot-%Y%m%d%H%M%S.png')" | wl-copy && notify-send "Screenshot taken"
bind = SUPERSHIFT, S, exec, grimblast save area - | swappy -f - -o - | shadower | tee "$(xdg-user-dir PICTURES)/Screenshots/$(date +'screenshot-%Y%m%d%H%M%S.png')" | wl-copy && notify-send "Screenshot taken"
bind = SUPERCONTROL, S, exec, grimblast save area - | tee "$(xdg-user-dir PICTURES)/Screenshots/$(date +'screenshot-%Y%m%d%H%M%S.png')" | wl-copy && notify-send "Screenshot taken"
bind = SUPERSHIFT, R, exec, hyprctl reload
bind = SUPER, P, pin
bind = , XF86Launch1, exec, rog-control-center
binde = , XF86Launch3, exec, asusctl led-mode -n
bind = , XF86Launch4, exec, asusctl profile -n; pkill -SIGRTMIN+8 waybar
binde = , XF86KbdBrightnessUp, exec, asusctl -n
binde = , XF86KbdBrightnessDown, exec, asusctl -p
bind = , XF86TouchpadToggle, exec,
bind = SUPER, T, exec, grim -g "$(slurp)" -t ppm - | tesseract -l pol - - | wl-copy && notify-send "Copied text: " "\"$(wl-paste)\""
bind = SUPER, SEMICOLON, exec, ~/.config/rofi/powermenu/type-2/powermenu.sh
bind = SUPER, X, exec, keepassxc
bind = SUPERSHIFT, M, exec, ~/Scripts/man.sh
bind = SUPER, E, exec, wl-paste | spd-say -e -w -i 10
bind = SUPERCONTROL, E, exec, wl-paste | spd-say -e -w -i 10 -l pl
bind = SUPERSHIFT, E, exec, spd-say -C
bind = SUPER, G, togglegroup
binde = SUPERSHIFT, G, changegroupactive, f
bind = SUPERCONTROL, R, exec, replay-sorcery save
bind = SUPERCONTROL, X, exec, ${pkgs.xdg-desktop-portal-hyprland}/libexec/xdg-desktop-portal-hyprland -r
bind = SUPERSHIFT, X, exec, hyprctl kill
bind = SUPER, B, togglespecialworkspace, btop
bind = SUPER, A, togglespecialworkspace, amdgpu_top
bind = SUPER, V, togglespecialworkspace, helvum
bind = SUPER, N, togglespecialworkspace, nixos
bind = SUPER, C, exec, swaylock
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:273, resizewindow
binds {
pass_mouse_when_bound=0
}
exec-once=systemctl start --user waybar.service
exec=systemctl restart --user waybar.service
exec=pkill btop
exec=pkill amdgpu_top
exec=pkill helvum
exec=[workspace special:btop silent;tile] foot btop
exec=[workspace special:amdgpu_top silent] amdgpu_top --gui -i 0
exec=[workspace special:amdgpu_top silent] amdgpu_top --gui -i 1
exec=[workspace special:helvum silent] helvum
exec-once=[workspace special:nixos silent;tile] cd niksos; foot
exec-once=foot --server
exec-once=hyprctl setcursor Bibata-Modern-Classic 24
exec-once=wl-paste --watch cliphist store
exec-once=swww init && sleep 0.5
exec=swww img -o eDP-1 ~/catppuccin-wall0.png
exec=swww img -o HDMI-A-1 ~/catppuccin-wall1.png
exec-once=rog-control-center
exec-once=wlsunset -S 06:00 -s 20:00
exec-once=sleep 1 && keepassxc
exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
#exec-once=foot -e nvim ~/todo.md
exec-once=nm-applet --indicator
exec-once=blueman-applet
exec-once=$HOME/.local/share/hyprload/hyprload.sh
#exec-once=fcitx5 -d
exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=$XDG_CURRENT_DESKTOP
# no black border on grimblast screenshots
layerrule = noanim, ^(selection)$
layerrule = blur, ^(waybar)$
layerrule = blur, ^(eww)$
# temporary fix to swaylock screenshoting rofi before locking
layerrule = noanim, ^(rofi)$
layerrule = blur, ^(anyrun)$
general {
col.active_border=0xFFF5C2E7
col.inactive_border=0xFF45475A
col.group_border_active=0xFFA6E3A1
col.group_border=0xFF45475A
}
decoration {
col.shadow=0xAF1E1E2E
}
plugin {
csgo-vulkan-fix {
res_w = 2560
res_h = 1440
}
split-monitor-workspaces {
count = 10
}
}
'';
};
}

24
modules/gui/mpv.nix Normal file
View file

@ -0,0 +1,24 @@
{
pkgs,
...
}: {
programs.mpv = {
enable = true;
config = {
vo = "gpu-next";
hwdec = "auto";
gpu-api = "vulkan";
vulkan-device = "AMD Radeon RX 6800M (RADV NAVI22)";
volume = 50;
osc = "no";
osd-bar = "no";
border = "no";
};
scripts = with pkgs.mpvScripts; [
mpris
thumbfast
sponsorblock
uosc
];
};
}

53
modules/gui/qt.nix Normal file
View file

@ -0,0 +1,53 @@
{
pkgs,
...
}: {
# thanks raf :3 https://github.com/NotAShelf/nyx/blob/main/homes/notashelf/themes/qt.nix
qt = {
enable = true;
#platformTheme = "qtct";
style = {
name = "Catppuccin-Mocha-Dark";
package = pkgs.catppuccin-kde.override {
flavour = "mocha";
accents = [ "green" ];
};
};
};
home = {
packages = with pkgs; [
qt5.qttools
qt6Packages.qtstyleplugin-kvantum
libsForQt5.qtstyleplugin-kvantum
libsForQt5.qt5ct
breeze-icons
];
sessionVariables = {
QT_STYLE_OVERRIDE = "kvantum";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
QT_QPA_PLATFORM = "wayland;xcb";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
DISABLE_QT_COMPAT = "0";
};
};
xdg.configFile = {
"Kvantum/catppuccin/catppuccin.kvconfig".source = builtins.fetchurl {
url = "https://raw.githubusercontent.com/catppuccin/Kvantum/main/src/Catppuccin-Mocha-Green/Catppuccin-Mocha-Green.kvconfig";
sha256 = "16ry4k09nf5w1gyawwz2ny14zn6infqk40l35lqlg30lhgbdmr5f";
};
"Kvantum/catppuccin/catppuccin.svg".source = builtins.fetchurl {
url = "https://raw.githubusercontent.com/catppuccin/Kvantum/main/src/Catppuccin-Mocha-Green/Catppuccin-Mocha-Green.svg";
sha256 = "1djh625qag34rjsp7y67nzbi9nbmiwgq63ydfizsh65n3fyfakf1";
};
"Kvantum/kvantum.kvconfig".text = ''
[General]
theme=catppuccin
[Applications]
catppuccin=qt5ct, org.qbittorrent.qBittorrent, hyprland-share-picker
'';
};
}

11
modules/gui/rofi.nix Normal file
View file

@ -0,0 +1,11 @@
{
pkgs,
...
}: {
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
cycle = true;
terminal = "foot";
};
}

55
modules/gui/swaylock.nix Normal file
View file

@ -0,0 +1,55 @@
{
inputs,
pkgs,
...
}: {
programs.swaylock = {
enable = true;
package = inputs.nixpkgs-wayland.packages.${pkgs.system}.swaylock-effects;
settings = {
daemonize = true;
show-failed-attempts = true;
clock = true;
screenshots = true;
effect-blur = "9x5";
effect-vignette = "0.5:0.5";
indicator = true;
indicator-radius = 200;
indicator-thickness = 20;
color = "1e1e2e";
bs-hl-color = "f5e0dc";
caps-lock-bs-hl-color = "f5e0dc";
caps-lock-key-hl-color = "a6e3a1";
inside-color = "00000000";
inside-clear-color = "00000000";
inside-caps-lock-color = "00000000";
inside-ver-color = "00000000";
inside-wrong-color = "00000000";
key-hl-color = "a6e3a1";
layout-bg-color = "00000000";
layout-border-color = "00000000";
layout-text-color = "cdd6f4";
line-color = "00000000";
line-clear-color = "00000000";
line-caps-lock-color = "00000000";
line-ver-color = "00000000";
line-wrong-color = "00000000";
ring-color = "b4befe";
ring-clear-color = "f5e0dc";
ring-caps-lock-color = "fab387";
ring-ver-color = "89b4fa";
ring-wrong-color = "eba0ac";
separator-color = "00000000";
text-color = "cdd6f4";
text-clear-color = "f5e0dc";
text-caps-lock-color = "fab387";
text-ver-color = "89b4fa";
text-wrong-color = "eba0ac";
grace = 2;
grace-no-mouse = true;
grace-no-touch = true;
fade-in = 0.2;
ignore-empty-password = true;
};
};
}

543
modules/gui/waybar.nix Normal file
View file

@ -0,0 +1,543 @@
{
inputs,
pkgs,
...
}: {
programs.waybar = {
enable = true;
package = inputs.nixpkgs-wayland.packages.${pkgs.system}.waybar;
systemd.enable = true;
settings.mainBar = {
gtk-layer-shell = true;
layer = "top";
modules-left = [ "custom/launcher" "custom/xwayland" "tray" "hyprland/workspaces" ];
modules-center = [ "hyprland/window" ];
modules-right = [ "custom/dnd" "backlight" /*"cava"*/ "mpd" "pulseaudio" "clock" "battery" "custom/power" ];
pulseaudio = {
tooltip = false;
scroll-step = "1";
format = " {icon} {volume}%";
format-muted = " 󰸈 {volume}%";
format-icons = {
default = ["󰕿" "󰖀" "󰕾"];
};
on-click = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
};
"hyprland/workspaces" = {
sort-by-name = true;
sort-by-coordinates = false;
on-click = "activate";
on-scroll = "~/Scripts/cycle_workspace.sh 1";
active-only = false;
format = "{icon}";
format-icons = {
"1" = "1";
"2" = "2";
"3" = "3";
"4" = "4";
"5" = "5";
"6" = "6";
"7" = "7";
"8" = "8";
"9" = "9";
"10" = "10";
"11" = "1";
"12" = "2";
"13" = "3";
"14" = "4";
"15" = "5";
"16" = "6";
"17" = "7";
"18" = "8";
"19" = "9";
"20" = "10";
};
persistent_workspaces = {
"1" = [ "eDP-1" ];
"2" = [ "eDP-1" ];
"3" = [ "eDP-1" ];
"4" = [ "eDP-1" ];
"5" = [ "eDP-1" ];
"6" = [ "eDP-1" ];
"7" = [ "eDP-1" ];
"8" = [ "eDP-1" ];
"9" = [ "eDP-1" ];
"10" = [ "eDP-1" ];
"11" = [ "HDMI-A-1" ];
"12" = [ "HDMI-A-1" ];
"13" = [ "HDMI-A-1" ];
"14" = [ "HDMI-A-1" ];
"15" = [ "HDMI-A-1" ];
"16" = [ "HDMI-A-1" ];
"17" = [ "HDMI-A-1" ];
"18" = [ "HDMI-A-1" ];
"19" = [ "HDMI-A-1" ];
"20" = [ "HDMI-A-1" ];
};
};
network = {
tooltip = false;
format = "{ipaddr} {icon}";
format-alt = "{icon}";
format-icons = {
wifi = [ "󰖩" ];
ethernet = [ "󰈀" ];
disconnected = [ "󰖪" ];
};
on-click-right = "foot -e nmtui";
};
backlight = {
interval = 1;
align = 0;
rotate = 0;
format = "{icon} {percent}%";
format-icons = [ "󰃚" "󰃛" "󰃜" "󰃝" "󰃞" "󰃟" "󰃠" ];
on-scroll-up = "~/Scripts/bright.sh s +1%";
on-scroll-down = "~/Scripts/bright.sh s 1%-";
smooth-scrolling-threshold = 1;
};
battery = {
interval = 1;
states = {
good = 75;
warning = 30;
critical = 20;
};
format = "{icon}{capacity}%";
format-charging = "󰚥{icon}{capacity}% 󱐋{power}";
format-discharging = "{icon}{capacity}% 󱐋{power}";
format-icons = ["󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
format-charging-icons = ["󰢟" "󰢜" "󰂆" "󰂇" "󰂈" "󰢝" "󰂉" "󰢞" "󰂊" "󰂋" "󰂅"];
};
tray = {
icon-size = 18;
spacing = 10;
};
clock = {
interval = 1;
format = "{:󱑁 %H:%M:%S 󰃰 %d/%m/%Y}";
format-alt = "{:󱑁 %H:%M:%S}";
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='#EBDBB2'><b>{}</b></span>";
days = "<span color='#B16286'><b>{}</b></span>";
weeks = "<span color='#458588'><b>T{:%W}</b></span>";
weekdays = "<span color='#D79921'><b>{}</b></span>";
today = "<span color='#CC241D'><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";
};
};
};
cpu = {
interval = 1;
format = "󰻠 {}%";
max-length = 10;
};
memory = {
interval = 1;
format = "󰍛 {}%";
max-length = 10;
};
"custom/media" = {
interval = 30;
format = "{icon} {}";
return-type = "json";
max-length = 20;
format-icons = {
spotify = " ";
default = " ";
};
escape = true;
exec = "$HOME/.config/system_scripts/mediaplayer.py 2> /dev/null";
on-click = "playerctl play-pause";
};
"custom/launcher" = {
format = "󰣇 ";
on-click = "~/.config/rofi/launchers/type-2/launcher.sh";
on-click-right = "pkill rofi";
};
"custom/power" = {
format = "󰐥";
on-click = "~/.config/rofi/powermenu/type-2/powermenu.sh";
};
"hyprland/window" = {
format = "{}";
separate-outputs = true;
};
gamemode = {
format = "{glyph}";
format-alt = "{glyph} {count}";
glyph = "󰊴";
hide-not-running = true;
use-icon = true;
icon-name = "input-gaming-symbolic";
icon-spacing = 4;
icon-size = 20;
tooltip = true;
tooltip-format = "Games running: {count}";
};
"custom/dnd" = {
exec = "~/Scripts/waybar-dunst.sh";
on-click = "~/Scripts/dnd.sh";
restart-interval = 1;
tooltip = false;
};
cava = {
framerate = 165;
autosens = 1;
sensitivity = 100;
bars = 14;
lower_cutoff_freq = 50;
higher_cutoff_freq = 10000;
method = "pipewire";
source = "auto";
stereo = true;
reverse = false;
bar_delimiter = 0;
monstercat = false;
waves = false;
noise_reduction = 0.77;
input_delay = 2;
format-icons = ["" "" "" "" "" "" "" "" ];
actions = {
on-click-right = "mode";
};
};
"custom/power_profile" = {
exec = "asusctl profile -p | sed s:'Active profile is'::";
interval = 30;
format = "󰈐{}";
format-alt-click = "click-right";
format-alt = "󰈐";
on-click = "asusctl profile -n; pkill -SIGRTMIN+8 waybar";
signal = 8;
};
"custom/xwayland" = {
exec = "hyprctl clients | rg -e 'xwayland: [1]' | wc -l";
interval = 1;
format = "X {}";
};
mpd = {
format = "{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) 󰝚";
format-disconnected = "Disconnected 󰝚";
format-stopped = "Stopped 󰝚";
interval = 1;
tooltip-format = "MPD (connected)";
tooltip-format-disconnected = "MPD (disconnected)";
};
};
style = ''
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;
@define-color text #cdd6f4;
@define-color subtext0 #a6adc8;
@define-color subtext1 #bac2de;
@define-color surface0 #313244;
@define-color surface1 #45475a;
@define-color surface2 #585b70;
@define-color overlay0 #6c7086;
@define-color overlay1 #7f849c;
@define-color overlay2 #9399b2;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color sapphire #74c7ec;
@define-color sky #89dceb;
@define-color teal #94e2d5;
@define-color green #a6e3a1;
@define-color yellow #f9e2af;
@define-color peach #fab387;
@define-color maroon #eba0ac;
@define-color red #f38ba8;
@define-color mauve #cba6f7;
@define-color pink #f5c2e7;
@define-color flamingo #f2cdcd;
@define-color rosewater #f5e0dc;
* {
border-radius: 10px;
font-family: Material Design Icons;
font-size: 16px;
color: @text;
}
window#waybar {
background-color: alpha(@base, 0.5);
border-radius: 0px;
}
window#waybar.hidden {
opacity: 0.2;
}
#window {
margin-top: 4px;
margin-bottom: 4px;
padding-left: 5px;
padding-right: 5px;
background: @mantle;
color: @teal;
font-family: JetBrains Mono;
}
#workspaces {
padding-left: 5px;
}
#workspaces button {
border-radius: 15px;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px;
margin-top: 6px;
margin-right: 3px;
margin-bottom: 6px;
margin-left: 3px;
background-color: @mantle;
min-width: 24px;
}
#workspaces button.active {
padding-top: 0px;
padding-bottom: 0px;
padding-right: 0px;
padding-left: 0px;
margin-top: 6px;
margin-right: 3px;
margin-bottom: 6px;
margin-left: 3px;
background-color: @blue;
min-width: 24px;
}
#workspaces button:hover {
background: alpha(@mantle, 0.7);
transition-property: background, min-width;
transition-duration: 0.5s;
transition-timing-function: ease;
}
#workspaces button.focused {
background-color: @yellow;
}
#workspaces button.urgent {
background-color: @red;
}
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
.modules-right > widget:first-child > #workspaces {
margin-right: 0;
}
#pulseaudio {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 0px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @peach;
/*border-top-left-radius: 0;
border-bottom-left-radius: 0;*/
}
#cava {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
margin-right: 0px;
padding-left: 10px;
padding-right: 0px;
transition: none;
background: @mantle;
color: @peach;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
#battery {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @teal;
}
@keyframes blink {
to {
background-color: @red;
}
}
#battery.charging, #battery.plugged {
background-color: @mantle;
}
#battery.critical:not(.charging) {
background-color: @mantle;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#backlight {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @yellow;
}
#clock {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition-property: min-width;
transition-duration: 0.5s;
background: @mantle;
color: @pink;
}
#custom-power_profile {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @rosewater;
}
#tray {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
}
#custom-launcher {
font-size: 16px;
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 5px;
transition: none;
background: @mantle;
color: @blue;
}
#custom-power {
font-size: 20px;
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
margin-right: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @red;
}
#custom-wallpaper {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
}
#custom-updates {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
}
#custom-media {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
}
#custom-dnd {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @flamingo;
}
#custom-xwayland {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @green;
}
#mpd {
margin-top: 3px;
margin-bottom: 3px;
margin-left: 8px;
padding-left: 10px;
padding-right: 10px;
transition: none;
background: @mantle;
color: @green;
}
'';
};
}

19
modules/gui/zathura.nix Normal file
View file

@ -0,0 +1,19 @@
{
pkgs,
...
}: {
xdg.configFile."zathura/catppuccin-mocha".source = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/catppuccin/zathura/main/src/catppuccin-mocha";
hash = "sha256-/HXecio3My2eXTpY7JoYiN9mnXsps4PAThDPs4OCsAk=";
};
programs.zathura = {
enable = true;
extraConfig = ''
include catppuccin-mocha
'';
options = {
selection-clipboard = "clipboard";
};
};
}

52
modules/other/xdg.nix Normal file
View file

@ -0,0 +1,52 @@
_: let
primary_browser = "firefox-schizo.desktop";
secondary_browser = "firefox-unschizo.desktop";
mail_client = "thunderbird.desktop";
file_manager = "pcmanfm.desktop";
media_player = "mpv.desktop";
image_viewer = "imv.desktop";
text_editor = "nvim.desktop";
in {
xdg.mimeApps = {
enable = true;
defaultApplications = {
"text/html" = [ primary_browser secondary_browser ];
"x-scheme-handler/http" = [ primary_browser secondary_browser ];
"x-scheme-handler/https" = [ primary_browser secondary_browser ];
"x-scheme-handler/about" = [ primary_browser secondary_browser ];
"x-scheme-handler/unknown" = [ primary_browser secondary_browser ];
"x-scheme-handler/mailto" = [ mail_client ];
"message/rfc822" = [ mail_client ];
"x-scheme-handler/mid" = [ mail_client ];
"inode/directory" = [ file_manager ];
"x-scheme-handler/heroic" = [ "heroic.desktop" ];
"audio/mp3" = [ media_player ];
"audio/ogg" = [ media_player ];
"audio/mpeg" = [ media_player ];
"audio/aac" = [ media_player ];
"audio/opus" = [ media_player ];
"audio/wav" = [ media_player ];
"audio/webm" = [ media_player ];
"audio/3gpp" = [ media_player ];
"audio/3gpp2" = [ media_player ];
"video/mp4" = [ media_player ];
"video/x-msvideo" = [ media_player ];
"video/mpeg" = [ media_player ];
"video/ogg" = [ media_player ];
"video/mp2t" = [ media_player ];
"video/webm" = [ media_player ];
"video/3gpp" = [ media_player ];
"video/3gpp2" = [ media_player ];
"image/png" = [ image_viewer ];
"image/jpeg" = [ image_viewer ];
"image/gif" = [ image_viewer ];
"image/avif" = [ image_viewer ];
"image/bmp" = [ image_viewer ];
"image/vnd.microsoft.icon" = [ image_viewer ];
"image/svg+xml" = [ image_viewer ];
"image/tiff" = [ image_viewer ];
"image/webp" = [ image_viewer ];
"text/plain" = [ text_editor ];
};
};
}

View file

@ -1,5 +1,6 @@
_: {
imports = [
./dunst.nix
./mpd.nix
];
}

View file

@ -0,0 +1,85 @@
{
inputs,
pkgs,
...
}: {
services.dunst = {
enable = true;
package = inputs.nixpkgs-wayland.packages.${pkgs.system}.dunst;
settings = {
global = {
monitor = 1;
follow = "none";
width = 300;
height = 300;
origin = "top-center";
offset = "0x15";
scale = 0;
notification_limit = 3;
idle_threshold = 120;
progress_bar = true;
progress_bar_height = 10;
progress_bar_frame_width = 0;
progress_bar_min_width = 150;
progress_bar_max_width = 300;
indicate_hidden = "yes";
transparency = 10;
separator_height = 2;
padding = 10;
frame_width = 3;
frame_color = "#89B4FA";
separator_color = "frame";
highlight = "#89DCEB";
sort = "yes";
font = "JetBrains Mono 12";
line_height = 0;
markup = "full";
format = "<b>%s</b>\n%b";
alignment = "right";
vertical_alignment = "center";
show_age_threshold = 60;
ellipsize = "middle";
ignore_newline = "no";
stack_duplicates = true;
hide_duplicate_count = false;
show_indicators = "yes";
icon_position = "left";
min_icon_size = 0;
max_icon_size = 32;
sticky_history = "yes";
history_length = 20;
dmenu = "${pkgs.rofi-wayland}/bin/rofi";
browser = "${pkgs.xdg-utils}/bin/xdg-open";
always_run_script = true;
title = "Dunst";
class = "dunst";
corner_radius = 10;
ignore_dbusclose = false;
force_xwayland = false;
force_xinerama = false;
mouse_left_click = "do_action, close_current";
mouse_middle_click = "context";
mouse_right_click = "close_all";
};
experimental = {
per_monitor_dpi = false;
};
urgency_low = {
background = "#1E1E2E";
foreground = "#CDD6F4";
timeout = 5;
};
urgency_normal = {
background = "#1E1E2E";
foreground = "#CDD6F4";
timeout = 6;
};
urgency_critical = {
background = "#1E1E2E";
foreground = "#CDD6F4";
frame_color = "#FAB387";
timeout = 0;
};
};
};
}

26
modules/services/mpd.nix Normal file
View file

@ -0,0 +1,26 @@
_: {
services.mpd = {
enable = true;
musicDirectory = "~/Music";
extraConfig = ''
audio_output {
type "pipewire"
name "PipeWire Sound Server"
}
'';
};
services.mpd-mpris = {
enable = true;
mpd = {
host = "127.0.0.1";
network = "unix";
port = 6600;
useLocal = true;
};
};
services.playerctld = {
enable = true;
};
}

17
modules/tui/btop.nix Normal file
View file

@ -0,0 +1,17 @@
_: {
programs.btop = {
enable = true;
settings = {
theme_background = false;
vim_keys = true;
update_ms = 100;
cpu_single_graph = true;
clock_format = "%X";
use_fstab = true;
io_mode = true;
net_sync = true;
net_iface = "enp4s0";
log_level = "WARNING";
};
};
}

View file

@ -1,7 +1,7 @@
_: {
imports = [
./neovim
./btop.nix
./helix.nix
./neovim
];
}

87
modules/tui/helix.nix Normal file
View file

@ -0,0 +1,87 @@
{
lib,
inputs,
pkgs,
...
}: {
programs.helix = {
enable = true;
package = inputs.helix.packages.${pkgs.system}.default.overrideAttrs (self: {
makeWrapperArgs = with pkgs;
self.makeWrapperArgs
or []
++ [
"--suffix"
"PATH"
":"
(lib.makeBinPath [
rustfmt
rust-analyzer
nil
clang-tools
nodePackages.bash-language-server
nodePackages.vscode-css-languageserver-bin
nodePackages.vscode-langservers-extracted
])
];
});
settings = {
theme = "catppuccin_mocha";
editor = {
scrolloff = 7;
mouse = false;
middle-click-paste = false;
line-number = "relative";
auto-completion = false;
auto-format = false;
completion-replace = true;
true-color = true;
undercurl = true;
rulers = [ 80 ];
bufferline = "multiple";
color-modes = true;
lsp = {
display-messages = true;
display-inlay-hints = true;
};
cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
auto-pairs = false;
whitespace.render.newline = "all";
indent-guides.render = true;
};
};
languages = {
language-server = {
nil = {
command = lib.getExe pkgs.nil;
config.nil.formatting.command = [ "${lib.getExe pkgs.alejandra}" "-q" ];
};
clangd = {
command = "${pkgs.clang-tools}/bin/clangd";
clangd.fallbackFlags = [ "-std=c++2b" ];
};
vscode-css-language-server = {
command = "${pkgs.nodePackages.vscode-css-languageserver-bin}/bin/css-languageserver";
args = [ "--stdio" ];
};
};
language = [
{
name = "rust";
auto-format = false;
}
{
name = "html";
file-types = [ "html" ];
}
{
name = "c";
}
];
};
};
}

View file

@ -0,0 +1,184 @@
{
pkgs,
...
}: {
programs.neovim-flake = {
enable = true;
settings = {
vim = {
package = pkgs.neovim-nightly;
viAlias = true;
vimAlias = true;
enableEditorconfig = true;
preventJunkFiles = true;
enableLuaLoader = true;
scrollOffset = 7;
maps = {
normal = {
"gD" = {
action = "vim.lsp.buf.declaration";
lua = true;
};
"gd" = {
action = "vim.lsp.buf.definition";
lua = true;
};
"gi" = {
action = "vim.lsp.buf.implementation";
lua = true;
};
"gr" = {
action = "vim.lsp.buf.references";
lua = true;
};
"K" = {
action = "vim.lsp.buf.hover";
lua = true;
};
"<C-k>" = {
action = "vim.lsp.buf.signature_help";
lua = true;
};
"<leader>wa" = {
action = "vim.lsp.buf.add_workspace_folder";
lua = true;
};
"<leader>wr" = {
action = "vim.lsp.buf.remove_workspace_folder";
lua = true;
};
"<leader>wl" = {
action = ''
function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end
'';
lua = true;
};
"<leader>D" = {
action = "vim.lsp.buf.type_definition";
lua = true;
};
"<leader>r" = {
action = "vim.lsp.buf.rename";
lua = true;
};
"<leader>a" = {
action = "vim.lsp.buf.code_action";
lua = true;
};
"<leader>e" = {
action = "vim.diagnostic.open_float";
lua = true;
};
"<leader>q" = {
action = "vim.diagnostic.setloclist";
lua = true;
};
"[d" = {
action = "vim.diagnostic.goto_prev";
lua = true;
};
"]d" = {
action = "vim.diagnostic.goto_next";
lua = true;
};
"<C-f>" = {
action = ''
function()
vim.lsp.buf.format { async = true }
end
'';
lua = true;
};
};
};
treesitter = {
enable = true;
fold = true;
grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
lua
rust
markdown
markdown-inline
python
];
};
# extraPlugins = with pkgs.vimPlugins; [
#
# ];
lsp = {
formatOnSave = false;
};
languages = {
enableLSP = true;
enableFormat = true;
enableTreesitter = true;
enableExtraDiagnostics = true;
nix.enable = true;
html.enable = true;
ts.enable = true;
rust = {
enable = true;
crates.enable = true;
};
clang = {
enable = true;
lsp = {
enable = true;
server = "clangd";
};
};
};
autocomplete = {
enable = true;
};
telescope.enable = true;
git = {
enable = true;
gitsigns = {
enable = true;
codeActions = true;
};
};
#filetree.chadtree = {
# enable = true;
#};
filetree.nvimTree = {
enable = true;
mappings = {
toggle = "<leader>v";
};
disableNetrw = true;
openOnSetup = false;
};
terminal.toggleterm = {
enable = true;
direction = "float";
mappings.open = "<c-\\>";
};
theme = {
enable = true;
name = "catppuccin";
style = "mocha";
transparent = true;
};
};
};
};
}