Compare commits

...

49 Commits

Author SHA1 Message Date
24ac62ed2e FIXXXX 2026-03-28 22:39:32 +02:00
Kris
291162e613 fix email lol 2026-03-28 22:37:25 +02:00
Kris
46a34a6ef5 upd 2026-03-28 22:37:08 +02:00
Kris
8ed9bd9618 a 2026-03-28 20:49:12 +02:00
Kris
69e881d729 a 2026-03-28 20:05:43 +02:00
Kris
e4e6309652 a 2026-03-28 18:43:25 +02:00
Kris
c87bd55ce3 a 2026-03-28 18:31:43 +02:00
bcb06844ca a 2026-03-28 12:10:55 +02:00
d68c4de197 a 2026-03-28 11:59:56 +02:00
9da17501a5 c 2026-03-28 11:52:30 +02:00
9e58fe4ec5 b 2026-03-28 11:51:52 +02:00
07c74ceacc a 2026-03-28 11:50:21 +02:00
d8bd26b51e a 2026-03-28 11:45:28 +02:00
757eb8a8e5 install 2026-03-28 11:45:27 +02:00
5cea40cfc9 z 2026-03-28 11:21:07 +02:00
48130f4166 DISKO 2026-03-28 00:23:39 +02:00
6df4dbab3a Merge branch 'main' of tangled.org:did:plc:s7cesz7cr6ybltaryy4meb6y/nix 2026-03-28 00:09:54 +02:00
099ef7b987 aa 2026-03-28 00:02:32 +02:00
15bc9617a4 ayy 2026-03-27 23:14:29 +02:00
fc729c8aae a 2026-03-27 23:01:48 +02:00
5d33a277b3 a 2026-03-19 20:23:00 +02:00
6b886eeea8 tailscale 2026-03-19 17:39:44 +02:00
eebf3f6159 feat: add openclaw sandboxed user, sudo policy, fs restrictions, docker proxy, watchdog 2026-03-14 17:02:37 +02:00
2a16184fba pds: prophecy 2026-03-07 11:29:32 +02:00
08f94eaafc pds: tenna 2026-03-07 10:49:33 +02:00
0c42a480c6 openclaw: fix installPhase append newline for brave endpoint patch 2026-02-25 22:07:15 +02:00
47e31d5090 openclaw: patch brave endpoint in installPhase (postInstall not executed) 2026-02-25 22:05:12 +02:00
a292a97d3f openclaw: hard-rewrite Brave web search endpoint to local shim 2026-02-25 22:01:54 +02:00
c95c70f9d2 openclaw: rewrite Brave API base URL to local brave-shim 2026-02-25 21:50:20 +02:00
9a4b06a005 fix? 2026-02-25 16:27:48 +02:00
0a4d68e3fd server: add 1.0.0.1 fallback to forced resolv.conf 2026-02-25 16:05:08 +02:00
c37c83b931 server: lock /etc/nixos read-only and force resolv.conf to 1.1.1.1 2026-02-25 16:03:28 +02:00
98d5f91cc7 browserz 2026-02-25 15:53:00 +02:00
debd90e1c3 server: install rocksky as system package wrapper 2026-02-24 21:22:33 +02:00
d02b8776aa server: add bun/nodejs/node-gyp for bun global CLI installs 2026-02-24 21:19:51 +02:00
a271d6c3b5 server/slop: package brave-shim and run via user systemd service 2026-02-24 19:12:25 +02:00
872df78291 server/slop: add brave shim user service and patch openclaw brave endpoint 2026-02-24 19:00:55 +02:00
d553f10f30 systemd? 2026-02-23 22:19:17 +02:00
0e6c578860 slop 2026-02-23 20:29:18 +02:00
25310fe8b9 works maybe 2026-02-23 18:40:12 +02:00
52c6077591 EVEN MORE DELTARUNE!!!!!!!1!11! 2026-02-13 20:35:14 +02:00
0a43990455 fixxxxxxx 2026-02-11 19:39:57 +02:00
fa13387a4c MORE DELTARUNE!!!! 2026-02-11 19:04:58 +02:00
8b662955ef flake: update 2026-02-11 18:06:59 +02:00
df14f2f780 deltarune mentioned... dark world pds 2026-02-11 17:16:27 +02:00
4c5ac20b4f nix 2026-02-11 17:15:39 +02:00
e4a4329100 nix: remove spacebar 2025-12-26 17:29:42 +02:00
9d1e782753 server: do stuff again 2025-12-21 23:31:15 +02:00
3d698f8631 server: do stuff 2025-12-21 23:31:03 +02:00
110 changed files with 2696 additions and 2015 deletions

4
.gitmodules vendored Normal file
View File

@@ -0,0 +1,4 @@
[submodule "DeltaruneQuickshell"]
path = Shell
url = https://git.ocbwoy3.dev/kris/DeltaruneQuickshell
branch = main

126
README.md
View File

@@ -1,119 +1,19 @@
![](etc/rice_new.png)
![](etc/rice_gentoo.png)
# Kris's Nix
# Keybind reference
<details>
<summary>Asset & Copyright Disclaimers</summary>
| Keybind | What it does |
| --------- | -------------------- |
| `SUPER+Q` | Terminal |
| `SUPER+C` | Close current window |
| `SUPER+E` | File Manager |
| `SUPER+V` | Toggle Floating |
| `SUPER+Q` | Terminal |
| `SUPER+T` | App Launcher |
| `SUPER+P` | Psuedo |
| `SUPER+J` | Toggle Split |
| `SUPER+F` | Fullscreen |
DELTARUNE, its trademark and all related assets are Copyright (c) Toby Fox.
| Keybind | What it does |
| ------------------ | ------------------ |
| `SUPER+RightArrow` | Move Focus (right) |
| `SUPER+LeftArrow` | Move Focus (left) |
| `SUPER+DownArrow` | Move Focus (down) |
| `SUPER+UpArrow` | Move Focus (up) |
**Non-nix packaged fonts used in the rice:**
- [8bitoperator JVE](https://fonts2u.com/8bitoperator-jve-regular.font/)
- [8-bit Operator+](https://www.1001freefonts.com/8-bit-operator.font)
- [Determination Mono](https://fontstruct.com/fontstructions/show/1349263/determination-6-1-2)
| Keybind | What it does |
| ------------------------ | ------------------ |
| `SUPER+SHIFT+RightArrow` | Window width +100 |
| `SUPER+SHIFT+LeftArrow` | Window width -100 |
| `SUPER+SHIFT+DownArrow` | Window height +100 |
| `SUPER+SHIFT+UpArrow` | Window height -100 |
### Determination Mono
- The FontStruction “Determination Mono” (https://fontstruct.com/fontstructions/show/1349263) by MVBit is licensed under a Creative Commons Attribution Share Alike license (http://creativecommons.org/licenses/by-sa/3.0/).
- “Determination Mono” was originally cloned (copied) from the FontStruction “Determination” (https://fontstruct.com/fontstructions/show/1327343) by MVBit , which is licensed under a Creative Commons Attribution Share Alike license (http://creativecommons.org/licenses/by-sa/3.0/).
- “Determination” was in turn cloned (copied) from the FontStruction “Determination” (https://fontstruct.com/fontstructions/show/1212496) by Ryan B, which is licensed under a Creative Commons Attribution Share Alike license (http://creativecommons.org/licenses/by-sa/3.0/).
| Keybind | What it does |
| ----------------------- | ----------------------- |
| `SUPER+CTRL+RightArrow` | Swap window pos (right) |
| `SUPER+CTRL+LeftArrow` | Swap window pos (left) |
| `SUPER+CTRL+UpArrow` | Swap window pos (down) |
| `SUPER+CTRL+DownArrow` | Swap window pos (up) |
| Mouse Keybind | What it does |
| ------------------ | -------------- |
| `SUPER+MouseLeft` | Move window |
| `SUPER+MouseRight` | Resize window |
| `SUPER+ScrollUp` | Next workspace |
| `SUPER+ScrollDown` | Prev workspace |
| Keybind | What it does |
| ------------------- | ---------------------------------------- |
| `SUPER+[0-9]` | Switch to workspace X |
| `SUPER+SHIFT+[0-9]` | Move active window to workspace X |
| `SUPER+Z` | Special workspace |
| `SUPER+SHIFT+Z` | Move current window to special Workspace |
| Keybind | What it does |
| --------------- | ---------------- |
| `SUPER+SHIFT+B` | Reload Waybar |
| `CTRL+ALT+DEL` | WLogout |
| `FN+F5` | Prev music track |
| `FN+F6` | Next music track |
| `FN+F7` | Play/Pause music |
| Keybind | What it does |
| ------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `SUPER+SHIFT+ENTER` | Change wallpaper |
| `SUPER+F1` | Hide waybar |
| `SUPER+F2` | [Roblox](https://roblox.com) [Roblox](https://sober.vinegarhq.org) [Roblox](https://github.com/ocbwoy3/tuxstrap) |
| `SUPER+Space` | Switch Keyboard Layout (English, Latvian) |
## How to install NixOS
1. Install base NixOS from the commandline
- Without UI
- Use this disk configuration
```
/dev/sda1 - 1G fat32 fmask=0022 dmask=0022 vfat
mounts to /boot
# add compress=zstd
/dev/sdb2 - 100% btrfs, with these subvolumes:
root -> /
[noatime] nix -> /nix
home -> /home
root -> /root
```
2. Create user named 'ocbwoy3'
3. Run this in order:
```bash
cd ~
nix-shell -p git
```
4. Run this inside the `nix-shell`
```bash
git clone git@tangled.sh:ocbwoy3.dev/nix
cd config
sudo nixos-rebuild switch --flake .#default --impure --cores 20
```
1. Reboot, run this in your terminal:
```bash
mkdir -p /home/ocbwoy3/Pictures/Screenshots
mkdir -p /home/ocbwoy3/Downloads
mkdir -p /home/ocbwoy3/Desktop
mkdir -p /home/ocbwoy3/Documents
mkdir -p /home/ocbwoy3/Projects
```
6. Add this to `/etc/resolv.conf` as root
```
nameserver 1.1.1.1
```
</details>

1
Shell Submodule

Submodule Shell added at a1f3b451d3

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,40 @@
Congratulations, you have successfully downloaded font file!
This font is provided to you by Fonts2u.com the largest online
repository of free fonts for Windows and Mac.
How to install this font on your computer?
For Windows 7 / Vista users:
- Right-click the font file(s) and choose "Install".
For users of the previous Windows versions:
- Copy the included file(s) into a default Windows font folder
(usually C:\WINDOWS\FONTS or C:\WINNT\FONTS)
For Mac users:
Mac OS X 10.3 or above (including the FontBook)
- Double-click the font file and hit "Install font" button at
the bottom of the preview.
Mac OS X
- Either copy the font file(s) to /Library/Fonts (for all users),
or to /Users/Your_username/Library/Fonts (for you only).
Mac OS 9 or earlier
- You have to convert the font file(s) you have downloaded.
Drag the font suitcases into the System folder. The system
will propose you to add them to the Fonts folder.
For Linux users:
- Copy the font file(s) to /USR/SHARE/FONTS

Binary file not shown.

View File

@@ -0,0 +1,43 @@
Copyright (c) 2009 - 2014 Grand Chaos Productions (http://grandchaos9000.deviantart.com), with Reserved Font Name 8-bit Operator+.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@@ -0,0 +1,12 @@
The FontStruction “Determination Mono”
(https://fontstruct.com/fontstructions/show/1349263) by MVBit is licensed under
a Creative Commons Attribution Share Alike license
(http://creativecommons.org/licenses/by-sa/3.0/).
“Determination Mono” was originally cloned (copied) from the FontStruction
“Determination” (https://fontstruct.com/fontstructions/show/1327343) by
MVBit , which is licensed under a Creative Commons Attribution Share Alike
license (http://creativecommons.org/licenses/by-sa/3.0/).
“Determination” was in turn cloned (copied) from the FontStruction
“Determination” (https://fontstruct.com/fontstructions/show/1212496) by Ryan
B, which is licensed under a Creative Commons Attribution Share Alike license
(http://creativecommons.org/licenses/by-sa/3.0/).

View File

@@ -0,0 +1,26 @@
The font file in this archive was created using Fontstruct the free, online
font-building tool.
This font was created by MVBit *.
This font has a homepage where this archive and other versions may be found:
https://fontstruct.com/fontstructions/show/1349263
*NOTE: “Determination Mono” was originally cloned (copied) from the
FontStruction “Determination”
(https://fontstruct.com/fontstructions/show/1327343) by MVBit , which is
licensed under a Creative Commons Attribution Share Alike license
(http://creativecommons.org/licenses/by-sa/3.0/).
“Determination” was in turn cloned (copied) from the FontStruction
“Determination” (https://fontstruct.com/fontstructions/show/1212496) by Ryan
B, which is licensed under a Creative Commons Attribution Share Alike license
(http://creativecommons.org/licenses/by-sa/3.0/).
Try Fontstruct at https://fontstruct.com
Its easy and its fun.
Fontstruct is copyright ©2016-2025 Rob Meek
LEGAL NOTICE:
In using this font you must comply with the licensing terms described in the
file “license.txt” included with this archive.
If you redistribute the font file in this archive, it must be accompanied by all
the other files from this archive, including this one.

Binary file not shown.

View File

@@ -0,0 +1,2 @@
Asset & Copyright Disclaimer
DELTARUNE, its trademark and all related assets are Copyright (c) Toby Fox.

BIN
asset/thirdparty/deltarune/border.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,14 +0,0 @@
# CachyOS Installation
## 🚀 Quick Start
Run the master installation script to install everything:
```bash
cd /home/ocbwoy3/config/cachyos
./install-all.sh
```
This will automatically run all installation steps in the correct order.
**Note**: This installation is based on the currently written Nix configuration and should do it's best to recreate the same experience you'd get on NixOS, but on CachyOS. All the install scripts are written by Curor's AI, there might be some inaccuracies. Equivalent alternatives for Nix-specific stuff are provided wherever possible.

View File

@@ -1,45 +0,0 @@
#!/bin/bash
# Master Installation Script for Hyprland Rice on CachyOS
# Runs all installation and setup scripts in the correct order
set -e
echo "🚀 OCbwoy3 Dotfiles - CachyOS"
echo "============================="
echo ""
# Get the directory where this script is located
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "📋 This script will:"
echo " 1. Install all required packages for your Hyprland rice"
echo " 2. Install Ralsei cursors"
echo " 3. Set up configuration symlinks and final configuration"
echo ""
echo "⚠️ This process may take a while and will require sudo privileges"
echo ""
read -p "Continue? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "❌ Installation cancelled"
exit 1
fi
echo ""
echo "🔧 CHModing +x install scripts"
chmod +x "$SCRIPT_DIR"/*.sh
echo ""
echo "📦 [1/3] Install packages"
"$SCRIPT_DIR/install-packages.sh"
echo ""
echo "🎮 [2/3] Installing cursors"
"$SCRIPT_DIR/install-cursors.sh"
echo ""
echo "⚙️ [3/3] Installing Hyprland"
"$SCRIPT_DIR/setup.sh"
echo "🚀 Done!"

View File

@@ -1,55 +0,0 @@
#!/bin/bash
# Ralsei Cursors Installation Script for CachyOS
# Installs custom Ralsei cursor theme
set -e
echo "🎮 Installing Ralsei cursors..."
# Create cursor directory
CURSOR_DIR="$HOME/.local/share/icons/RalseiCursors"
mkdir -p "$CURSOR_DIR"
# Copy cursor files from config directory
CONFIG_DIR="~/config"
CURSOR_SOURCE="$CONFIG_DIR/hosts/default/packages/ralsei-cursors/cursors"
if [ -d "$CURSOR_SOURCE" ]; then
echo "📁 Copying cursor files..."
cp -r "$CURSOR_SOURCE"/* "$CURSOR_DIR/"
# Copy theme index file
if [ -f "$CONFIG_DIR/hosts/default/packages/ralsei-cursors/index.theme" ]; then
cp "$CONFIG_DIR/hosts/default/packages/ralsei-cursors/index.theme" "$CURSOR_DIR/"
fi
echo "✅ Ralsei cursors copied successfully!"
else
echo "❌ Cursor source directory not found at: $CURSOR_SOURCE"
echo "Please ensure your config directory structure is correct."
exit 1
fi
# Update icon cache
echo "🔄 Updating icon cache..."
if command -v gtk-update-icon-cache &> /dev/null; then
gtk-update-icon-cache -f -t "$CURSOR_DIR"
echo "✅ Icon cache updated!"
else
echo "⚠️ gtk-update-icon-cache not found. You may need to install gtk-update-icon-cache"
fi
# Set as default cursor theme (optional - user can do this manually)
echo "🎯 Setting Ralsei cursors as default..."
if command -v gsettings &> /dev/null; then
gsettings set org.gnome.desktop.interface cursor-theme "RalseiCursors"
echo "✅ Cursor theme set as default!"
else
echo "⚠️ gsettings not found. You may need to set the cursor theme manually."
fi
# Alternative method using XDG
if command -v xdg-settings &> /dev/null; then
xdg-settings set cursor-theme "RalseiCursors" 2>/dev/null || true
fi

View File

@@ -1,129 +0,0 @@
#!/bin/bash
set -e
echo "🚀 Installing packages for Hyprland"
# Update system first
# echo "📦 Updating system"
# sudo pacman -Syu --noconfirm
# Core Hyprland packages
echo "🎨 Installing Hyprland apps"
sudo pacman -S --needed --noconfirm \
hyprland \
waybar \
wofi \
hyprpaper \
dunst \
hyprlock \
hypridle \
swww
# Essential Wayland tools
echo "🔧 Installing Wayland apps"
sudo pacman -S --needed --noconfirm \
grim \
slurp \
swappy \
wl-clipboard \
wayland-utils \
cliphist \
libnotify
# Audio and media
echo "🎵 Installing media apps"
sudo pacman -S --needed --noconfirm \
pavucontrol \
playerctl \
mpv \
ffmpeg \
gimp \
imagemagick
# Fonts
echo "🔤 Installing fonts"
sudo pacman -S --needed --noconfirm \
noto-fonts \
noto-fonts-cjk \
noto-fonts-emoji \
ttf-nerd-fonts-symbols \
ttf-jetbrains-mono \
ttf-fira-code
# Development tools
echo "💻 Installing dev tools"
sudo pacman -S --needed --noconfirm \
npm \
git \
github-cli \
nix \
bun
# System utilities
echo "🛠️ Installing system tools"
sudo pacman -S --needed --noconfirm \
htop \
btop \
fastfetch \
wget \
curl \
unzip \
jq \
networkmanager \
blueman \
network-manager-applet \
ghostty
# Gaming
echo "🎮 Installing gaming stuff"
sudo pacman -S --needed --noconfirm \
steam \
gamescope \
mangohud
# DE
echo "🖥️ Installing DE components"
sudo pacman -S --needed --noconfirm \
gnome-keyring \
seahorse \
polkit-gnome \
xdg-desktop-portal \
xdg-desktop-portal-gtk \
xdg-desktop-portal-wlr \
qt5ct \
qt6ct \
prismlauncher
# File manager
echo "📁 Installing file manager"
sudo pacman -S --needed --noconfirm \
nautilus
echo "🔍 Installing more tools..."
sudo pacman -S --needed --noconfirm \
vesktop \
obs-studio \
kitty
# Install AUR packages
echo "📦 Installing AUR packages"
if command -v yay &> /dev/null; then
echo "Using yay for AUR packages..."
yay -S --needed --noconfirm \
hyprsysteminfo \
catppuccin-gtk-theme-mocha \
catppuccin-cursors-mocha-blue \
catppuccin-kde \
catppuccin-papirus-folders \
catppuccin-waybar-hyprland \
brave-bin
else
echo "⚠️ Please install yay"
echo "sudo pacman -S cachyos/yay"
fi
# Enable services
echo "🔧 Enabling services"
sudo systemctl enable NetworkManager
sudo systemctl enable bluetooth

View File

@@ -1,172 +0,0 @@
#!/bin/bash
# Setup Script for Hyprland Rice Configuration
# Creates symlinks and performs final setup
set -e
echo "🔧 Setting up Hyprland rice configuration..."
CONFIG_DIR="~/config"
USER_HOME="$HOME"
XDG_CONFIG_HOME="$USER_HOME/.config"
# Function to create symlink
create_symlink() {
local source="$1"
local target="$2"
local description="$3"
if [ -e "$source" ]; then
echo "🔗 Creating symlink: $description"
# Remove existing file/directory if it exists
[ -e "$target" ] && rm -rf "$target"
# Create parent directory if it doesn't exist
mkdir -p "$(dirname "$target")"
# Create symlink
ln -sf "$source" "$target"
echo "$description configured"
else
echo " ⚠️ Source not found: $source"
fi
}
# Create configuration symlinks
echo "📁 Setting up configuration symlinks..."
# Hyprland configuration
create_symlink "$CONFIG_DIR/config/hypr" "$XDG_CONFIG_HOME/hypr" "Hyprland configuration"
# Waybar configuration
create_symlink "$CONFIG_DIR/config/waybar" "$XDG_CONFIG_HOME/waybar" "Waybar configuration"
# Wofi configuration
create_symlink "$CONFIG_DIR/config/wofi" "$XDG_CONFIG_HOME/wofi" "Wofi configuration"
# Dunst configuration
create_symlink "$CONFIG_DIR/config/dunst" "$XDG_CONFIG_HOME/dunst" "Dunst notification daemon"
# Ghostty configuration
create_symlink "$CONFIG_DIR/config/ghostty" "$XDG_CONFIG_HOME/ghostty" "Ghostty terminal configuration"
# Wlogout configuration
create_symlink "$CONFIG_DIR/config/wlogout" "$XDG_CONFIG_HOME/wlogout" "Wlogout configuration"
# Qt5CT configuration
create_symlink "$CONFIG_DIR/config/qt5ct" "$XDG_CONFIG_HOME/qt5ct" "Qt5CT configuration"
# Fastfetch configuration
create_symlink "$CONFIG_DIR/config/fastfetch" "$XDG_CONFIG_HOME/fastfetch" "Fastfetch configuration"
# XDG Desktop Portal configuration
create_symlink "$CONFIG_DIR/config/xdg-desktop-portal" "$XDG_CONFIG_HOME/xdg-desktop-portal" "XDG Desktop Portal configuration"
# Create fonts directory and symlink custom font
echo "🔤 Setting up fonts..."
FONT_DIR="$USER_HOME/.local/share/fonts"
mkdir -p "$FONT_DIR"
create_symlink "$CONFIG_DIR/config/dotfile_deps/DotfilesFont.otf" "$FONT_DIR/DotfilesFont.otf" "Custom Dotfiles font"
# Set up GTK configuration
echo "🎨 Setting up GTK configuration..."
GTK_CONFIG_DIR="$XDG_CONFIG_HOME/gtk-3.0"
mkdir -p "$GTK_CONFIG_DIR"
create_symlink "$CONFIG_DIR/config/gtk-3.0/settings.ini" "$GTK_CONFIG_DIR/settings.ini" "GTK3 settings"
# Install Arashi icon theme
echo "🎯 Installing Arashi icon theme..."
ARASHI_THEME_DIR="$USER_HOME/.local/share/icons/Arashi"
ARASHI_REPO="https://github.com/0hStormy/Arashi"
if [ ! -d "$ARASHI_THEME_DIR" ]; then
mkdir -p "$USER_HOME/.local/share/icons/"
echo " 📥 Cloning Arashi icon theme from GitHub..."
git clone "$ARASHI_REPO" "$ARASHI_THEME_DIR"
echo " ✅ Arashi icon theme installed from GitHub"
else
echo " ✅ Arashi icon theme already installed"
fi
# Set up desktop environment
echo "🖥️ Configuring desktop environment..."
# Set GTK theme
if command -v gsettings &> /dev/null; then
echo "🎨 Setting GTK themes..."
gsettings set org.gnome.desktop.interface gtk-theme "Catppuccin-Mocha-Standard-Blue-Dark"
gsettings set org.gnome.desktop.interface icon-theme "Arashi"
gsettings set org.gnome.desktop.interface cursor-theme "RalseiCursors"
gsettings set org.gnome.desktop.interface font-name "Noto Sans 11"
gsettings set org.gnome.desktop.wm.preferences theme "Catppuccin-Mocha-Standard-Blue-Dark"
echo " ✅ GTK themes configured"
fi
# Set Qt theme
echo "🎨 Setting Qt themes..."
if command -v qt5ct &> /dev/null; then
echo " ✅ Qt5CT available for Qt5 theme configuration"
fi
if command -v qt6ct &> /dev/null; then
echo " ✅ Qt6CT available for Qt6 theme configuration"
fi
# Configure XDG directories
echo "📂 Setting up XDG directories..."
mkdir -p "$USER_HOME/.local/share/applications"
mkdir -p "$USER_HOME/.local/share/mime"
mkdir -p "$USER_HOME/.cache"
# Set up environment variables
echo "🌍 Setting up environment variables..."
sudo tee -a /etc/environment << EOF
# Hyprland rice environment variables
XDG_TERMINAL=ghostty
XDG_SYSTEM_MONITOR=htop
GTK_USE_PORTAL=1
QT_QPA_PLATFORMTHEME=qt5ct
EOF
echo " ✅ Environment variables configured in /etc/environment"
# Create useful scripts
echo "📝 Creating useful scripts..."
SCRIPTS_DIR="$USER_HOME/.local/bin"
mkdir -p "$SCRIPTS_DIR"
# Roblox game scripts
cat > "$SCRIPTS_DIR/regretevator" << 'EOF'
#!/bin/bash
xdg-open roblox://placeId=4972273297
EOF
cat > "$SCRIPTS_DIR/kaijuparadise" << 'EOF'
#!/bin/bash
xdg-open roblox://placeId=6456351776
EOF
cat > "$SCRIPTS_DIR/sewh" << 'EOF'
#!/bin/bash
xdg-open roblox://placeId=16991287194
EOF
# Make scripts executable
chmod +x "$SCRIPTS_DIR/regretevator"
chmod +x "$SCRIPTS_DIR/kaijuparadise"
chmod +x "$SCRIPTS_DIR/sewh"
echo " ✅ Roblox game scripts created"
# Update font cache
echo "🔄 Updating font cache..."
if command -v fc-cache &> /dev/null; then
fc-cache -fv
echo " ✅ Font cache updated"
fi
# Update icon cache
echo "🔄 Updating icon cache..."
if command -v gtk-update-icon-cache &> /dev/null; then
gtk-update-icon-cache -f -t "$USER_HOME/.local/share/icons" 2>/dev/null || true
echo " ✅ Icon cache updated"
fi

View File

@@ -39,7 +39,7 @@
### Text ###
font = SF Pro Display 11, SFProJPDisplay-Regular 11
font = 8-bit Operator+, 8bitoperator JVE, Determination Mono, SF Pro Display 11, SFProJPDisplay-Regular 11
line_height = 0
markup = full
@@ -68,7 +68,7 @@
### Misc/Advanced ###
dmenu = w -p dunst:
browser = zen
browser = zen-beta
always_run_script = true
title = Dunst
class = Dunst
@@ -115,7 +115,7 @@
timeout = 10
[hyprland_welcome_new]
summary = "Sveicināti Hyprland!"
summary = "Welcome to Hyprland!"
background = "#1e1e2e"
frame_color = "#a6e3a1"
foreground = "#a6e3a1"
@@ -128,13 +128,13 @@
foreground = "#fab387"
[dotfiles_kbd]
summary = "Tastatūra"
summary = "Keyboard"
background = "#1e1e2e"
frame_color = "#fab387"
foreground = "#fab387"
[dotfiles_wallpaper]
summary = "Fons"
summary = "Wallpaper"
background = "#1e1e2e"
frame_color = "#fab387"
foreground = "#fab387"
@@ -146,13 +146,13 @@
frame_color = "#f38ba8"
[dotfiles_screenshot]
summary = "Ekrānuzņēmums"
summary = "Screenshot"
background = "#1e1e2e"
frame_color = "#89dceb"
foreground = "#89dceb"
[dotfiles_error]
summary = "Kļūda"
summary = "Error"
background = "#1e1e2e"
foreground = "#f38ba8"
frame_color = "#f38ba8"

View File

@@ -1,100 +0,0 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "~/.config/fastfetch/ralsei.png",
},
"display": {
"color": "magenta",
},
"modules": [
"break",
{
"type": "title",
"keyColor": "blue",
"format": "{user-name-colored}{at-symbol-colored}{host-name-colored}",
},
"break",
{
"type": "os",
"key": "OS",
"format": "{pretty-name}",
},
{
"type": "kernel",
// "format": "Linux 6.17.0-2-cachyos-ralsei-rt-bore-lto"
},
// "packages",
"break",
"host",
"uptime",
"break",
{
"type": "cpu",
"format": "{cores-logical}x {name} @ {freq-base} {temperature}",
"temp": true,
},
{
"type": "gpu",
"format": "{name} [{type}] {temperature}",
"temp": true,
},
"break",
"memory",
"disk",
"break",
{
"type": "wm",
"key": "WM",
"format": "{pretty-name}",
},
{
"type": "shell",
"key": "Shell",
"format": "{pretty-name}",
},
"terminal",
"locale",
/*
"break",
{
"type": "weather",
"location": "Latvia",
"timeout": 1000,
"outputFormat": "%t+-+%C"
},
*/
"break",
{
"type": "media",
"key": "Song",
"format": "{artist} — {title}",
},
{
"type": "media",
"key": "Album",
"format": "{album}",
},
"break",
{
"type": "colors",
"symbol": "circle",
},
],
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 KiB

View File

@@ -1,11 +0,0 @@
font-family = "SF Mono"
theme = Catppuccin Mocha
background-opacity = 0.7
window-padding-x = 16
window-padding-y = 16
font-feature = -calt
font-feature = -liga
font-feature = -dlig
gtk-single-instance = true
window-decoration = none

View File

@@ -1,2 +0,0 @@
bookmarks
bookmarks_2

View File

@@ -1,17 +0,0 @@
[Settings]
gtk-theme-name=catppuccin-mocha-blue-standard+default
gtk-icon-theme-name=Arashi
gtk-font-name=Noto Sans 11
gtk-cursor-theme-name=RalseiCursors
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=0

View File

@@ -1,39 +1,35 @@
# Polkit
# exec-once = systemctl --user start /nix/store/*-hyprpolkitagent-*/libexec/hyprpolkitagent
# Waybar
exec-once = "GTK_THEME=Adwaita LC_TIME=lv_LV.UTF-8 waybar -c ~/config/config/waybar/config -s ~/config/config/waybar/style.css"
exec-once = systemctl --user start /nix/store/*-hyprpolkitagent-*/libexec/hyprpolkitagent
exec-once = /usr/lib/hyprpolkitagent/hyprpolkitagent
# Wallpaper
exec-once = swww-daemon
# Notification Manager
exec-once = dunst
# Gentoo Stuff
exec-once = bash ~/config/scripts/gentoo-init.sh
exec-once = bash /etc/nixos/scripts/gentoo-init.sh
# Clipboard Manager
exec-once = wl-paste --watch cliphist store
# XDG Desktop Portal
exec-once = bash ~/config/scripts/xdg.sh
# Set GTK Settings
exec-once = bash ~/config/scripts/gtk.sh
exec-once = bash /etc/nixos/scripts/xdg.sh
# Start Hot Reload
exec-once = bash ~/config/scripts/hot-reload.sh
exec-once = bash /etc/nixos/scripts/hot-reload.sh
# Hyprland polkit
exec-once = /usr/libexec/hyprpolkitagent
exec-once = /usr/lib/hyprpolkitagent/hyprpolkitagent
exec-once = [workspace special:music silent] cider
exec-once = [workspace special:quick silent] equibop
# exec-once = arrpc
# deltarune
exec-once = qs
# Hyprland Splash
# exec-once = "sleep 5 && bun run scripts/bin/betterSplash.ts"
exec-once = sleep 5 && notify-send "Sveicināti Hyprland!" "$(hyprctl splash)"
exec-once = sleep 5 && notify-send -a dotfiles "Welcome to Hyprland!" "$(hyprctl splash)"
# exec-once = nix-shell -p mpvpaper --command "mpvpaper -o \"no-audio loop loop-playlist\" HDMI-A-2 \"/home/ralsei/Documents/Boykisser Chipi Chipi Full Animation [3sP6ZvlqJeE].webm\""

View File

@@ -15,8 +15,11 @@ general {
gaps_out = 20
border_size = 2
col.active_border = rgb(89b4fa)
col.inactive_border = rgb(585b70)
col.active_border = rgb(ffffff)
col.inactive_border = rgb(ffffff)
# col.active_border = rgb(89b4fa)
# col.inactive_border = rgb(585b70)
resize_on_border = false
allow_tearing = true
@@ -29,7 +32,7 @@ general {
#############################################
decoration {
rounding = 12
# rounding = 12
active_opacity = 1.0
inactive_opacity = 1.0
@@ -103,7 +106,7 @@ cursor {
windowrule {
name = games
match:class = org.vinegarhq.Sober|com.mojang.minecraft.java-edition|deltarune.exe|steam_app_1671210
match:class = org\.vinegarhq\.Sober|com\.mojang\.minecraft\.java-edition|deltarune\.exe|steam_app_1671210
tag = +game
}
@@ -113,9 +116,16 @@ windowrule {
tag = +discord
}
windowrule {
name = roblox
match:class = org\.vinegarhq\.Sober
tag = +roblox
}
windowrule {
name = deltarune
match:class = deltarune.exe|steam_app_1671210
match:class = deltarune\.exe|steam_app_1671210
tag = +deltarune
}
@@ -158,7 +168,7 @@ misc {
enable_anr_dialog = true
disable_hyprland_logo = false
initial_workspace_tracking = 0
new_window_takes_over_fullscreen = 1
# new_window_takes_over_fullscreen = 1
disable_splash_rendering = false
font_family = "SF Pro Display"
render_unfocused_fps = 240
@@ -170,15 +180,6 @@ misc {
# LAYER RULES
#############################################
layerrule {
name = waybar
match:namespace = waybar
animation = slide top
above_lock = 2
order = -20
no_screen_share = off
}
layerrule {
name = notifications
match:namespace = notifications
@@ -186,14 +187,6 @@ layerrule {
above_lock = 2
}
layerrule {
name = wofi
match:namespace = wofi
animation = popin 70%
dim_around = on
order = -10
}
layerrule {
name = shimeji
match:namespace = wl_shimeji
@@ -213,8 +206,8 @@ layerrule {
#############################################
windowrule {
name = blueman music internet
match:class = blueman-manager|blueman-manager-wrapped|org.pulseaudio.pavucontrol|nm-connection-editor|nm-connection-editor-wrapped
name = utility windows
match:class = org\.kde\.systemsettings|systemsettings
float = true
size = 900 500
center = true
@@ -224,7 +217,12 @@ windowrule {
# OTHER
#############################################
windowrule = match:class steam_proton|org.vinegarhq.Sober, allows_input on
windowrule = match:class steam_proton|org\.vinegarhq\.Sober, allows_input on
env = QT_QPA_PLATFORMTHEME,qtct
env = QT_STYLE_OVERRIDE,Darkly
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
# windowrulev2 = immediate, class:^(sober)$
# windowrulev2 = fullscreen,title:^(Sober)$

View File

@@ -6,9 +6,10 @@ bind = $mainMod, C, killactive,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, T, exec, $menu
bind = $mainMod, A, exec, qs ipc call deltarune.shell toggleQuickSettings
bind = $mainMod, Y, exec, $browser
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, J, layoutmsg, togglesplit, # dwindle
bind = $mainMod, F, fullscreen
# Window focus keybinds
@@ -62,15 +63,14 @@ bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Function keys ( FN + F[1-12] )
bindl = , XF86MonBrightnessUp, exec, brightnessctl -q s +10%
bindl = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%-
bindl = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindl = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindl = , XF86AudioPlay, exec, playerctl -p cider,chromium,OCbwoy3_s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone,cmus play-pause
bindl = , XF86AudioPause, exec, playerctl -p cider,chromium,OCbwoy3_s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone,cmus pause
bindl = , XF86AudioNext, exec, playerctl -p cider,chromium,OCbwoy3_s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone,cmus next
bindl = , XF86AudioPrev, exec, playerctl -p cider,chromium,OCbwoy3_s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone,cmus previous
bindl = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindlu = , XF86MonBrightnessUp, exec, brightnessctl -q s +10%
bindlu = , XF86MonBrightnessDown, exec, brightnessctl -q s 10%-
bindlu = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindlu = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindlu = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindlu = , XF86AudioPlay, exec, playerctl -p cider,chromium,Kris___s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone,cmus play-pause
bindlu = , XF86AudioPause, exec, playerctl -p cider,chromium,Kris___s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone,cmus pause
bindlu = , XF86AudioNext, exec, playerctl -p cider,chromium,Kris___s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone,cmus next
bindlu = , XF86AudioPrev, exec, playerctl -p cider,chromium,Kris___s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone,cmus previous
bindlu = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindl = , XF86Lock, exec, pkill -USR1 hyprlock || hyprlock

View File

@@ -6,31 +6,31 @@ bind = $mainMod, GRAVE, togglespecialworkspace, music
bind = $mainMod SHIFT, GRAVE, movetoworkspace, special:music
# Hot reload
bind = $mainMod SHIFT, B, exec, bash ~/config/scripts/hot-reload.sh
bind = $mainMod SHIFT, B, exec, bash /etc/nixos/scripts/hot-reload.sh
# Wallpaper
bind = $mainMod SHIFT, RETURN, exec, pkill wofi || bash ~/config/scripts/select-wallpaper.sh
bind = $mainMod SHIFT, RETURN, exec, bash /etc/nixos/scripts/select-wallpaper.sh
# Screenshot keybinds
bind = $mainMod, PRINT, exec, bash ~/config/scripts/screenshot-selection.sh
bind = $mainMod SHIFT, PRINT, exec, bash ~/config/scripts/screenshot-fullscreen.sh
bind = $mainMod CTRL SHIFT, PRINT, exec, bash ~/config/scripts/edit-last-screenshot.sh
bindu = , PRINT, exec, bash -lc 'env -u QT_STYLE_OVERRIDE QT_QPA_PLATFORMTHEME=qt6ct QT_QPA_PLATFORM=wayland flameshot gui'
bindu = $mainMod SHIFT, PRINT, exec, bash -lc 'env -u QT_STYLE_OVERRIDE QT_QPA_PLATFORMTHEME=qt6ct QT_QPA_PLATFORM=wayland flameshot full --path ~/Pictures/Screenshots'
bind = $mainMod CTRL SHIFT, PRINT, exec, bash -lc 'env -u QT_STYLE_OVERRIDE QT_QPA_PLATFORMTHEME=qt6ct QT_QPA_PLATFORM=wayland flameshot launcher'
# Music Get Keybind
# input:repeat_delay = 10
bindel = $mainMod, BACKSLASH, exec, bash ~/config/scripts/whatsplaying.sh
bindrl = $mainMod, BACKSLASH, exec, bash ~/config/scripts/whatsplaying.sh rel
bindelu = $mainMod, BACKSLASH, exec, bash /etc/nixos/scripts/whatsplaying.sh
# bindrl = $mainMod, BACKSLASH, exec, bash ~/config/scripts/whatsplaying.sh rel
# Global shit
bind = ALT, F9, pass, class:^(com\.obsproject\.Studio)$
# Music volume control
bindl = $mainMod, XF86AudioRaiseVolume, exec, playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone volume 0.02+
bindl = $mainMod, XF86AudioLowerVolume, exec, playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone volume 0.02-
bindl = $mainMod, XF86AudioRaiseVolume, exec, playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone volume 0.02+
bindl = $mainMod, XF86AudioLowerVolume, exec, playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone,OCbwoy3__s_iPhone,OCbwoy3___s_iPhone volume 0.02-
# Screen locker and logout keybinds
bind = CTRL ALT, DELETE, exec, wlogout
bind = CTRL ALT, DELETE, exec, qs ipc call deltarune.shell togglePowerMenu
bindl = SUPER SHIFT, L, exec, pkill -9 hyprlock || hyprlock
# Group Stuff, complicated stuff. Enable if you dare!
@@ -45,8 +45,8 @@ bindl = SUPER SHIFT, L, exec, pkill -9 hyprlock || hyprlock
# bind = $mainMod CTRL ALT, down, moveintogroup, d
# zoom
bind = $mainMod SHIFT CTRL, mouse_down, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 1.25}')"
bind = $mainMod SHIFT CTRL, mouse_up, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 1.25}')"
bindu = $mainMod SHIFT CTRL, mouse_down, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 1.25}')"
bindu = $mainMod SHIFT CTRL, mouse_up, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 1.25}')"
bind = $mainMod SHIFT, M, exec, bun run $HOME/config/scripts/bin/r2Upload.ts
bind = $mainMod, F1, exec, bash $HOME/config/scripts/roblox-fullscreen.sh
@@ -54,7 +54,7 @@ bind = $mainMod, F2, exec, bash -c "xdg-open roblox://"
bind = $mainMod, F5, exec, notify-send -u critical "Hyprland" "Enabled debug overlay" && hyprctl keyword debug:overlay 1
# bind = $mainMod SHIFT, F3, exec, bash -c "NIXPKGS_ALLOW_UNFREE=1 nix-shell -p osu-lazer-bin --command osu\!"
bind = $mainMod CTRL SHIFT, F9, exec, pkill wofi || bash $HOME/config/scripts/open-game.sh
bind = $mainMod CTRL SHIFT, F9, exec, bash $HOME/config/scripts/open-game.sh
bind = $mainMod SHIFT, F, fullscreen, 1
bind = $mainMod, SPACE, exec, bash $HOME/config/scripts/toggle-language.sh

View File

@@ -1,5 +1,5 @@
ecosystem {
enforce_permissions = true
enforce_permissions = false
}
permission = /nix/store/[A-Za-z0-9]+\-(wrapped-)?(grim|hyprlock|xdg-desktop-portal-hyprland|obs-studio|hyprpicker)\-.*, screencopy, allow

View File

@@ -0,0 +1,25 @@
plugin:imgborders {
enabled = true
image = /etc/nixos/asset/thirdparty/deltarune/border.png
sizes = 52,52,52,52 # left, right, top, bottom
insets = 20,20,20,20 # left, right, top, bottom
# 16 16+8=24 16+4=20
# 1 = the same scale in deltarune
scale = 0.5
smooth = true
blur = false
noimgborders = true
}
plugin:dynamic-cursors {
enabled = false
mode = tilt
shake {
enabled = false
}
hyprcursor {
nearest = true
enabled = true
resolution = -12
}
}

View File

@@ -0,0 +1,51 @@
exec-once = qs -p /etc/nixos/Shell/Startup
layerrule {
name = deltarune qs
match:namespace = deltarune-quickshell
animation = slide top
above_lock = 2
order = -20
no_screen_share = off
}
layerrule {
name = deltarune qs dn
match:namespace = deltarune-quickshell-bottom
animation = slide bottom
above_lock = 2
order = -20
no_screen_share = off
}
layerrule {
name = deltarune qs db
match:namespace = deltarune-quickshell-dialogbox
animation = slide bottom
order = 100
above_lock = 2
order = -20
no_screen_share = off
}
bind = SUPER, A, global, deltarune:shell_open
submap = deltarune
bind = SUPER, A, global, deltarune:shell_close
bind = , ESCAPE, global, deltarune:input_back
bind = , Shift_L, global, deltarune:input_back
bind = , Shift_R, global, deltarune:input_back
bind = , X, global, deltarune:input_back
bind = , Z, global, deltarune:input_enter
bind = , ENTER, global, deltarune:input_enter
bind = , RETURN, global, deltarune:input_enter
bind = , UP, global, deltarune:input_up
bind = , DOWN, global, deltarune:input_down
bind = , LEFT, global, deltarune:input_left
bind = , RIGHT, global, deltarune:input_right
submap = reset

View File

@@ -5,16 +5,15 @@ $mainMod = SUPER
# Programs
$terminal = ghostty
$fileManager = nautilus
$menu = wofi --show drun
$browser = zen-browser
$terminal = kitty
$fileManager = dolphin
$menu = qs ipc call deltarune.shell toggleAppLauncher
$browser = zen-beta
# Cursor
exec = hyprctl setcursor RalseiCursors 24
# RalseiCursors 24
env = HYPRCURSOR_THEME,RalseiCursors
env = HYPRCURSOR_SIZE,24
env = XCURSOR_THEME,RalseiCursors
env = XCURSOR_SIZE,24
@@ -37,7 +36,6 @@ env = XDG_SESSION_DESKTOP,Hyprland
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_QPA_PLATFORMTHEME,qt5ct
# NVIDIA Env

21
config/hypr/hyprland.conf Executable file → Normal file
View File

@@ -1,20 +1,19 @@
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/
exec-once = hyprctl notify 1 5000 0 " Hyprland!!"
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = dbus-update-activation-environment DISPLAY WAYLAND_DISPLAY
source = ~/config/config/hypr/config/variables.conf
source = ~/config/config/hypr/config/display.conf
source = ~/config/config/hypr/config/input.conf
source = ~/config/config/hypr/config/keybindings/default.conf
source = ~/config/config/hypr/config/keybindings/other.conf
source = ~/config/config/hypr/config/autoexec.conf
source = ~/.config/hypr/config/variables.conf
source = ~/.config/hypr/config/display.conf
source = ~/.config/hypr/config/input.conf
source = ~/.config/hypr/config/keybindings/default.conf
source = ~/.config/hypr/config/keybindings/other.conf
source = ~/.config/hypr/config/autoexec.conf
source = ~/.config/hypr/config/permissions.conf
source = ~/.config/hypr/config/rice/deltarune.conf
# hyprlang noerror true
source = ~/config/config/hypr/config/permissions.conf
source = ~/.config/hypr/config/plugin.conf
# hyprlang noerror false

View File

@@ -12,7 +12,8 @@ general {
#BACKGROUND
background {
monitor =
path = ~/Pictures/Wallpapers/kris_ralsei_kissing.png # definetly not a picture of kris and ralsei kissing!!
color = rgba(0,0,0,0)
# path = ~/Pictures/Wallpapers/israel.png # definetly not a picture of kris and ralsei kissing!!
}
input-field {
@@ -25,12 +26,12 @@ input-field {
inner_color = rgba(0, 0, 0, 0)
check_color = rgba(0, 0, 0, 0)
fail_color = rgba(0, 0, 0, 0)
font_color = rgb(245, 194, 231)
font_color = rgb(255, 0, 255)
fade_on_empty = false
font_family = Symbols Nerd Font, SF Pro Display
placeholder_text = Session locked, enter password to unlock!
hide_input = false
fail_text = Password hint: Favorite Character - Deltarune, not Regretevator!
fail_text = wrong password mf
position = 0, -30
halign = center
valign = top

62
config/kitty/kitty.conf Normal file
View File

@@ -0,0 +1,62 @@
foreground #ffffff
background #000000
font_family family="Determination Mono"
font_size 15
disable_ligatures always
bold_font auto
italic_font auto
bold_italic_font auto
cursor_shape beam
cursor_trail 1
window_padding_width 16
# vim:ft=kitty
## name: Catppuccin Kitty Diff Mocha
## author: Catppuccin Org
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/diff-mocha.conf
## blurb: Soothing pastel theme for the high-spirited!
# text
# foreground #cdd6f4
# base
# background #1e1e2e
# subtext0
title_fg #a6adc8
# mantle
title_bg #181825
margin_bg #181825
# subtext1
margin_fg #a6adc8
# mantle
filler_bg #181825
# 30% red, 70% base
removed_bg #5e3f53
# 50% red, 50% base
highlight_removed_bg #89556b
# 40% red, 60% base
removed_margin_bg #734a5f
# 30% green, 70% base
added_bg #475a51
# 50% green, 50% base
highlight_added_bg #628168
# 40% green, 60% base
added_margin_bg #734a5f
# mantle
hunk_margin_bg #181825
hunk_bg #181825
# 40% yellow, 60% base
search_bg #766c62
# text
search_fg #cdd6f4
# 30% sky, 70% base
select_bg #3e5767
# text
select_fg #cdd6f4

View File

@@ -1,4 +0,0 @@
[ColorScheme]
active_colors= #ffcdd6f4, #ff45475a, #ff585b70, #ff313244, #ff11111b, #ff181825, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff11111b, #ff89b4fa, #ff11111b, #ff89b4fa, #ffb4befe, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086
inactive_colors=#ff7f849c, #ff1e1e2e, #ff45475a, #ff313244, #ff11111b, #ff181825, #ff7f849c, #ffcdd6f4, #ff7f849c, #ff1e1e2e, #ff181825, #ff11111b, #ff313244, #ff7f849c, #ff7f849c, #ff7f849c, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086
disabled_colors=#ff6c7086, #ff313244, #ff45475a, #ff313244, #ff11111b, #ff181825, #ff6c7086, #ffcdd6f4, #ff6c7086, #ff1e1e2e, #ff181825, #ff11111b, #ff181825, #ff6c7086, #ffa9bcdb, #ffc7cceb, #ff181825, #ffffffff, #ff1e1e2e, #ffcdd6f4, #806c7086

View File

@@ -1,32 +0,0 @@
[Appearance]
color_scheme_path=/home/ralsei/.config/qt5ct/colors/catppuccin-mocha-blue.conf
custom_palette=true
icon_theme=Arashi
standard_dialogs=default
style=Fusion
[Fonts]
fixed="Geist Mono,9,-1,5,50,0,0,0,0,0"
general="Sans Serif,9,-1,5,50,0,0,0,0,0"
[Interface]
activate_item_on_single_click=1
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=1
double_click_interval=400
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
keyboard_scheme=1
menus_have_icons=true
show_shortcuts_in_context_menus=true
stylesheets=@Invalid()
toolbutton_style=4
underline_shortcut=1
wheel_scroll_lines=3
[SettingsWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\x16\0\0\0\x33\0\0\x3\xb8\0\0\x4!\0\0\0\x16\0\0\0\x33\0\0\x3\xb8\0\0\x4!\0\0\0\0\0\0\0\0\a\x80\0\0\0\x16\0\0\0\x33\0\0\x3\xb8\0\0\x4!)
[Troubleshooting]
force_raster_widgets=1
ignored_applications=@Invalid()

View File

@@ -1,4 +0,0 @@
[ColorScheme]
active_colors=#ff232629, #fffcfcfc, #ffffffff, #fff9fafa, #ff71757a, #ffbdc1c6, #ff232629, #ffffffff, #ff232629, #ffffffff, #ffeff0f1, #ff3b3d3f, #ff3daee9, #ffffffff, #ff2980b9, #ff9b59b6, #fff7f7f7, #ffffffff, #fff7f7f7, #ff232629, #80ffffff
disabled_colors=#ff808080, #ff424245, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff808080, #ffffffff, #ff808080, #ff3d3d3d, #ff222020, #ffe7e4e0, #ff12608a, #ff808080, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff3f3f36, #ffffffff, #80ffffff
inactive_colors=#ff232629, #fffcfcfc, #ffffffff, #fff9fafa, #ff71757a, #ffbdc1c6, #ff232629, #ffffffff, #ff232629, #ffffffff, #ffeff0f1, #ff3b3d3f, #ff3daee9, #ffffffff, #ff2980b9, #ff9b59b6, #fff7f7f7, #ffffffff, #fff7f7f7, #ff232629, #80ffffff

View File

@@ -6,7 +6,7 @@
"margin-right": 8,
"spacing": 10,
"include": [
"~/config/config/waybar/modules.json"
"~/.config/waybar/modules.json"
],
"modules-left": [
"hyprland/workspaces",
@@ -14,7 +14,8 @@
],
"modules-right": [
// "custom/regretevator_state",
"custom/cider",
//"custom/cider",
"mpris",
"group/traygroup",
"clock"
]

View File

@@ -9,11 +9,9 @@
"pulseaudio#lol"
]
},
"custom/middle-split": {
"format": " "
},
"mpris": {
"players": [
"chromium",
@@ -21,14 +19,14 @@
"elisa",
"cider",
"spotify",
"OCbwoy3_s_iPhone"
"Kris_s_iPhone"
],
"interval": 1,
"on-scroll-up": "playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone volume 0.05+",
"on-scroll-down": "playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone volume 0.05-",
"on-click": "playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone play-pause",
"on-click-right": "playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone next",
"on-click-middle": "playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone previous",
"on-scroll-up": "playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone volume 0.05+",
"on-scroll-down": "playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone volume 0.05-",
"on-click": "playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone play-pause",
"on-click-right": "playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone next",
"on-click-middle": "playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone previous",
"format": " {artist} — {title}",
// "format": " {title}",
"tooltip-format": "{album}",
@@ -37,32 +35,29 @@
"smooth-scrolling-treshold": 40,
"max-length": 60
},
"custom/cider": {
"restart-interval": 1,
"return-type": "json",
// "exec": "bun run ~/config/scripts/bin/actWithMusic.ts waybar",
"exec": "~/config/scripts/bin/ocbwoy3-actwithmus waybar",
"on-scroll-up": "playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone volume 0.05+",
"on-scroll-down": "playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone volume 0.05-",
"on-click": "playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone play-pause",
"on-click-right": "playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone next",
"on-click-middle": "playerctl -p chromium,cmus,elisa,cider,spotify,OCbwoy3_s_iPhone previous"
"exec": "/etc/nixos/scripts/bin/ocbwoy3-actwithmus waybar",
"on-scroll-up": "playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone volume 0.05+",
"on-scroll-down": "playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone volume 0.05-",
"on-click": "playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone play-pause",
"on-click-right": "playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone next",
"on-click-middle": "playerctl -p chromium,cmus,elisa,cider,spotify,Kris___s_iPhone previous"
},
"custom/regretevator_state": {
"restart-interval": 1,
"return-type": "json",
"exec": "cat /tmp/.regretevator_state"
},
"hyprland/window": {
"format": "{}",
// "tooltip": "{initialClass}",
"rewrite": {
"(Support Hyprland|MainPicker|Hyprland Updated)": "Hyprland",
"DELTARUNE": "Deltarune",
"DELTARUNE Chapter ([0-9]+)": "Deltarune",
// "DELTARUNE Chapter ([0-9]+)": "Deltarune",
"Sober": "Roblox",
"vinegar": "Vinegar",
"RobloxStudio": "Roblox Studio",
@@ -70,14 +65,16 @@
"PORTAL 2 - (OpenGL|Vulkan)": "Portal 2",
"HALF-LIFE 2 - (OpenGL|Vulkan)": "Half-Life 2",
"(.*) - Google( Search| meklēšana)?": "$1",
"Cider": "Apple Music",
"swappy": "Swappy",
"(.*) — (Firefox( Developer Edition)|Zen Browser)?": "$1"
// "(.*) - PDSls": "$1",
"(.*) — Mozilla Firefox": "$1",
"(.*) - PDSls — Mozilla Firefox": "PDSls",
"(.*) — ((Mozilla )?Firefox( Developer Edition)|Zen Browser)?": "$1",
"(.*) - PDSls": "$1"
},
"separate-outputs": false
},
"hyprland/workspaces": {
"on-click": "activate",
"active-only": false,
@@ -93,12 +90,10 @@
"*": 1
}
},
"tray": {
"icon-size": 21,
"spacing": 10
},
"clock": {
"timezone": "Europe/Riga",
"locale": "lv_LV.UTF-8",
@@ -117,32 +112,37 @@
"format-alt": "{:%H:%M:%S}",
"interval": 1
},
"pulseaudio": {
"format": "{icon}",
"format-muted": "",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"default": ["", "", ""]
"default": [
"",
"",
""
]
},
"tooltip-format": "{desc}\n{icon} {volume}%",
"on-click": "pavucontrol"
"on-click": "qs ipc call deltarune.shell toggleQuickSettings"
},
"pulseaudio#lol": {
"format": "{volume}%",
"format-muted": "0%",
"format-source": "{volume}%",
"format-source-muted": "0%",
"format-icons": {
"default": ["", "", ""]
"default": [
"",
"",
""
]
},
"tooltip-format": "{desc}\n{icon} {volume}%",
"on-click": "pavucontrol",
"on-click": "qs ipc call deltarune.shell toggleQuickSettings",
"class": "pulseaudio-lol"
},
"network": {
"format": "󰈁",
"format-wifi": "",
@@ -153,16 +153,15 @@
"tooltip-format-ethernet": " {ifname}\n  {bandwidthUpBits}  {bandwidthDownBits}",
"tooltip-format-disconnected": "󰈂",
"max-length": 50,
"on-click": "nm-connection-editor"
"on-click": "kitty -e nmtui"
},
"bluetooth": {
"format": "",
"format-disabled": "󰂲",
"format-off": "",
"tooltip-format": "Ierīces pieslēgas Bluetooth: {num_connections}",
"interval": 1,
"on-click": "blueman-manager",
"on-click": "qs ipc call deltarune.shell toggleQuickSettings",
"format-no-controller": ""
}
}

View File

@@ -1,7 +1,7 @@
* {
font-family: "SF Pro Display", SFProJPDisplay-Regular, "Symbols Nerd Font";
font-family: "8-bit Operator+", "Determination Mono", "8bitoperator JVE", "SF Pro Display", SFProJPDisplay-Regular, "Symbols Nerd Font";
border: none;
font-size: 15px;
font-size: 13px;
min-height: 10px;
/* max-height: 10px; */
}
@@ -28,7 +28,7 @@ window#waybar {
}
#clock {
font-family: "SF Pro Display", SFProJPDisplay-Regular, "Symbols Nerd Font";
font-family: "8-bit Operator+", "Determination Mono", "8bitoperator JVE", "SF Pro Display", SFProJPDisplay-Regular, "Symbols Nerd Font";
}
#traygroup,
@@ -46,7 +46,7 @@ window#waybar {
#custom-regretevator_state,
#custom-cider {
font-family:
"DotfilesFont", SFProJPDisplay-Regular, "Symbols Nerd Font", "Geist";
"DotfilesFont", "8-bit Operator+", "Determination Mono", "8bitoperator JVE", SFProJPDisplay-Regular, "Symbols Nerd Font", "Geist";
}
#mpris,
@@ -69,6 +69,7 @@ window#waybar {
#workspaces button.active {
color: #cba6f7;
font-weight: bolder;
font-family: "Determination Mono";
}
#tray {
@@ -133,7 +134,7 @@ window#waybar {
}
tooltip {
font-family: "SF Pro Display", SFProJPDisplay-Regular, "Symbols Nerd Font";
font-family: "8-bit Operator+", "Determination Mono", "8bitoperator JVE", "SF Pro Display", SFProJPDisplay-Regular, "Symbols Nerd Font";
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
border-radius: 4px;
@@ -144,7 +145,7 @@ tooltip {
}
tooltip * {
font-family: "SF Pro Display", SFProJPDisplay-Regular, "Symbols Nerd Font";
font-family: "8-bit Operator+", "Determination Mono", "8bitoperator JVE", "SF Pro Display", SFProJPDisplay-Regular, "Symbols Nerd Font";
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
color: #cdd6f4;

View File

@@ -12,7 +12,7 @@
}
{
"label" : "logout",
"action" : "pkill -9 -u ralsei",
"action" : "pkill -9 -u kris",
"text" : "Logout",
"keybind" : "e"
}

View File

@@ -1,7 +1,7 @@
* {
background-image: none;
box-shadow: none;
font-family: "SF Pro Display", "Symbols Nerd Font";
font-family: "8-bit Operator+", "SF Pro Display", "Symbols Nerd Font";
font-size: 18px;
}
@@ -36,36 +36,36 @@ button:hover {
#lock {
background-image: image(
url("/home/ralsei/config/config/wlogout/assets/lock.png")
url("/etc/nixos/config/wlogout/assets/lock.png")
);
}
#logout {
background-image: image(
url("/home/ralsei/config/config/wlogout/assets/logout.png")
url("/etc/nixos/config/wlogout/assets/logout.png")
);
}
#suspend {
background-image: image(
url("/home/ralsei/config/config/wlogout/assets/suspend.png")
url("/etc/nixos/config/wlogout/assets/suspend.png")
);
}
#hibernate {
background-image: image(
url("/home/ralsei/config/config/wlogout/assets/hibernate.png")
url("/etc/nixos/config/wlogout/assets/hibernate.png")
);
}
#shutdown {
background-image: image(
url("/home/ralsei/config/config/wlogout/assets/shutdown.png")
url("/etc/nixos/config/wlogout/assets/shutdown.png")
);
}
#reboot {
background-image: image(
url("/home/ralsei/config/config/wlogout/assets/reboot.png")
url("/etc/nixos/config/wlogout/assets/reboot.png")
);
}

View File

@@ -2,7 +2,7 @@
prompt=Meklēt...
allow_images=true
allow_markup=true
term=ghostty
term=kitty
dynamic_lines=true
normal_window=false
insensitive=true

View File

@@ -1,3 +0,0 @@
[preferred]
default = hyprland;gtk
# org.freedesktop.impl.portal.FileChooser = gnome

1152
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,9 @@
{
description = "https://tangled.sh/@ocbwoy3.dev/nix";
description = "Not a Deltarune reference!";
inputs = {
self.submodules = true;
# Core
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
@@ -15,51 +17,76 @@
};
hyprlock.url = "github:hyprwm/hyprlock";
hyprsysteminfo.url = "github:hyprwm/hyprsysteminfo";
ghostty.url = "github:ghostty-org/ghostty";
zen-browser.url = "github:0xc000022070/zen-browser-flake";
# Programs
tuxstrap.url = "git+https://tangled.sh/@ocbwoy3.dev/tuxstrap";
hypr-dynamic-cursors = {
url = "github:VirtCode/hypr-dynamic-cursors";
inputs.hyprland.follows = "hyprland";
};
imgborders = {
url = "git+https://codeberg.org/zacoons/imgborders";
inputs.hyprland.follows = "hyprland";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "hyprland/systems";
};
zen-browser.url = "github:0xc000022070/zen-browser-flake/beta";
quickshell = {
url = "github:outfoxxed/quickshell";
inputs.nixpkgs.follows = "nixpkgs";
};
# Package tooling
disko.url = "github:nix-community/disko";
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1";
nvf.url = "github:notashelf/nvf";
# Extras
tangled.url = "git+https://tangled.sh/@tangled.sh/core";
tangled.url = "git+https://tangled.org/did:plc:wshs7t2adsemcrrd4snkeqli/core";
vscode-server.url = "github:nix-community/nixos-vscode-server";
spacebar = {
url = "github:spacebarchat/server";
inputs.nixpkgs.follows = "nixpkgs";
};
# slop
openclaw.url = "github:openclaw/nix-openclaw";
deltarune-grub-theme = {
url = "git+https://tangled.org/did:plc:s7cesz7cr6ybltaryy4meb6y/deltarune-grub-theme";
flake = false;
};
};
# Required by NixOS:
# ./hardware-configuration.nix
# inputs.home-manager.nixosModules.default
# catppuccin.nixosModules.catppuccin
# nix-flatpak.nixosModules.nix-flatpak
outputs = { self, nixpkgs, ... }@inputs: {
nixosConfigurations.installer = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
inherit inputs;
};
modules = [
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
./hosts/installer/configuration.nix
];
};
packages.x86_64-linux.installerIso =
self.nixosConfigurations.installer.config.system.build.isoImage;
nixosConfigurations.default = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs;
};
modules = [
# inputs.nixos-hardware.nixosModules.common-gpu-nvidia
inputs.home-manager.nixosModules.default
inputs.disko.nixosModules.disko
inputs.catppuccin.nixosModules.catppuccin
inputs.nix-flatpak.nixosModules.nix-flatpak
# inputs.chaotic.nixosModules.default
inputs.hyprland.nixosModules.default
inputs.chaotic.nixosModules.nyx-cache
inputs.chaotic.nixosModules.nyx-overlay
inputs.chaotic.nixosModules.nyx-registry
# ./hosts/default/hardware-configuration.nix
# lil hack to not use --impure when rebuilding nixos >:3
"/etc/nixos/hardware-configuration.nix"
./hosts/default/disko.nix
./hosts/default/hardware-configuration.nix
./hosts/default/configuration.nix
];
};
nixosConfigurations.server = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs;
@@ -69,17 +96,20 @@
inputs.tangled.nixosModules.knot
inputs.tangled.nixosModules.spindle
inputs.vscode-server.nixosModules.default
inputs.chaotic.nixosModules.nyx-cache
inputs.chaotic.nixosModules.nyx-overlay
inputs.chaotic.nixosModules.nyx-registry
# lil hack to not use --impure when rebuilding nixos >:3
"/etc/nixos/hardware-configuration.nix"
./modules/openclaw-user.nix
./modules/openclaw-sudo.nix
./modules/openclaw-fs.nix
./modules/openclaw-docker.nix
./modules/openclaw-docker-env.nix
./modules/openclaw-watchdog.nix
./hosts/server/configuration.nix
./hosts/server/hardware-configuration.nix
];
};
nixosConfigurations.fix_nixpkgs = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs;

View File

@@ -1,6 +1,9 @@
{ config, inputs, pkgs, lib, ... }:
{
let
userName = "kris";
realName = "Kris";
in {
imports = [
../../modules/forceMainPC.nix
@@ -12,14 +15,16 @@
# ./apps/ancs.nix
];
services.displayManager.gdm.enable = true;
services.displayManager.sddm.enable = true;
services.displayManager.sddm.wayland.enable = true;
services.displayManager.autoLogin = {
enable = true;
user = userName;
};
boot.kernelPackages = (pkgs.linuxPackages_cachyos-lto.override {
ticksHz = 1000;
useLTO = "full";
# extraMakeFlags = ["-O3"];
withoutDebug = true;
});
boot.loader.grub.theme = lib.mkDefault inputs.deltarune-grub-theme;
# boot.kernelPackages = pkgs.linuxPackages_cachyos-lto;
services.scx.enable = true;
services.scx.scheduler = "scx_bpfland";
@@ -37,20 +42,6 @@
# services.ancs.enable = true;
services.flatpak.enable = true;
services.flatpak.remotes = [
{
name = "flathub";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}
];
services.flatpak.packages = [
{
appId = "com.modrinth.ModrinthApp";
origin = "flathub";
}
];
services.printing = {
enable = true;
drivers = with pkgs; [
@@ -67,18 +58,14 @@
openFirewall = false;
};
programs.virt-manager.enable = true;
users.groups.libvirtd.members = [ "ocbwoy3" ];
virtualisation.libvirtd.enable = true;
# virtualisation.waydroid.enable = true;
virtualisation.spiceUSBRedirection.enable = true;
networking.extraHosts = ''
# dont worry, i still don't like the guy
# but i need to community note roblox on how their moderation is still shit
# at this point just hire the goober project to take them down for you
'';
networking.hostName = "darkworld";
powerManagement.enable = true;
services.avahi = {
@@ -91,12 +78,6 @@
};
};
# Sadly, I don't know how to install flatpaks like this.
# services.flatpak.packages = [
# "com.usebottles.bottles"
# { flatpakref = "https://sober.vinegarhq.org/sober.flatpakref"; sha256 = "0"; }
# ];
programs.hyprland = {
enable = true;
xwayland.enable = true;
@@ -119,13 +100,9 @@
equibop
code-cursor
kdePackages.kdenlive
libsForQt5.qt5ct
catppuccin-qt5ct
darkly
kdePackages.qt6ct
hyfetch
kitty
inputs.ghostty.packages.${pkgs.stdenv.hostPlatform.system}.ghostty
];
qt.enable = true;
@@ -134,28 +111,22 @@
xdg.terminal-exec.enable = true;
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
extraPortals = [
pkgs.xdg-desktop-portal-gnome
pkgs.xdg-desktop-portal-gtk
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
];
config.common.default = [ "hyprland" "gtk" ];
};
# environment.variables.XDG_TERMINAL = "${inputs.ghostty.packages.${pkgs.stdenv.hostPlatform.system}.ghostty}/bin/ghostty";
# environment.variables.XDG_SYSTEM_MONITOR = "${pkgs.htop}/bin/htop";
environment.variables.XDG_TERMINAL = "ghostty";
environment.variables.XDG_TERMINAL = "kitty";
environment.variables.XDG_SYSTEM_MONITOR = "htop";
environment.variables.GTK_USE_PORTAL = "1";
environment.sessionVariables.GTK_USE_PORTAL = 1;
fileSystems = {
"/".options = [ "compress=zstd" ];
"/home".options = [ "compress=zstd" ];
"/nix".options = [ "compress=zstd" "noatime" ];
};
services.btrfs.autoScrub = {
enable = true;
interval = "monthly";
@@ -165,8 +136,8 @@
# CHANGE YOUR NAME IN HOME MANAGER!
# BETTER YET, DON'T TOUCH THIS. AT ALL.
main-user.userName = "ocbwoy3";
main-user.realName = "OCbwoy3";
main-user.userName = userName;
main-user.realName = realName;
services.fstrim.enable = true;
systemd.services.fstrim.enable = false;
@@ -177,6 +148,7 @@
programs.dconf.enable = true;
services.gvfs.enable = true;
services.flatpak.enable = true;
# home-manager.services.mpris-proxy.enable = true;
@@ -188,7 +160,10 @@
accent = "blue";
};
home-manager.users.ocbwoy3 = { programs, config, pkgs, ... }: {
home-manager.users.${userName} = { programs, config, pkgs, ... }:
let
system = pkgs.stdenv.hostPlatform.system;
in {
imports = [
inputs.catppuccin.homeModules.catppuccin
@@ -197,11 +172,7 @@
gtk = {
enable = true;
cursorTheme = {
name = "RalseiCursors";
package = pkgs.callPackage ./packages/ralsei-cursors/default.nix {};
};
gtk4.theme = config.gtk.theme;
iconTheme = {
name = "Arashi";
@@ -209,12 +180,83 @@
};
};
home.pointerCursor = {
name = "RalseiCursors";
package = pkgs.callPackage ./packages/ralsei-cursors/default.nix {};
size = 24;
gtk.enable = true;
x11.enable = true;
};
catppuccin = {
enable = true;
flavor = "mocha";
accent = "blue";
# we're already using arashi
gtk.icon.enable = false;
cursors.enable = false;
kvantum.enable = false;
qt5ct.enable = false;
};
home.packages = with pkgs; [
libsForQt5.qt5ct
qt6Packages.qt6ct
darkly-qt5
darkly
];
qt = {
enable = true;
platformTheme.name = "qtct";
style.name = "Darkly";
qt5ctSettings = {
Appearance = {
color_scheme_path = "${pkgs.catppuccin-qt5ct}/share/qt5ct/colors/catppuccin-mocha-blue.conf";
custom_palette = true;
icon_theme = "Arashi";
standard_dialogs = "default";
style = "Darkly";
};
};
qt6ctSettings = {
Appearance = {
color_scheme_path = "${pkgs.catppuccin-qt5ct}/share/qt6ct/colors/catppuccin-mocha-blue.conf";
custom_palette = true;
icon_theme = "Arashi";
standard_dialogs = "default";
style = "Darkly";
};
};
};
xdg.mimeApps = {
enable = true;
defaultApplications = {
"default-web-browser" = [ "zen-beta.desktop" ];
"text/html" = [ "zen-beta.desktop" ];
"x-scheme-handler/http" = [ "zen-beta.desktop" ];
"x-scheme-handler/https" = [ "zen-beta.desktop" ];
"inode/directory" = [ "org.kde.dolphin.desktop" ];
"image/png" = [ "org.kde.gwenview.desktop" ];
"image/jpeg" = [ "org.kde.gwenview.desktop" ];
"image/gif" = [ "org.kde.gwenview.desktop" ];
"image/webp" = [ "org.kde.gwenview.desktop" ];
"image/svg+xml" = [ "org.kde.gwenview.desktop" ];
"image/avif" = [ "org.kde.gwenview.desktop" ];
"video/mp4" = [ "mpv.desktop" ];
"video/webm" = [ "mpv.desktop" ];
"video/x-matroska" = [ "mpv.desktop" ];
"audio/flac" = [ "mpv.desktop" ];
"audio/mpeg" = [ "mpv.desktop" ];
"audio/ogg" = [ "mpv.desktop" ];
"audio/wav" = [ "mpv.desktop" ];
"application/pdf" = [ "org.kde.gwenview.desktop" ];
};
};
programs.zen-browser = {
@@ -226,63 +268,75 @@
};
};
home.file.".config/fastfetch" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/ocbwoy3/config/config/fastfetch";
services.flameshot = {
enable = true;
settings = {
General = {
disabledTrayIcon = true;
showDesktopNotification = false;
showStartupLaunchMessage = false;
savePath = "/home/kris/Pictures/Screenshots";
savePathFixed = true;
useGrimAdapter = true;
disabledGrimWarning = true;
};
};
};
wayland.windowManager.hyprland = {
enable = true;
package = null;
portalPackage = null;
systemd.enable = true;
plugins = [];
extraConfig = builtins.readFile ../../config/hypr/hyprland.conf;
};
home.file.".config/hypr/config" = {
source = ../../config/hypr/config;
recursive = true;
};
home.file.".config/dunst" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/ocbwoy3/config/config/dunst";
recursive = true;
home.file.".config/hypr/hyprlock.conf" = {
source = ../../config/hypr/hyprlock.conf;
};
# home.file.".config/gtk-3.0" = {
# source = config.lib.file.mkOutOfStoreSymlink "/home/ocbwoy3/config/config/gtk-3.0";
# recursive = true;
# };
home.file.".config/hypr" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/ocbwoy3/config/config/hypr";
recursive = true;
home.file.".config/hypr/hyprpaper.conf" = {
source = ../../config/hypr/hyprpaper.conf;
};
home.file.".config/xdg-desktop-portal" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/ocbwoy3/config/config/xdg-desktop-portal";
recursive = true;
home.file.".config/hypr/wallpaper.png" = {
source = ../../config/hypr/wallpaper.png;
};
home.file.".config/hypr/xdph.conf" = {
source = ../../config/hypr/xdph.conf;
};
home.file.".local/share/fonts/DotfilesFont.otf" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/ocbwoy3/config/config/dotfile_deps/DotfilesFont.otf";
source = ../../config/dotfile_deps/DotfilesFont.otf;
};
home.file.".config/ghostty" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/ocbwoy3/config/config/ghostty";
recursive = true;
programs.quickshell = {
enable = true;
package = inputs.quickshell.packages.${system}.default.withModules (
with pkgs.qt6; [
qtimageformats
qtmultimedia
qtsvg
qt5compat
]
);
configs = {
default = ../../Shell;
DeltaruneQuickshell = ../../Shell;
};
};
home.file.".config/wlogout" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/ocbwoy3/config/config/wlogout";
recursive = true;
};
home.file.".config/qt5ct" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/ocbwoy3/config/config/qt5ct";
recursive = true;
};
home.file.".config/wofi" = {
source = config.lib.file.mkOutOfStoreSymlink "/home/ocbwoy3/config/config/wofi";
recursive = true;
};
# xdg.configHome = "/home/ocbwoy3/config/config";
services.mpris-proxy.enable = true;
programs.chromium = {
enable = true;
package = pkgs.brave;
extensions = [
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # uBlock Origin
{ id = "enamippconapkdmgfgjchkhakpfinmaj"; } # DeArrow
@@ -308,8 +362,11 @@
programs.git = {
enable = true;
userName = "OCbwoy3";
userEmail = "ocbwoy3@ocbwoy3.dev";
signing.format = "openpgp";
settings.user = {
name = realName;
email = "kris@darkworld.download";
};
};
programs.obs-studio = {

57
hosts/default/disko.nix Normal file
View File

@@ -0,0 +1,57 @@
{ lib, ... }:
{
disko.devices = {
disk.main = {
type = "disk";
device = lib.mkDefault "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
ESP = {
size = "2G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [
"fmask=0022"
"dmask=0022"
];
};
};
nixos = {
size = "100%";
content = {
type = "btrfs";
extraArgs = [
"-f"
"-L"
"NixOS"
];
subvolumes = {
"@root" = {
mountpoint = "/";
mountOptions = [ "compress=zstd" ];
};
"@home" = {
mountpoint = "/home";
mountOptions = [ "compress=zstd" ];
};
"@nix" = {
mountpoint = "/nix";
mountOptions = [
"compress=zstd"
"noatime"
];
};
};
};
};
};
};
};
};
}

View File

@@ -8,43 +8,36 @@
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/5ca305a1-d705-4c99-913c-a2d1c3447282";
fileSystems."/" = lib.mkDefault
{ device = "/dev/disk/by-uuid/d18510ee-3ef5-4ab0-a94b-aa6c4f4e0c31";
fsType = "btrfs";
options = [ "subvol=root" ];
options = [ "subvol=@root" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/5ca305a1-d705-4c99-913c-a2d1c3447282";
fsType = "btrfs";
options = [ "subvol=home" ];
};
fileSystems."/nix" =
{ device = "/dev/disk/by-uuid/5ca305a1-d705-4c99-913c-a2d1c3447282";
fsType = "btrfs";
options = [ "subvol=nix" "noatime" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/732D-084E";
fileSystems."/boot" = lib.mkDefault
{ device = "/dev/disk/by-uuid/EA40-0DB9";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
# swapDevices = [ { device = "/swap/swapfile"; } ];
fileSystems."/home" = lib.mkDefault
{ device = "/dev/disk/by-uuid/d18510ee-3ef5-4ab0-a94b-aa6c4f4e0c31";
fsType = "btrfs";
options = [ "subvol=@home" ];
};
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
fileSystems."/nix" = lib.mkDefault
{ device = "/dev/disk/by-uuid/d18510ee-3ef5-4ab0-a94b-aa6c4f4e0c31";
fsType = "btrfs";
options = [ "subvol=@nix" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;

View File

@@ -3,9 +3,9 @@
{
environment.systemPackages = [
(pkgs.callPackage ./../packages/ocbwoy3-icons/default.nix {})
(pkgs.callPackage ./../packages/kris-icons/default.nix {})
(pkgs.callPackage ./../packages/arashi-icons.nix {})
(pkgs.callPackage ./../packages/ralsei-cursors/default.nix {}) # ralsei cursors ported to linux
(pkgs.callPackage ./../packages/ralsei-cursors/default.nix {})
];
system.nixos = {
@@ -14,9 +14,9 @@
};
};
system.name = "ocbwoy3";
system.nixos.label = "ocbwoy3-config-main";
boot.loader.grub.configurationName = lib.mkDefault "git+https://tangled.sh/@ocbwoy3.dev/nix?ref=main";
system.name = "kris";
system.nixos.label = "kris-config-main";
boot.loader.grub.configurationName = lib.mkDefault "git+https://tangled.sh/@kris.darkworld.download/nix?ref=main";
system.activationScripts.reloadFonts = {
text = ''
@@ -24,10 +24,4 @@
'';
};
system.activationScripts.xdgDesktopPortal = {
text = ''
echo "${pkgs.xdg-desktop-portal-gtk}/libexec/xdg-desktop-portal-gtk" > /.xdg.sh
'';
};
}

View File

@@ -1,71 +1,51 @@
{ inputs, config, pkgs, lib, ... }:
{
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
noto-fonts-color-emoji
monaspace
geist-font
# nerdfonts
nerd-fonts.geist-mono
nerd-fonts.monaspace
nerd-fonts.symbols-only
minecraftia
(callPackage ./packages/nonnix-fonts.nix { })
];
programs.seahorse.enable = true;
environment.sessionVariables.LD_LIBRARY_PATH = "${pkgs.gcc15}/lib";
security.polkit = {
enable = true;
};
security.polkit.enable = true;
security.soteria.enable = true;
# surely they should add programs.discord!!
environment.systemPackages = with pkgs; [
mosh
(discord.override {
withEquicord = true;
})
# hyprland stuff
inputs.hyprlock.packages.${pkgs.stdenv.hostPlatform.system}.hyprlock
inputs.hyprsysteminfo.packages.${pkgs.stdenv.hostPlatform.system}.hyprsysteminfo
# roblox
inputs.tuxstrap.packages.${pkgs.stdenv.hostPlatform.system}.default
(writeShellScriptBin "regretevator" "xdg-open roblox://placeId=4972273297")
(writeShellScriptBin "kaijuparadise" "xdg-open roblox://placeId=6456351776")
(writeShellScriptBin "sewh" "xdg-open roblox://placeId=16991287194")
# minecraft
qemu
(writeShellScriptBin "qemu-system-x86_64-uefi" ''
qemu-system-x86_64 \
-bios ${OVMF.fd}/FV/OVMF.fd \
"$@"
'')
(writeShellScriptBin "regretevator" ''xdg-open roblox://placeId=4972273297'')
(writeShellScriptBin "kaijuparadise" ''xdg-open roblox://placeId=6456351776'')
(writeShellScriptBin "sewh" ''xdg-open roblox://placeId=16991287194'')
(writeShellScriptBin "fix-gtk" ''${inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland}/bin/hyprctl dispatch exec "${pkgs.xdg-desktop-portal-gtk}/libexec/xdg-desktop-portal-gtk -r"'')
(callPackage ./apps/wl-shimeji.nix {})
(writeShellScriptBin "stop-shimejis" ''${inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland}/bin/hyprctl dispatch exec "shimejictl stop"'')
# (writeShellScriptBin "partynoob" ''shimejictl summon PartyNoob'')
# inputs.quickshell.packages.${pkgs.stdenv.hostPlatform.system}.default
(writeShellScriptBin "stop-shimejis" ''${
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland
}/bin/hyprctl dispatch exec "shimejictl stop"'')
tailscale
bitwarden-desktop
kdePackages.qtdeclarative
catppuccin-gtk
catppuccin
catppuccin-qt5ct
catppuccin-catwalk
catppuccin-whiskers
mission-center
# nvtopPackages.full
libxkbcommon
ffmpeg-full
gnupg
code-cursor
nix-direnv
htop
nixpkgs-fmt
@@ -79,8 +59,9 @@
alacritty
libimobiledevice
direnv
nautilus
kdePackages.dolphin
kdePackages.gwenview
kdePackages.kleopatra
kdePackages.kservice
qpwgraph
wget
@@ -95,61 +76,40 @@
pypresence
pygobject3
]))
# wrangler
fontforge
xclip
gamescope
yt-dlp
fontforge-gtk
deno
wofi
waybar
hyprpaper
dunst
swww
swappy
slurp
flameshot
grim
wayland-utils
wl-clipboard
github-cli
cliphist
pywal
pavucontrol
wlogout
libnotify
killall
networkmanagerapplet
blueman
arrpc
playerctl
mangohud
jq
github-cli
file
nwg-look
# rhythmbox
hyprpolkitagent
# important
glib
openssl
nss
glibc # C LIBRARY DO NOT REMOVE VERY IMPORTANT
glibc
gobject-introspection
gimp3
mpv
nixfmt-rfc-style
protonvpn-cli
protonvpn-gui
(writeShellScriptBin "protonvpn" ''${pkgs.protonvpn-cli}/bin/protonvpn-cli "$@"'')
nixfmt
kdePackages.kdialog
(writeShellScriptBin "roblox-studio-patcher" ''${pkgs.bun}/bin/bun run /home/ocbwoy3/config/scripts/bin/patchInternalRobloxStudio.ts'')
# firefox-devedition
(writeShellScriptBin "roblox-studio-patcher" "${pkgs.bun}/bin/bun run /etc/nixos/scripts/bin/patchInternalRobloxStudio.ts")
];
}

View File

@@ -1,7 +1,7 @@
{ lib, stdenv }:
stdenv.mkDerivation rec {
pname = "ocbwoy3-nixos-icons";
pname = "kris-nixos-icons";
version = "1.0.0";
src = ./.;
@@ -20,8 +20,8 @@ stdenv.mkDerivation rec {
'';
meta = with lib; {
description = "OCbwoy3's Custom Icons for NixOS";
homepage = "https://tangled.sh/@ocbwoy3.dev/nix?ref=main";
description = "Kris's Custom Icons for NixOS";
homepage = "https://tangled.sh/@kris.darkworld.download/nix?ref=main";
license = licenses.mit;
maintainers = with maintainers; [ ];
};

View File

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -0,0 +1,14 @@
{ stdenvNoCC }:
stdenvNoCC.mkDerivation {
pname = "kris-nonnix-fonts";
version = "1";
src = ../../../asset/fonts/nonnix;
installPhase = ''
runHook preInstall
install -Dm644 *.ttf -t "$out/share/fonts/truetype"
runHook postInstall
'';
}

View File

@@ -0,0 +1,26 @@
{ pkgs, inputs, ... }:
{
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
environment.systemPackages = with pkgs; [
git
curl
wget
rsync
parted
gptfdisk
btrfs-progs
nvme-cli
vim
inputs.disko.packages.${pkgs.system}.default
];
services.openssh = {
enable = true;
settings.PermitRootLogin = "yes";
};
}

View File

@@ -1,84 +1,241 @@
{ config, pkgs, lib, ... }:
{
imports = [
./modules/atproto-pds.nix
./modules/cloudflare.nix
./modules/tangled.nix
../../modules/force.nix
];
config,
pkgs,
lib,
...
}:
# gcc. shit breaks. wtf
environment.sessionVariables.LD_LIBRARY_PATH = "${pkgs.gcc15}/lib";
let
mkUserService = pkgs.writeShellScriptBin "mk-user-service" ''
set -euo pipefail
services.vscode-server.enable = true;
if [ "$#" -lt 2 ]; then
echo "Usage: mk-user-service <name> <exec command...>" >&2
exit 1
fi
systemd.services.ocbwoy3-start-pm2 = {
enable = true;
description = "Start PM2";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "forking";
User = "ocbwoy3";
LimitNOFILE = "infinity";
LimitNPROC = "infinity";
LimitCORE = "infinity";
Environment = "PM2_HOME=/home/ocbwoy3/.pm2";
PIDFile = "/home/ocbwoy3/.pm2/pm2.pid";
Restart = "on-failure";
name="$1"
shift
ExecStart = "${pkgs.pm2}/bin/pm2 resurrect";
ExecReload = "${pkgs.pm2}/bin/pm2 reload all";
ExecStop = "${pkgs.pm2}/bin/pm2 kill";
};
};
unitDir="''${XDG_CONFIG_HOME:-$HOME/.config}/systemd/user"
unitFile="$unitDir/$name.service"
services.openssh.settings = {
PubkeyAuthentication = "yes";
TrustedUserCAKeys = "/etc/ssh/ca.pub";
};
mkdir -p "$unitDir"
services.openssh = {
enable = lib.mkForce true;
};
if [ -e "$unitFile" ]; then
echo "Refusing to overwrite existing unit: $unitFile" >&2
exit 2
fi
environment.systemPackages = with pkgs; [
fastfetch
hyfetch
pm2
steam-run
];
cat > "$unitFile" <<EOF
[Unit]
Description=$name
users.users.ocbwoy3 = {
initialPassword = "thisisapassword42069!"; # not the type passwords i use
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ];
shell = pkgs.zsh;
};
[Service]
Type=simple
ExecStart=$*
Restart=on-failure
RestartSec=2
virtualisation.docker.enable = true;
[Install]
WantedBy=default.target
EOF
services.mongodb = {
enable = true;
enableAuth = false;
package = pkgs.mongodb-ce;
replSetName = "rs0"; # dangerous
bind_ip = "0.0.0.0";
};
echo "Created $unitFile"
echo "Next steps:"
echo " systemctl --user daemon-reload"
echo " systemctl --user enable --now $name.service"
'';
in
{
imports = [
./modules/atproto-pds.nix
./modules/cloudflare.nix
./modules/tangled.nix
../../modules/force.nix
./modules/gitea.nix
./modules/vaultwarden.nix
./modules/zipline.nix
./slop/openclaw.nix
./slop/brave.nix
];
networking.firewall = {
enable = true;
allowedTCPPorts = [ 22 443 3000 3001 8080 25565 ];
allowedUDPPorts = [ 22 443 3000 3001 8080 25565 ];
};
services.vscode-server.enable = true;
catppuccin = {
enable = true;
flavor = "mocha";
accent = "blue";
};
services.openssh.settings = lib.mkDefault {
PubkeyAuthentication = "yes";
TrustedUserCAKeys = "/etc/ssh/ca.pub";
PermitRootLogin = lib.mkDefault "prohibit-password";
KbdInteractiveAuthentication = lib.mkDefault false;
};
system.stateVersion = "23.05"; # DO NOT TOUCH
services.openssh = {
enable = lib.mkForce true;
};
environment.systemPackages = with pkgs; [
mosh
fastfetch
hyfetch
bash
jdk
steam-run
opencode
bun
nodejs
node-gyp
playwright
chromium
brave
(pkgs.callPackage ./slop/rocksky-cli.nix { })
];
users.users.ocbwoy3 = {
initialPassword = "thisisapassword42069!"; # not the type passwords i use
isNormalUser = true;
extraGroups = [
"wheel"
"networkmanager"
"docker"
];
shell = pkgs.zsh;
};
users.users.kris = {
initialPassword = "thisisapassword42069!";
isNormalUser = true;
extraGroups = [
"wheel"
"networkmanager"
"docker"
];
shell = pkgs.zsh;
packages = [
pkgs.mrpack-install
mkUserService
];
};
system.activationScripts.enableKrisLinger.text = ''
${pkgs.systemd}/bin/loginctl enable-linger kris || true
'';
nixpkgs.overlays = [
(final: prev: {
nixos-rebuild = prev.writeShellScriptBin "nixos-rebuild" ''
set -euo pipefail
action="''${1:-}"
case "$action" in
switch|boot|test|build|dry-activate)
needs_flake=1
;;
*)
needs_flake=0
;;
esac
has_flake=0
for arg in "$@"; do
case "$arg" in
--flake|--flake=*)
has_flake=1
break
;;
esac
done
if [ "$needs_flake" -eq 1 ] && [ "$has_flake" -eq 0 ]; then
cat >&2 <<'EOF'
🚨🚨🚨 WARNING: DANGEROUS SYSTEM REBUILD 🚨🚨🚨
This host is FLAKE-MANAGED. Do not attempt to rebuild the system from /etc/nixos.
Please ensure you are running THIS EXACT COMMAND inside /home/ocbwoy3/config:
sudo nixos-rebuild switch --flake /home/ocbwoy3/config#server --impure --cores 4 -L --upgrade
Aborting unsafe nixos-rebuild invocation.
EOF
exit 64
fi
exec ${prev.nixos-rebuild}/bin/nixos-rebuild "$@"
'';
})
];
virtualisation.docker = {
enable = true;
daemon.settings = {
"log-driver" = "local";
"log-opts" = {
"max-size" = "10m";
"max-file" = "3";
};
"live-restore" = true;
};
};
systemd.services.docker.serviceConfig = {
CPUQuota = "200%";
MemoryMax = "12G";
};
services.mongodb = {
enable = true;
enableAuth = false;
package = pkgs.mongodb-ce;
replSetName = "rs0"; # dangerous
bind_ip = "0.0.0.0";
};
networking.firewall = {
enable = true;
allowedTCPPorts = [
22
443
3000
3001
4067
8080
25565
];
allowedUDPPorts = [
22
443
3000
3001
4067
8080
25565
];
};
networking.hostName = "kris-server";
# Lock /etc/nixos to read-only mode (config lives in /home/ocbwoy3/config).
systemd.tmpfiles.rules = [
"z /etc/nixos 0555 root root - -"
];
# Force resolver config to Cloudflare only.
networking.nameservers = lib.mkForce [
"1.1.1.1"
"1.0.0.1"
];
environment.etc."resolv.conf".text = lib.mkForce ''
nameserver 1.1.1.1
nameserver 1.0.0.1
'';
catppuccin = {
enable = true;
flavor = "mocha";
accent = "blue";
gitea.enable = false;
};
system.stateVersion = "23.05"; # DO NOT TOUCH
}

View File

@@ -0,0 +1,51 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/5ca305a1-d705-4c99-913c-a2d1c3447282";
fsType = "btrfs";
options = [ "subvol=root" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/5ca305a1-d705-4c99-913c-a2d1c3447282";
fsType = "btrfs";
options = [ "subvol=home" ];
};
fileSystems."/nix" =
{ device = "/dev/disk/by-uuid/5ca305a1-d705-4c99-913c-a2d1c3447282";
fsType = "btrfs";
options = [ "subvol=nix" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/732D-084E";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
# swapDevices = [ { device = "/swap/swapfile"; } ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -0,0 +1,62 @@
@favicon path /favicon.ico
handle @favicon {
root * /lib/system-utdr-assets
rewrite * /tenna.ico
header Content-Type "image/vnd.microsoft.icon" # <-- microslop
file_server
}
@root path /
handle @root {
header Content-Type "text/plain; charset=utf-8"
respond "
This is an AT Protocol Personal Data Server (aka, an atproto PDS)
Most API routes are under /xrpc/
Code: https://github.com/bluesky-social/atproto
Self-Host: https://github.com/bluesky-social/pds
Protocol: https://atproto.com
As foretold in the prophecy.
" 200
}
@robots path /robots.txt
handle @robots {
header Content-Type "text/plain; charset=utf-8"
respond "User-agent: *
Disallow: /
" 200
}
handle {
reverse_proxy localhost:3000 {
header_up Host castletown.darkworld.download
}
}

View File

@@ -1,26 +1,49 @@
{ config, inputs, pkgs, ... }:
{
config,
inputs,
pkgs,
...
}:
let
systemUtdrAssets = pkgs.callPackage ./system-utdr-assets { };
in
{
# TODO:
# Upload PDS backup to /var/lib/pds
# and specify secrets in /private/atproto-pds.env
# TODO:
# Upload PDS backup to /var/lib/pds
# and specify secrets in /private/atproto-pds.env
services.bluesky-pds = {
enable = true;
pdsadmin.enable = true;
environmentFiles = [ "/private/atproto-pds.env" ];
settings = {
PDS_CRAWLERS = "https://bsky.network";
LOG_ENABLED = "true";
PDS_HOSTNAME = "pds.ocbwoy3.dev";
# PDS_VERSION = "\"ATProto PDS v69420\"";
PDS_DID_PLC_URL = "https://plc.directory";
PDS_CONTACT_EMAIL_ADDRESS = "ocbwoy3@ocbwoy3.dev";
PDS_PRIVACY_POLICY_URL = "https://ocbwoy3.dev";
PDS_TERMS_OF_SERVICE_URL = "https://ocbwoy3.dev";
PDS_ACCEPTING_REPO_IMPORTS = "true";
};
};
services.bluesky-pds = {
enable = true;
pdsadmin.enable = true;
environmentFiles = [ "/private/atproto-pds.env" ];
settings = {
PDS_CRAWLERS = "https://bsky.network";
LOG_ENABLED = "true";
PDS_HOSTNAME = "castletown.darkworld.download";
PDS_VERSION = "\"That feeling when Deltarune........ tomorrow! :3\"";
PDS_DID_PLC_URL = "https://plc.directory";
PDS_CONTACT_EMAIL_ADDRESS = "kris@darkworld.download";
# PDS_PRIVACY_POLICY_URL = "https://bsky.social/about/support/privacy-policy";
# PDS_TERMS_OF_SERVICE_URL = "https://bsky.social/about/support/tos";
PDS_ACCEPTING_REPO_IMPORTS = "true";
};
};
# Set host header to `localhost` in tunnel settings otherwise you'll end up wasting countless hours of your life
systemd.tmpfiles.rules = [
"L+ /lib/system-utdr-assets - - - - ${systemUtdrAssets}/lib/system-utdr-assets"
];
services.caddy = {
enable = true;
globalConfig = ''
auto_https off
'';
virtualHosts."localhost:80".extraConfig = builtins.readFile ./Caddyfile;
};
}

View File

@@ -1,21 +1,26 @@
{ config, inputs, pkgs, ... }:
{
config,
inputs,
pkgs,
...
}:
{
environment.systemPackages = with pkgs; [
cloudflared
];
environment.systemPackages = with pkgs; [
cloudflared
];
# lib.mkIf (isOCbwoy3 == true)
services.cloudflared = {
enable = true;
tunnels = {
"selfhost" = {
# 2f83f704-e9f7-49fb-a6c4-d4a8f85d87e4
default = "http_status:404";
credentialsFile = "/private/cloudflared/selfhost.json";
};
};
};
# lib.mkIf (isOCbwoy3 == true)
services.cloudflared = {
enable = true;
tunnels = {
"selfhost" = {
# 2f83f704-e9f7-49fb-a6c4-d4a8f85d87e4
default = "http_status:404";
credentialsFile = "/private/cloudflared/selfhost.json";
};
};
};
}

View File

@@ -0,0 +1,34 @@
{
config,
pkgs,
lib,
...
}:
{
services.gitea = {
enable = true;
database = {
type = "postgres";
};
settings = {
server = {
DOMAIN = "git.ocbwoy3.dev";
ROOT_URL = "https://git.ocbwoy3.dev/";
HTTP_PORT = 2222;
DISABLE_SSH = true;
MAX_UPLOAD_FILE_SIZE = 5242880;
};
attachment = {
MAX_SIZE = 5; # MB (this is the one causing the 1024 KiB error)
};
service = {
DISABLE_REGISTRATION = true;
};
};
};
}

View File

@@ -0,0 +1,21 @@
{ stdenvNoCC, lib }:
stdenvNoCC.mkDerivation {
pname = "system-utdr-assets";
version = "1.0.0";
src = ./.;
installPhase = ''
mkdir -p "$out/lib/system-utdr-assets"
cp "$src/tenna.ico" "$out/lib/system-utdr-assets/tenna.ico"
cp "$src/logo.png" "$out/lib/system-utdr-assets/logo.png"
cp "$src/favicon.png" "$out/lib/system-utdr-assets/favicon.png"
'';
meta = with lib; {
description = "System Undertale & Deltarune assets";
license = licenses.unfree;
maintainers = with maintainers; [ ];
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -1,21 +1,26 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
services.tangled-knot = {
enable = true;
server = {
listenAddr = "0.0.0.0:3003";
owner = "did:plc:s7cesz7cr6ybltaryy4meb6y";
hostname = "knot.ocbwoy3.dev";
};
};
services.tangled.knot = {
enable = true;
server = {
listenAddr = "0.0.0.0:3003";
owner = "did:plc:s7cesz7cr6ybltaryy4meb6y";
hostname = "knot.ocbwoy3.dev";
};
};
services.tangled-spindle = {
enable = true;
server = {
listenAddr = "0.0.0.0:3004";
owner = "did:plc:s7cesz7cr6ybltaryy4meb6y";
hostname = "spindle.ocbwoy3.dev";
};
};
services.tangled.spindle = {
enable = true;
server = {
listenAddr = "0.0.0.0:3004";
owner = "did:plc:s7cesz7cr6ybltaryy4meb6y";
hostname = "spindle.ocbwoy3.dev";
};
};
}

View File

@@ -0,0 +1,44 @@
{
config,
pkgs,
lib,
...
}:
{
services.vaultwarden = {
enable = true;
dbBackend = "sqlite";
environmentFile = "/var/lib/vaultwarden/vaultwarden.env";
config = {
# Keep data alongside the secret env file so we can back it up together.
DATA_FOLDER = "/var/lib/vaultwarden/data";
PUSH_RELAY_URI = "https://api.bitwarden.eu";
PUSH_IDENTITY_URI = "https://identity.bitwarden.eu";
DOMAIN = "https://vault.ocbwoy3.dev";
ROCKET_ADDRESS = "0.0.0.0";
ROCKET_PORT = 8222;
WEBSOCKET_ENABLED = true;
WEBSOCKET_ADDRESS = "0.0.0.0";
WEBSOCKET_PORT = 3012;
SIGNUPS_ALLOWED = false;
};
};
# Allow vaultwarden to write under /var/lib/vaultwarden and ensure the directories exist.
systemd.services.vaultwarden.serviceConfig = {
ReadWritePaths = [ "/var/lib/vaultwarden" ];
};
# Create parent/data directories with proper ownership before startup.
systemd.tmpfiles.rules = [
"d /var/lib/vaultwarden 0750 vaultwarden vaultwarden -"
"d /var/lib/vaultwarden/data 0750 vaultwarden vaultwarden -"
];
# cloudflared!!
# networking.firewall.allowedTCPPorts = [
# 8222
# 3012
# ];
}

View File

@@ -0,0 +1,17 @@
{
config,
pkgs,
lib,
...
}:
{
services.zipline = {
enable = true;
environmentFiles = [ "/private/zipline/zipline.env" ];
settings = {
CORE_HOSTNAME = "127.0.0.1";
CORE_PORT = 3015;
};
};
}

View File

@@ -0,0 +1,201 @@
{ pkgs }:
let
pythonEnv = pkgs.python3.withPackages (ps: with ps; [
fastapi
uvicorn
ddgs
pyyaml
]);
in
pkgs.stdenvNoCC.mkDerivation {
pname = "brave-shim";
version = "0.1.0";
dontUnpack = true;
installPhase = ''
mkdir -p $out/bin $out/share/brave-shim
cat > $out/share/brave-shim/brave_shim.conf <<'CONF'
server:
host: "127.0.0.1"
port: 8000
ssl:
use_custom_ca: false
ca_bundle_path: "/etc/ssl/certs/ca-certificates.crt"
verify_ssl: true
logging:
file_path: "/home/openclaw/.local/state/brave-shim/brave_shim.log"
level: "INFO"
bot_protection:
cache_expiration: 3600
min_delay: 1.0
max_delay: 2.5
search:
default_count: 10
local_count: 5
CONF
cat > $out/share/brave-shim/brave_shim.py <<'PY'
import time
import random
import yaml
import uvicorn
import logging
import os
import ssl
from fastapi import FastAPI, Query
from ddgs import DDGS
from pathlib import Path
config_path = Path(os.environ.get("BRAVE_SHIM_CONF", "brave_shim.conf"))
if not config_path.exists():
raise FileNotFoundError(f"Config not found: {config_path}")
with open(config_path, "r") as f:
config = yaml.safe_load(f)
os.makedirs(os.path.dirname(config["logging"]["file_path"]), exist_ok=True)
logging.basicConfig(
level=config['logging']['level'],
format="%(asctime)s [%(levelname)s] %(message)s",
handlers=[logging.FileHandler(config['logging']['file_path'])]
)
logger = logging.getLogger("brave_shim")
ssl_cfg = config.get('ssl', {})
verify_ssl = ssl_cfg.get('verify_ssl', True)
custom_ca_status = "System Default"
if ssl_cfg.get('use_custom_ca'):
ca_path = ssl_cfg['ca_bundle_path']
if os.path.exists(ca_path):
os.environ["SSL_CERT_FILE"] = ca_path
os.environ["REQUESTS_CA_BUNDLE"] = ca_path
os.environ["CURL_CA_BUNDLE"] = ca_path
if not verify_ssl:
ssl._create_default_https_context = ssl._create_unverified_context
custom_ca_status = f"Active (Verify=OFF, Path={ca_path})"
logger.warning("SSL verification disabled")
else:
try:
context = ssl.create_default_context(cafile=ca_path)
ssl._create_default_https_context = lambda: context
custom_ca_status = f"Active (Path={ca_path})"
except Exception as e:
logger.error(f"SSL bundle load error: {e}")
else:
logger.error(f"SSL CA bundle not found: {ca_path}")
custom_ca_status = "Error: File not found"
app = FastAPI(title="Brave Search API Shim", docs_url=None, redoc_url=None)
search_cache = {}
def get_from_cache(q):
expiration = config['bot_protection']['cache_expiration']
if q in search_cache:
timestamp, data = search_cache[q]
if time.time() - timestamp < expiration:
return data
return None
@app.get("/status")
async def health_check():
return {
"status": "online",
"cache_entries": len(search_cache),
"ssl_verify": verify_ssl,
"ca_bundle": custom_ca_status
}
@app.get("/res/v1/web/search")
async def search_proxy(q: str = Query(...), count: int = None):
res_count = count or config['search']['default_count']
cached_res = get_from_cache(q)
if cached_res:
logger.info(f"CACHE HIT: {q}")
return cached_res
time.sleep(random.uniform(config['bot_protection']['min_delay'], config['bot_protection']['max_delay']))
logger.info(f"FETCH WEB: {q}")
try:
with DDGS(verify=verify_ssl) as ddgs:
results = []
for r in ddgs.text(q, max_results=res_count):
results.append({
"title": r.get("title"),
"url": r.get("href"),
"description": r.get("body"),
"meta_url": {"path": r.get("href")}
})
response_data = {"web": {"results": results}}
search_cache[q] = (time.time(), response_data)
return response_data
except Exception as e:
logger.error(f"WEB search error for '{q}': {e}")
return {"web": {"results": []}, "error": str(e)}
@app.get("/res/v1/local/pois")
async def local_proxy(q: str = Query(...), count: int = None):
res_count = count or config['search']['local_count']
logger.info(f"FETCH LOCAL: {q}")
try:
with DDGS(verify=verify_ssl) as ddgs:
res = [
{
"id": str(i),
"name": r["title"],
"address": r["body"][:100],
"phone": "",
"coordinates": {"latitude": 0.0, "longitude": 0.0}
}
for i, r in enumerate(ddgs.text(f"place {q}", max_results=res_count))
]
return {"results": res}
except Exception as e:
logger.error(f"LOCAL search error for '{q}': {e}")
return {"results": []}
@app.get("/res/v1/local/descriptions")
async def local_descriptions(id: str = Query(...)):
return {"descriptions": {id: "Data from DDGS proxy."}}
@app.get("/res/v1/summarizer/summary")
async def summarizer_proxy(key: str = Query(...)):
return {"summary": "Summary ready.", "status": "complete"}
if __name__ == "__main__":
logger.info(f"Starting brave-shim on {config['server']['host']}:{config['server']['port']}")
uvicorn.run(
app,
host=config['server']['host'],
port=config['server']['port'],
access_log=False,
log_level="critical"
)
PY
cat > $out/bin/brave-shim <<EOF
#!${pkgs.bash}/bin/bash
set -euo pipefail
export BRAVE_SHIM_CONF=\"\
s h\
\"
EOF
# simpler wrapper (avoid quoting bugs)
cat > $out/bin/brave-shim <<EOF
#!${pkgs.bash}/bin/bash
set -euo pipefail
export BRAVE_SHIM_CONF="''${BRAVE_SHIM_CONF:-$out/share/brave-shim/brave_shim.conf}"
exec ${pythonEnv}/bin/python $out/share/brave-shim/brave_shim.py
EOF
chmod +x $out/bin/brave-shim
'';
}

View File

@@ -0,0 +1,21 @@
{ pkgs, ... }:
let
braveShim = pkgs.callPackage ./brave-shim.nix { };
in
{
# Local Brave API shim as a user service
systemd.user.services.brave-shim = {
description = "Brave Search API shim (DDGS)";
wantedBy = [ "default.target" ];
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${braveShim}/bin/brave-shim";
Restart = "always";
RestartSec = "3";
};
};
}

View File

@@ -0,0 +1,36 @@
{
lib,
buildGo125Module,
fetchFromGitHub,
}:
buildGo125Module rec {
pname = "gogcli";
version = "0.11.0";
src = fetchFromGitHub {
owner = "steipete";
repo = "gogcli";
rev = "v${version}";
hash = "sha256-hJU40ysjRx4p9SWGmbhhpToYCpk3DcMAWCnKqxHRmh0=";
};
vendorHash = "sha256-WGRlv3UsK3SVBQySD7uZ8+FiRl03p0rzjBm9Se1iITs=";
subPackages = [ "cmd/gog" ];
ldflags = [
"-s"
"-w"
"-X github.com/steipete/gogcli/internal/cmd.version=${version}"
"-X github.com/steipete/gogcli/internal/cmd.commit=v${version}"
];
meta = with lib; {
description = "Google workspace CLI client";
homepage = "https://github.com/steipete/gogcli";
license = licenses.mit;
mainProgram = "gog";
platforms = platforms.linux ++ platforms.darwin;
};
}

View File

@@ -0,0 +1,69 @@
{
inputs,
pkgs,
...
}:
let
openclawPatched = inputs.openclaw.packages.${pkgs.system}.openclaw-gateway.overrideAttrs (old: {
installPhase =
old.installPhase
+ "\n"
+ ''
# Point Brave web-search endpoint to local shim.
# NOTE: upstream installPhase script does not run postInstall hooks,
# so patch directly at the end of installPhase.
if [ -d "$out/lib/openclaw/dist" ]; then
# Web-search tool hardcodes Brave endpoint in bundled JS.
# No runtime config option exists for Brave base URL in this OpenClaw version.
grep -RIl "https://api.search.brave.com" "$out/lib/openclaw/dist" | while read -r f; do
substituteInPlace "$f" \
--replace "https://api.search.brave.com/res/v1/web/search" "http://127.0.0.1:8000/res/v1/web/search" \
--replace "https://api.search.brave.com/res/v1/" "http://127.0.0.1:8000/res/v1/" \
--replace "https://api.search.brave.com/" "http://127.0.0.1:8000/" \
--replace "https://api.search.brave.com" "http://127.0.0.1:8000"
done
fi
'';
});
in
{
imports = [ inputs.openclaw.nixosModules.openclaw-gateway ];
users.users.openclaw = {
isSystemUser = false;
isNormalUser = true;
home = "/home/openclaw";
createHome = true;
group = "openclaw";
extraGroups = [ "docker" ];
shell = pkgs.bash;
description = "OpenClaw agent sandboxed user";
packages = [
openclawPatched
(pkgs.callPackage ./gogcli.nix { })
(pkgs.callPackage ./brave-shim.nix { })
pkgs.uv
pkgs.python3
];
};
users.groups.openclaw = { };
# Keep the openclaw user's systemd --user instance running so the gateway stays up.
# Using activation script because services.logind.lingerUsers isn't available in this release.
system.activationScripts.enableOpenclawLinger.text = ''
${pkgs.systemd}/bin/loginctl enable-linger openclaw || true
'';
# Run OpenClaw gateway as a NixOS system service under the dedicated user.
services.openclaw-gateway = {
enable = true;
package = openclawPatched;
createUser = false;
user = "openclaw";
group = "openclaw";
stateDir = "/home/openclaw/.local/share/openclaw";
};
}

View File

@@ -0,0 +1,9 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "rocksky";
runtimeInputs = [ pkgs.bun ];
text = ''
exec ${pkgs.bun}/bin/bun x @rocksky/cli "$@"
'';
}

View File

@@ -1,38 +1,42 @@
{ config, pkgs, ... }:
{
imports = [
./nixos/bootloader.nix
./nixos/hardware.nix
./nixos/i18n.nix
./nixos/network.nix
./nixos/nixpkgs.nix
./nixos/nvidia.nix
./nixos/programs.nix
./stuff/nvim.nix
./stuff/zsh.nix
];
imports = [
./nixos/bootloader.nix
./nixos/hardware.nix
./nixos/i18n.nix
./nixos/network.nix
./nixos/nixpkgs.nix
./nixos/nvidia.nix
./nixos/programs.nix
./stuff/nvim.nix
./stuff/zsh.nix
];
environment.systemPackages = with pkgs; [
tmux
gh
file
glib
openssl
nss
glibc
nixfmt-rfc-style
killall
deno
bun
imagemagick
unzip
libwebp
nix-direnv
htop
nixpkgs-fmt
nixd
ffmpeg-full
gnupg
];
services.tailscale.enable = true;
environment.systemPackages = with pkgs; [
tmux
gh
file
glib
openssl
nss
glibc
kitty
nixfmt
killall
deno
bun
imagemagick
unzip
libwebp
nix-direnv
htop
nixpkgs-fmt
nixd
ffmpeg-full
gnupg
codex
];
}

View File

@@ -5,9 +5,7 @@
./force.nix
];
# because i love cuda
nixpkgs.config.cudaSupport = lib.warn "you're going to fucking hell if you aren't using a binary cache" true;
nixpkgs.config.cudaSupport = lib.mkDefault true;
services.desktopManager.plasma6.enable = lib.mkDefault false;
environment.systemPackages = with pkgs; [

View File

@@ -25,13 +25,11 @@
];
boot.loader = {
efi = {
# canTouchEfiVariables = true;
};
grub = {
efiSupport = true;
device = "nodev";
efiInstallAsRemovable = true;
# efiSysMountPoint = "/boot";
# efiInstallAsRemovable = true;
# will kill pc if triplebooting w*ndows, nixos and cachyos
useOSProber = true;
gfxmodeEfi = "1920x1080";

View File

@@ -3,7 +3,7 @@
{
hardware.bluetooth.enable = true;
services.blueman.enable = true;
services.blueman.enable = false;
hardware.bluetooth.settings = {
General = {

View File

@@ -3,13 +3,13 @@
{
options = {
main-user.userName = lib.mkOption {
default = "ocbwoy3";
default = "kris";
description = ''
Username
'';
};
main-user.realName = lib.mkOption {
default = "OCbwoy3";
default = "Kris";
description = ''
User's Name
'';
@@ -28,7 +28,7 @@
initialPassword = "password";
description = "${config.main-user.realName}";
shell = pkgs.zsh;
extraGroups = [ "networkmanager" "gamemode" "wheel" "input" "video" "libvirtd" "power" ];
extraGroups = [ "networkmanager" "gamemode" "wheel" "input" "video" "power" ];
packages = config.main-user.packages;
};
};

View File

@@ -2,11 +2,12 @@
{
#! Disable default nameservers to prevent ISP espionage
networking.nameservers = [ "1.1.1.1" "1.0.0.1" ];
#! Disable default nameservers to prevent ISP espionage
networking.nameservers = [
"1.1.1.1"
"1.0.0.1"
];
networking.hostName = "ralsei-pc";
networking.networkmanager.enable = true;
networking.resolvconf.enable = false;
networking.networkmanager.enable = true;
}

View File

@@ -3,8 +3,16 @@
{
nixpkgs.config.allowUnfree = true;
nixpkgs.config.replaceStdenv = args: args.pkgs.stdenv;
nixpkgs.config.packageOverrides = pkgs: {
vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
equibop = pkgs.equibop.overrideAttrs (old: {
nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ pkgs.makeWrapper ];
postFixup = (old.postFixup or "") + ''
wrapProgram $out/bin/equibop \
--prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath [ (pkgs.lib.getLib pkgs.stdenv.cc.cc) ]}"
'';
});
};
nix.settings.experimental-features = [ "nix-command" "flakes" ];
@@ -12,18 +20,15 @@
nix.settings = {
substituters = [
"https://hyprland.cachix.org"
"https://ghostty.cachix.org"
"https://wrangler.cachix.org"
"https://nix-community.cachix.org"
];
trusted-substituters = [
"https://hyprland.cachix.org"
"https://ghostty.cachix.org"
"https://nix-community.cachix.org"
];
trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"ghostty.cachix.org-1:QB389yTa6gTyneehvqG58y0WnHjQOqgnA+wBnpWWxns="
"wrangler.cachix.org-1:N/FIcG2qBQcolSpklb2IMDbsfjZKWg+ctxx0mSMXdSs="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];

View File

@@ -1,63 +1,72 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
{
# options nvidia NVreg_PreserveVideoMemoryAllocations=1
boot.extraModprobeConfig = ''
options nvidia_drm modeset=1 fbdev=1
'';
# options nvidia NVreg_PreserveVideoMemoryAllocations=1
boot.extraModprobeConfig = ''
options nvidia_drm modeset=1 fbdev=1
'';
environment.variables = {
LIBVA_DRIVER_NAME = "nvidia";
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
NVD_BACKEND = "direct";
EGL_PLATFORM = "wayland";
VDPAU_DRIVER = "va_gl";
WAYLAND_DISPLAY = "wayland-1";
DISPLAY = ":0";
XDG_CURRENT_DESKTOP = "Hyprland";
MOZ_ENABLE_WAYLAND = "1"; # Enable Wayland for Firefox
CHROMIUM_FLAGS = "--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-gpu-rasterization --enable-zero-copy"; # Enable Wayland and hardware acceleration for Chromium
};
environment.variables = {
LIBVA_DRIVER_NAME = "nvidia";
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
NVD_BACKEND = "direct";
EGL_PLATFORM = "wayland";
VDPAU_DRIVER = "va_gl";
XDG_CURRENT_DESKTOP = "Hyprland";
MOZ_ENABLE_WAYLAND = "1"; # Enable Wayland for Firefox
CHROMIUM_FLAGS = "--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-gpu-rasterization --enable-zero-copy"; # Enable Wayland and hardware acceleration for Chromium
};
environment.sessionVariables = {
NIXOS_OZONE_WL = 1;
LIBVA_DRIVER_NAME = "nvidia";
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
NVD_BACKEND = "direct";
EGL_PLATFORM = "wayland";
};
environment.sessionVariables = {
NIXOS_OZONE_WL = 1;
LIBVA_DRIVER_NAME = "nvidia";
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
NVD_BACKEND = "direct";
EGL_PLATFORM = "wayland";
};
# obs moment
# nixpkgs.config.cudaSupport = true;
# obs moment
# nixpkgs.config.cudaSupport = true;
hardware.graphics = { # hardware.graphics since NixOS 24.11
enable = true;
# driSupport = true;
extraPackages = with pkgs; [
nvidia-vaapi-driver
libvdpau-va-gl
vaapiVdpau
libvdpau
];
};
hardware.graphics = {
# hardware.graphics since NixOS 24.11
enable = true;
# driSupport = true;
extraPackages = with pkgs; [
nvidia-vaapi-driver
libvdpau-va-gl
libva-vdpau-driver
libvdpau
];
};
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = true;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
};
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = true;
nvidiaSettings = true;
};
boot.kernelModules = [ "nvidia-uvm" "nvidia-drm" ];
boot.blacklistedKernelModules = [ "nouveau" ];
boot.kernelModules = [
"nvidia-uvm"
"nvidia-drm"
];
boot.blacklistedKernelModules = [ "nouveau" ];
boot.kernelParams = [ "nvidia-drm.modeset=1" "nvidia-drm.fbdev=1" ];
boot.kernelParams = [
"nvidia-drm.modeset=1"
"nvidia-drm.fbdev=1"
];
services.xserver.videoDrivers = ["nvidia"];
services.xserver.videoDrivers = [ "nvidia" ];
}

View File

@@ -42,7 +42,7 @@
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
PermitRootLogin = "no";
AllowUsers = [ "ocbwoy3" "git" ];
AllowUsers = [ "kris" "ocbwoy3" "git" ];
};
# fucks up ssh connections from iphone if you enable this
# settings = {
@@ -68,7 +68,7 @@
# enable = true;
agent = {
enable = true;
pinentryPackage = pkgs.pinentry-gnome3;
pinentryPackage = pkgs.pinentry-qt;
};
};

View File

@@ -0,0 +1,6 @@
{ ... }:
{
environment.variables = {
DOCKER_HOST = "tcp://127.0.0.1:2375";
};
}

View File

@@ -0,0 +1,32 @@
{ pkgs, ... }:
{
virtualisation.oci-containers.containers.docker-socket-proxy = {
image = "tecnativa/docker-socket-proxy:latest";
autoStart = true;
volumes = [ "/var/run/docker.sock:/var/run/docker.sock" ];
environment = {
CONTAINERS = "1";
IMAGES = "1";
NETWORKS = "1";
VOLUMES = "1";
INFO = "1";
POST = "1";
BUILD = "1";
COMMIT = "0";
CONFIGS = "0";
DISTRIBUTION = "0";
EXEC = "0";
GRPC = "0";
PLUGINS = "0";
SECRETS = "0";
SERVICES = "0";
SESSION = "0";
SWARM = "0";
SYSTEM = "0";
TASKS = "0";
AUTH = "0";
ALLOW_RESTARTS = "1";
};
ports = [ "127.0.0.1:2375:2375" ];
};
}

13
modules/openclaw-fs.nix Normal file
View File

@@ -0,0 +1,13 @@
{ ... }:
{
systemd.tmpfiles.rules = [
"d /private 0750 root root -"
"z /private/AT\x20Protocol 0700 root root -"
"z /private/cloudflared 0700 root root -"
"z /private/cloudflared.pem 0600 root root -"
"z /private/tangled.env 0600 root root -"
"z /private/vaultwarden 0700 root root -"
"d /private/zipline 0700 root root -"
"z /protected 0700 root root -"
];
}

17
modules/openclaw-sudo.nix Normal file
View File

@@ -0,0 +1,17 @@
{
security.sudo.extraRules = [
{
users = [ "openclaw" ];
commands = [
{
command = "/run/current-system/sw/bin/cat";
options = [ "NOPASSWD" ];
}
{
command = "/run/current-system/sw/bin/docker";
options = [ "NOPASSWD" ];
}
];
}
];
}

View File

@@ -0,0 +1,3 @@
{ pkgs, ... }:
{
}

View File

@@ -0,0 +1,82 @@
{ pkgs, ... }:
{
systemd.services.openclaw-watchdog = {
description = "Post-rebuild health watchdog";
after = [ "network.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "/etc/openclaw/nixos-rollback.sh check";
};
onFailure = [ "nixos-rollback.service" ];
};
systemd.services.nixos-rollback = {
description = "Autonomous NixOS rollback";
serviceConfig = {
Type = "oneshot";
ExecStart = "/etc/openclaw/nixos-rollback.sh rollback";
};
};
environment.etc."openclaw/nixos-rollback.sh" = {
mode = "0750";
text = ''
#!/usr/bin/env bash
set -euo pipefail
WEBHOOK="$(cat /run/secrets/discord-webhook 2>/dev/null || echo "")"
UNITS=("sshd" "docker" "bluesky-pds" "cloudflared" "zipline")
HOSTNAME="$(hostname)"
notify() {
[ -z "$WEBHOOK" ] && return
curl -s -X POST "$WEBHOOK" \
-H "Content-Type: application/json" \
-d "{\"content\": \"$1\"}"
}
check_units() {
for unit in "''${UNITS[@]}"; do
if ! systemctl is-active --quiet "$unit"; then
return 1
fi
done
return 0
}
check_ssh() {
timeout 5 bash -c 'echo > /dev/tcp/127.0.0.1/22' 2>/dev/null
}
do_check() {
for i in $(seq 1 6); do
sleep 10
if check_units && check_ssh; then
notify "**[$HOSTNAME] NixOS switch healthy** all units OK after rebuild."
exit 0
fi
done
exit 1
}
do_rollback() {
notify "**[$HOSTNAME] ROLLBACK TRIGGERED** health check failed. Rolling back..."
if nixos-rebuild switch --rollback; then
sleep 15
if check_units && check_ssh; then
notify "**[$HOSTNAME] Rollback successful** previous generation restored."
else
notify "**[$HOSTNAME] URGENT rollback also failed.** Manual intervention needed."
fi
else
notify "**[$HOSTNAME] URGENT rollback command failed.** Manual intervention needed."
fi
}
case "''${1:-check}" in
check) do_check ;;
rollback) do_rollback ;;
esac
'';
};
}

View File

@@ -14,8 +14,8 @@
viAlias = true;
vimAlias = true;
statusline.lualine.enable = true;
lsp.enable = true;
languages = {
enableLSP = true;
enableTreesitter = true;
nix.enable = true;

View File

@@ -1,28 +1,37 @@
{ config, inputs, pkgs, lib, ... }:
{
config,
inputs,
pkgs,
lib,
...
}:
{
programs.direnv = {
enable = true;
enableZshIntegration = true;
};
programs.direnv = {
enable = true;
enableZshIntegration = true;
};
programs.zsh = {
enable = true;
autosuggestions.enable = true;
zsh-autoenv.enable = true;
syntaxHighlighting.enable = true;
ohMyZsh = {
enable = true;
plugins = [ "git" "direnv" ];
theme = "robbyrussell";
};
shellAliases = {
# ultimate cpu killer 3000
nixrebuild = "sudo nixos-rebuild switch --flake .#default --impure --cores 20 -L --upgrade";
dangerous-nixrebuild-server = "sudo nixos-rebuild switch --flake .#server --impure --cores 4 -L --upgrade";
neofetch = "fastfetch";
};
};
programs.zsh = {
enable = true;
autosuggestions.enable = true;
zsh-autoenv.enable = true;
syntaxHighlighting.enable = true;
ohMyZsh = {
enable = true;
plugins = [
"git"
"direnv"
];
theme = "robbyrussell";
};
shellAliases = {
# ultimate cpu killer 3000
nixrebuild = "sudo nixos-rebuild switch --flake .#default --impure --cores 20 -L --upgrade";
dangerous-nixrebuild-server = "sudo nixos-rebuild switch --flake /home/ocbwoy3/config#server --impure --cores 4 -L --upgrade";
neofetch = "fastfetch";
};
};
}

View File

@@ -1,179 +0,0 @@
import { $ } from "bun";
import { Command } from "commander";
// import sharp from "sharp";
import { writeFileSync } from "fs";
import { getRegretevatorState } from "../lib/RegretevatorUtil";
/*
yeucc i swear to fucking god...
{"text":"ý 999","tooltip":"Regretevator: Floor streak 999"}
NOTE: ý turns into the regretevator icon when using DotfilesFont
====
[BloxstrapRPC] {"command":"SetRichPresence","data":{"details":"REGRETEVATOR","smallImage":{"hoverText":"The Axolotl Sun","assetId":14648053922},"state":"","largeImage":{"hoverText":"THE REGRET ELEVATOR"}}}
InGame | details === "REGRETEVATOR"; smallImage?.hoverText === "The Axolotl Sun";
====
[BloxstrapRPC] {"command":"SetRichPresence","data":{"state":"Lounging in the lobby","timeStart":0,"timeEnd":0}}
InGame[Lobby] | state === "Lounging in the lobby";
====
[BloxstrapRPC] {"command":"SetRichPresence","data":{"state":"Currently spectating ELEVATOR_CAM"}}
InGame[Spectating] | state matches regex /$Currently spectating (.*)$/, if so, SpectateName=$1;
====
[BloxstrapRPC] {"command":"SetRichPresence","data":{"details":"Going up!","state":"Floor streak 348","timeStart":1749325817,"timeEnd":1749325839}}
InGame[GoingUp] | details === "Going up!"; state matches regex /^Floor streak ([0-9]+)$/, if so, FloorStreak=$1;
====
[BloxstrapRPC] {"command":"SetRichPresence","data":{"details":"At Funny Maze","state":"Floor streak 348","timeStart":0,"timeEnd":0}}
InGame[AtFloor] | details match regex /^At (.+)$/, if so, FloorName=$1; state matches regex /^Floor streak ([0-9]+)$/, if so, FloorStreak=$1;
====
TODO: Bring back `features/RegretevatorWaybar.ts` to TuxStrap
*/
const windowClassFriendyName: { [windowClass: string]: string } = {
steam_app_1671210: "Deltarune",
"deltarune.exe": "Deltarune", // deltarune with proton-cachyos/proton-cachyos-slr + PROTON_ENABLE_WAYLAND=1
"org.vinegarhq.Sober": "Roblox",
steam_app_1690940: "Deltarune", // demo
};
async function getWMClass(): Promise<string> {
const windowClass = await $`hyprctl activewindow -j`.json();
return windowClass.initialClass;
}
async function getFilename(wmClass?: string): Promise<string> {
const _d = new Date();
let ic =
(wmClass && windowClassFriendyName[wmClass]) || wmClass || "Hyprland";
const isRoblox = wmClass === "org.vinegarhq.Sober";
if (isRoblox) {
ic = "Roblox";
}
const regretevatorState = isRoblox ? getRegretevatorState() : null;
if (!!regretevatorState) {
ic = "Regretevator";
}
// console.log(isRoblox, regretevatorState)
return `${ic}-${_d.getTime()}${
!regretevatorState
? ""
: `-regretevator${
regretevatorState.state === "INGAME"
? `-${regretevatorState.floor}`
: ""
}`
}`;
}
const program = new Command("handle-screenshot");
const SCREENSHOT_PATH = `/home/ralsei/Pictures/Screenshots`;
// useless
async function transformImage(b: Buffer): Promise<Buffer> {
/*
const image = sharp(b).ensureAlpha();
const { width, height } = await image.metadata();
// console.log(width, height);
const mask = Buffer.from(
`<svg width="${width}" height="${height}">
<rect x="0" y="0" width="${width}" height="${height}" rx="16" fill="white"/>
</svg>`
);
const maskedImage = image
.composite([
{
input: mask,
gravity: "center",
blend: "dest-in",
},
])
.extend({
top: 16,
bottom: 16,
left: 16,
right: 16,
})
.ensureAlpha();
return (await maskedImage.png().toBuffer()) as Buffer;
*/
return b;
}
(() => {
program
.command("selection")
.description("Takes a screenshot from selection")
.action(async () => {
const _C = await getWMClass();
const selection = await $`slurp -w 0 -d -b "#cdd6f444"`
.nothrow()
.quiet();
if (
selection.exitCode !== 0 ||
selection.stdout.toString().includes("cancel")
) {
console.log("/tmp/woah");
process.exit(0);
}
const _BUF = await $`grim -c -t png -l 0 -g ${selection.stdout
.toString()
.trim()} -`.arrayBuffer();
let BUF = Buffer.from(_BUF) as Buffer;
const FILENAME = `${SCREENSHOT_PATH}/${await getFilename(_C)}.png`;
// BUF = await transformImage(BUF);
writeFileSync(FILENAME, BUF);
console.log(FILENAME);
});
})();
(() => {
program
.command("fullscreen")
.description("Takes a fullsceen screenshot")
.action(async () => {
const selection =
await $`hyprctl monitors | awk '/Monitor/{monitor=$2} /focused: yes/{print monitor; exit}'`
.nothrow()
.text();
const _C = await getWMClass();
const _BUF =
await $`grim -c -t png -l 0 -o ${selection.trim()} -`.arrayBuffer();
let BUF = Buffer.from(_BUF) as Buffer;
const FILENAME = `${SCREENSHOT_PATH}/${await getFilename(_C)}.png`;
// BUF = await transformImage(BUF);
writeFileSync(FILENAME, BUF);
console.log(FILENAME);
});
})();
program.parse(process.argv);

View File

@@ -6,13 +6,13 @@ setConsoleTitle("Music Test");
try {
const artUrl =
await $`playerctl -s -p cider,chromium,OCbwoy3_s_iPhone metadata mpris:artUrl`.text();
await $`playerctl -s -p cider,chromium,Kris___s_iPhone metadata mpris:artUrl`.text();
const title =
await $`playerctl -s -p cider,chromium,OCbwoy3_s_iPhone metadata title`.text();
await $`playerctl -s -p cider,chromium,Kris___s_iPhone metadata title`.text();
const artist =
await $`playerctl -s -p cider,chromium,OCbwoy3_s_iPhone metadata artist`.text();
await $`playerctl -s -p cider,chromium,Kris___s_iPhone metadata artist`.text();
const album =
await $`playerctl -s -p cider,chromium,OCbwoy3_s_iPhone metadata album`.text();
await $`playerctl -s -p cider,chromium,Kris___s_iPhone metadata album`.text();
const MT = `${artist.trim()},${album.trim()}`;
@@ -28,8 +28,8 @@ try {
$`notify-send ${title.trim()} ${artist.trim()} -i /tmp/.musictest`
.nothrow()
.catch((a) => {});
.catch((a) => { });
} catch (e_) {
console.error(e_);
$`notify-send "music test" "lol"`.nothrow().catch((a) => {});
$`notify-send "music test" "lol"`.nothrow().catch((a) => { });
}

View File

@@ -11,9 +11,9 @@ setConsoleTitle("Screenshot Uploader");
try {
const start = Date.now();
$`notify-send -t 1000 "Screenshot" "Uploading.."`
$`notify-send -a dotfiles-screenshot -t 1000 "Screenshot" "Uploading.."`
.nothrow()
.catch((a) => {});
.catch((a) => { });
configDotenv({
path: `${homedir()}/.ocbwoy3-dotfiles-SECRET-DO-NOT-TOUCH.env`,
});
@@ -34,8 +34,8 @@ try {
execSync(`echo "${url}" | wl-copy -n`);
execSync(
`notify-send "Ekrānuzņēmums" "Attēls augšuplādēts e-z.host ${Date.now() - start}ms"`,
`notify-send -a dotfiles-screenshot "Screenshot" "Uploaded to e-z.host in ${Date.now() - start}ms"`,
);
} catch (e_) {
execSync(`notify-send "Error" "${`${e_}`}"`);
execSync(`notify-send -a dotfiles-screenshot "Error" "${`${e_}`}"`);
}

View File

@@ -1,7 +1,7 @@
hyprctl notify 1 5000 0 " Loading OCbwoy3's Dotfiles"
# Dotfiles
notify-send "Sveicināti Hyprland!" "some basic startup code"
notify-send "Welcome to Hyprland!" "some basic startup code"
notify-send "Hyprland" "Enabled debugging overlay"
notify-send "OCbwoy3's Dotfiles" "Keyboard Layout: English"
notify-send "Screenshot" "Saved and copied to clipboard."

Some files were not shown because too many files have changed in this diff Show More