36 Commits

Author SHA1 Message Date
Hadi 79351e46a1 add chafa
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-06-08 20:51:27 +02:00
Hadi 3f37a26162 add gh & gh-dash
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-06-08 20:28:40 +02:00
Hadi e9fbdcb870 add yazi plugins
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-06-08 20:04:48 +02:00
Hadi e5d494607f impala -> wifitui
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-06-08 20:04:22 +02:00
Hadi d4e4a8f9f7 remove deadcode
Signed-off-by: Hadi <hadi@example.com>
2026-06-08 15:18:48 +02:00
Hadi 7f54f94974 nur-anotherhadi
Signed-off-by: Hadi <hadi@example.com>
2026-06-08 14:47:28 +02:00
Hadi 148b093eb4 add yazi, wiremix, impala, ..
Signed-off-by: Hadi <hadi@example.com>
2026-06-05 11:43:09 +02:00
Hadi dd3ad203fa update & add packages
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-06-04 22:29:02 +02:00
Hadi 76f2982167 run in background
Signed-off-by: Hadi <hadi@example.com>
2026-06-04 16:35:15 +02:00
Hadi 868c215895 add TUIs
Signed-off-by: Hadi <hadi@example.com>
2026-06-04 16:20:41 +02:00
Hadi ceecbb858d init spotatui
Signed-off-by: Hadi <hadi@example.com>
2026-06-04 16:12:55 +02:00
Hadi 9e45e35b7e Merge branch 'main' of github.com:anotherhadi/nixy 2026-06-04 11:12:07 +02:00
Hadi 6c2a7563d3 disable rounded_frame
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-06-01 22:23:04 +02:00
Hadi 783e8fb9ff woops
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-06-01 22:22:50 +02:00
Hadi 2878142360 change tuigreet config
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-06-01 20:36:40 +02:00
Hadi 93c36aa3ef Merge branch 'main' of github.com:anotherhadi/nixy 2026-06-01 20:36:18 +02:00
Hadi a195e1d2e9 add clear alias
Signed-off-by: Hadi <hadi@example.com>
2026-06-01 16:08:35 +02:00
Hadi 3c13b64fec add bookmark
Signed-off-by: Hadi <hadi@example.com>
2026-06-01 16:08:31 +02:00
Hadi 1e4b0f610c remove hardtime
Signed-off-by: Hadi <hadi@example.com>
2026-06-01 11:39:21 +02:00
Hadi c06762d636 Merge branch 'main' of github.com:anotherhadi/nixy 2026-06-01 10:02:40 +02:00
Hadi 1ba64e3731 add apps
Signed-off-by: Hadi <hadi@example.com>
2026-06-01 10:02:28 +02:00
Hadi afc1928f5a Change tuigreet bin
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-05-30 23:32:47 +02:00
Hadi 87c258312c fix keyboards
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-05-30 22:02:32 +02:00
Hadi 03f6cd7fe8 remove hardtime.nvim
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-05-30 20:25:15 +02:00
Hadi 57db0eaaf6 getting back to tuigreet
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-05-30 20:25:08 +02:00
Hadi e14c569193 Add ilovetui colors
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-05-29 20:08:20 +02:00
Hadi a5e4dcddac use theme opacity
Signed-off-by: Hadi <hadi@example.com>
2026-05-28 11:58:35 +02:00
Hadi fd7c23055f solve warnings
Signed-off-by: Hadi <hadi@example.com>
2026-05-28 11:50:53 +02:00
Hadi 4322ca33db windowrules for helium
Signed-off-by: Hadi <hadi@example.com>
2026-05-28 11:43:17 +02:00
Hadi 9ebdaa1505 edit spf config
Signed-off-by: Hadi <hadi@example.com>
2026-05-28 10:10:56 +02:00
Hadi 6a9752b74e add a new usb key
Signed-off-by: Hadi <hadi@example.com>
2026-05-28 09:22:49 +02:00
Hadi 48bb118da4 transparent backgroud
Signed-off-by: Hadi <hadi@example.com>
2026-05-27 16:57:10 +02:00
Hadi ab92a39a28 add hardtime.nvim
Signed-off-by: Hadi <hadi@example.com>
2026-05-27 15:09:52 +02:00
Hadi ec6abc4aba add superfile
Signed-off-by: Hadi <hadi@example.com>
2026-05-27 15:02:23 +02:00
Hadi fe781a0eed add nvf bookmark
Signed-off-by: Hadi <hadi@example.com>
2026-05-27 15:02:18 +02:00
Hadi 19609ad781 update flakes
Signed-off-by: Hadi <hadi@example.com>
2026-05-27 14:13:43 +02:00
37 changed files with 713 additions and 630 deletions
Generated
+301 -495
View File
File diff suppressed because it is too large Load Diff
+5 -7
View File
@@ -13,9 +13,9 @@
stylix.url = "github:danth/stylix"; stylix.url = "github:danth/stylix";
sops-nix.url = "github:Mic92/sops-nix"; sops-nix.url = "github:Mic92/sops-nix";
nvf.url = "github:notashelf/nvf"; nvf.url = "github:notashelf/nvf";
bun2nix.url = "github:nix-community/bun2nix"; notashelf-tuigreet.url = "github:NotAShelf/tuigreet";
usbguard-tui.url = "github:anotherhadi/usbguard-tui"; helium-browser.url = "github:oxcl/nix-flake-helium-browser";
jwt-tui.url = "github:anotherhadi/jwt-tui"; nur-anotherhadi.url = "github:anotherhadi/nur-packages";
nix-index-database = { nix-index-database = {
url = "github:nix-community/nix-index-database"; url = "github:nix-community/nix-index-database";
@@ -37,16 +37,13 @@
url = "github:Gerg-L/spicetify-nix"; url = "github:Gerg-L/spicetify-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# Server # Server
# FIXME: Deleted repo for now
# eleakxir.url = "github:anotherhadi/eleakxir";
nixarr.url = "github:rasmus-kirk/nixarr"; nixarr.url = "github:rasmus-kirk/nixarr";
default-creds.url = "github:anotherhadi/default-creds"; default-creds.url = "github:anotherhadi/default-creds";
blog.url = "github:anotherhadi/blog"; blog.url = "github:anotherhadi/blog";
awesome-wallpapers.url = "github:anotherhadi/awesome-wallpapers"; awesome-wallpapers.url = "github:anotherhadi/awesome-wallpapers";
iknowyou.url = "github:anotherhadi/iknowyou"; iknowyou.url = "github:anotherhadi/iknowyou";
spilltea.url = "github:anotherhadi/spilltea";
helium-browser.url = "github:oxcl/nix-flake-helium-browser";
}; };
outputs = inputs @ { outputs = inputs @ {
@@ -64,6 +61,7 @@
pkgs pkgs
; ;
pkgs-stable = nixpkgs-stable.legacyPackages.${system}; pkgs-stable = nixpkgs-stable.legacyPackages.${system};
pkgs-nur-hadi = inputs.nur-anotherhadi.packages.${system};
}; };
merge = nixpkgs.lib.foldl nixpkgs.lib.recursiveUpdate {}; merge = nixpkgs.lib.foldl nixpkgs.lib.recursiveUpdate {};
in in
+26 -3
View File
@@ -1,16 +1,19 @@
{pkgs, ...}: let {
pkgs,
config,
...
}: let
cursorShaders = pkgs.fetchFromGitHub { cursorShaders = pkgs.fetchFromGitHub {
owner = "sahaj-b"; owner = "sahaj-b";
repo = "ghostty-cursor-shaders"; repo = "ghostty-cursor-shaders";
rev = "06d4e90fb5410e9c4d0b3131584060adddf89406"; rev = "06d4e90fb5410e9c4d0b3131584060adddf89406";
hash = "sha256-G/UIr1bKnxn1AcHl/4FL/jou6b7M2VeREslYVELxdmw="; hash = "sha256-G/UIr1bKnxn1AcHl/4FL/jou6b7M2VeREslYVELxdmw=";
}; };
c = config.lib.stylix.colors;
in { in {
home.sessionVariables = { home.sessionVariables = {
TERMINAL = "ghostty"; TERMINAL = "ghostty";
TERM = "ghostty"; TERM = "ghostty";
XMODIFIERS = "@im=none";
GTK_IM_MODULE = "simple";
}; };
programs.ghostty = { programs.ghostty = {
@@ -40,4 +43,24 @@ in {
]; ];
}; };
}; };
home.file.".config/ilovetui/config.yaml".text = ''
colors:
base00: "#${c.base00}" # Background
base01: "#${c.base01}" # Lighter Background / Status Bars
base02: "#${c.base02}" # Selection Background
base03: "#${c.base03}" # Comments / Invisibles
base04: "#${c.base04}" # Dark Foreground / Status Bars
base05: "#${c.base05}" # Default Foreground
base06: "#${c.base06}" # Light Foreground
base07: "#${c.base07}" # Light Background
base08: "#${c.base08}" # Variables / Errors / Diff Deleted
base09: "#${c.base09}" # Integers / Constants / Booleans
base0a: "#${c.base0A}" # Classes / Warnings / Search Background
base0b: "#${c.base0B}" # Strings / Success / Diff Inserted
base0c: "#${c.base0C}" # Support / Regex / Escape Characters
base0d: "#${c.base0D}" # Functions / Methods / Headings / Accent
base0e: "#${c.base0E}" # Keywords / Storage / Diff Changed
base0f: "#${c.base0F}" # Embedded / Misc
'';
} }
+29 -3
View File
@@ -1,4 +1,9 @@
{pkgs-stable, ...}: { {
pkgs,
pkgs-stable,
pkgs-nur-hadi,
...
}: {
home.packages = with pkgs-stable; [ home.packages = with pkgs-stable; [
vlc # Video player vlc # Video player
obsidian # Note taking app obsidian # Note taking app
@@ -8,9 +13,30 @@
gnome-text-editor # Basic graphic text editor gnome-text-editor # Basic graphic text editor
ticktick # Todo app ticktick # Todo app
pinta # Image editor pinta # Image editor
switcheroo # Convert images between different formats
onlyoffice-desktopeditors # Office suite onlyoffice-desktopeditors # Office suite
blanket # Listen to different sounds
signal-desktop # Messaging app signal-desktop # Messaging app
librewolf librewolf # Backup browser
# I love TUIs
caligula # User-friendly, lightweight TUI for disk imaging (ISO, USB BOOT)
browsh # A modern text-based browser that renders anything that a modern browser can. It runs in a terminal and can be used remotely over SSH
dysk # A terminal-based disk usage analyzer
wikiman # Offline search engine for manual pages (arch wiki, tldr)
tealdeer # Fast tldr client
sttr # Minimalist "cyberchef" like. Cross-platform, cli app to perform various operations on string
wiremix # Simple TUI mixer for PipeWire
pkgs.wifitui # TUI for managing wifi
pkgs-nur-hadi.usbguard-tui # TUI for managing USBGuard rules
# I love CLIs
httpie # Command-line HTTP client, a user-friendly cURL replacement
gh # GitHub
gh-dash # A terminal dashboard for GitHub
figlet # Transform text into ASCII art
pastel # Command-line tool to generate, analyze, convert and manipulate colors
imagemagick # Image manipulation tool
chafa # Image to ANSI/Unicode converter and more.
]; ];
} }
+34 -25
View File
@@ -1,39 +1,48 @@
{ {
pkgs, pkgs,
pkgs-stable, pkgs-stable,
inputs, pkgs-nur-hadi,
system,
}: }:
(with pkgs-stable; [ (with pkgs-stable; [
httpie # Web
trufflehog dirb
sttr ffuf
wireshark katana
nmap whatweb
john
# Hashes
hashcat hashcat
metasploit
haiti haiti
hydra hydra
john
# Databases
mariadb
redis
sqlmap
nosqli
# Network
inetutils
termshark # wireshark in TUI
dnsrecon dnsrecon
whois whois
dig dig
nosqli nmap
jwt-cli
nuclei
caido
gobuster
dirb
ffuf
sqlmap
katana
inetutils
samba samba
# Misc
metasploit
nuclei
openvpn openvpn
mariadb
redis # Secrets
trufflehog
# Forensics
binwalk
])
++ (with pkgs-nur-hadi; [
spilltea
jwt-tui
]) ])
++ [
inputs.spilltea.packages.${system}.default
inputs.jwt-tui.packages.${system}.default
]
+3 -4
View File
@@ -1,12 +1,11 @@
{ {
inputs,
pkgs-stable,
pkgs, pkgs,
pkgs-stable,
pkgs-nur-hadi,
... ...
}: { }: {
home.packages = import ./cybersecurity-packages.nix { home.packages = import ./cybersecurity-packages.nix {
inherit pkgs pkgs-stable inputs; inherit pkgs pkgs-stable pkgs-nur-hadi;
system = pkgs.stdenv.hostPlatform.system;
}; };
systemd.user.tmpfiles.rules = [ systemd.user.tmpfiles.rules = [
+2 -6
View File
@@ -1,22 +1,18 @@
{ {
pkgs, pkgs,
pkgs-stable, pkgs-stable,
inputs,
system,
}: }:
(with pkgs; [ (with pkgs; [
go go
bun
nodejs
claude-code claude-code
inputs.bun2nix.packages.${system}.default
]) ])
++ (with pkgs-stable; [ ++ (with pkgs-stable; [
nodejs
air air
duckdb duckdb
docker docker
python3 python3
jq jq
just
nix-prefetch-github nix-prefetch-github
rsync
]) ])
+1 -5
View File
@@ -1,11 +1,7 @@
{ {
pkgs, pkgs,
pkgs-stable, pkgs-stable,
inputs,
... ...
}: { }: {
home.packages = import ./dev-packages.nix { home.packages = import ./dev-packages.nix {inherit pkgs pkgs-stable;};
inherit pkgs pkgs-stable inputs;
system = pkgs.stdenv.hostPlatform.system;
};
} }
+3 -2
View File
@@ -2,11 +2,12 @@
inputs, inputs,
pkgs, pkgs,
pkgs-stable, pkgs-stable,
pkgs-nur-hadi,
system, system,
... ...
}: let }: let
devPackages = import ./dev-packages.nix {inherit pkgs pkgs-stable inputs system;}; devPackages = import ./dev-packages.nix {inherit pkgs pkgs-stable;};
cyberPackages = import ./cybersecurity-packages.nix {inherit pkgs pkgs-stable inputs system;}; cyberPackages = import ./cybersecurity-packages.nix {inherit pkgs pkgs-stable pkgs-nur-hadi;};
in { in {
packages.${system} = { packages.${system} = {
dev = pkgs.buildEnv { dev = pkgs.buildEnv {
+3 -1
View File
@@ -1,14 +1,16 @@
{ {
pkgs-stable, pkgs-stable,
pkgs-nur-hadi,
inputs, inputs,
... ...
}: { }: {
home.packages = with pkgs-stable; [ home.packages = with pkgs-stable; [
tty-solitaire
bastet
peaclock peaclock
cbonsai cbonsai
pipes pipes
cmatrix cmatrix
fastfetch fastfetch
inputs.usbguard-tui.packages.${system}.default
]; ];
} }
@@ -7,6 +7,10 @@
name = "Nix 4 Cyber"; name = "Nix 4 Cyber";
url = "https://n4c.hadi.icu"; url = "https://n4c.hadi.icu";
} }
{
name = "Infosec Notes - Anotherhadi";
url = "https://hadi.icu/notes";
}
{ {
name = "Cyberchef"; name = "Cyberchef";
url = "https://cyberchef.hadi.icu"; url = "https://cyberchef.hadi.icu";
@@ -31,6 +35,10 @@
name = "Exploit-DB"; name = "Exploit-DB";
url = "https://exploit-db.com"; url = "https://exploit-db.com";
} }
{
name = "Reverse Shell Generator";
url = "https://revshells.com";
}
{ {
name = "GTFOBins"; name = "GTFOBins";
url = "https://gtfobins.org/"; url = "https://gtfobins.org/";
+4
View File
@@ -11,6 +11,10 @@
name = "Hyprland Wiki"; name = "Hyprland Wiki";
url = "https://wiki.hypr.land"; url = "https://wiki.hypr.land";
} }
{
name = "NVF Options";
url = "https://nvf.notashelf.dev/";
}
{ {
name = "Stylix Wiki"; name = "Stylix Wiki";
url = "https://nix-community.github.io/stylix/"; url = "https://nix-community.github.io/stylix/";
+1
View File
@@ -66,6 +66,7 @@
.helium.browser.layout = 3 | .helium.browser.layout = 3 |
.helium.browser.minimal_location_bar = true | .helium.browser.minimal_location_bar = true |
.helium.browser.show_dynamic_new_tab_button = false | .helium.browser.show_dynamic_new_tab_button = false |
.helium.browser.rounded_frame = false |
.bookmark_bar.show_tab_groups = false | .bookmark_bar.show_tab_groups = false |
.extensions.settings[$id] = { .extensions.settings[$id] = {
"active_permissions": {"api": [], "explicit_host": [], "manifest_permissions": [], "scriptable_host": []}, "active_permissions": {"api": [], "explicit_host": [], "manifest_permissions": [], "scriptable_host": []},
+2 -2
View File
@@ -10,8 +10,6 @@ in {
home.packages = with pkgs; [ home.packages = with pkgs; [
bat bat
ripgrep ripgrep
tldr
witr
]; ];
# Add go binaries to the PATH # Add go binaries to the PATH
@@ -49,12 +47,14 @@ in {
''; '';
shellAliases = { shellAliases = {
spt = "spotatui";
vim = "nvim"; vim = "nvim";
vi = "nvim"; vi = "nvim";
v = "nvim"; v = "nvim";
c = "clear"; c = "clear";
clera = "clear"; clera = "clear";
celar = "clear"; celar = "clear";
claer = "clear";
e = "exit"; e = "exit";
cd = "z"; cd = "z";
ls = "eza --icons=always --no-quotes"; ls = "eza --icons=always --no-quotes";
+104
View File
@@ -0,0 +1,104 @@
# Spotatui is a terminal user interface for Spotify, written in Rust. It allows you to control your Spotify playback and manage your playlists directly from the terminal.
{
config,
pkgs,
...
}: let
c = config.lib.stylix.colors;
rgb = base: "${c."${base}-rgb-r"}, ${c."${base}-rgb-g"}, ${c."${base}-rgb-b"}";
in {
home.packages = with pkgs; [
spotatui
];
home.file.".config/spotatui/config.yml".text = ''
keybindings:
back: q
next_page: ctrl-d
previous_page: ctrl-u
jump_to_start: ctrl-a
jump_to_end: ctrl-e
jump_to_album: a
jump_to_artist_album: A
jump_to_context: o
manage_devices: d
decrease_volume: '-'
increase_volume: +
toggle_playback: space
seek_backwards: <
seek_forwards: '>'
next_track: n
previous_track: p
force_previous_track: P
help: '?'
shuffle: ctrl-s
repeat: ctrl-r
search: /
submit: enter
copy_song_url: c
copy_album_url: C
audio_analysis: v
lyrics_view: B
cover_art_view: G
add_item_to_queue: z
show_queue: Q
open_settings: alt-,
save_settings: alt-s
listening_party: ctrl-p
like_track: F
behavior:
seek_milliseconds: 5000
volume_increment: 10
volume_percent: 100
tick_rate_milliseconds: 16
enable_text_emphasis: true
show_loading_indicator: true
enforce_wide_search_bar: true
enable_global_song_count: false
disable_mouse_inputs: false
enable_discord_rpc: false
discord_rpc_client_id: null
enable_announcements: false
announcement_feed_url: null
seen_announcement_ids:
- 2026-05-19-sonos-help-wanted
- 2026-02-27-major-refactor-complete
shuffle_enabled: false
liked_icon:
shuffle_icon: 🔀
repeat_track_icon: 🔂
repeat_context_icon: 🔁
playing_icon:
paused_icon:
set_window_title: true
visualizer_style: Equalizer
dismissed_announcements: []
relay_server_url: wss://spotatui-party.spotatui.workers.dev/ws
stop_after_current_track: false
sidebar_width_percent: 20
playbar_height_rows: 6
library_height_percent: 30
startup_behavior: continue
disable_auto_update: true
auto_update_delay: '0'
keepawake_enabled: true
theme:
preset: Custom
active: ${rgb "base0D"}
banner: ${rgb "base0C"}
error_border: ${rgb "base08"}
error_text: ${rgb "base08"}
hint: ${rgb "base0A"}
hovered: ${rgb "base0E"}
inactive: ${rgb "base03"}
playbar_background: Reset
playbar_progress: ${rgb "base0D"}
playbar_progress_text: ${rgb "base05"}
playbar_text: Reset
selected: ${rgb "base0D"}
text: Reset
background: Reset
header: Reset
highlighted_lyrics: ${rgb "base0B"}
'';
}
-2
View File
@@ -35,8 +35,6 @@ in {
package = pkgs.papirus-icon-theme; package = pkgs.papirus-icon-theme;
}; };
gtk4.theme = null;
# bookmarks for the side pane # bookmarks for the side pane
gtk3.bookmarks = [ gtk3.bookmarks = [
"file:///home/${user}/Downloads Downloads" "file:///home/${user}/Downloads Downloads"
+76
View File
@@ -0,0 +1,76 @@
{ pkgs, ... }: {
programs.yazi = {
enable = true;
shellWrapperName = "y";
plugins = {
git = { package = pkgs.yaziPlugins.git; setup = true; };
ouch = pkgs.yaziPlugins.ouch;
piper = pkgs.yaziPlugins.piper;
convert = pkgs.yaziPlugins.convert;
"full-border" = { package = pkgs.yaziPlugins."full-border"; setup = true; };
"toggle-pane" = pkgs.yaziPlugins."toggle-pane";
"jump-to-char" = pkgs.yaziPlugins."jump-to-char";
"wl-clipboard" = pkgs.yaziPlugins."wl-clipboard";
starship = { package = pkgs.yaziPlugins.starship; setup = true; };
"batch-rename-gui" = pkgs.yaziPlugins.mkYaziPlugin {
pname = "batch-rename-gui.yazi";
version = "0-unstable-2025-07-08";
src = pkgs.fetchFromGitHub {
owner = "pakhromov";
repo = "batch-rename-gui.yazi";
rev = "5c2d5aa349948b6ab405a171541faab44751f6a5";
hash = "sha256-3RviPY3WOyYi5GWXWRYMWp6VLxCe5cuJX7Kb7AyWxLE=";
};
};
"command-palette" = pkgs.yaziPlugins.mkYaziPlugin {
pname = "command-palette.yazi";
version = "0-unstable-2025-07-08";
src = pkgs.fetchFromGitHub {
owner = "Mr-Ples";
repo = "command-palette.yazi";
rev = "e5e61057381e2642d36ba5b9a4977c8196bc1791";
hash = "sha256-Mt1q05YgexMyHpy8qQ778jBny9f7XrftDZXjzONZVxg=";
};
installPhase = ''
runHook preInstall
substituteInPlace main.lua \
--replace 'line = line:gsub' 'local line = line:gsub'
cp -r . $out
runHook postInstall
'';
};
};
settings.mgr.ratio = [ 1 4 3 ];
settings.plugin = {
prepend_fetchers = [
{ url = "*"; run = "git"; group = "git"; }
{ url = "*/"; run = "git"; group = "git"; }
];
prepend_previewers = [
{ url = "*.md"; run = ''piper -- CLICOLOR_FORCE=1 glow -w=$w -s=dark "$1"''; }
];
prepend_openers = [
{ url = "*.{zip,tar,gz,bz2,xz,7z,rar}"; run = "ouch"; }
];
};
keymap.mgr.prepend_keymap = [
{ on = ["C"]; run = "plugin ouch"; desc = "Compress"; }
{ on = ["X"]; run = "plugin ouch --args=extract"; desc = "Extract"; }
{ on = ["c" "p"]; run = "plugin convert -- --extension='png'"; desc = "Convert to PNG"; }
{ on = ["c" "j"]; run = "plugin convert -- --extension='jpg'"; desc = "Convert to JPG"; }
{ on = ["c" "w"]; run = "plugin convert -- --extension='webp'"; desc = "Convert to WebP"; }
{ on = ["M"]; run = ''shell 'exiftool "$@" | less' --block''; desc = "Show metadata"; }
{ on = ["T"]; run = "plugin toggle-pane min-parent"; desc = "Toggle parent pane"; }
{ on = ["F"]; run = "plugin jump-to-char"; desc = "Jump to char"; }
{ on = ["Y"]; run = "plugin wl-clipboard"; desc = "Copy to clipboard (Wayland)"; }
{ on = ["B"]; run = "plugin batch-rename-gui"; desc = "Batch rename"; }
{ on = [";"]; run = "plugin command-palette"; desc = "Command palette"; }
];
};
home.packages = with pkgs; [ glow ouch hexyl exiftool starship fzf ];
}
+2 -2
View File
@@ -16,8 +16,8 @@ in {
appearance = { appearance = {
transparency = { transparency = {
enabled = true; enabled = true;
base = 0.85; base = config.theme.active-opacity;
layers = 0.4; layers = config.theme.inactive-opacity;
}; };
font.family = { font.family = {
material = "Material Symbols Rounded"; material = "Material Symbols Rounded";
+7 -1
View File
@@ -58,7 +58,13 @@
]; ];
# shell.json is managed by home-manager (read-only symlink) but caelestia # shell.json is managed by home-manager (read-only symlink) but caelestia
# needs to write to it at runtime: replace the symlink with a mutable copy # needs to write to it at runtime: replace the symlink with a mutable copy.
# The stale .hm-backup must be removed before linkGeneration so HM can
# back up the runtime-modified shell.json without hitting a conflict.
home.activation.caelestiaCleanBackup = lib.hm.dag.entryBefore ["linkGeneration"] ''
$DRY_RUN_CMD rm -f "$HOME/.config/caelestia/shell.json.hm-backup"
'';
home.activation.caelestiaWritableShellConfig = lib.hm.dag.entryAfter ["linkGeneration"] '' home.activation.caelestiaWritableShellConfig = lib.hm.dag.entryAfter ["linkGeneration"] ''
if [ -L "$HOME/.config/caelestia/shell.json" ]; then if [ -L "$HOME/.config/caelestia/shell.json" ]; then
$DRY_RUN_CMD cp --remove-destination \ $DRY_RUN_CMD cp --remove-destination \
+15
View File
@@ -154,6 +154,21 @@
enabled = true; enabled = true;
dangerous = false; dangerous = false;
} }
{
name = "Run in background";
icon = "play_circle";
description = "Type and run any shell command in the background";
command = [
"ghostty"
"--title=run-bg"
"-e"
"bash"
"-c"
"printf 'Run: '; read -r cmd; [ -n \"$cmd\" ] && hyprctl dispatch exec \"$cmd\""
];
enabled = true;
dangerous = false;
}
]; ];
dragThreshold = 50; dragThreshold = 50;
enableDangerousActions = false; enableDangerousActions = false;
+7
View File
@@ -46,6 +46,7 @@ in {
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
configType = "hyprlang";
xwayland.enable = true; xwayland.enable = true;
systemd = { systemd = {
enable = false; enable = false;
@@ -123,6 +124,8 @@ in {
windowrule = [ windowrule = [
"match:class .*, suppress_event maximize" "match:class .*, suppress_event maximize"
"match:class helium, suppress_event fullscreen"
"match:class helium, sync_fullscreen false"
"match:class proton-authenticator, float on" "match:class proton-authenticator, float on"
"match:class proton-authenticator, center on" "match:class proton-authenticator, center on"
@@ -131,6 +134,10 @@ in {
"match:class protonvpn-app, float on" "match:class protonvpn-app, float on"
"match:class protonvpn-app, center on" "match:class protonvpn-app, center on"
"match:class protonvpn-app, size 500 400" "match:class protonvpn-app, size 500 400"
"match:title run-bg, float on"
"match:title run-bg, center on"
"match:title run-bg, size 700 80"
]; ];
misc = { misc = {
+1 -1
View File
@@ -8,7 +8,7 @@
../../nixos/home-manager.nix ../../nixos/home-manager.nix
../../nixos/nix.nix ../../nixos/nix.nix
../../nixos/systemd-boot.nix ../../nixos/systemd-boot.nix
../../nixos/sddm.nix ../../nixos/tuigreet.nix
../../nixos/users.nix ../../nixos/users.nix
../../nixos/utils.nix ../../nixos/utils.nix
../../nixos/hyprland.nix ../../nixos/hyprland.nix
+2
View File
@@ -15,6 +15,8 @@
../../home/programs/nixy ../../home/programs/nixy
../../home/programs/nightshift ../../home/programs/nightshift
../../home/programs/nix-utils ../../home/programs/nix-utils
../../home/programs/spotatui
../../home/programs/yazi
../../home/programs/group/basic-apps.nix ../../home/programs/group/basic-apps.nix
../../home/programs/group/cybersecurity.nix ../../home/programs/group/cybersecurity.nix
-1
View File
@@ -15,7 +15,6 @@
keyboardLayout = "fr"; keyboardLayout = "fr";
location = "Paris";
timeZone = "Europe/Paris"; timeZone = "Europe/Paris";
defaultLocale = "en_US.UTF-8"; defaultLocale = "en_US.UTF-8";
extraLocale = "fr_FR.UTF-8"; extraLocale = "fr_FR.UTF-8";
-1
View File
@@ -10,7 +10,6 @@ nixpkgs.lib.nixosSystem {
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
inputs.nixarr.nixosModules.default inputs.nixarr.nixosModules.default
# inputs.eleakxir.nixosModules.eleakxir
inputs.nix-index-database.nixosModules.default inputs.nix-index-database.nixosModules.default
inputs.default-creds.nixosModules.default inputs.default-creds.nixosModules.default
./configuration.nix ./configuration.nix
+1
View File
@@ -10,6 +10,7 @@
../../home/programs/git/lazygit.nix ../../home/programs/git/lazygit.nix
../../home/programs/nixy ../../home/programs/nixy
../../home/programs/nix-utils ../../home/programs/nix-utils
../../home/programs/yazi
../../home/programs/group/dev.nix ../../home/programs/group/dev.nix
]; ];
-1
View File
@@ -15,7 +15,6 @@
keyboardLayout = "fr"; keyboardLayout = "fr";
location = "Paris";
timeZone = "Europe/Paris"; timeZone = "Europe/Paris";
defaultLocale = "en_US.UTF-8"; defaultLocale = "en_US.UTF-8";
extraLocale = "fr_FR.UTF-8"; extraLocale = "fr_FR.UTF-8";
+3 -6
View File
@@ -1,8 +1,4 @@
{ {config, ...}: {
config,
lib,
...
}: {
imports = [ imports = [
# Mostly system related configuration # Mostly system related configuration
../../nixos/audio.nix ../../nixos/audio.nix
@@ -11,7 +7,7 @@
../../nixos/home-manager.nix ../../nixos/home-manager.nix
../../nixos/nix.nix ../../nixos/nix.nix
../../nixos/systemd-boot.nix ../../nixos/systemd-boot.nix
../../nixos/sddm.nix ../../nixos/tuigreet.nix
../../nixos/usbguard.nix ../../nixos/usbguard.nix
../../nixos/users.nix ../../nixos/users.nix
../../nixos/utils.nix ../../nixos/utils.nix
@@ -35,6 +31,7 @@
allow id 1d6b:0003 serial "0000:00:14.0" name "xHCI Host Controller" hash "prM+Jby/bFHCn2lNjQdAMbgc6tse3xVx+hZwjOPHSdQ=" parent-hash "rV9bfLq7c2eA4tYjVjwO4bxhm+y6GgZpl9J60L0fBkY=" with-interface 09:00:00 with-connect-type "" allow id 1d6b:0003 serial "0000:00:14.0" name "xHCI Host Controller" hash "prM+Jby/bFHCn2lNjQdAMbgc6tse3xVx+hZwjOPHSdQ=" parent-hash "rV9bfLq7c2eA4tYjVjwO4bxhm+y6GgZpl9J60L0fBkY=" with-interface 09:00:00 with-connect-type ""
allow id 17ef:608d serial "" name "Lenovo USB Optical Mouse" hash "klpDZuv1jhWGNqZLOl+KXF+75Ir3PfBm6D6ncjoLRBU=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-7" with-interface 03:01:02 with-connect-type "hotplug" allow id 17ef:608d serial "" name "Lenovo USB Optical Mouse" hash "klpDZuv1jhWGNqZLOl+KXF+75Ir3PfBm6D6ncjoLRBU=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-7" with-interface 03:01:02 with-connect-type "hotplug"
allow id 17ef:6190 serial "" name "Lenovo Calliope USB Keyboard G2" hash "CfZ9R/aoXGm7BN/ojVEzKQwVoxCUtRWMuACrE7BL/5Y=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-10" with-interface { 03:01:01 03:00:00 } with-connect-type "hotplug" allow id 17ef:6190 serial "" name "Lenovo Calliope USB Keyboard G2" hash "CfZ9R/aoXGm7BN/ojVEzKQwVoxCUtRWMuACrE7BL/5Y=" parent-hash "jEP/6WzviqdJ5VSeTUY8PatCNBKeaREvo2OqdplND/o=" via-port "1-10" with-interface { 03:01:01 03:00:00 } with-connect-type "hotplug"
allow id 0781:5581 name " SanDisk 3.2Gen1"
''; '';
networking.firewall.allowedTCPPorts = [9001]; networking.firewall.allowedTCPPorts = [9001];
+1
View File
@@ -12,6 +12,7 @@ nixpkgs.lib.nixosSystem {
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
inputs.nix-index-database.nixosModules.default inputs.nix-index-database.nixosModules.default
inputs.helium-browser.nixosModules.default
./configuration.nix ./configuration.nix
]; ];
} }
+2
View File
@@ -13,6 +13,8 @@
../../home/programs/nixy ../../home/programs/nixy
../../home/programs/nightshift ../../home/programs/nightshift
../../home/programs/nix-utils ../../home/programs/nix-utils
../../home/programs/spotatui
../../home/programs/yazi
../../home/programs/group/basic-apps.nix ../../home/programs/group/basic-apps.nix
../../home/programs/group/cybersecurity.nix ../../home/programs/group/cybersecurity.nix
-1
View File
@@ -15,7 +15,6 @@
keyboardLayout = "fr"; keyboardLayout = "fr";
location = "Paris";
timeZone = "Europe/Paris"; timeZone = "Europe/Paris";
defaultLocale = "en_US.UTF-8"; defaultLocale = "en_US.UTF-8";
extraLocale = "fr_FR.UTF-8"; extraLocale = "fr_FR.UTF-8";
+1
View File
@@ -14,6 +14,7 @@
system = pkgs.stdenv.hostPlatform.system; system = pkgs.stdenv.hostPlatform.system;
config.allowUnfree = true; config.allowUnfree = true;
}; };
pkgs-nur-hadi = inputs.nur-anotherhadi.packages.${pkgs.stdenv.hostPlatform.system};
}; };
}; };
} }
-59
View File
@@ -1,59 +0,0 @@
# SDDM is a display manager for X11 and Wayland
{
pkgs,
inputs,
config,
...
}: let
foreground = config.theme.textColorOnWallpaper;
sddm-astronaut = pkgs.sddm-astronaut.override {
embeddedTheme = "pixel_sakura";
themeConfig = {
HeaderTextColor = "#${foreground}";
DateTextColor = "#${foreground}";
TimeTextColor = "#${foreground}";
LoginFieldTextColor = "#${foreground}";
PasswordFieldTextColor = "#${foreground}";
UserIconColor = "#${foreground}";
PasswordIconColor = "#${foreground}";
WarningColor = "#${foreground}";
LoginButtonBackgroundColor = "#${foreground}";
SystemButtonsIconsColor = "#${foreground}";
SessionButtonTextColor = "#${foreground}";
VirtualKeyboardButtonTextColor = "#${foreground}";
DropdownBackgroundColor = "#${foreground}";
HighlightBackgroundColor = "#${foreground}";
Background =
if "sakura_pixelart_light_static.png" == config.stylix.image
then
pkgs.fetchurl {
url = "https://raw.githubusercontent.com/anotherhadi/awesome-wallpapers/refs/heads/main/app/static/wallpapers/sakura_pixelart_light_animated.gif";
sha256 = "sha256-qySDskjmFYt+ncslpbz0BfXiWm4hmFf5GPWF2NlTVB8=";
}
else if "cat-watching-the-star_pixelart_purple_static.png" == config.stylix.image
then
pkgs.fetchurl {
url = "https://raw.githubusercontent.com/anotherhadi/awesome-wallpapers/refs/heads/main/app/static/wallpapers/cat-watching-the-star_pixelart_purple_animated.gif";
sha256 = "";
}
else "${toString config.stylix.image}";
};
};
in {
services.displayManager = {
sddm = {
package = pkgs.kdePackages.sddm;
extraPackages = [sddm-astronaut];
enable = true;
wayland.enable = true;
theme = "sddm-astronaut-theme";
settings = {
Wayland.SessionDir = "${
inputs.hyprland.packages."${pkgs.stdenv.hostPlatform.system}".hyprland
}/share/wayland-sessions";
};
};
};
environment.systemPackages = [sddm-astronaut];
}
+62
View File
@@ -0,0 +1,62 @@
{
pkgs,
inputs,
config,
lib,
...
}: let
c = config.lib.stylix.colors;
tuigreet = inputs.notashelf-tuigreet.packages.${pkgs.stdenv.hostPlatform.system}.default;
theme = lib.concatStringsSep ";" [
"border=#${c.base0D}"
"text=#${c.base05}"
"prompt=#${c.base0D}"
"action=#${c.base0C}"
"button=#${c.base0D}"
"container=#${c.base00}"
"input=#${c.base02}"
];
tuigreet-launch = pkgs.writeShellScript "tuigreet-launch" ''
exec ${tuigreet}/bin/tuigreet \
--time \
--time-format '%H:%M %A %d %B' \
--sessions /run/current-system/sw/share/wayland-sessions \
--remember \
--remember-user-session \
--asterisks \
--greeting 'Welcome' \
--container-padding 2 \
--theme '${theme}' \
--power-shutdown 'systemctl poweroff' \
--power-reboot 'systemctl reboot'
'';
in {
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${tuigreet-launch}";
user = "greeter";
};
};
};
# this is a life saver.
# literally no documentation about this anywhere.
# might be good to write about this...
# https://www.reddit.com/r/NixOS/comments/u0cdpi/tuigreet_with_xmonad_how/
systemd.services.greetd.serviceConfig = {
Type = "idle";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "journal"; # Without this errors will spam on screen
# Without these bootlogs will spam on screen
TTYReset = true;
TTYVHangup = true;
TTYVTDisallocate = true;
};
environment.systemPackages = [tuigreet];
}
+5
View File
@@ -33,6 +33,11 @@ in {
timeZone = timeZone; timeZone = timeZone;
}; };
i18n.defaultLocale = defaultLocale; i18n.defaultLocale = defaultLocale;
i18n.inputMethod = {
enable = true;
type = "fcitx5";
fcitx5.addons = with pkgs; [fcitx5-gtk];
};
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
LC_ADDRESS = extraLocale; LC_ADDRESS = extraLocale;
LC_IDENTIFICATION = extraLocale; LC_IDENTIFICATION = extraLocale;
+1 -1
View File
@@ -15,7 +15,7 @@ in {
services.nginx = { services.nginx = {
enable = true; enable = true;
virtualHosts."wallpapers" = { virtualHosts."wallpapers" = {
root = "${inputs.awesome-wallpapers.packages.${pkgs.system}.default}/share/awesome-wallpapers"; root = "${inputs.awesome-wallpapers.packages.${pkgs.stdenv.hostPlatform.system}.default}/share/awesome-wallpapers";
listen = [ listen = [
{ {
addr = "0.0.0.0"; addr = "0.0.0.0";
+1 -1
View File
@@ -17,7 +17,7 @@ in {
enable = true; enable = true;
virtualHosts = { virtualHosts = {
"blog" = { "blog" = {
root = "${inputs.blog.packages.${pkgs.system}.default}/share/blog"; root = "${inputs.blog.packages.${pkgs.stdenv.hostPlatform.system}.default}/share/blog";
listen = [ listen = [
{ {
addr = "0.0.0.0"; addr = "0.0.0.0";