Compare commits

...

4 commits

69 changed files with 134 additions and 1785 deletions

View file

@ -2,7 +2,6 @@
# Allow unfree applications
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [
"spotify"
"keka"
];
}

View file

@ -5,19 +5,10 @@
...
}: {
imports = map (n: ../../../../home/applications/${n}) [
# Terminal
"alacritty"
# Editor
"neovim"
"vscode"
# Language
"nix"
"go"
# Media
"mpv"
"nix"
];
# Install MacOS applications to the user Applications folder. Also update Docked applications
@ -46,15 +37,6 @@
programs = let
monospace = "JetBrainsMono Nerd Font";
in {
### VSCode
vscode.userSettings.editor.fontFamily = monospace;
### Alacritty
alacritty.settings.font = {
normal.family = monospace;
bold.family = monospace;
bold_italic.family = monospace;
italic.family = monospace;
};
alacritty.settings.font.normal.family = monospace;
};
}

View file

@ -31,11 +31,11 @@
]
},
"locked": {
"lastModified": 1717949587,
"narHash": "sha256-KhLRsmEzycASmaqWnto0YzIbYs8J23jWGhyIkVGNdyE=",
"lastModified": 1718252558,
"narHash": "sha256-Yph5ocpdI3a1Ib+V9BQ4/0YyO4UVn8J0WeAvOLYGaGk=",
"owner": "berberman",
"repo": "flakes",
"rev": "e9b3df34b9727d94116bafb347f9cf10ea9126d7",
"rev": "73949fb5964f243ff9c28887bfc99c2fe12407c3",
"type": "github"
},
"original": {
@ -71,11 +71,11 @@
]
},
"locked": {
"lastModified": 1718008439,
"narHash": "sha256-nlh/2uD5p2SAdkn6Zuey20yaR5FFWvhL3poapDGNE4Y=",
"lastModified": 1718242063,
"narHash": "sha256-n3AWItJ4a94GT0cray/eUV7tt3mulQ52L+lWJN9d1E8=",
"owner": "nix-community",
"repo": "disko",
"rev": "c1cfbfad7cb45f0c177b35b59ba67d1b5fc7ca82",
"rev": "832a9f2c81ff3485404bd63952eadc17bf7ccef2",
"type": "github"
},
"original": {
@ -182,11 +182,11 @@
]
},
"locked": {
"lastModified": 1717931644,
"narHash": "sha256-Sz8Wh9cAiD5FhL8UWvZxBfnvxETSCVZlqWSYWaCPyu0=",
"lastModified": 1718243258,
"narHash": "sha256-abBpj2VU8p6qlRzTU8o22q68MmOaZ4v8zZ4UlYl5YRU=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3d65009effd77cb0d6e7520b68b039836a7606cf",
"rev": "8d5e27b4807d25308dfe369d5a923d87e7dbfda3",
"type": "github"
},
"original": {
@ -235,11 +235,11 @@
]
},
"locked": {
"lastModified": 1717943411,
"narHash": "sha256-43QN3+P7UjAz5ZjjUeYGKAyRfv6BLw7jjdc8Ric/6UQ=",
"lastModified": 1718218065,
"narHash": "sha256-fKC7Ryg3AYykDrS2ilS1VqA8/9B2m3yFZcshK+7tIEc=",
"owner": "nix-community",
"repo": "lanzaboote",
"rev": "56ed078dc92baf72813d55dcfe399715a632bc41",
"rev": "7cb05fab896bd542c0ca4260d74d9d664cd7b56e",
"type": "github"
},
"original": {
@ -284,11 +284,11 @@
]
},
"locked": {
"lastModified": 1717976995,
"narHash": "sha256-u3HBinyIyUvL1+N816bODpJmSQdgn0Mbb8BprFw7kqo=",
"lastModified": 1718345812,
"narHash": "sha256-FJhA+YFsOFrAYe6EaiTEfomNf7jeURaPiG5/+a3DRSc=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "315aa649ba307704db0b16c92f097a08a65ec955",
"rev": "ff988d78f2f55641efacdf9a585d2937f7e32a9b",
"type": "github"
},
"original": {
@ -364,11 +364,11 @@
]
},
"locked": {
"lastModified": 1718055567,
"narHash": "sha256-5StP3bDRzSFu33v+KA587FQ3IGCTeW8thlJZa9Geq6w=",
"lastModified": 1718401149,
"narHash": "sha256-THXbbmhDZjEnc+372GYl3JpXKkkuo7nhShv66Reklsk=",
"owner": "jacekszymanski",
"repo": "nixcasks",
"rev": "ff420cd0735bdc0312135bd4e444d00e70a24d83",
"rev": "d35924a6bd7c8a34f31e885754a5564ea06ab833",
"type": "github"
},
"original": {
@ -379,11 +379,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1717995329,
"narHash": "sha256-lQJXEFHHVsFdFLx0bvoRbZH3IXUBsle6EWj9JroTJ/s=",
"lastModified": 1718349360,
"narHash": "sha256-SuPne4BMqh9/IkKIAG47Cu5qfmntAaqlHdX1yuFoDO0=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "58b52b0dd191af70f538c707c66c682331cfdffc",
"rev": "ae5c8dcc4d0182d07d75df2dc97112de822cb9d6",
"type": "github"
},
"original": {
@ -409,11 +409,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1718089647,
"narHash": "sha256-COO4Xk2EzlZ3x9KCiJildlAA6cYDSPlnY8ms7pKl2Iw=",
"lastModified": 1718276985,
"narHash": "sha256-u1fA0DYQYdeG+5kDm1bOoGcHtX0rtC7qs2YA2N1X++I=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f7207adcc68d9cafa29e3cd252a18743ae512c6a",
"rev": "3f84a279f1a6290ce154c5531378acc827836fbb",
"type": "github"
},
"original": {
@ -441,11 +441,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1718060059,
"narHash": "sha256-9XKFni8VMXo81RTq9XygCyaO3I/7UKpwIlM/yn0MdcM=",
"lastModified": 1718229064,
"narHash": "sha256-ZFav8A9zPNfjZg/wrxh1uZeMJHELRfRgFP+meq01XYk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a3c8d64ba846725f040582b2d3b875466d2115bd",
"rev": "5c2ec3a5c2ee9909904f860dadc19bc12cd9cc44",
"type": "github"
},
"original": {
@ -496,11 +496,11 @@
},
"nur": {
"locked": {
"lastModified": 1718120696,
"narHash": "sha256-zbRgHbpEoYOLoiiYWKk9It+AU0v1zxF65QfEzB4QSH8=",
"lastModified": 1718400242,
"narHash": "sha256-gLX2eyWb8lVxwI5Uv0F5WKb+YwvlDYnI+sSQB2xMqhw=",
"owner": "nix-community",
"repo": "NUR",
"rev": "08af08b78b86c95b2771ff066d6dd4f3feb203c5",
"rev": "d50ea2706590f0edce9f49d8990dbcf82cdb66ec",
"type": "github"
},
"original": {
@ -522,11 +522,11 @@
]
},
"locked": {
"lastModified": 1713333471,
"narHash": "sha256-sIVQKOXzruxtTYiBRHZa8UQH+CSIa9K5MZlY6vavYfA=",
"lastModified": 1718252448,
"narHash": "sha256-xZZBdKqe1ByITzvx65pVgGQ5jeb73MybjgrcfI84lEo=",
"owner": "berberman",
"repo": "nvfetcher",
"rev": "2a824322dc6a755ffda83a13b948d42304521e4d",
"rev": "fa7609950023462c6f91c425de7610c0bb6b86ba",
"type": "github"
},
"original": {
@ -594,7 +594,6 @@
"rust-overlay": "rust-overlay",
"scss-reset": "scss-reset",
"sops-nix": "sops-nix",
"spicetify-nix": "spicetify-nix",
"srvos": "srvos",
"systems": "systems",
"treefmt-nix": "treefmt-nix"
@ -610,11 +609,11 @@
]
},
"locked": {
"lastModified": 1718072316,
"narHash": "sha256-p33h73iQ1HkLalCplV5MH0oP3HXRaH3zufnFqb5//ps=",
"lastModified": 1718331519,
"narHash": "sha256-6Ru37wS8uec626nHVIh6hSpCYB7eNc3RPFa2U//bhw4=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "bedc47af18fc41bb7d2edc2b212d59ca36253f59",
"rev": "419e7fae2731f41dd9b3e34dfe8802be68558b92",
"type": "github"
},
"original": {
@ -649,11 +648,11 @@
]
},
"locked": {
"lastModified": 1718058322,
"narHash": "sha256-d5jLlAwVi4NzT9yc5UrPiOpDxTRhu8GGh0IIfeFcdrM=",
"lastModified": 1718137936,
"narHash": "sha256-psA+1Q5fPaK6yI3vzlLINNtb6EeXj111zQWnZYyJS9c=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "d071c74a7de1e26d211b69b6fbae37ae2e31a87f",
"rev": "c279dec105dd53df13a5e57525da97905cc0f0d6",
"type": "github"
},
"original": {
@ -662,29 +661,6 @@
"type": "github"
}
},
"spicetify-nix": {
"inputs": {
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1704167711,
"narHash": "sha256-kFDq+kf/Di/P8bq5sUP8pVwRkrSVrABksBjMPmLic3s=",
"owner": "the-argus",
"repo": "spicetify-nix",
"rev": "1325416f951d6a82cfddb1289864ad782e2b87c4",
"type": "github"
},
"original": {
"owner": "the-argus",
"repo": "spicetify-nix",
"type": "github"
}
},
"srvos": {
"inputs": {
"nixpkgs": [
@ -692,11 +668,11 @@
]
},
"locked": {
"lastModified": 1718036376,
"narHash": "sha256-6hC1LrzXihZ/Tf7YNvICYUFHH+MvuXvpX8uV0hI5/6s=",
"lastModified": 1718239576,
"narHash": "sha256-Afdz9oCQf8VCGXUhI8KxdJg9gc+fepZK//mYsijfhFw=",
"owner": "nix-community",
"repo": "srvos",
"rev": "4098b95dde07ec1ef75cd2cba1ebdde0576b59f1",
"rev": "d6280e5c12c4ddb26f0807387777786c66e4c552",
"type": "github"
},
"original": {
@ -727,11 +703,11 @@
]
},
"locked": {
"lastModified": 1717850719,
"narHash": "sha256-npYqVg+Wk4oxnWrnVG7416fpfrlRhp/lQ6wQ4DHI8YE=",
"lastModified": 1718271476,
"narHash": "sha256-35hUMmFesmchb+u7heKHLG5B6c8fBOcSYo0jj0CHLes=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "4fc1c45a5f50169f9f29f6a98a438fb910b834ed",
"rev": "e75ba0a6bb562d2ce275db28f6a36a2e4fd81391",
"type": "github"
},
"original": {

View file

@ -82,11 +82,6 @@
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs-stable";
};
spicetify-nix = {
url = "github:the-argus/spicetify-nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
srvos = {
url = "github:nix-community/srvos";
inputs.nixpkgs.follows = "nixpkgs";

View file

@ -6,8 +6,18 @@
programs.alacritty = {
enable = true;
settings = {
env.WINIT_X11_SCALE_FACTOR = "1"; # workaround for scaling in X11
window.option_as_alt = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin "Both"; # for zellij on macOS
import = [
"${pkgs.vimPlugins.tokyonight-nvim}/extras/alacritty/tokyonight_night.toml"
];
cursor.style = "beam";
font.size = 10;
# workaround for scaling in X11
env.WINIT_X11_SCALE_FACTOR = "1";
# for zellij on macOS
window.option_as_alt = lib.mkIf pkgs.stdenv.hostPlatform.isDarwin "Both";
};
};
}

View file

@ -1,50 +0,0 @@
{
lib,
pkgs,
...
}: {
home.packages = [pkgs.blackbox-terminal];
# classic... dconf
dconf.settings."com/raggesilver/BlackBox" = {
pretty = false; # "Theme Integration"
cursor-shape = lib.hm.gvariant.mkUint32 1; # "line" cursor
#show-headerbar = false;
terminal-padding = lib.hm.gvariant.mkTuple [
(lib.hm.gvariant.mkUint32 12)
(lib.hm.gvariant.mkUint32 12)
(lib.hm.gvariant.mkUint32 12)
(lib.hm.gvariant.mkUint32 12)
];
};
# TODO: Tokyo Night
# Example:
#''
# {
# "name": "Gruvbox for Tilix",
# "comment": "Ported for Trilix Colour Scheme",
# "use-theme-colors": false,
# "foreground-color": "#ebdbb2",
# "background-color": "#282828",
# "palette": [
# "#282829",
# "#cc241d",
# "#98971a",
# "#d79921",
# "#458588",
# "#b16286",
# "#689d6a",
# "#a89984",
# "#928374",
# "#fb4934",
# "#b8bb26",
# "#fabd2f",
# "#83a598",
# "#d3869b",
# "#8ec07c",
# "#ebdbb2"
# ]
# }
#'';
}

View file

@ -1,75 +0,0 @@
{pkgs, ...}: {
imports = [
../common/wm.nix
../dunst
../picom
../polybar
../rofi
../sxhkd
../udiskie
];
home.packages = with pkgs; [flameshot feh];
xsession = {
enable = true;
windowManager.bspwm = {
enable = true;
startupPrograms = [
"pgrep -x sxhkd > /dev/null || sxhkd"
"pgrep -x feh > /dev/null || feh --no-fehbg --bg-fill ~/.local/share/backgrounds/Minato-Aqua-Dark.png"
];
monitors = {
eDP-1 = ["I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X"];
};
settings = {
border_width = 2;
window_gap = 4;
focus_follows_pointer = true;
split_ratio = 0.52;
borderless_monocle = true;
gapless_monocle = true;
};
};
};
home.file.".xinitrc".text = ''
#!/usr/bin/env bash
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f "$userresources" ]; then
xrdb -merge "$userresources"
fi
if [ -f "$usermodmap" ]; then
xmodmap "$usermodmap"
fi
# start some nice programs
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
# https://wiki.archlinux.org/title/Cursor_themes#Change_X_shaped_default_cursor
xsetroot -cursor_name left_ptr
exec bspwm
'';
}

View file

@ -1,32 +0,0 @@
{
programs.chromium = {
enable = true;
#package = pkgs.ungoogled-chromium;
# ungoogled-chrome does not work with extensions for now
# https://github.com/nix-community/home-manager/issues/2216
# https://github.com/nix-community/home-manager/issues/2585
extensions = [
{id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";} # ublock origin
{id = "mnjggcdmjocbbbhaepdhchncahnbgone";} # sponsorblock
{id = "icallnadddjmdinamnolclfjanhfoafe";} # fastforward
{id = "dbepggeogbaibhgnhhndojpepiihcmeb";} # vimium
{id = "nngceckbapebfimnlniiiahkandclblb";} # bitwarden
{id = "gebbhagfogifgggkldgodflihgfeippi";} # return youtube dislike
{id = "eimadpbcbfnmbkopoojfekhnkhdbieeh";} # dark reader
{id = "njdfdhgcmkocbgbhcioffdbicglldapd";} # localcdn
{id = "hipekcciheckooncpjeljhnekcoolahp";} # tabliss
{id = "bgfofngpplpmpijncjegfdgilpgamhdk";} # modern scrollbar
{id = "ajhmfdgkijocedmfjonnpjfojldioehi";} # privacy pass
{id = "hkgfoiooedgoejojocmhlaklaeopbecg";} # picture in picture
#{id = "fnaicdffflnofjppbagibeoednhnbjhg";} # floccus bookmark sync
#{id = "jaoafjdoijdconemdmodhbfpianehlon";} # skip redirect
#{id = "dhdgffkkebhmkfjojejmpbldmpobfkfo";} # tampermonkey
#{id = "jinjaccalgkegednnccohejagnlnfdag";} # violentmonkey
#{id = "kdbmhfkmnlmbkgbabkdealhhbfhlmmon";} # steamdb
#{id = "cmeakgjggjdlcpncigglobpjbkabhmjl";} # steam inventory helper
#{id = "mgijmajocgfcbeboacabfgobmjgjcoja";} # google dictionary
#{id = "kbfnbcaeplbcioakkpcpgfkobkghlhen";} # grammarly
#{id = "ekbmhggedfdlajiikminikhcjffbleac";} # 喵喵折+
];
};
}

View file

@ -1,31 +0,0 @@
{
lib,
config,
pkgs,
...
}: {
services.dunst = {
enable = true;
settings = lib.mkMerge [
{
global = {
padding = 10;
horizontal_padding = 10;
frame_width = 2;
font = "Monospace 10";
icon_path = "/home/guanranwang/.local/share/icons/dunst";
corner_radius = 10;
max_icon_size = 128; # weird bug, default value (128) not working
};
}
(lib.mkIf (config.myFlake.home-manager.colorScheme == "tokyonight")
(builtins.fromTOML (builtins.readFile "${pkgs.vimPlugins.tokyonight-nvim}/extras/dunst/tokyonight_night.dunstrc")))
];
};
xdg.dataFile."icons/dunst" = {
source = ./dunst;
recursive = true;
};
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 603 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 533 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 B

View file

@ -1,3 +0,0 @@
{pkgs, ...}: {
home.packages = [pkgs.fastfetch];
}

View file

@ -1,15 +1,9 @@
{
pkgs,
config,
lib,
...
}: {
{pkgs, ...}: {
programs.fish = {
enable = true;
interactiveShellInit = ''
set fish_greeting
${lib.strings.optionalString (config.myFlake.home-manager.colorScheme == "tokyonight")
"source ${pkgs.vimPlugins.tokyonight-nvim}/extras/fish/tokyonight_night.fish"}
source ${pkgs.vimPlugins.tokyonight-nvim}/extras/fish/tokyonight_night.fish
'';
plugins = [
{

View file

@ -1,3 +0,0 @@
{
programs.foot.enable = true;
}

View file

@ -1,21 +0,0 @@
# why is this placed in ./wm
{pkgs, ...}: {
home.packages =
(with pkgs.gnomeExtensions; [
# GNOME extensions
arcmenu
appindicator
blur-my-shell
caffeine
dash-to-panel
dash-to-dock
gamemode # outdated
just-perfection
kimpanel
])
++ (with pkgs.gnome; [
gnome-tweaks
gnome-software
gnome-shell-extensions
]);
}

View file

@ -5,15 +5,11 @@
}: {
programs.go.enable = true;
home.packages = with pkgs; [
gopls # lsp
delve # debugger
go-tools # linter and static analysis
gopls
delve
go-tools
];
### VSCode
programs.vscode.extensions = with pkgs.vscode-extensions; [golang.go];
# Make Go follow XDG
# "$HOME/go"...
xdg.configFile = {
"go/env".text = ''
GOPATH=${config.xdg.cacheHome}/go

View file

@ -1,39 +0,0 @@
{
config,
lib,
...
}: {
programs.helix = {
enable = true;
# defaultEditor = true;
settings = {
theme =
lib.mkIf (config.myFlake.home-manager.colorScheme == "tokyonight")
"tokyonight";
editor = {
cursor-shape = {
insert = "bar";
normal = "block";
select = "underline";
};
statusline.mode = {
normal = "--NORMAL--";
insert = "--INSERT--";
select = "--SELECT--";
};
soft-wrap.enable = true;
indent-guides.render = true;
file-picker.hidden = false;
};
# i still use these keybinds sometimes, even its hard to reach
keys.insert = {
C-left = "move_prev_word_start";
C-right = "move_next_word_end";
};
keys.normal = {
C-left = "move_prev_word_start";
C-right = "move_next_word_end";
};
};
};
}

View file

@ -1,41 +0,0 @@
{
#inputs,
lib,
...
}: {
imports = [
../common/wayland.nix
../common/wm.nix
../cliphist
../dunst
../rofi
../swayidle
../swaylock
../swww
../udiskie
../waybar
];
home.sessionVariables = {
QT_IM_MODULE = lib.mkForce "wayland"; # use text-input-v2
GTK_IM_MODULE = lib.mkForce "wayland"; # use text-input-v3
};
wayland.windowManager.hyprland = {
enable = true;
#plugins = with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}; [
# csgo-vulkan-fix
#];
extraConfig = ''
source = ~/.config/hypr/main.conf
source = ~/.config/hypr/keybinds.conf
source = ~/.config/hypr/autostart.conf
'';
};
xdg.configFile."hypr" = {
source = ./hypr;
recursive = true;
};
}

View file

@ -1,2 +0,0 @@
exec-once = swww init
exec-once = waybar

View file

@ -1,2 +0,0 @@
preload = /usr/share/backgrounds/odin-dark.jpg
wallpaper = eDP-1, /usr/share/backgrounds/odin-dark.jpg

View file

@ -1,118 +0,0 @@
# bind vars
$wp = ~/.local/bin/wrapped-swww
$dwp = ~/.local/bin/wrapped-mpvpaper
$changevolume = ~/.local/bin/wrapped-pamixer
$changebrightness = ~/.local/bin/wrapped-brightnessctl
$screenshot = ~/.local/bin/screenshot
$video_path = ~/.var/app/com.valvesoftware.Steam/data/Steam/steamapps/workshop/content/431960
# binds
bind = SUPER, return, exec, alacritty
bind = SUPER, E, exec, xdg-open ~
bind = SUPER, W, exec, xdg-open http:
bind = CONTROL SHIFT, Escape, exec, gnome-system-monitor
bind = ALT, R, exec, zenity --width 500 --entry | wl-copy
bind = SUPER, Backspace, exec, swaylock
bind = SUPER, F, fullscreen, 0
bind = SUPER SHIFT, F, fullscreen, 1
bind = SUPER, Q, killactive
bind = CONTROL SUPER SHIFT, Q, exec, hyprctl kill
bind = SUPER SHIFT, R, exec, pkill waybar; waybar
bind = CONTROL ALT, delete, exit,
# rofi / application launcher
bind = SUPER, D, exec, rofi -show drun -show-icons -icon-theme Tela-dracula-dark
bind = SUPER SHIFT, D, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy
bind = SUPER, Period, exec, rofi -modi emoji -show emoji
bind = SUPER SHIFT, L, exec, rofi -modi "power-menu:rofi-power-menu --confirm=reboot/shutdown" -show power-menu
# screenshot
bind = ,Print, exec, $screenshot fullscreen
bind = SUPER SHIFT, S, exec, $screenshot region
bind = ALT SHIFT, S, exec, $screenshot swappy
# wallpaper switching
bind = SHIFT ALT, 1, exec, $wp /usr/share/backgrounds/odin.jpg # pkg: elementary-wallpapers
bind = SHIFT ALT, 2, exec, $wp /usr/share/backgrounds/odin-dark.jpg
bind = SHIFT ALT, 3, exec, $wp ~/.local/share/backgrounds/Mojave\ Night.jpg
bind = SHIFT ALT, 4, exec, $wp ~/.local/share/backgrounds/wallpaper2.jpg
bind = SHIFT ALT, 5, exec, $wp ~/.local/share/backgrounds/wallpaper3.jpg
bind = SHIFT ALT, 6, exec, $wp ~/.local/share/backgrounds/wallpaper1.png # aur: mint-backgrounds
# /usr/share/backgrounds/archlinux/simple.png # archlinux-wallpapers
# /usr/share/backgrounds/archlinux/small.png
# video wallpapers from wallpaper engine
bind = SHIFT ALT, 7, exec, $dwp $video_path/2292710588/KleeWP.mp4
bind = SHIFT ALT, 8, exec, $dwp $video_path/821372791/灵梦.mp4
bind = SHIFT ALT, 9, exec, $dwp $video_path/827148653/Gargantua_BGM.mp4
bind = SHIFT ALT, 0, exec, $dwp $video_path/1661372823/EP03.mp4
bind = SHIFT ALT, Minus, exec, $dwp $video_path/2855732285/彩虹鸭鸭.mp4
bind = SHIFT ALT, Backspace, exec, pkill mpvpaper
# keyboard fn buttons
binde = ,XF86MonBrightnessUp, exec, $changebrightness up
binde = ,XF86MonBrightnessDown, exec, $changebrightness down
binde = ,XF86AudioRaiseVolume, exec, $changevolume up
binde = ,XF86AudioLowerVolume, exec, $changevolume down
bind = ,XF86AudioMute, exec, $changevolume mute
bind = ,XF86AudioPlay, exec, playerctl play-pause
bind = ,XF86AudioPrev, exec, playerctl previous
bind = ,XF86AudioNext, exec, playerctl next
bind = ,XF86AudioStop, exec, playerctl stop
bind = ,XF86AudioMedia, exec, playerctl play-pause
# window mode
bind = SUPER, C, pseudo # dwindle
bind = SUPER, S, togglesplit # dwindle
bind = SUPER, V, togglefloating
# window size
binde = SUPER, Minus, splitratio, -0.1
binde = SUPER, Equal, splitratio, 0.1
# move window focus
bind = SUPER, H, movefocus, l
bind = SUPER, J, movefocus, d
bind = SUPER, K, movefocus, u
bind = SUPER, L, movefocus, r
bind = SUPER, left, movefocus, l
bind = SUPER, right, movefocus, r
bind = SUPER, up, movefocus, u
bind = SUPER, down, movefocus, d
bind = SUPER, Tab, cyclenext # change focus to another window
bind = SUPER, Tab, bringactivetotop # bring it to the top
# workspaces binds
bind = SUPER, 1, workspace, 1
bind = SUPER, 2, workspace, 2
bind = SUPER, 3, workspace, 3
bind = SUPER, 4, workspace, 4
bind = SUPER, 5, workspace, 5
bind = SUPER, 6, workspace, 6
bind = SUPER, 7, workspace, 7
bind = SUPER, 8, workspace, 8
bind = SUPER, 9, workspace, 9
bind = SUPER, 0, workspace, 10
bind = SUPER SHIFT, 1, movetoworkspacesilent, 1
bind = SUPER SHIFT, 2, movetoworkspacesilent, 2
bind = SUPER SHIFT, 3, movetoworkspacesilent, 3
bind = SUPER SHIFT, 4, movetoworkspacesilent, 4
bind = SUPER SHIFT, 5, movetoworkspacesilent, 5
bind = SUPER SHIFT, 6, movetoworkspacesilent, 6
bind = SUPER SHIFT, 7, movetoworkspacesilent, 7
bind = SUPER SHIFT, 8, movetoworkspacesilent, 8
bind = SUPER SHIFT, 9, movetoworkspacesilent, 9
bind = SUPER SHIFT, 0, movetoworkspacesilent, 10
# mouse binds
bind = SUPER, mouse_down, workspace, e-1 # scroll wheels
bind = SUPER, mouse_up, workspace, e+1
bindm = SUPER, mouse:272, movewindow # left click
bindm = SUPER, mouse:273, resizewindow # right click

View file

@ -1,80 +0,0 @@
# Display settings
monitor = ,preferred, auto, 1
monitor = eDP-1, 1920x1080@60, 0x0, 1.25 # laptop screen eDP-1
# General settings
general {
gaps_in = 4
gaps_out = 8 # dont forget to change waybar margin
border_size = 2
layout = dwindle
}
# Decorations
decoration {
blur {
size = 4
passes = 4
}
rounding = 4
shadow_range = 50
shadow_render_power = 5
col.shadow = 0x88000000
col.shadow_inactive = 0x44000000
}
# Animations
animations {
bezier = easeOutExpo, 0.16, 1, 0.3, 1
bezier = easeOutQuint, 0.22, 1, 0.36, 1
animation = windows, 1, 6, default, popin
animation = fade, 1, 8, default
animation = border, 1, 8, default
animation = borderangle, 1, 8, default
animation = workspaces, 1, 4, default
}
# Input settings
input {
accel_profile = flat
#force_no_accel = false
natural_scroll = true
touchpad {
natural_scroll = true
disable_while_typing = false
drag_lock = true
}
}
# idk
dwindle {
pseudotile = true
preserve_split = true
}
# Touchpad gestures
gestures {
workspace_swipe = true # touchpad swipe to switch workspaces
workspace_swipe_distance = 600 # doubles gesture distance
}
# XWayland
XWayland {
#use_nearest_neighbor = false
force_zero_scaling = true
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
animate_manual_resizes = true
}
# Windows rules
windowrule = float, ^(pwvucontrol)$
windowrule = float, ^(org.gnome.Calculator)$
# Layer rules
layerrule = blur, notifications
layerrule = blur, rofi
layerrule = ignorezero, notifications

View file

@ -1,10 +0,0 @@
# i dont actually know how did i get this color scheme
general {
#col.active_border = rgba(60C4F1FF) rgba(9F9BABFF) rgba(A2AECFFF) 45deg
#col.active_border = rgba(222222FF)
col.active_border = rgba(C0CAF5FF)
#col.inactive_border = rgba(60C4F166)
#col.inactive_border = rgba(222222FF)
col.inactive_border = rgba(414868FF)
}

View file

@ -1,61 +0,0 @@
$rosewaterAlpha = f2d5cf
$flamingoAlpha = eebebe
$pinkAlpha = f4b8e4
$mauveAlpha = ca9ee6
$redAlpha = e78284
$maroonAlpha = ea999c
$peachAlpha = ef9f76
$yellowAlpha = e5c890
$greenAlpha = a6d189
$tealAlpha = 81c8be
$skyAlpha = 99d1db
$sapphireAlpha = 85c1dc
$blueAlpha = 8caaee
$lavenderAlpha = babbf1
$textAlpha = c6d0f5
$subtext1Alpha = b5bfe2
$subtext0Alpha = a5adce
$overlay2Alpha = 949cbb
$overlay1Alpha = 838ba7
$overlay0Alpha = 737994
$surface2Alpha = 626880
$surface1Alpha = 51576d
$surface0Alpha = 414559
$baseAlpha = 303446
$mantleAlpha = 292c3c
$crustAlpha = 232634
$rosewater = 0xfff5e0dc
$flamingo = 0xfff2cdcd
$pink = 0xfff5c2e7
$mauve = 0xffcba6f7
$red = 0xfff38ba8
$maroon = 0xffeba0ac
$peach = 0xfffab387
$yellow = 0xfff9e2af
$green = 0xffa6e3a1
$teal = 0xff94e2d5
$sky = 0xff89dceb
$sapphire = 0xff74c7ec
$blue = 0xff89b4fa
$lavender = 0xffb4befe
$text = 0xffcdd6f4
$subtext1 = 0xffbac2de
$subtext0 = 0xffa6adc8
$overlay2 = 0xff9399b2
$overlay1 = 0xff7f849c
$overlay0 = 0xff6c7086
$surface2 = 0xff585b70
$surface1 = 0xff45475a
$surface0 = 0xff313244
$base = 0xff1e1e2e
$mantle = 0xff181825
$crust = 0xff11111b

View file

@ -1,61 +0,0 @@
$rosewaterAlpha = dc8a78
$flamingoAlpha = dd7878
$pinkAlpha = ea76cb
$mauveAlpha = 8839ef
$redAlpha = d20f39
$maroonAlpha = e64553
$peachAlpha = fe640b
$yellowAlpha = df8e1d
$greenAlpha = 40a02b
$tealAlpha = 179299
$skyAlpha = 04a5e5
$sapphireAlpha = 209fb5
$blueAlpha = 1e66f5
$lavenderAlpha = 7287fd
$textAlpha = 4c4f69
$subtext1Alpha = 5c5f77
$subtext0Alpha = 6c6f85
$overlay2Alpha = 7c7f93
$overlay1Alpha = 8c8fa1
$overlay0Alpha = 9ca0b0
$surface2Alpha = acb0be
$surface1Alpha = bcc0cc
$surface0Alpha = ccd0da
$baseAlpha = eff1f5
$mantleAlpha = e6e9ef
$crustAlpha = dce0e8
$rosewater = 0xfff5e0dc
$flamingo = 0xfff2cdcd
$pink = 0xfff5c2e7
$mauve = 0xffcba6f7
$red = 0xfff38ba8
$maroon = 0xffeba0ac
$peach = 0xfffab387
$yellow = 0xfff9e2af
$green = 0xffa6e3a1
$teal = 0xff94e2d5
$sky = 0xff89dceb
$sapphire = 0xff74c7ec
$blue = 0xff89b4fa
$lavender = 0xffb4befe
$text = 0xffcdd6f4
$subtext1 = 0xffbac2de
$subtext0 = 0xffa6adc8
$overlay2 = 0xff9399b2
$overlay1 = 0xff7f849c
$overlay0 = 0xff6c7086
$surface2 = 0xff585b70
$surface1 = 0xff45475a
$surface0 = 0xff313244
$base = 0xff1e1e2e
$mantle = 0xff181825
$crust = 0xff11111b

View file

@ -1,61 +0,0 @@
$rosewaterAlpha = f4dbd6
$flamingoAlpha = f0c6c6
$pinkAlpha = f5bde6
$mauveAlpha = c6a0f6
$redAlpha = ed8796
$maroonAlpha = ee99a0
$peachAlpha = f5a97f
$yellowAlpha = eed49f
$greenAlpha = a6da95
$tealAlpha = 8bd5ca
$skyAlpha = 91d7e3
$sapphireAlpha = 7dc4e4
$blueAlpha = 8aadf4
$lavenderAlpha = b7bdf8
$textAlpha = cad3f5
$subtext1Alpha = b8c0e0
$subtext0Alpha = a5adcb
$overlay2Alpha = 939ab7
$overlay1Alpha = 8087a2
$overlay0Alpha = 6e738d
$surface2Alpha = 5b6078
$surface1Alpha = 494d64
$surface0Alpha = 363a4f
$baseAlpha = 24273a
$mantleAlpha = 1e2030
$crustAlpha = 181926
$rosewater = 0xfff5e0dc
$flamingo = 0xfff2cdcd
$pink = 0xfff5c2e7
$mauve = 0xffcba6f7
$red = 0xfff38ba8
$maroon = 0xffeba0ac
$peach = 0xfffab387
$yellow = 0xfff9e2af
$green = 0xffa6e3a1
$teal = 0xff94e2d5
$sky = 0xff89dceb
$sapphire = 0xff74c7ec
$blue = 0xff89b4fa
$lavender = 0xffb4befe
$text = 0xffcdd6f4
$subtext1 = 0xffbac2de
$subtext0 = 0xffa6adc8
$overlay2 = 0xff9399b2
$overlay1 = 0xff7f849c
$overlay0 = 0xff6c7086
$surface2 = 0xff585b70
$surface1 = 0xff45475a
$surface0 = 0xff313244
$base = 0xff1e1e2e
$mantle = 0xff181825
$crust = 0xff11111b

View file

@ -1,61 +0,0 @@
$rosewaterAlpha = f5e0dc
$flamingoAlpha = f2cdcd
$pinkAlpha = f5c2e7
$mauveAlpha = cba6f7
$redAlpha = f38ba8
$maroonAlpha = eba0ac
$peachAlpha = fab387
$yellowAlpha = f9e2af
$greenAlpha = a6e3a1
$tealAlpha = 94e2d5
$skyAlpha = 89dceb
$sapphireAlpha = 74c7ec
$blueAlpha = 89b4fa
$lavenderAlpha = b4befe
$textAlpha = cdd6f4
$subtext1Alpha = bac2de
$subtext0Alpha = a6adc8
$overlay2Alpha = 9399b2
$overlay1Alpha = 7f849c
$overlay0Alpha = 6c7086
$surface2Alpha = 585b70
$surface1Alpha = 45475a
$surface0Alpha = 313244
$baseAlpha = 1e1e2e
$mantleAlpha = 181825
$crustAlpha = 11111b
$rosewater = 0xfff5e0dc
$flamingo = 0xfff2cdcd
$pink = 0xfff5c2e7
$mauve = 0xffcba6f7
$red = 0xfff38ba8
$maroon = 0xffeba0ac
$peach = 0xfffab387
$yellow = 0xfff9e2af
$green = 0xffa6e3a1
$teal = 0xff94e2d5
$sky = 0xff89dceb
$sapphire = 0xff74c7ec
$blue = 0xff89b4fa
$lavender = 0xffb4befe
$text = 0xffcdd6f4
$subtext1 = 0xffbac2de
$subtext0 = 0xffa6adc8
$overlay2 = 0xff9399b2
$overlay1 = 0xff7f849c
$overlay0 = 0xff6c7086
$surface2 = 0xff585b70
$surface1 = 0xff45475a
$surface0 = 0xff313244
$base = 0xff1e1e2e
$mantle = 0xff181825
$crust = 0xff11111b

View file

@ -1,6 +0,0 @@
{
programs.kitty = {
enable = true;
settings.confirm_os_window_close = 0;
};
}

View file

@ -1,36 +0,0 @@
_: {
programs.librewolf = {
enable = true;
settings = {
# https://codeberg.org/librewolf/settings/src/branch/master/librewolf.cfg
# https://github.com/yokoffing/Betterfox/blob/main/librewolf.overrides.cfg
### Restore disabled functions
"browser.cache.disk.enable" = true;
"identity.fxaccounts.enabled" = true;
"media.eme.enabled" = true;
"privacy.donottrackheader.enabled" = false;
"privacy.globalprivacycontrol.enabled" = false;
"privacy.resistFingerprinting" = false;
"privacy.sanitize.sanitizeOnShutdown" = false;
"security.OCSP.enabled" = 0;
"security.OCSP.require" = false;
"security.pki.crlite_mode" = 2;
"webgl.disabled" = false;
### Smooth scrolling
"apz.overscroll.enabled" = true;
"general.smoothScroll" = true;
"general.smoothScroll.msdPhysics.enabled" = true;
"general.smoothScroll.msdPhysics.motionBeginSpringConstant" = 600;
"mousewheel.default.delta_multiplier_y" = 75;
### Misc
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
};
};
home.sessionVariables = {
MOZ_USE_XINPUT2 = "1";
};
}

View file

@ -1,3 +0,0 @@
{pkgs, ...}: {
home.packages = [pkgs.loupe];
}

View file

@ -23,17 +23,4 @@
# for `nh`
# yes, i know, weird and long path
home.sessionVariables.FLAKE = "/home/guanranwang/Documents/Projects/git-repos/github.com/Guanran928/flake";
### VSCode
programs.vscode = {
extensions = [pkgs.vscode-extensions.jnoortheen.nix-ide];
userSettings.nix = {
enableLanguageServer = true;
serverPath = "nil";
serverSettings.nil = {
formatting.command = ["alejandra"];
nix.flake.autoArchive = true;
};
};
};
}

View file

@ -1,47 +0,0 @@
{config, ...}: {
services.picom = {
enable = true;
package = config.nur.repos.guanran928.picom-ft-labs;
settings = {
# Animations
animations = true;
animation-for-open-window = "zoom";
animation-for-unmap-window = "squeeze";
animation-for-transient-window = "slide-down";
# Blur
blur-method = "dual_kawase";
blur-strength = 10;
blur-background-exclude = [
"_GTK_FRAME_EXTENTS@:c"
];
# Corners
corner-radius = 12;
rounded-corners-exclude = [
"class_g = 'Polybar'"
];
# Opacity
opacity-rule = [
"100:_NET_WM_STATE@:32a = '_NET_WM_STATE_FULLSCREEN'"
"90:class_g = 'Polybar'"
"90:class_g = 'Rofi'"
"90:class_g = 'Alacritty'"
];
# Shadow
shadow = true;
shadow-exclude = [
"_GTK_FRAME_EXTENTS@:c"
];
# Misc
backend = "glx";
glx-no-rebind-pixmap = true;
glx-no-stencil = true;
vsync = true;
unredir-if-possible = true;
};
};
}

View file

@ -1,177 +0,0 @@
{
services.polybar = {
enable = true;
script = "polybar bar";
config = {
colors = {
base = "#1e1e2e";
mantle = "#181825";
crust = "#cc11111b";
text = "#cdd6f4";
subtext0 = "#a6adc8";
subtext1 = "#bac2de";
surface0 = "#313244";
surface1 = "#45475a";
surface2 = "#585b70";
overlay0 = "#6c7086";
overlay1 = "#7f849c";
overlay2 = "#9399b2";
blue = "#89b4fa";
lavender = "#b4befe";
sapphire = "#74c7ec";
sky = "#89dceb";
teal = "#94e2d5";
green = "#a6e3a1";
yellow = "#f9e2af";
peach = "#fab387";
maroon = "#eba0ac";
red = "#f38ba8";
mauve = "#cba6f7";
pink = "#f5c2e7";
flamingo = "#f2cdcd";
rosewater = "#f5e0dc";
transparent = "#FF00";
};
"bar/main" = {
width = "100%";
height = 30;
offset-y = 0;
top = true;
fixed-center = true;
wm-restack = "bspwm";
override-redirect = false;
scroll-up = "next";
scroll-down = "prev";
enable-ipc = true;
background = "\${colors.crust}";
foreground = "\${colors.text}";
font-0 = "JetBrainsMono Nerd Font:style=Bold:size=10;2";
font-1 = "Source Han Sans CN:size=10;2";
modules-left = "bspwm";
modules-center = "title";
modules-right = "pulseaudio battery date";
tray-position = "right";
cursor-click = "pointer";
};
settings = {
screenchange-reload = true;
format-padding = 1;
};
"module/nowplaying" = {
type = "custom/script";
tail = true;
interval = 1;
format = "󰕾 <label>";
exec = "playerctl metadata --format \"{{ artist }} - {{ title }}\"";
};
"module/battery" = {
type = "internal/battery";
battery = "BAT0";
adapter = "ADP1";
full-at = 98;
low-at = 30;
format-full-prefix = "󰁹";
format-full = "<label-charging>";
format-charging-prefix = "󰂄";
format-charging = "<label-charging>";
label-charging = "%percentage:2%%";
label-charging-padding = 1;
format-discharging = "<ramp-capacity> <label-discharging>";
label-discharging = "%percentage%%";
label-discharging-padding = 1;
ramp-capacity-0 = "󰁺";
ramp-capacity-1 = "󰁼";
ramp-capacity-2 = "󰁾";
ramp-capacity-3 = "󰁾";
ramp-capacity-4 = "󰂂";
ramp-capacity-5 = "󰁹";
ramp-capacity-5-weight = 2;
format-low = "<ramp-capacity> <label-low>";
label-low-padding = 1;
label-low-foreground = "\${colors.red}";
poll-interval = 5;
};
"module/bspwm" = {
type = "internal/bspwm";
format = "<label-state> <label-mode>";
label-focused = "%name%";
label-focused-foreground = "\${colors.text}";
label-focused-padding = 1;
label-occupied = "%name%";
label-occupied-foreground = "\${colors.overlay0}";
label-occupied-padding = 1;
label-urgent = "%name%";
label-urgent-foreground = "\${colors.red}";
label-urgent-padding = 1;
label-empty = "%name%";
label-empty-foreground = "\${colors.surface0}";
label-empty-padding = 1;
};
"module/date" = {
type = "internal/date";
interval = 1;
time = "%a, %b %d %H:%M";
format = "<label>";
format-padding = 1;
format-prefix = "%{T5}󰃭%{T-}";
label = "%{T1}%time%%{T-}";
label-padding = 1;
};
"module/pulseaudio" = {
type = "internal/pulseaudio";
use-ui-max = false;
format-volume = "<label-volume>";
format-volume-prefix = "%{T4}󰖁%{T-}";
label-volume = "%{T1}%percentage%%%{T-}";
label-volume-padding = 1;
format-muted = "<label-muted>";
format-muted-prefix = "󰸈";
label-muted = "%{T1}%percentage%%%{T-}";
label-muted-padding = 1;
click-right = "pwvucontrol&";
};
"module/title" = {
type = "internal/xwindow";
format = "<label>";
format-padding = 4;
label = "%title%";
label-maxlen = 50;
label-empty = "Empty";
label-empty-foreground = "#707880";
};
};
};
}

View file

@ -1,3 +0,0 @@
{pkgs, ...}: {
home.packages = [pkgs.spotify];
}

View file

@ -1,19 +0,0 @@
{
pkgs,
inputs,
...
}: let
spicePkgs = inputs.spicetify-nix.packages.${pkgs.stdenv.hostPlatform.system}.default;
in {
# import the flake's module for your system
imports = [inputs.spicetify-nix.homeManagerModule];
# configure spicetify :)
programs.spicetify = {
enable = true;
enabledExtensions = with spicePkgs.extensions; [
adblock
keyboardShortcut
];
};
}

View file

@ -1,20 +1,10 @@
{pkgs, ...}: {
{
pkgs,
lib,
...
}: {
programs.starship = {
enable = true;
settings =
{
#add_newline = false;
#line_break.disabled = true;
#character = {
# success_symbol = "[>](bold green)";
# error_symbol = "[>](bold red)";
# vimcmd_symbol = "[<](bold green)";
# vimcmd_replace_one_symbol = "[<](bold purple)";
# vimcmd_replace_symbol = "[<](bold purple)";
# vimcmd_visual_symbol = "[<](bold yellow)";
#};
}
// (builtins.fromTOML (builtins.readFile "${pkgs.starship}/share/starship/presets/nerd-font-symbols.toml"));
settings = lib.importTOML "${pkgs.starship}/share/starship/presets/nerd-font-symbols.toml";
};
}

View file

@ -6,8 +6,6 @@
...
}: {
imports = [
../common/wayland.nix
../common/wm.nix
../i3status-rust
../mako
../rofi
@ -15,6 +13,20 @@
../swaylock
];
home.sessionVariables = {
NIXOS_OZONE_WL = "1"; # let electron applications use wayland
};
home.packages = with pkgs; [
wl-clipboard
pwvucontrol
];
# remove csd window buttons
# https://github.com/localsend/localsend/blob/2457acd8a7412723b174672d174e4853dccd7d99/app/linux/my_application.cc#L45
home.sessionVariables.GTK_CSD = 0;
dconf.settings."org/gnome/desktop/wm/preferences"."button-layout" = "icon,appmenu:";
services.cliphist.enable = true;
services.udiskie.enable = true;

View file

@ -1,75 +0,0 @@
{
services.sxhkd = {
enable = true;
keybindings = {
#
# wm independent hotkeys
#
"super + Return" = "alacritty"; # terminal emulator
"super + e" = "xdg-open ~"; # file manager
"super + w" = "xdg-open http://"; # browser
"super + d" = "rofi -show drun -show-icons -icon-theme Tela-dracula-dark"; # program launcher
"super + shift + s" = "flameshot gui"; # flameshot
"super + BackSpace" = "betterlockscreen -l";
#
# bspwm hotkeys
#
"super + shift + r" = "bspc wm -r;pkill -USR1 -x sxhkd"; # reload bspwm
"control + alt + Delete" = "bspc quit"; # quit bspwm
"super + q" = "bspc node -c"; # close window
"super + m" = "bspc desktop -l next"; # wtf is this; # alternate between the tiled and monocle layout
"super + y" = "bspc node newest.marked.local -n newest.!automatic.local"; # wtf is this; # send the newest marked node to the newest preselected node
"super + g" = "bspc node -s biggest.window"; # wtf is this; # swap the current node and the biggest window
#
# state/flags
#
"super + {a,shift + a,s,f}" = "bspc node -t {tiled,pseudo_tiled,floating,fullscreen}"; # set the window state
"super + ctrl + {m,x,y,z}" = "bspc node -g {marked,locked,sticky,private}"; # huh; # set the node flags
#
# focus/swap
#
"super + {_,shift + }{h,j,k,l}" = "bspc node -{f,s} {west,south,north,east}"; # focus the node in the given direction
"super + {p,b,comma,period}" = "bspc node -f @{parent,brother,first,second}"; # focus the node for the given path jump
"super + {_,shift + }c" = "bspc node -f {next,prev}.local.!hidden.window"; # focus the next/previous window in the current desktop
"super + bracket{left,right}" = "bspc desktop -f {prev,next}.local"; # focus the next/previous desktop in the current monitor
"super + {grave,Tab}" = "bspc {node,desktop} -f last"; # focus the last node/desktop
"super + {o,i}" = "bspc wm -h off; bspc node {older,newer} -f; bspc wm -h on"; # focus the older or newer node in the focus history
"super + {_,shift + }{1-9,0}" = "bspc {desktop -f,node -d} '^{1-9,10}'"; # focus or send to the given desktop
#
# preselect
#
"super + ctrl + {h,j,k,l}" = "bspc node -p {west,south,north,east}"; # preselect the direction
"super + ctrl + {1-9}" = "bspc node -o 0.{1-9}"; # preselect the ratio
"super + ctrl + space" = "bspc node -p cancel"; # cancel the preselection for the focused node
"super + ctrl + shift + space" = "bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel"; # cancel the preselection for the focused desktop
#
# move/resize
#
"super + alt + {h,j,k,l}" = "bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}"; # expand a window by moving one of its side outward
"super + alt + shift + {h,j,k,l}" = "bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}"; # contract a window by moving one of its side inward
"super + {Left,Down,Up,Right}" = "bspc node -v {-20 0,0 20,0 -20,20 0}"; # move a floating window
#
# fn keys
#
### brightness keys
"XF86MonBrightnessUp" = "/home/guanranwang/.local/bin/wrapped-brightnessctl up";
"XF86MonBrightnessDown" = "/home/guanranwang/.local/bin/wrapped-brightnessctl down";
### media keys
"XF86AudioPrev" = "playerctl previous";
"XF86AudioNext" = "playerctl next";
"XF86AudioPlay" = "playerctl play-pause";
### volume keys
"XF86AudioRaiseVolume" = "/home/guanranwang/.local/bin/wrapped-pamixer up";
"XF86AudioLowerVolume" = "/home/guanranwang/.local/bin/wrapped-pamixer down";
"XF86AudioMute" = "/home/guanranwang/.local/bin/wrapped-pamixer mute";
};
};
}

View file

@ -1,94 +0,0 @@
{
lib,
pkgs,
config,
...
}: {
programs.vscode = lib.mkMerge [
{
enable = true;
package = pkgs.vscodium.override {
commandLineArgs = ''--password-store="gnome"'';
};
enableExtensionUpdateCheck = false;
enableUpdateCheck = false;
keybindings = [
{
key = "tab";
command = "selectNextSuggestion";
when = "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus || suggestWidgetVisible && textInputFocus && !suggestWidgetHasFocusedSuggestion";
}
{
key = "shift+tab";
command = "selectPrevSuggestion";
when = "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus || suggestWidgetVisible && textInputFocus && !suggestWidgetHasFocusedSuggestion";
}
];
userSettings = {
diffEditor.ignoreTrimWhitespace = false;
editor.cursorBlinking = "smooth";
editor.cursorSmoothCaretAnimation = "on";
editor.fontFamily = lib.mkDefault "Monospace";
editor.fontWeight = 600;
editor.lineNumbers = "relative";
editor.smoothScrolling = true;
editor.tabSize = 2;
explorer.confirmDragAndDrop = false;
explorer.confirmDelete = false;
files.autoSave = "onFocusChange";
files.trimTrailingWhitespace = true;
files.trimFinalNewlines = true;
security.workspace.trust.enabled = false;
telemetry.telemetryLevel = "off";
terminal.integrated.cursorStyle = "line";
terminal.integrated.smoothScrolling = true;
window.menuBarVisibility = "toggle";
workbench.list.smoothScrolling = true;
# Workaround for VSCode crashing
# https://github.com/microsoft/vscode/issues/184124
window.titleBarStyle = "custom";
workbench.layoutControl.enabled = false;
#window.commandCenter = false;
# Language specific
### Nix
"[nix]".editor.tabSize = 2;
# Extensions
### GitLens
gitlens.showWelcomeOnInstall = false;
gitlens.showWhatsNewAfterUpgrades = false;
gitlens.plusFeatures.enabled = false;
gitlens.telemetry.enabled = false;
### Material icons
workbench.iconTheme = "material-icon-theme";
workbench.productIconTheme = "material-product-icons";
};
extensions = with pkgs.vscode-extensions; [
### QoL
eamodio.gitlens
esbenp.prettier-vscode
ritwickdey.liveserver
vscodevim.vim
editorconfig.editorconfig
### Markup formats
redhat.vscode-yaml
redhat.vscode-xml
tamasfe.even-better-toml
#bungcip.better-toml
### Material icons
pkief.material-icon-theme
pkief.material-product-icons
];
}
(lib.mkIf (config.myFlake.home-manager.colorScheme == "tokyonight") {
extensions = [pkgs.vscode-extensions.enkia.tokyo-night];
userSettings.workbench.colorTheme = "Tokyo Night";
})
];
}

View file

@ -1,182 +0,0 @@
{
programs.waybar = {
enable = true;
settings = {
mainBar = {
"layer" = "top";
"modules-left" = ["custom/launcher" "sway/workspaces" "gamemode"];
"modules-center" = ["sway/window"];
"modules-right" = ["tray" "pulseaudio" "battery" "clock"];
"custom/launcher" = {"format" = "";};
"gamemode" = {
"format" = "{glyph} {count}";
"glyph" = "󰊴";
"hide-not-running" = true;
"use-icon" = true;
"icon-name" = "input-gaming-symbolic";
"icon-spacing" = 4;
"icon-size" = 20;
"tooltip" = true;
"tooltip-format" = "Games running = {count}";
};
"sway/workspaces" = {
"format" = "{icon}";
"format-icons" = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"urgent" = "";
"active" = "";
"default" = "";
};
};
"sway/window" = {
"format" = "{}";
"separate-outputs" = true;
};
"tray" = {
"spacing" = 10;
};
"pulseaudio" = {
"format" = "{volume}% {icon}";
"format-bluetooth" = "{volume}% {icon}";
"format-muted" = "";
"format-icons" = {
"headphone" = "";
"hands-free" = "󰂑";
"headset" = "󰂑";
"phone" = "";
"portable" = "";
"car" = "";
"default" = ["" ""];
};
"scroll-step" = 5;
"on-click" = "pwvucontrol";
"ignored-sinks" = ["Easy Effects Sink"];
};
"battery" = {
"bat" = "BAT0";
"interval" = 60;
"states" = {
"warning" = 30;
"critical" = 15;
};
"format" = "{capacity}% {icon}";
"format-icons" = ["" "" "" "" ""];
"max-length" = 25;
};
"clock" = {
# https://fmt.dev/latest/syntax.html#chrono-specs
"format" = "{:%a %b %d %I:%M %p} ";
"tooltip-format" = "{calendar}";
"calendar" = {
"mode" = "month";
"mode-mon-col" = 3;
"on-scroll" = -1;
"format"."today" = "<b><u>{}</u></b>";
};
"actions" = {
"on-click-right" = "mode";
"on-scroll-up" = "shift_down";
"on-scroll-down" = "shift_up";
};
};
"cava" = {
"framerate" = 30;
"autosens" = 1;
#"sensitivity" = 1;
"bars" = 14;
"method" = "pipewire";
"bar_delimiter" = 0;
#"monstercat" = false;
#"waves" = false;
"format-icons" = ["" "" "" "" "" "" "" ""];
"actions"."on-click-right" = "mode";
};
};
};
style = ''
* {
font: bold 14px "JetBrainsMono Nerd Font Propo";
}
window#waybar {
background: transparent;
}
tooltip {
background: #1a1b26;
color: #c0caf5;
border: 2px solid #c0caf5;
border-radius: 5px;
}
tooltip label {
color: #c0caf5;
}
#custom-launcher,
#gamemode,
#window,
#workspaces,
#tray,
#pulseaudio,
#battery,
#clock {
text-shadow: 1px 1px 2px black;
background: #1a1b26;
color: #c0caf5;
margin: 10px 4px 4px 4px;
padding: 4px 10px;
box-shadow: 1px 1px 2px 1px rgba(0, 0, 0, 0.4);
border-radius: 5px;
}
#custom-launcher {
margin-left: 10px;
}
#clock {
margin-right: 10px;
}
#workspaces {
padding: 0px;
}
#workspaces button {
text-shadow: 1px 1px 2px black;
color: #c0caf5;
padding: 0px 4px;
border: 2px solid #1a1b26;
transition-property: background, color, text-shadow, min-width;
transition-duration: .15s;
}
#workspaces button.focused {
text-shadow: none;
color: #c0caf5;
background: linear-gradient(
70deg,
rgb(192, 202, 245),
rgb(192, 202, 245),
rgb(192, 202, 245),
rgb(192, 202, 245),
rgb(229, 234, 255),
rgb(192, 202, 245),
rgb(192, 202, 245),
rgb(192, 202, 245),
rgb(192, 202, 245)
);
background-size: 300% 100%;
background-position: 0% 0%;
animation: colored-gradient 2s linear infinite;
color: #1a1b26;
min-width: 36px;
}
#workspaces button.focused:hover {
background: #9fa7cc;
}
#workspaces button:hover {
background: #11111b;
}
@keyframes colored-gradient {
from {background-position: 0% 0%;}
to {background-position: 100% 0%;}
}
'';
};
}

View file

@ -1,17 +0,0 @@
{
programs.wezterm = {
enable = true;
extraConfig = ''
return {
color_scheme = "Tokyo Night",
default_cursor_style = 'SteadyBar',
window_padding = {
left = "12px",
right = "12px",
top = "12px",
bottom = "12px",
},
}
'';
};
}

View file

@ -1,31 +0,0 @@
{
config,
pkgs,
...
}: {
programs.zsh = {
enable = true;
dotDir = ".config/zsh";
initExtra = "zstyle ':fzf-tab:*' fzf-command sk";
enableAutosuggestions = true;
historySubstringSearch.enable = true;
syntaxHighlighting.enable = true;
plugins = [
{
name = "fzf-tab";
src = "${pkgs.zsh-fzf-tab}/share/fzf-tab";
}
{
name = "sudo";
src = "${pkgs.oh-my-zsh}/share/oh-my-zsh/plugins/sudo";
}
];
history = {
path = "${config.xdg.dataHome}/zsh/zsh_history";
save = 1000000;
size = 1000000;
};
};
}

View file

@ -32,14 +32,13 @@
# Default applications
imports = [
inputs.self.homeManagerModules.default
inputs.nur.hmModules.nur
./applications/atuin
./applications/bash
./applications/bat
./applications/eza
./applications/fastfetch
./applications/neovim
./applications/fish
./applications/git
./applications/gpg
@ -51,7 +50,14 @@
programs.ripgrep.enable = true;
programs.zoxide.enable = true;
home.packages = with pkgs; [fd] ++ lib.optionals pkgs.stdenv.hostPlatform.isLinux (with pkgs; [trashy]);
home.packages =
(with pkgs; [
fd
fastfetch
])
++ lib.optionals pkgs.stdenv.hostPlatform.isLinux (with pkgs; [
trashy
]);
home.shellAliases = {
".." = "cd ..";
@ -62,7 +68,6 @@
jq = lib.getExe pkgs.jq;
nix = lib.getExe pkgs.nix;
curl = lib.getExe pkgs.curl;
awk = lib.getExe pkgs.gawk;
in {
"pb" = ''
${jq} -Rns '{text: inputs}' | \
@ -72,8 +77,7 @@
"getmnter" = ''
${nix} eval nixpkgs#{$argv}.meta.maintainers --json | \
${jq} '.[].github' -r | \
${awk} '{ print "@" $1 }'
${jq} '.[].github | "@" + .' -r
'';
};
}

View file

@ -1,9 +0,0 @@
{lib, ...}: {
options.myFlake.home-manager = {
colorScheme = lib.mkOption {
type = lib.types.enum [null "tokyonight"];
default = "tokyonight";
description = "Select desired terminal color scheme.";
};
};
}

View file

@ -1,6 +0,0 @@
{...}: {
imports = [
./terminal.nix
./color-scheme.nix
];
}

View file

@ -1,86 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
cfg = config.myFlake.home-manager.terminal;
in {
# 3 terminals, one module.
# -- The Orange Box (wtf)
# FAQ (for future myself):
#
# - Q: font?
# A: use fontconfig.
#
# - Q: WezTerm?
# A: - I don't use it.
# - I don't know Lua.
# - extraConfig is probably not enough if you want customize it yourself.
#
# - Q: which terminal should I use?
# A: - Alacritty - rusty
# - Foot - fast
# - Kitty - feature rich
#
# - Q: why does kitty's font look bold
# A: I dont know, might be related to this: https://sw.kovidgoyal.net/kitty/conf/#opt-kitty.text_composition_strategy
options = {
myFlake.home-manager.terminal = {
cursorStyle = lib.mkOption {
type = lib.types.enum ["block" "beam" "underline"];
default = "beam";
example = "block";
description = "Select desired terminal cursor style.";
};
fontSize = lib.mkOption {
type = lib.types.int;
default = 12;
example = 8;
description = "Select desired terminal font size.";
};
padding = lib.mkOption {
type = lib.types.int;
default = 0;
example = config.myFlake.home-manager.terminal.fontSize;
description = "Select desired terminal padding size (in px).";
};
};
};
config = {
programs = {
alacritty.settings = {
import = [
"${pkgs.vimPlugins.tokyonight-nvim}/extras/alacritty/tokyonight_night.toml"
];
cursor.style = cfg.cursorStyle;
font.size = cfg.fontSize;
window.padding.x = cfg.padding;
window.padding.y = cfg.padding;
};
kitty.settings = {
include =
lib.mkIf (config.myFlake.home-manager.colorScheme == "tokyonight")
"${pkgs.vimPlugins.tokyonight-nvim}/extras/kitty/tokyonight_night.conf";
cursor_shape = cfg.cursorStyle;
font_size = cfg.fontSize;
window_padding_width = builtins.toString (cfg.padding * (3.0 / 4.0)); # px -> pt
};
foot.settings = {
main.include =
lib.mkIf (config.myFlake.home-manager.colorScheme == "tokyonight")
"${pkgs.vimPlugins.tokyonight-nvim}/extras/foot/tokyonight_night.ini";
cursor.style = cfg.cursorStyle;
main.font = "monospace:size=${builtins.toString cfg.fontSize}";
main.pad = "${builtins.toString cfg.padding}x${builtins.toString cfg.padding}";
};
};
};
}

View file

@ -12,7 +12,6 @@
"rustc-bootstrap"
"rustc-bootstrap-wrapper"
"sof-firmware"
"spotify"
"temurin-bin"
];
@ -22,7 +21,6 @@
"libXNVCtrl"
"nvidia-x11"
"osu-lazer-bin"
"spotify"
"steam"
"steam-original"
"xow_dongle-firmware"

View file

@ -6,7 +6,7 @@
imports = [
# OS
../../nixos/profiles/laptop
../../nixos/profiles/common/opt-in/clash-meta-client
../../nixos/profiles/common/opt-in/mihomo
../../nixos/profiles/common/opt-in/gaming
# Hardware
@ -31,7 +31,6 @@
# Stuff that I only want on my main machine
home-manager.users.guanranwang = {
imports = map (n: ../../home/applications/${n}) [
"spotify/spicetify.nix"
"thunderbird"
"ydict"
];

View file

@ -13,7 +13,6 @@
"rustc-bootstrap"
"rustc-bootstrap-wrapper"
"sof-firmware"
"spotify"
"temurin-bin"
"vscodium"
];
@ -24,7 +23,6 @@
"broadcom-sta"
"minecraft-server"
"nvidia-x11"
"spotify"
];
};
}

View file

@ -11,7 +11,7 @@
../../nixos/profiles/common/core
../../nixos/profiles/common/physical
../../nixos/profiles/common/mobile
../../nixos/profiles/common/opt-in/clash-meta-client
../../nixos/profiles/common/opt-in/mihomo
# Hardware
./hardware-configuration.nix

View file

@ -2,7 +2,7 @@
{...}: {
imports = [
../../darwin/profiles/desktop
../../darwin/profiles/common/opt-in/clash-meta-client.nix
../../darwin/profiles/common/opt-in/mihomo.nix
./hardware-configuration.nix
];

View file

@ -60,7 +60,6 @@
sharedModules = [
({...}: {
imports = [
../../home/applications/neovim
../../home/applications/nix
];
})

View file

@ -1,7 +1,7 @@
{...}: {
imports = [
../../darwin/profiles/desktop
../../darwin/profiles/common/opt-in/clash-meta-client.nix
../../darwin/profiles/common/opt-in/mihomo.nix
./hardware-configuration.nix
];

View file

@ -6,33 +6,14 @@
./xdg-mime.nix
]
++ map (n: ../../../../../home/applications/${n}) [
# Terminal
"alacritty"
# Editor
"neovim"
# "helix"
# "vscode"
# Browser
"firefox"
# "chromium"
# "librewolf"
# Language
"nix"
"go"
# Media
"loupe"
"mpv"
# WM
"sway"
# Misc
"nautilus"
"fcitx5"
"firefox"
"go"
"mpv"
"nautilus"
"nix"
"sway"
];
# https://wiki.archlinux.org/title/Fish#Start_X_at_login
@ -42,12 +23,16 @@
end
'';
home.packages = with pkgs.gnome; [
seahorse
file-roller
gnome-calculator
dconf-editor
];
home.packages =
(with pkgs; [
loupe
])
++ (with pkgs.gnome; [
seahorse
file-roller
gnome-calculator
dconf-editor
]);
services = {
ssh-agent.enable = true;

View file

@ -7,20 +7,16 @@
url = "https://raw.githubusercontent.com/lilydjwg/dotconfig/1b22d4f0740bb5bbd7c65b6c468920775171b207/fontconfig/web-ui-fonts.conf";
hash = "sha256-A4DcV6HTW/IRxXN3NaI1GUfoFdalwgFLpCjgbWENdZU=";
};
"fontconfig/conf.d/10-source-han-for-noto-cjk.conf".source = pkgs.substitute {
src = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/lilydjwg/dotconfig/1b22d4f0740bb5bbd7c65b6c468920775171b207/fontconfig/source-han-for-noto-cjk.conf";
hash = "sha256-jcdDr5VW1qZXbApgfT5FZgxonpRnLs9AY0QagfdL8ic=";
};
substitutions = [
"--replace-warn"
"Source Han Sans"
"Source Han Sans VF"
"--replace-warn"
"Source Han Serif"
"Source Han Serif VF"
];
"fontconfig/conf.d/10-source-han-for-noto-cjk.conf".source = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/lilydjwg/dotconfig/1b22d4f0740bb5bbd7c65b6c468920775171b207/fontconfig/source-han-for-noto-cjk.conf";
hash = "sha256-jcdDr5VW1qZXbApgfT5FZgxonpRnLs9AY0QagfdL8ic=";
postFetch = ''
substitutionInPlace $out \
--replace-warn "Source Han Sans" "Source Han Sans VF" \
--replace-warn "Source Han Serif" "Source Han Serif VF"
'';
};
"fontconfig/conf.d/10-nerd-font-symbols.conf".source = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/ryanoasis/nerd-fonts/${pkgs.nerdfonts.version}/10-nerd-font-symbols.conf";
hash = "sha256-XwJMkcDtGlI+LFMrjCl/gicAnoBWnq3p9adrmieNZwU=";

View file

@ -21,10 +21,6 @@
];
iconTheme = {
#name = "Tela-dracula-dark";
#package = pkgs.tela-icon-theme;
#name = "Papirus-Dark";
#package = pkgs.papirus-icon-theme;
name = "Adwaita";
package = pkgs.gnome.adwaita-icon-theme;
};

View file

@ -2,8 +2,6 @@
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
xdg.mimeApps = {
enable = true;
# Default application associstions
defaultApplications =
{
"inode/directory" = ["org.gnome.Nautilus.desktop"];
@ -15,7 +13,7 @@
"x-scheme-handler/https"
"x-scheme-handler/about"
"x-scheme-handler/unknown"
] (_n: ["librewolf.desktop" "firefox.desktop" "chromium-browser.desktop"])
] (_n: ["firefox.desktop"])
### Audio player
// lib.genAttrs [
"audio/aac"
@ -23,7 +21,7 @@
"audio/mpeg"
"audio/ogg"
"audio/wav"
] (_n: ["io.bassi.Amberol.desktop" "mpv.desktop"])
] (_n: ["io.bassi.Amberol.desktop"])
### Image viewer
// lib.genAttrs [
"image/gif"
@ -43,6 +41,6 @@
"text/html"
"text/javascript"
"text/plain"
] (_n: ["codium.desktop" "Helix.desktop" "nvim.desktop"]);
] (_n: ["nvim.desktop"]);
};
}

View file

@ -26,7 +26,6 @@
#"Templates"
".ssh"
#".librewolf"
".mozilla/firefox"
".thunderbird"
@ -34,17 +33,13 @@
".local/share"
".local/state"
".config/gh"
".config/Mumble"
".config/VSCodium"
".config/chromium"
".config/fcitx5"
".config/obs-studio"
".config/spotify"
];
files = [
".config/sops/age/keys.txt"
#".config/KDE/neochat.conf"
#".config/neochatrc"
];
};
};

View file

@ -46,28 +46,16 @@ proxy-groups:
#- { name: 新加坡, <<: *use, type: url-test, filter: "(?i)(新|sg|singapore)" }
rules:
### WHITELIST
# FILTER
- GEOIP, lan, DIRECT, no-resolve
- GEOSITE, private, DIRECT
- GEOSITE, category-ads, REJECT
# DIRECT
- DOMAIN-SUFFIX, envs.net, DIRECT
- DOMAIN-SUFFIX, catgirl.cloud, DIRECT
- GEOSITE, freecodecamp, DIRECT # music radio
- GEOSITE, icloud, DIRECT
- GEOSITE, apple@cn, DIRECT
- GEOSITE, google@cn, DIRECT
- GEOSITE, microsoft@cn, DIRECT
- GEOSITE, category-games@cn, DIRECT
# PROXY
- GEOSITE, spotify, 台湾
# - GEOSITE, google, PROXY
# - GEOSITE, telegram, PROXY
# NOMATCH
- GEOSITE, cn, DIRECT
- GEOIP, cn, DIRECT
- MATCH, PROXY

View file

@ -8,22 +8,16 @@
wl-clipboard,
libnotify,
fetchurl,
substitute,
}:
makeScript {
name = "screenshot";
runtimeInputs = [coreutils jq grim slurp swappy wl-clipboard libnotify];
file = substitute {
src = fetchurl {
url = "https://raw.githubusercontent.com/nwg-piotr/nwg-shell/c29e8eb4658a2613fb221ead0b101c75f457bcaf/scripts/screenshot";
hash = "sha256-Z/fWloz8pLHsvPTPOeBxnbMsGDRTY3G3l/uePQ3ZxjU=";
};
# i dont like using an environment variable
substitutions = [
"--replace-warn"
"DIR=\${SCREENSHOT_DIR:=$HOME/Screenshots}"
"DIR=$HOME/Pictures/Screenshots"
];
file = fetchurl {
url = "https://raw.githubusercontent.com/nwg-piotr/nwg-shell/c29e8eb4658a2613fb221ead0b101c75f457bcaf/scripts/screenshot";
hash = "sha256-Z/fWloz8pLHsvPTPOeBxnbMsGDRTY3G3l/uePQ3ZxjU=";
postFetch = ''
substituteInPlace $out \
--replace-warn "DIR=\''${SCREENSHOT_DIR:=$HOME/Screenshots}" "DIR=$HOME/Pictures/Screenshots"
'';
};
}