Compare commits
56 commits
main
...
automated/
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
585b4c310b | ||
|
|
95229e5139 | ||
|
|
f123c3feaf | ||
|
|
3ba825b279 | ||
|
|
50cf2f3b05 | ||
|
|
92c3b71cdf | ||
|
|
53175986b4 | ||
|
|
488736ae06 | ||
|
|
796f75bcbc | ||
|
|
82c1632279 | ||
|
|
782d3a05b5 | ||
|
|
4ae280500d | ||
|
|
1c8559ce0d | ||
|
|
8c5a3f7fc8 | ||
|
|
03901b1270 | ||
|
|
5b2506b267 | ||
|
|
6999c3dba8 | ||
|
|
8ddf8d2147 | ||
|
|
cf039b4b21 | ||
|
|
f95c22027d | ||
|
|
14bd36d55b | ||
|
|
187f9b7893 | ||
|
|
da3e49c97e | ||
|
|
bbbce085e9 | ||
|
|
efc2612efa | ||
|
|
0fc33a61a4 | ||
|
|
67546f7692 | ||
|
|
49a97aa599 | ||
|
|
2745b1c60d | ||
|
|
1449e884da | ||
|
|
7167a231c6 | ||
|
|
0343c702c1 | ||
|
|
bcb8ca3465 | ||
|
|
165fd81e2d | ||
|
|
5073c7e543 | ||
|
|
9423bc4bdf | ||
|
|
b8250cb19b | ||
|
|
99ef1a64c0 | ||
|
|
5f13b6ed3d | ||
|
|
7333f0f669 | ||
|
|
60233cdcec | ||
|
|
858c637c5d | ||
|
|
3568e196bd | ||
|
|
a8561f9335 | ||
|
|
ea8f380d9c | ||
|
|
59dddfb860 | ||
|
|
65505b0a70 | ||
|
|
344279eeff | ||
|
|
7673e0e111 | ||
|
|
21e38c2098 | ||
|
|
afc9d8b0d7 | ||
|
|
e25b37421c | ||
|
|
7508647f07 | ||
|
|
2e52091be0 | ||
|
|
3ceb51acb4 | ||
|
|
72d948ff83 |
67 changed files with 2308 additions and 2958 deletions
5
.mailmap
5
.mailmap
|
|
@ -1,5 +0,0 @@
|
|||
zoey <hi@zoeys.computer> zackartz <zackmyers@lavabit.com>
|
||||
zoey <hi@zoeys.computer> zack <me@zackmyers.io>
|
||||
zoey <hi@zoeys.computer> zack <hi@zoeys.computer>
|
||||
zoey <hi@zoeys.computer> Zachary Myers <hi@zoeys.computer>
|
||||
zoey <hi@zoeys.computer> Zachary Myers <zackmyers808@gmail.com>
|
||||
25
.sops.yaml
25
.sops.yaml
|
|
@ -1,25 +0,0 @@
|
|||
keys:
|
||||
- &personal_pgp_key 0x141576B17B4AE789
|
||||
- &pc_main 0DCB1C584AECEB2674BB76C179FE3B714935CDAB
|
||||
- &venus age1l6v7c5cp6sh6typgskwfufzkn3qw4av7r42z7lqyns6mtupytqhs2fg49u
|
||||
- &personal_age_key age16p54d6tx3mg0htkzj43q2mzpvlqj4gz63mz5qzx8mpsp5zx4xexsszdhuk
|
||||
|
||||
creation_rules:
|
||||
# This rule applies to any file named 'secrets.yaml' directly in the 'secrets/' directory
|
||||
# or 'secrets/github-deploy-key.yaml' etc.
|
||||
- path_regex: "secrets/vpn-config.yaml$"
|
||||
key_groups:
|
||||
- pgp:
|
||||
- *personal_pgp_key
|
||||
- *pc_main
|
||||
- path_regex: "secrets/matrix-db.yaml$"
|
||||
key_groups:
|
||||
- age:
|
||||
- *venus
|
||||
- *personal_age_key
|
||||
# Add host keys for decryption on the target system
|
||||
# sops-nix will automatically pick up the system's SSH host keys
|
||||
# as decryption keys if enabled in your NixOS config.
|
||||
# So you typically don't list them explicitly here unless you
|
||||
# want to restrict it to specific fingerprints, which is rare.
|
||||
# This part ensures your *personal* key can decrypt it.
|
||||
201
f.nix
201
f.nix
|
|
@ -1,201 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.custom; let
|
||||
cfg = config.wms.hyprland;
|
||||
|
||||
mkService = recursiveUpdate {
|
||||
Unit.PartOf = ["graphical-session.target"];
|
||||
Unit.After = ["graphical-session.target"];
|
||||
Install.WantedBy = ["graphical-session.target"];
|
||||
};
|
||||
|
||||
mod = "SUPER";
|
||||
in {
|
||||
options.wms.hyprland = with types; {
|
||||
enable = mkBoolOpt false "Enable Hyprland";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
xwayland
|
||||
grim
|
||||
slurp
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||
xwayland.enable = true;
|
||||
|
||||
systemd = {
|
||||
enable = false;
|
||||
enableXdgAutostart = true;
|
||||
};
|
||||
};
|
||||
imports = [./conf/binds.nix];
|
||||
wayland.windowManager.hyprland.settings = with colors; {
|
||||
exec-once = [
|
||||
# "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
# "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
"zen"
|
||||
"vesktop"
|
||||
"cider-2"
|
||||
"networkmanagerapplet"
|
||||
"[workspace 9 silent] kitty"
|
||||
"[workspace 9 silent] kitty"
|
||||
"[workspace 9 silent] kitty"
|
||||
"[workspace 10 silent] kitty"
|
||||
];
|
||||
|
||||
env = [
|
||||
"XDG_SESSION_TYPE,wayland"
|
||||
"XDG_SESSION_DESKTOP,Hyprland"
|
||||
"XDG_CURRENT_DESKTOP,Hyprland"
|
||||
];
|
||||
|
||||
general = {
|
||||
# gaps
|
||||
gaps_in = 2;
|
||||
gaps_out = 4;
|
||||
|
||||
# border thiccness
|
||||
border_size = 2;
|
||||
|
||||
# active border color
|
||||
"col.active_border" = "rgb(${rose})";
|
||||
"col.inactive_border" = "rgb(${muted})";
|
||||
};
|
||||
|
||||
input = {
|
||||
kb_layout = "us,ru(phonetic)";
|
||||
kb_options = grp:win_space_toggle;
|
||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||
accel_profile = "flat";
|
||||
force_no_accel = false;
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
force_split = 2;
|
||||
};
|
||||
|
||||
decoration = {
|
||||
# fancy corners
|
||||
rounding = 6;
|
||||
# blur
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 8;
|
||||
passes = 2;
|
||||
new_optimizations = 1;
|
||||
contrast = 1;
|
||||
brightness = 1;
|
||||
};
|
||||
|
||||
shadow = {
|
||||
# shadow config
|
||||
enabled = false;
|
||||
# range = 60;
|
||||
# render_power = 5;
|
||||
# color = "rgba(07061f29)";
|
||||
};
|
||||
};
|
||||
|
||||
misc = {
|
||||
# disable redundant renders
|
||||
disable_splash_rendering = true;
|
||||
force_default_wallpaper = 0;
|
||||
disable_hyprland_logo = true;
|
||||
|
||||
vfr = false;
|
||||
vrr = 2;
|
||||
|
||||
# dpms
|
||||
# mouse_move_enables_dpms = true; # enable dpms on mouse/touchpad action
|
||||
# key_press_enables_dpms = true; # enable dpms on keyboard action
|
||||
disable_autoreload = true; # autoreload is unnecessary on nixos, because the config is readonly anyway
|
||||
};
|
||||
|
||||
xwayland = {
|
||||
force_zero_scaling = true;
|
||||
};
|
||||
|
||||
cursor = {
|
||||
no_hardware_cursors = true;
|
||||
};
|
||||
|
||||
monitor = ["DP-1,1920x1080@165,0x0,1"];
|
||||
|
||||
layerrule = [
|
||||
"blur, ^(gtk-layer-shell)$"
|
||||
"blur, ^(launcher)$"
|
||||
"ignorezero, ^(gtk-layer-shell)$"
|
||||
"ignorezero, ^(launcher)$"
|
||||
"blur, notifications"
|
||||
"ignorezero, notificatios"
|
||||
"blur, bar"
|
||||
"ignorezero, bar"
|
||||
"ignorezero, ^(gtk-layer-shell|anyrun)$"
|
||||
"blur, ^(gtk-layer-shell|anyrun)$"
|
||||
"noanim, launcher"
|
||||
"noanim, bar"
|
||||
];
|
||||
workspace = [
|
||||
"1,monitor:DP-1"
|
||||
"2,monitor:DP-1"
|
||||
"3,monitor:DP-1"
|
||||
"9,monitor:DP-1"
|
||||
"10,monitor:DP-1"
|
||||
];
|
||||
windowrulev2 = [
|
||||
# only allow shadows for floating windows
|
||||
"noshadow, floating:0"
|
||||
"tile, title:Cider"
|
||||
|
||||
"idleinhibit focus, class:^(mpv)$"
|
||||
|
||||
"float, title:^(Picture-in-Picture)$"
|
||||
"pin, title:^(Picture-in-Picture)$"
|
||||
|
||||
"float,class:udiskie"
|
||||
|
||||
# "workspace special silent,class:^(pavucontrol)$"
|
||||
|
||||
"float, class:^(imv)$"
|
||||
|
||||
# throw sharing indicators away
|
||||
"workspace special silent, title:^(Firefox — Sharing Indicator)$"
|
||||
"workspace special silent, title:^(.*is sharing (your screen|a window)\.)$"
|
||||
|
||||
# specify what applications start on (at boot and normal startup of the app)
|
||||
"workspace 2, class:^(vesktop)$"
|
||||
"workspace 3, class:^(cider)$"
|
||||
"workspace 4, class:^(zen)"
|
||||
];
|
||||
};
|
||||
|
||||
# # fake a tray to let apps start
|
||||
# # https://github.com/nix-community/home-manager/issues/2064
|
||||
# systemd.user.targets.tray = {
|
||||
# Unit = {
|
||||
# Description = "Home Manager System Tray";
|
||||
# Requires = ["graphical-session-pre.target"];
|
||||
# };
|
||||
# };
|
||||
|
||||
systemd.user.services = {
|
||||
swaybg = mkService {
|
||||
Unit.Description = "Wallpaper chooser";
|
||||
Service = {
|
||||
ExecStart = "${getExe pkgs.swaybg} -i ${wallpaper}";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
1711
flake.lock
generated
1711
flake.lock
generated
File diff suppressed because it is too large
Load diff
74
flake.nix
74
flake.nix
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixos-stable.url = "github:nixos/nixpkgs/nixos-25.05";
|
||||
nixos-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
|
|
@ -31,28 +31,19 @@
|
|||
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
};
|
||||
|
||||
walker.url = "github:abenz1267/walker";
|
||||
|
||||
resume.url = "git+https://code.zoeys.cloud/zoey/resume.git";
|
||||
ags.url = "github:Aylur/ags/v1";
|
||||
ags.inputs.nixpkgs.follows = "nixpkgs";
|
||||
agenix.url = "github:ryantm/agenix";
|
||||
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
firefox-addons = {
|
||||
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# to replace with sops-nix
|
||||
sops-nix.url = "github:Mic92/sops-nix";
|
||||
|
||||
pnpm2nix.url = "github:nzbr/pnpm2nix-nzbr";
|
||||
|
||||
dms.url = "github:AvengeMedia/DankMaterialShell";
|
||||
dms.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
nix-matrix-modules.url = "github:D4ndellion/nixos-matrix-modules";
|
||||
nix-matrix-modules.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
solaar = {
|
||||
url = "github:Svenum/Solaar-Flake/main"; # Uncomment line for latest unstable version
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
|
@ -66,18 +57,12 @@
|
|||
blog.url = "git+https://code.zoeys.cloud/zoey/web.git";
|
||||
|
||||
lanzaboote = {
|
||||
url = "github:nix-community/lanzaboote/v0.4.3";
|
||||
url = "github:nix-community/lanzaboote/v0.4.1";
|
||||
|
||||
# Optional but recommended to limit the size of your system closure.
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
ciderd = {
|
||||
url = "git+https://code.zoeys.cloud/zoey/ciderd";
|
||||
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
hypridle = {
|
||||
url = "github:hyprwm/hypridle";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
|
@ -129,7 +114,7 @@
|
|||
posting.url = "github:jorikvanveen/posting-flake";
|
||||
|
||||
lix-module = {
|
||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz";
|
||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
|
|
@ -139,21 +124,26 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
rust-overlay = {
|
||||
url = "github:oxalica/rust-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
disko.url = "github:nix-community/disko";
|
||||
disko.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
niri-src.url = "github:YaLTeR/niri";
|
||||
niri-src.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# niri-src.url = "github:visualglitch91/niri/feat/blur";
|
||||
# niri-src.inputs.nixpkgs.follows = "nixpkgs";
|
||||
quickshell = {
|
||||
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
||||
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
niri.url = "github:sodiboo/niri-flake";
|
||||
|
||||
chaotic.url = "github:chaotic-cx/nyx";
|
||||
lazyvim.url = "github:pfassina/lazyvim-nix";
|
||||
|
||||
vpn-confinement.url = "github:Maroka-chan/VPN-Confinement";
|
||||
chaotic.url = "github:chaotic-cx/nyx/7b20daf110d06962ee99114220f2fb98cdc8673d";
|
||||
};
|
||||
|
||||
outputs = inputs @ {self, ...}: let
|
||||
|
|
@ -162,22 +152,22 @@
|
|||
src = ./.;
|
||||
|
||||
overlays = with inputs; [
|
||||
# rust-overlay.overlays.default
|
||||
rust-overlay.overlays.default
|
||||
(final: prev: {
|
||||
ghostty = ghostty.packages."x86_64-linux".default;
|
||||
})
|
||||
# (final: prev: {
|
||||
# shadps4 = prev.shadps4.overrideAttrs {
|
||||
# src = prev.fetchFromGitHub {
|
||||
# owner = "shadps4-emu";
|
||||
# repo = "shadPS4";
|
||||
# rev = "41b39428335025e65f9e707ed8d5a9a1b09ba942";
|
||||
# hash = "sha256-5oe2By8TjJJIVubkp5lzqx2slBR7hxIHV4wZLgRYKl8=";
|
||||
# fetchSubmodules = true;
|
||||
# };
|
||||
# patches = [];
|
||||
# };
|
||||
# })
|
||||
(final: prev: {
|
||||
shadps4 = prev.shadps4.overrideAttrs {
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "shadps4-emu";
|
||||
repo = "shadPS4";
|
||||
rev = "41b39428335025e65f9e707ed8d5a9a1b09ba942";
|
||||
hash = "sha256-5oe2By8TjJJIVubkp5lzqx2slBR7hxIHV4wZLgRYKl8=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
patches = [];
|
||||
};
|
||||
})
|
||||
niri.overlays.niri
|
||||
];
|
||||
|
||||
|
|
@ -196,9 +186,7 @@
|
|||
spicetify-nix.homeManagerModules.default
|
||||
catppuccin.homeModules.default
|
||||
ags.homeManagerModules.default
|
||||
dms.homeModules.dankMaterialShell.default
|
||||
dms.homeModules.dankMaterialShell.niri
|
||||
lazyvim.homeManagerModules.default
|
||||
walker.homeManagerModules.default
|
||||
];
|
||||
|
||||
systems.modules.nixos = with inputs; [
|
||||
|
|
@ -214,8 +202,6 @@
|
|||
disko.nixosModules.disko
|
||||
niri.nixosModules.niri
|
||||
chaotic.nixosModules.default
|
||||
nix-matrix-modules.nixosModules.default
|
||||
vpn-confinement.nixosModules.default
|
||||
];
|
||||
|
||||
systems.modules.earth = with inputs; [
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@
|
|||
catppuccin.fzf.enable = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
devenv
|
||||
|
||||
(discord.override {
|
||||
withOpenASAR = true;
|
||||
withVencord = true;
|
||||
|
|
|
|||
|
|
@ -53,10 +53,12 @@
|
|||
|
||||
programs.cava = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
extraConfig = ''
|
||||
update_ms = 100
|
||||
vim_keys = true
|
||||
|
|
@ -65,9 +67,11 @@
|
|||
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,10 +52,12 @@
|
|||
|
||||
programs.cava = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
extraConfig = ''
|
||||
update_ms = 100
|
||||
vim_keys = true
|
||||
|
|
@ -64,9 +66,11 @@
|
|||
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,15 +2,16 @@
|
|||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
system,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
wms.hyprland.enable = false;
|
||||
wms.niri.enable = true;
|
||||
|
||||
apps = {
|
||||
web.librewolf.enable = true;
|
||||
web.librewolf.setDefault = true;
|
||||
web.zen.setDefault = true;
|
||||
web.zen.enable = true;
|
||||
|
||||
tools.git.enable = true;
|
||||
tools.tmux.enable = true;
|
||||
|
|
@ -30,13 +31,14 @@
|
|||
term.alacritty.enable = true;
|
||||
term.ghostty.enable = true;
|
||||
|
||||
music.spotify.enable = true;
|
||||
video.mpv.enable = true;
|
||||
|
||||
mail.aerc.enable = true;
|
||||
|
||||
helpers = {
|
||||
waybar.enable = false;
|
||||
swaync.enable = false;
|
||||
waybar.enable = true;
|
||||
swaync.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -62,38 +64,14 @@
|
|||
};
|
||||
};
|
||||
|
||||
catppuccin.vivid.enable = false;
|
||||
|
||||
programs = {
|
||||
dankMaterialShell = {
|
||||
programs.distrobox = {
|
||||
enable = true;
|
||||
|
||||
niri.enableKeybinds = true;
|
||||
systemd.enable = true;
|
||||
|
||||
enableCalendarEvents = true;
|
||||
enableDynamicTheming = true;
|
||||
enableSystemMonitoring = true;
|
||||
enableAudioWavelength = true;
|
||||
containers = {
|
||||
proton-tkg = {
|
||||
image = "archlinux";
|
||||
additional_packages = "build-essential git";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services.polkit-gnome-authentication-agent-1 = {
|
||||
Unit = {
|
||||
Description = "polkit-gnome-authentication-agent-1";
|
||||
Wants = ["graphical-session.target"];
|
||||
After = ["graphical-session.target"];
|
||||
};
|
||||
Install = {
|
||||
WantedBy = ["graphical-session.target"];
|
||||
};
|
||||
Service = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||
Restart = "on-failure";
|
||||
RestartSec = 1;
|
||||
TimeoutStopSec = 10;
|
||||
};
|
||||
};
|
||||
|
||||
catppuccin.mako.enable = false;
|
||||
|
|
@ -137,7 +115,7 @@
|
|||
|
||||
catppuccin.enable = true;
|
||||
catppuccin.flavor = "mocha";
|
||||
catppuccin.accent = "blue";
|
||||
catppuccin.accent = "red";
|
||||
|
||||
catppuccin.aerc.enable = true;
|
||||
|
||||
|
|
@ -147,13 +125,6 @@
|
|||
|
||||
work.vpn.enable = true;
|
||||
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
package = pkgs.obs-studio.override {
|
||||
cudaSupport = true;
|
||||
};
|
||||
};
|
||||
|
||||
programs.atuin = {
|
||||
enable = true;
|
||||
enableFishIntegration = config.programs.fish.enable;
|
||||
|
|
@ -164,33 +135,24 @@
|
|||
home.packages = with pkgs; [
|
||||
gimp3
|
||||
slack
|
||||
zulip
|
||||
|
||||
cabextract
|
||||
p7zip
|
||||
|
||||
himalaya
|
||||
|
||||
drawio
|
||||
|
||||
littlenavmap
|
||||
|
||||
app2unit
|
||||
|
||||
awscli2
|
||||
monero-cli
|
||||
devenv
|
||||
|
||||
tidal-hifi
|
||||
|
||||
zoom-us
|
||||
pandoc
|
||||
cider-2
|
||||
|
||||
feather
|
||||
nexusmods-app-unfree
|
||||
|
||||
prismlauncher
|
||||
|
||||
qt6Packages.qt5compat
|
||||
libsForQt5.qt5.qtgraphicaleffects
|
||||
kdePackages.qtdeclarative
|
||||
|
||||
# prismlauncher
|
||||
obs-studio
|
||||
|
||||
(discord.override {
|
||||
withOpenASAR = true;
|
||||
|
|
@ -212,6 +174,12 @@
|
|||
heroic
|
||||
cartridges
|
||||
|
||||
darktable
|
||||
|
||||
thunderbird
|
||||
|
||||
custom.nvidia-nsight
|
||||
|
||||
custom.enc
|
||||
|
||||
neural-amp-modeler-lv2
|
||||
|
|
@ -258,10 +226,12 @@
|
|||
zed-editor
|
||||
rmpc
|
||||
|
||||
inputs.zen-browser.packages.${pkgs.system}.beta
|
||||
|
||||
starfetch
|
||||
lib.custom.nixos-stable.kiwix
|
||||
|
||||
mpc
|
||||
mpc-cli
|
||||
zathura
|
||||
gpgme.dev
|
||||
|
||||
|
|
@ -279,17 +249,9 @@
|
|||
man-pages
|
||||
man-pages-posix
|
||||
|
||||
devenv
|
||||
ardour
|
||||
];
|
||||
|
||||
programs.thunderbird = {
|
||||
enable = true;
|
||||
|
||||
profiles.${config.home.username} = {
|
||||
isDefault = true;
|
||||
};
|
||||
};
|
||||
|
||||
programs.vesktop = {
|
||||
enable = true;
|
||||
};
|
||||
|
|
@ -299,6 +261,8 @@
|
|||
options = ["--cmd cd"];
|
||||
};
|
||||
|
||||
services.quickshell.enable = false;
|
||||
|
||||
home.file.".mozilla/native-messaging-hosts/gpgmejson.json".text = builtins.toJSON {
|
||||
name = "gpgmejson";
|
||||
description = "JavaScript binding for GnuPG";
|
||||
|
|
@ -349,7 +313,7 @@
|
|||
services = {
|
||||
gpg-agent = {
|
||||
enable = true;
|
||||
pinentry.package = lib.mkForce pkgs.pinentry-gnome3;
|
||||
pinentryPackage = lib.mkForce pkgs.pinentry-gnome3;
|
||||
enableSshSupport = true;
|
||||
enableZshIntegration = true;
|
||||
enableFishIntegration = true;
|
||||
|
|
|
|||
|
|
@ -52,10 +52,12 @@
|
|||
|
||||
programs.cava = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
extraConfig = ''
|
||||
update_ms = 100
|
||||
vim_keys = true
|
||||
|
|
@ -64,9 +66,11 @@
|
|||
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,22 +50,22 @@
|
|||
options = ["--cmd cd"];
|
||||
};
|
||||
|
||||
catppuccin.btop.enable = true;
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
extraConfig = ''
|
||||
update_ms = 100
|
||||
vim_keys = true
|
||||
'';
|
||||
};
|
||||
|
||||
catppuccin.lazygit.enable = true;
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
|
||||
catppuccin.fzf.enable = true;
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -362,7 +362,5 @@ in {
|
|||
}
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.user.services.swaync.Service.Environment = ["GSK_RENDERER=gl"];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
611
modules/home/apps/helpers/walker/default.nix
Normal file
611
modules/home/apps/helpers/walker/default.nix
Normal file
|
|
@ -0,0 +1,611 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.custom; let
|
||||
cfg = config.apps.helpers.walker;
|
||||
in {
|
||||
options.apps.helpers.walker = with types; {
|
||||
enable = mkBoolOpt false "Enable Walker";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.walker = {
|
||||
enable = true;
|
||||
runAsService = true;
|
||||
|
||||
theme = {
|
||||
layout = {
|
||||
ui = {
|
||||
anchors = {
|
||||
bottom = true;
|
||||
left = true;
|
||||
right = true;
|
||||
top = true;
|
||||
};
|
||||
|
||||
window = {
|
||||
h_align = "fill";
|
||||
v_align = "fill";
|
||||
|
||||
box = {
|
||||
h_align = "center";
|
||||
width = 450;
|
||||
|
||||
bar = {
|
||||
orientation = "horizontal";
|
||||
position = "end";
|
||||
|
||||
entry = {
|
||||
h_align = "fill";
|
||||
h_expand = true;
|
||||
|
||||
icon = {
|
||||
h_align = "center";
|
||||
h_expand = true;
|
||||
pixel_size = 24;
|
||||
theme = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
margins = {
|
||||
top = 450;
|
||||
};
|
||||
|
||||
ai_scroll = {
|
||||
name = "aiScroll";
|
||||
h_align = "fill";
|
||||
v_align = "fill";
|
||||
max_height = 300;
|
||||
min_width = 400;
|
||||
height = 300;
|
||||
width = 400;
|
||||
|
||||
margins = {
|
||||
top = 8;
|
||||
};
|
||||
|
||||
list = {
|
||||
name = "aiList";
|
||||
orientation = "vertical";
|
||||
width = 400;
|
||||
spacing = 10;
|
||||
|
||||
item = {
|
||||
name = "aiItem";
|
||||
h_align = "fill";
|
||||
v_align = "fill";
|
||||
x_align = 0;
|
||||
y_align = 0;
|
||||
wrap = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
scroll = {
|
||||
list = {
|
||||
marker_color = "#1BFFE1";
|
||||
max_height = 300;
|
||||
max_width = 400;
|
||||
min_width = 400;
|
||||
width = 400;
|
||||
|
||||
item = {
|
||||
activation_label = {
|
||||
h_align = "fill";
|
||||
v_align = "fill";
|
||||
width = 20;
|
||||
x_align = 0.5;
|
||||
y_align = 0.5;
|
||||
};
|
||||
|
||||
icon = {
|
||||
pixel_size = 26;
|
||||
theme = "";
|
||||
};
|
||||
};
|
||||
|
||||
margins = {
|
||||
top = 8;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
search = {
|
||||
prompt = {
|
||||
name = "prompt";
|
||||
icon = "edit-find";
|
||||
theme = "";
|
||||
pixel_size = 18;
|
||||
h_align = "center";
|
||||
v_align = "center";
|
||||
};
|
||||
|
||||
clear = {
|
||||
name = "clear";
|
||||
icon = "edit-clear";
|
||||
theme = "";
|
||||
pixel_size = 18;
|
||||
h_align = "center";
|
||||
v_align = "center";
|
||||
};
|
||||
|
||||
input = {
|
||||
h_align = "fill";
|
||||
h_expand = true;
|
||||
icons = true;
|
||||
};
|
||||
|
||||
spinner = {
|
||||
hide = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
style = ''
|
||||
@define-color foreground ${colors.fg.hex}; /* text */
|
||||
@define-color background ${colors.bg.hex}; /* base */
|
||||
@define-color cursor ${colors.primary.hex}; /* rosewater */
|
||||
|
||||
@define-color color0 ${colors.surface0.hex}; /* surface0 */
|
||||
@define-color color1 ${colors.red.hex}; /* red */
|
||||
@define-color color2 ${colors.green.hex}; /* green */
|
||||
@define-color color3 ${colors.yellow.hex}; /* yellow */
|
||||
@define-color color4 ${colors.blue.hex}; /* blue */
|
||||
@define-color color5 ${colors.pink.hex}; /* pink */
|
||||
@define-color color6 ${colors.teal.hex}; /* teal */
|
||||
@define-color color7 ${colors.subtext1.hex}; /* subtext1 */
|
||||
@define-color color8 ${colors.surface1.hex}; /* surface1 */
|
||||
@define-color color9 ${colors.red.hex}; /* red */
|
||||
@define-color color10 ${colors.green.hex}; /* green */
|
||||
@define-color color11 ${colors.yellow.hex}; /* yellow */
|
||||
@define-color color12 ${colors.blue.hex}; /* blue */
|
||||
@define-color color13 ${colors.pink.hex}; /* pink */
|
||||
@define-color color14 ${colors.teal.hex}; /* teal */
|
||||
@define-color color15 ${colors.subtext0.hex}; /* subtext0 */
|
||||
|
||||
#window,
|
||||
#box,
|
||||
#aiScroll,
|
||||
#aiList,
|
||||
#search,
|
||||
#password,
|
||||
#input,
|
||||
#prompt,
|
||||
#clear,
|
||||
#typeahead,
|
||||
#list,
|
||||
child,
|
||||
scrollbar,
|
||||
slider,
|
||||
#item,
|
||||
#text,
|
||||
#label,
|
||||
#bar,
|
||||
#sub,
|
||||
#activationlabel {
|
||||
all: unset;
|
||||
}
|
||||
|
||||
#cfgerr {
|
||||
background: rgba(255, 0, 0, 0.4);
|
||||
margin-top: 20px;
|
||||
padding: 8px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
#window {
|
||||
color: @foreground;
|
||||
}
|
||||
|
||||
#box {
|
||||
border-radius: 2px;
|
||||
background: @background;
|
||||
padding: 32px;
|
||||
border: 1px solid lighter(@background);
|
||||
box-shadow:
|
||||
0 19px 38px rgba(0, 0, 0, 0.3),
|
||||
0 15px 12px rgba(0, 0, 0, 0.22);
|
||||
}
|
||||
|
||||
#search {
|
||||
box-shadow:
|
||||
0 1px 3px rgba(0, 0, 0, 0.1),
|
||||
0 1px 2px rgba(0, 0, 0, 0.22);
|
||||
background: lighter(@background);
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
#prompt {
|
||||
margin-left: 4px;
|
||||
margin-right: 12px;
|
||||
color: @foreground;
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
#clear {
|
||||
color: @foreground;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
#password,
|
||||
#input,
|
||||
#typeahead {
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
#input {
|
||||
background: none;
|
||||
}
|
||||
|
||||
#password {
|
||||
}
|
||||
|
||||
#spinner {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
#typeahead {
|
||||
color: @foreground;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
#input placeholder {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
#list {
|
||||
}
|
||||
|
||||
child {
|
||||
padding: 8px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
child:selected,
|
||||
child:hover {
|
||||
background: alpha(@color1, 0.4);
|
||||
}
|
||||
|
||||
#item {
|
||||
}
|
||||
|
||||
#icon {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
#text {
|
||||
}
|
||||
|
||||
#label {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
#sub {
|
||||
opacity: 0.5;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
#activationlabel {
|
||||
}
|
||||
|
||||
#bar {
|
||||
}
|
||||
|
||||
.barentry {
|
||||
}
|
||||
|
||||
.activation #activationlabel {
|
||||
}
|
||||
|
||||
.activation #text,
|
||||
.activation #icon,
|
||||
.activation #search {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.aiItem {
|
||||
padding: 10px;
|
||||
border-radius: 2px;
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
}
|
||||
|
||||
.aiItem.user {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.aiItem.assistant {
|
||||
background: lighter(@background);
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
config = {
|
||||
app_launch_prefix = "";
|
||||
terminal_title_flag = "";
|
||||
locale = "";
|
||||
close_when_open = false;
|
||||
theme = "nixos";
|
||||
monitor = "";
|
||||
hotreload_theme = false;
|
||||
as_window = false;
|
||||
timeout = 0;
|
||||
disable_click_to_close = false;
|
||||
force_keyboard_focus = false;
|
||||
|
||||
keys = {
|
||||
accept_typeahead = ["tab"];
|
||||
trigger_labels = "lalt";
|
||||
next = ["down"];
|
||||
prev = ["up"];
|
||||
close = ["esc"];
|
||||
remove_from_history = ["shift backspace"];
|
||||
resume_query = ["ctrl r"];
|
||||
toggle_exact_search = ["ctrl m"];
|
||||
|
||||
activation_modifiers = {
|
||||
keep_open = "shift";
|
||||
alternate = "alt";
|
||||
};
|
||||
|
||||
ai = {
|
||||
clear_session = ["ctrl x"];
|
||||
copy_last_response = ["ctrl c"];
|
||||
resume_session = ["ctrl r"];
|
||||
run_last_response = ["ctrl e"];
|
||||
};
|
||||
};
|
||||
|
||||
events = {
|
||||
on_activate = "";
|
||||
on_selection = "";
|
||||
on_exit = "";
|
||||
on_launch = "";
|
||||
on_query_change = "";
|
||||
};
|
||||
|
||||
list = {
|
||||
dynamic_sub = true;
|
||||
keyboard_scroll_style = "emacs";
|
||||
max_entries = 50;
|
||||
show_initial_entries = true;
|
||||
single_click = true;
|
||||
visibility_threshold = 20;
|
||||
placeholder = "No Results";
|
||||
};
|
||||
|
||||
search = {
|
||||
argument_delimiter = "#";
|
||||
placeholder = "Search...";
|
||||
delay = 0;
|
||||
resume_last_query = false;
|
||||
};
|
||||
|
||||
activation_mode = {
|
||||
labels = "jkl;asdf";
|
||||
};
|
||||
|
||||
builtins = {
|
||||
applications = {
|
||||
weight = 5;
|
||||
name = "applications";
|
||||
placeholder = "Applications";
|
||||
prioritize_new = true;
|
||||
hide_actions_with_empty_query = true;
|
||||
context_aware = true;
|
||||
refresh = true;
|
||||
show_sub_when_single = true;
|
||||
show_icon_when_single = true;
|
||||
show_generic = true;
|
||||
history = true;
|
||||
|
||||
actions = {
|
||||
enabled = true;
|
||||
hide_category = false;
|
||||
hide_without_query = true;
|
||||
};
|
||||
};
|
||||
|
||||
bookmarks = {
|
||||
weight = 5;
|
||||
placeholder = "Bookmarks";
|
||||
name = "bookmarks";
|
||||
icon = "bookmark";
|
||||
switcher_only = true;
|
||||
|
||||
entries = [
|
||||
{
|
||||
label = "Walker";
|
||||
url = "https://github.com/abenz1267/walker";
|
||||
keywords = ["walker" "github"];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
xdph_picker = {
|
||||
hidden = true;
|
||||
weight = 5;
|
||||
placeholder = "Screen/Window Picker";
|
||||
show_sub_when_single = true;
|
||||
name = "xdphpicker";
|
||||
switcher_only = true;
|
||||
};
|
||||
|
||||
ai = {
|
||||
weight = 5;
|
||||
placeholder = "AI";
|
||||
name = "ai";
|
||||
icon = "help-browser";
|
||||
switcher_only = true;
|
||||
show_sub_when_single = true;
|
||||
|
||||
anthropic = {
|
||||
prompts = [
|
||||
{
|
||||
model = "claude-3-7-sonnet-20250219";
|
||||
temperature = 1;
|
||||
max_tokens = 1000;
|
||||
label = "General Assistant";
|
||||
prompt = "You are a helpful general assistant. Keep your answers short and precise.";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
calc = {
|
||||
require_number = true;
|
||||
weight = 5;
|
||||
name = "calc";
|
||||
icon = "accessories-calculator";
|
||||
placeholder = "Calculator";
|
||||
min_chars = 4;
|
||||
};
|
||||
|
||||
windows = {
|
||||
weight = 5;
|
||||
icon = "view-restore";
|
||||
name = "windows";
|
||||
placeholder = "Windows";
|
||||
show_icon_when_single = true;
|
||||
};
|
||||
|
||||
clipboard = {
|
||||
always_put_new_on_top = true;
|
||||
exec = "wl-copy";
|
||||
weight = 5;
|
||||
name = "clipboard";
|
||||
avoid_line_breaks = true;
|
||||
placeholder = "Clipboard";
|
||||
image_height = 300;
|
||||
max_entries = 10;
|
||||
switcher_only = true;
|
||||
};
|
||||
|
||||
commands = {
|
||||
weight = 5;
|
||||
icon = "utilities-terminal";
|
||||
switcher_only = true;
|
||||
name = "commands";
|
||||
placeholder = "Commands";
|
||||
};
|
||||
|
||||
custom_commands = {
|
||||
weight = 5;
|
||||
icon = "utilities-terminal";
|
||||
name = "custom_commands";
|
||||
placeholder = "Custom Commands";
|
||||
};
|
||||
|
||||
emojis = {
|
||||
exec = "wl-copy";
|
||||
weight = 5;
|
||||
name = "emojis";
|
||||
placeholder = "Emojis";
|
||||
switcher_only = true;
|
||||
history = true;
|
||||
typeahead = true;
|
||||
show_unqualified = false;
|
||||
};
|
||||
|
||||
symbols = {
|
||||
after_copy = "";
|
||||
weight = 5;
|
||||
name = "symbols";
|
||||
placeholder = "Symbols";
|
||||
switcher_only = true;
|
||||
history = true;
|
||||
typeahead = true;
|
||||
};
|
||||
|
||||
finder = {
|
||||
use_fd = false;
|
||||
fd_flags = "--ignore-vcs --type file";
|
||||
weight = 5;
|
||||
icon = "file";
|
||||
name = "finder";
|
||||
placeholder = "Finder";
|
||||
switcher_only = true;
|
||||
ignore_gitignore = true;
|
||||
refresh = true;
|
||||
concurrency = 8;
|
||||
show_icon_when_single = true;
|
||||
preview_images = false;
|
||||
};
|
||||
|
||||
runner = {
|
||||
eager_loading = true;
|
||||
weight = 5;
|
||||
icon = "utilities-terminal";
|
||||
name = "runner";
|
||||
placeholder = "Runner";
|
||||
typeahead = true;
|
||||
history = true;
|
||||
generic_entry = false;
|
||||
refresh = true;
|
||||
use_fd = false;
|
||||
};
|
||||
|
||||
ssh = {
|
||||
weight = 5;
|
||||
icon = "preferences-system-network";
|
||||
name = "ssh";
|
||||
placeholder = "SSH";
|
||||
switcher_only = true;
|
||||
history = true;
|
||||
refresh = true;
|
||||
};
|
||||
|
||||
switcher = {
|
||||
weight = 5;
|
||||
name = "switcher";
|
||||
placeholder = "Switcher";
|
||||
prefix = "/";
|
||||
};
|
||||
|
||||
websearch = {
|
||||
keep_selection = true;
|
||||
weight = 5;
|
||||
icon = "applications-internet";
|
||||
name = "websearch";
|
||||
placeholder = "Websearch";
|
||||
|
||||
entries = [
|
||||
{
|
||||
name = "searx";
|
||||
url = "https://search.zoeys.cloud/searx/search?q=%TERM%";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
dmenu = {
|
||||
hidden = true;
|
||||
weight = 5;
|
||||
name = "dmenu";
|
||||
placeholder = "Dmenu";
|
||||
switcher_only = true;
|
||||
show_icon_when_single = true;
|
||||
};
|
||||
|
||||
translation = {
|
||||
delay = 1000;
|
||||
weight = 5;
|
||||
name = "translation";
|
||||
icon = "accessories-dictionary";
|
||||
placeholder = "Translation";
|
||||
switcher_only = true;
|
||||
provider = "googlefree";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -99,6 +99,15 @@ in {
|
|||
"custom/power"
|
||||
];
|
||||
|
||||
"custom/spotify" = {
|
||||
format = "{}";
|
||||
"return-type" = "json";
|
||||
"on-click" = "playerctl -p spotify play-pause";
|
||||
"on-click-right" = "spotifatius toggle-liked";
|
||||
"on-click-middle" = "playerctl -p spotify next";
|
||||
exec = "spotifatius monitor";
|
||||
};
|
||||
|
||||
"custom/mullvad" = {
|
||||
format = "{}";
|
||||
return-type = "json";
|
||||
|
|
@ -136,7 +145,7 @@ in {
|
|||
};
|
||||
|
||||
mpris = {
|
||||
player = "chromium";
|
||||
player = "spotify";
|
||||
"dynamic-order" = ["artist" "title"];
|
||||
format = "{player_icon} {dynamic}";
|
||||
"format-paused" = "{status_icon} <i>{dynamic}</i>";
|
||||
|
|
|
|||
|
|
@ -105,11 +105,6 @@ menu,
|
|||
border-radius: 6px;
|
||||
}
|
||||
|
||||
#custom-spotify.paused {
|
||||
font-style: italic;
|
||||
opacity: 0.75;
|
||||
}
|
||||
|
||||
#custom-mullvad,
|
||||
#custom-notification {
|
||||
padding-left: 12px;
|
||||
|
|
|
|||
|
|
@ -66,10 +66,9 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
catppuccin.alacritty.enable = true;
|
||||
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
catppuccin.enable = true;
|
||||
|
||||
settings = {
|
||||
colors = {
|
||||
|
|
|
|||
|
|
@ -17,18 +17,12 @@ in {
|
|||
enable = true;
|
||||
|
||||
settings = {
|
||||
font-family = "Berkeley Mono";
|
||||
|
||||
font-size = 24;
|
||||
|
||||
font-style = "SemiBold ExtraCondensed";
|
||||
font-style-bold = "Bold ExtraCondensed";
|
||||
font-style-italic = "SemiBold ExtraCondensed Oblique";
|
||||
font-style-bold-italic = "Bold ExtraCondensed Oblique";
|
||||
|
||||
font-family = fonts.mono;
|
||||
gtk-single-instance = true;
|
||||
gtk-titlebar = false;
|
||||
|
||||
background = colors.crust.hex;
|
||||
|
||||
alpha-blending = "linear-corrected";
|
||||
|
||||
window-padding-x = 20;
|
||||
|
|
|
|||
|
|
@ -14,26 +14,50 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
catppuccin.kitty.enable = true;
|
||||
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
font = {
|
||||
name = "${fonts.mono} SemiLight";
|
||||
size = 16;
|
||||
};
|
||||
|
||||
extraConfig = ''
|
||||
font_family family='Berkeley Mono' style='Retina ExtraCondensed'
|
||||
bold_font family='Berkeley Mono' style='SemiBold ExtraCondensed'
|
||||
italic_font family='Berkeley Mono' style='Retina ExtraCondensed'
|
||||
bold_italic_font family='Berkeley Mono' style='SemiBold ExtraCondensed'
|
||||
bold_font ${fonts.mono} SemiBold
|
||||
italic_font ${fonts.mono} SemiLight
|
||||
bold_italic_font ${fonts.mono} SemiBold
|
||||
'';
|
||||
|
||||
catppuccin.enable = true;
|
||||
|
||||
settings = {
|
||||
window_padding_width = 20;
|
||||
# background_opacity = "0.9";
|
||||
background = colors.crust.hex;
|
||||
foreground = colors.text.hex;
|
||||
|
||||
font_hinting = "slight";
|
||||
|
||||
cursor_trail = 3;
|
||||
|
||||
text_composition_strategy = "1.2 10";
|
||||
|
||||
# Normal colors
|
||||
color0 = colors.surface1.hex; # black
|
||||
color1 = colors.red.hex; # red
|
||||
color2 = colors.green.hex; # green
|
||||
color3 = colors.yellow.hex; # yellow
|
||||
color4 = colors.blue.hex; # blue
|
||||
color5 = colors.mauve.hex; # magenta
|
||||
color6 = colors.teal.hex; # cyan
|
||||
color7 = colors.text.hex; # white
|
||||
|
||||
# Bright colors
|
||||
color8 = colors.surface2.hex; # bright black
|
||||
color9 = colors.red.hex; # bright red
|
||||
color10 = colors.green.hex; # bright green
|
||||
color11 = colors.yellow.hex; # bright yellow
|
||||
color12 = colors.blue.hex; # bright blue
|
||||
color13 = colors.mauve.hex; # bright magenta
|
||||
color14 = colors.teal.hex; # bright cyan
|
||||
color15 = colors.text.hex; # bright white
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -14,11 +14,11 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
catppuccin.bat.enable = true;
|
||||
|
||||
programs.bat = {
|
||||
enable = true;
|
||||
|
||||
catppuccin.enable = true;
|
||||
|
||||
config = {
|
||||
pager = "less -FR";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -17,18 +17,11 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
zsh-forgit
|
||||
gitflow
|
||||
];
|
||||
|
||||
programs.delta = {
|
||||
enable = true;
|
||||
enableGitIntegration = true;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [zsh-forgit gitflow];
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "zack";
|
||||
userEmail = "hi@zoeys.computer";
|
||||
ignores = [
|
||||
".cache/"
|
||||
".DS_Store"
|
||||
|
|
@ -45,15 +38,8 @@ in {
|
|||
key = cfg.signingKey;
|
||||
signByDefault = cfg.signByDefault;
|
||||
};
|
||||
lfs.enable = true;
|
||||
settings = {
|
||||
user = {
|
||||
name = "zack";
|
||||
email = "hi@zoeys.computer";
|
||||
};
|
||||
init = {
|
||||
defaultBranch = "main";
|
||||
};
|
||||
extraConfig = {
|
||||
init = {defaultBranch = "main";};
|
||||
delta = {
|
||||
options.map-styles = "bold purple => syntax #ca9ee6, bold cyan => syntax #8caaee";
|
||||
line-numbers = true;
|
||||
|
|
@ -78,7 +64,10 @@ in {
|
|||
smtpencryption = "ssl";
|
||||
smtpserverport = 465;
|
||||
};
|
||||
alias = {
|
||||
};
|
||||
lfs.enable = true;
|
||||
delta.enable = true;
|
||||
aliases = {
|
||||
essa = "push --force";
|
||||
co = "checkout";
|
||||
fuck = "commit --amend -m";
|
||||
|
|
@ -98,11 +87,12 @@ in {
|
|||
st = "status";
|
||||
br = "branch";
|
||||
df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}";
|
||||
hist = ''log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all'';
|
||||
llog = ''log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative'';
|
||||
hist = ''
|
||||
log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all'';
|
||||
llog = ''
|
||||
log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative'';
|
||||
edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,16 @@
|
|||
{
|
||||
"extras": [
|
||||
"lazyvim.plugins.extras.coding.mini-comment",
|
||||
"lazyvim.plugins.extras.coding.yanky",
|
||||
"lazyvim.plugins.extras.dap.core",
|
||||
"lazyvim.plugins.extras.editor.dial",
|
||||
"lazyvim.plugins.extras.editor.inc-rename",
|
||||
"lazyvim.plugins.extras.lang.angular",
|
||||
"lazyvim.plugins.extras.lang.astro",
|
||||
"lazyvim.plugins.extras.lang.cmake",
|
||||
"lazyvim.plugins.extras.lang.docker",
|
||||
"lazyvim.plugins.extras.lang.haskell",
|
||||
"lazyvim.plugins.extras.lang.java",
|
||||
"lazyvim.plugins.extras.lang.toml",
|
||||
"lazyvim.plugins.extras.lang.json",
|
||||
"lazyvim.plugins.extras.lang.clangd",
|
||||
|
|
@ -13,15 +20,18 @@
|
|||
"lazyvim.plugins.extras.lang.sql",
|
||||
"lazyvim.plugins.extras.lang.svelte",
|
||||
"lazyvim.plugins.extras.lang.tailwind",
|
||||
"lazyvim.plugins.extras.lang.elixir",
|
||||
"lazyvim.plugins.extras.lang.tex",
|
||||
"lazyvim.plugins.extras.lang.go",
|
||||
"lazyvim.plugins.extras.lang.php",
|
||||
"lazyvim.plugins.extras.lang.python",
|
||||
"lazyvim.plugins.extras.lang.zig",
|
||||
"lazyvim.plugins.extras.lang.typescript",
|
||||
"lazyvim.plugins.extras.test.core",
|
||||
"lazyvim.plugins.extras.util.rest",
|
||||
"lazyvim.plugins.extras.util.dot",
|
||||
"lazyvim.plugins.extras.util.mini-hipatterns",
|
||||
"lazyvim.plugins.extras.formatting.biome",
|
||||
"lazyvim.plugins.extras.coding.luasnip"
|
||||
"lazyvim.plugins.extras.coding.luasnip",
|
||||
"lazyvim.plugins.extras.coding.blink"
|
||||
],
|
||||
"install_version": 8,
|
||||
"news": {
|
||||
|
|
|
|||
|
|
@ -3,21 +3,13 @@
|
|||
-- Add any additional options here
|
||||
|
||||
if vim.g.neovide then
|
||||
-- Put anything you want to happen only in Neovide here
|
||||
vim.o.guifont = "Iosevka,Noto_Color_Emoji:h14:b"
|
||||
end
|
||||
|
||||
-- in this case.
|
||||
vim.g.lazyvim_blink_main = true
|
||||
vim.g.snacks_animate = false
|
||||
vim.o.termguicolors = true
|
||||
|
||||
-- Minimal UI borders for floats
|
||||
vim.diagnostic.config({
|
||||
virtual_text = false,
|
||||
float = { border = "none" },
|
||||
})
|
||||
|
||||
local border = "none"
|
||||
local handlers = vim.lsp.handlers
|
||||
handlers["textDocument/hover"] = vim.lsp.with(handlers.hover, { border = border })
|
||||
handlers["textDocument/signatureHelp"] = vim.lsp.with(handlers.signature_help, { border = border })
|
||||
|
||||
vim.g.lazyvim_prettier_needs_config = true
|
||||
vim.g.lazyvim_python_lsp = "pyright"
|
||||
|
|
|
|||
|
|
@ -2,92 +2,15 @@ return {
|
|||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "catppuccin",
|
||||
colorscheme = "catppuccin-mocha",
|
||||
news = { lazyvim = false },
|
||||
},
|
||||
},
|
||||
{
|
||||
"catppuccin",
|
||||
opts = function(_, opts)
|
||||
opts.transparent_background = true
|
||||
opts.flavour = "mocha"
|
||||
opts.no_bold = true
|
||||
opts.no_italic = true
|
||||
opts.dim_inactive = {
|
||||
enabled = true,
|
||||
percentage = 0.75,
|
||||
}
|
||||
opts.integrations = vim.tbl_deep_extend("force", opts.integrations or {}, {
|
||||
noice = true,
|
||||
blink_cmp = true,
|
||||
notify = true,
|
||||
treesitter = true,
|
||||
lsp_trouble = true,
|
||||
telescope = true,
|
||||
which_key = true,
|
||||
native_lsp = {
|
||||
enabled = true,
|
||||
inlay_hints = {
|
||||
background = false,
|
||||
opts = {
|
||||
transparent_background = true,
|
||||
},
|
||||
},
|
||||
indent_blankline = {
|
||||
enabled = true,
|
||||
scope_color = "overlay0",
|
||||
colored_indent_levels = false,
|
||||
},
|
||||
})
|
||||
opts.custom_highlights = function(colors)
|
||||
return {
|
||||
Normal = { bg = "NONE" },
|
||||
NormalNC = { bg = "NONE" },
|
||||
NormalFloat = { bg = "NONE" },
|
||||
FloatBorder = { fg = "NONE", bg = "NONE" },
|
||||
FloatTitle = { fg = colors.subtext0, bg = "NONE" },
|
||||
-- WinSeparator = { fg = colors.surface1 },
|
||||
-- CursorLine = { bg = colors.mantle },
|
||||
-- Visual = { bg = colors.surface0 },
|
||||
-- Pmenu = { bg = colors.bg, fg = colors.text },
|
||||
-- PmenuSel = { bg = colors.surface0, fg = colors.text },
|
||||
-- PmenuSbar = { bg = colors.bg },
|
||||
-- PmenuThumb = { bg = colors.surface1 },
|
||||
-- StatusLine = { bg = colors.bg, fg = colors.subtext0 },
|
||||
-- StatusLineNC = { bg = colors.bg, fg = colors.overlay0 },
|
||||
-- TabLine = { bg = colors.bg, fg = colors.overlay1 },
|
||||
-- TabLineSel = { bg = colors.bg, fg = colors.text },
|
||||
-- TabLineFill = { bg = colors.bg },
|
||||
-- SignColumn = { bg = colors.bg },
|
||||
-- LineNr = { fg = colors.overlay1 },
|
||||
DiagnosticUnderlineError = { sp = colors.red, undercurl = true },
|
||||
DiagnosticUnderlineWarn = { sp = colors.yellow, undercurl = true },
|
||||
DiagnosticUnderlineInfo = { sp = colors.teal, undercurl = true },
|
||||
DiagnosticUnderlineHint = { sp = colors.sky, undercurl = true },
|
||||
-- Noice popup and cmdline transparent, borderless
|
||||
NoiceCmdlinePopup = { bg = "NONE", fg = colors.text },
|
||||
NoiceCmdlinePopupBorder = { fg = "NONE", bg = "NONE" },
|
||||
NoiceCmdlinePopupTitle = { bg = "NONE", fg = colors.subtext0 },
|
||||
NoicePopup = { bg = "NONE", fg = colors.text },
|
||||
NoicePopupBorder = { fg = "NONE", bg = "NONE" },
|
||||
-- Blink.cmp: flat boxes with padding and pop colors
|
||||
BlinkCmpMenu = { bg = "NONE", fg = colors.text },
|
||||
BlinkCmpMenuBorder = { fg = "NONE", bg = "NONE" },
|
||||
BlinkCmpMenuSelection = { bg = colors.surface0, fg = colors.text },
|
||||
BlinkCmpMenuMatch = { fg = colors.mauve },
|
||||
BlinkCmpDoc = { bg = "NONE" },
|
||||
BlinkCmpDocBorder = { fg = "NONE", bg = "NONE" },
|
||||
BlinkCmpDocSelection = { bg = colors.surface0 },
|
||||
BlinkCmpKind = { fg = colors.sky },
|
||||
BlinkCmpSource = { fg = colors.subtext0 },
|
||||
-- Reduce scope highlighting prominence
|
||||
IlluminatedWordText = { bg = colors.mantle },
|
||||
IlluminatedWordRead = { bg = colors.mantle },
|
||||
IlluminatedWordWrite = { bg = colors.mantle },
|
||||
TreesitterContext = { bg = colors.mantle },
|
||||
TreesitterContextLineNumber = { fg = colors.subtext0, bg = colors.mantle },
|
||||
}
|
||||
end
|
||||
return opts
|
||||
end,
|
||||
-- config = function()
|
||||
-- require("catppuccin").setup({
|
||||
-- transparent_background = true,
|
||||
|
|
@ -122,7 +45,7 @@ return {
|
|||
-- end,
|
||||
-- color_overrides = {
|
||||
-- mocha = {
|
||||
-- bg = "#11111b",
|
||||
-- base = "#11111b",
|
||||
-- mantle = "#11111b",
|
||||
-- crust = "#11111b",
|
||||
-- },
|
||||
|
|
@ -136,11 +59,11 @@ return {
|
|||
opts = {
|
||||
formatters_by_ft = {
|
||||
nix = { "alejandra" },
|
||||
typescript = { "biome" },
|
||||
typescriptreact = { "biome" },
|
||||
javascriptreact = { "biome" },
|
||||
javascript = { "biome" },
|
||||
htmlangular = { "biome" },
|
||||
typescript = { "prettierd" },
|
||||
typescriptreact = { "prettierd" },
|
||||
javascriptreact = { "prettierd" },
|
||||
javascript = { "prettierd" },
|
||||
htmlangular = { "prettierd" },
|
||||
python = { "black" },
|
||||
},
|
||||
},
|
||||
|
|
@ -210,90 +133,8 @@ return {
|
|||
},
|
||||
},
|
||||
},
|
||||
--- minimal crisp single-line borders for LSP windows
|
||||
inlay_hints = { enabled = true },
|
||||
diagnostics = { virtual_text = false },
|
||||
},
|
||||
},
|
||||
-- Minimal Noice styling
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
opts = function(_, opts)
|
||||
opts = opts or {}
|
||||
opts.presets = vim.tbl_deep_extend("force", opts.presets or {}, {
|
||||
bottom_search = false,
|
||||
command_palette = false,
|
||||
long_message_to_split = true,
|
||||
inc_rename = false,
|
||||
lsp_doc_border = false,
|
||||
})
|
||||
opts.cmdline = vim.tbl_deep_extend("force", opts.cmdline or {}, {
|
||||
view = "cmdline_popup",
|
||||
})
|
||||
opts.views = vim.tbl_deep_extend("force", opts.views or {}, {
|
||||
cmdline_popup = {
|
||||
border = { style = "none", padding = { 1, 2 } },
|
||||
win_options = {
|
||||
-- winhighlight = { "Normal:NoiceCmdlinePopup,FloatBorder:NoiceCmdlinePopupBorder,FloatTitle:NoiceCmdlinePopupTitle" },
|
||||
winhighlight = {
|
||||
Normal = "NoiceCmdlinePopup",
|
||||
FloatBorder = "NoiceCmdlinePopupBorder",
|
||||
FloatTitle = "NoiceCmdlinePopupTitle",
|
||||
},
|
||||
winblend = 0,
|
||||
},
|
||||
position = { row = "40%", col = "50%" },
|
||||
size = { width = 60 },
|
||||
},
|
||||
popupmenu = {
|
||||
border = { style = "none", padding = { 1, 2 } },
|
||||
win_options = { winblend = 0, winhighlight = "Normal:NoicePopup,FloatBorder:NoicePopupBorder" },
|
||||
},
|
||||
mini = {
|
||||
border = { style = "none", padding = { 1, 2 } },
|
||||
win_options = { winblend = 0, winhighlight = "Normal:NoicePopup,FloatBorder:NoicePopupBorder" },
|
||||
},
|
||||
})
|
||||
return opts
|
||||
end,
|
||||
},
|
||||
-- Minimal bufferline (if present in LazyVim)
|
||||
{
|
||||
"akinsho/bufferline.nvim",
|
||||
opts = function(_, opts)
|
||||
opts = opts or {}
|
||||
opts.options = vim.tbl_deep_extend("force", opts.options or {}, {
|
||||
separator_style = "none",
|
||||
show_buffer_close_icons = false,
|
||||
show_close_icon = false,
|
||||
always_show_bufferline = false,
|
||||
indicator = { style = "underline" },
|
||||
})
|
||||
return opts
|
||||
end,
|
||||
},
|
||||
-- Minimal indent guides
|
||||
{
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
main = "ibl",
|
||||
opts = function(_, opts)
|
||||
opts = opts or {}
|
||||
opts.indent = { char = "│" }
|
||||
opts.scope = { enabled = false }
|
||||
opts.whitespace = { remove_blankline_trail = true }
|
||||
return opts
|
||||
end,
|
||||
},
|
||||
"pimalaya/himalaya-vim",
|
||||
{
|
||||
"rachartier/tiny-inline-diagnostic.nvim",
|
||||
event = "VeryLazy", -- Or `LspAttach`
|
||||
priority = 1000, -- needs to be loaded in first
|
||||
config = function()
|
||||
require("tiny-inline-diagnostic").setup()
|
||||
vim.diagnostic.config({ virtual_text = false }) -- Only if needed in your configuration, if you already have native LSP diagnostics
|
||||
end,
|
||||
},
|
||||
-- lua with lazy.nvim
|
||||
{
|
||||
"max397574/better-escape.nvim",
|
||||
|
|
|
|||
|
|
@ -1,284 +0,0 @@
|
|||
return {
|
||||
recommended = function()
|
||||
return LazyVim.extras.wants({
|
||||
ft = {
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"javascript.jsx",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
"typescript.tsx",
|
||||
},
|
||||
root = { "tsconfig.json", "package.json", "jsconfig.json" },
|
||||
})
|
||||
end,
|
||||
|
||||
-- correctly setup lspconfig
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
-- make sure mason installs the server
|
||||
servers = {
|
||||
--- @deprecated -- tsserver renamed to ts_ls but not yet released, so keep this for now
|
||||
--- the proper approach is to check the nvim-lspconfig release version when it's released to determine the server name dynamically
|
||||
tsserver = {
|
||||
enabled = false,
|
||||
},
|
||||
ts_ls = {
|
||||
enabled = false,
|
||||
},
|
||||
vtsls = {
|
||||
-- explicitly add default filetypes, so that we can extend
|
||||
-- them in related extras
|
||||
filetypes = {
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"javascript.jsx",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
"typescript.tsx",
|
||||
},
|
||||
settings = {
|
||||
complete_function_calls = true,
|
||||
vtsls = {
|
||||
enableMoveToFileCodeAction = true,
|
||||
autoUseWorkspaceTsdk = true,
|
||||
experimental = {
|
||||
maxInlayHintLength = 30,
|
||||
completion = {
|
||||
enableServerSideFuzzyMatch = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
typescript = {
|
||||
format = {
|
||||
enable = false,
|
||||
},
|
||||
updateImportsOnFileMove = { enabled = "always" },
|
||||
suggest = {
|
||||
completeFunctionCalls = true,
|
||||
},
|
||||
inlayHints = {
|
||||
enumMemberValues = { enabled = true },
|
||||
functionLikeReturnTypes = { enabled = true },
|
||||
parameterNames = { enabled = "literals" },
|
||||
parameterTypes = { enabled = true },
|
||||
propertyDeclarationTypes = { enabled = true },
|
||||
variableTypes = { enabled = false },
|
||||
},
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"gD",
|
||||
function()
|
||||
local params = vim.lsp.util.make_position_params()
|
||||
LazyVim.lsp.execute({
|
||||
command = "typescript.goToSourceDefinition",
|
||||
arguments = { params.textDocument.uri, params.position },
|
||||
open = true,
|
||||
})
|
||||
end,
|
||||
desc = "Goto Source Definition",
|
||||
},
|
||||
{
|
||||
"gR",
|
||||
function()
|
||||
LazyVim.lsp.execute({
|
||||
command = "typescript.findAllFileReferences",
|
||||
arguments = { vim.uri_from_bufnr(0) },
|
||||
open = true,
|
||||
})
|
||||
end,
|
||||
desc = "File References",
|
||||
},
|
||||
{
|
||||
"<leader>co",
|
||||
LazyVim.lsp.action["source.organizeImports"],
|
||||
desc = "Organize Imports",
|
||||
},
|
||||
{
|
||||
"<leader>cM",
|
||||
LazyVim.lsp.action["source.addMissingImports.ts"],
|
||||
desc = "Add missing imports",
|
||||
},
|
||||
{
|
||||
"<leader>cu",
|
||||
LazyVim.lsp.action["source.removeUnused.ts"],
|
||||
desc = "Remove unused imports",
|
||||
},
|
||||
{
|
||||
"<leader>cD",
|
||||
LazyVim.lsp.action["source.fixAll.ts"],
|
||||
desc = "Fix all diagnostics",
|
||||
},
|
||||
{
|
||||
"<leader>cV",
|
||||
function()
|
||||
LazyVim.lsp.execute({ command = "typescript.selectTypeScriptVersion" })
|
||||
end,
|
||||
desc = "Select TS workspace version",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
setup = {
|
||||
--- @deprecated -- tsserver renamed to ts_ls but not yet released, so keep this for now
|
||||
--- the proper approach is to check the nvim-lspconfig release version when it's released to determine the server name dynamically
|
||||
tsserver = function()
|
||||
-- disable tsserver
|
||||
return true
|
||||
end,
|
||||
ts_ls = function()
|
||||
-- disable tsserver
|
||||
return true
|
||||
end,
|
||||
vtsls = function(_, opts)
|
||||
LazyVim.lsp.on_attach(function(client, buffer)
|
||||
client.commands["_typescript.moveToFileRefactoring"] = function(command, ctx)
|
||||
---@type string, string, lsp.Range
|
||||
local action, uri, range = unpack(command.arguments)
|
||||
|
||||
local function move(newf)
|
||||
client.request("workspace/executeCommand", {
|
||||
command = command.command,
|
||||
arguments = { action, uri, range, newf },
|
||||
})
|
||||
end
|
||||
|
||||
local fname = vim.uri_to_fname(uri)
|
||||
client.request("workspace/executeCommand", {
|
||||
command = "typescript.tsserverRequest",
|
||||
arguments = {
|
||||
"getMoveToRefactoringFileSuggestions",
|
||||
{
|
||||
file = fname,
|
||||
startLine = range.start.line + 1,
|
||||
startOffset = range.start.character + 1,
|
||||
endLine = range["end"].line + 1,
|
||||
endOffset = range["end"].character + 1,
|
||||
},
|
||||
},
|
||||
}, function(_, result)
|
||||
---@type string[]
|
||||
local files = result.body.files
|
||||
table.insert(files, 1, "Enter new path...")
|
||||
vim.ui.select(files, {
|
||||
prompt = "Select move destination:",
|
||||
format_item = function(f)
|
||||
return vim.fn.fnamemodify(f, ":~:.")
|
||||
end,
|
||||
}, function(f)
|
||||
if f and f:find("^Enter new path") then
|
||||
vim.ui.input({
|
||||
prompt = "Enter move destination:",
|
||||
default = vim.fn.fnamemodify(fname, ":h") .. "/",
|
||||
completion = "file",
|
||||
}, function(newf)
|
||||
return newf and move(newf)
|
||||
end)
|
||||
elseif f then
|
||||
move(f)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end
|
||||
end, "vtsls")
|
||||
-- copy typescript settings to javascript
|
||||
opts.settings.javascript =
|
||||
vim.tbl_deep_extend("force", {}, opts.settings.typescript, opts.settings.javascript or {})
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"mfussenegger/nvim-dap",
|
||||
optional = true,
|
||||
dependencies = {
|
||||
{
|
||||
"mason-org/mason.nvim",
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = opts.ensure_installed or {}
|
||||
table.insert(opts.ensure_installed, "js-debug-adapter")
|
||||
end,
|
||||
},
|
||||
},
|
||||
opts = function()
|
||||
local dap = require("dap")
|
||||
if not dap.adapters["pwa-node"] then
|
||||
require("dap").adapters["pwa-node"] = {
|
||||
type = "server",
|
||||
host = "localhost",
|
||||
port = "${port}",
|
||||
executable = {
|
||||
command = "node",
|
||||
-- 💀 Make sure to update this path to point to your installation
|
||||
args = {
|
||||
LazyVim.get_pkg_path("js-debug-adapter", "/js-debug/src/dapDebugServer.js"),
|
||||
"${port}",
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
||||
if not dap.adapters["node"] then
|
||||
dap.adapters["node"] = function(cb, config)
|
||||
if config.type == "node" then
|
||||
config.type = "pwa-node"
|
||||
end
|
||||
local nativeAdapter = dap.adapters["pwa-node"]
|
||||
if type(nativeAdapter) == "function" then
|
||||
nativeAdapter(cb, config)
|
||||
else
|
||||
cb(nativeAdapter)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local js_filetypes = { "typescript", "javascript", "typescriptreact", "javascriptreact" }
|
||||
|
||||
local vscode = require("dap.ext.vscode")
|
||||
vscode.type_to_filetypes["node"] = js_filetypes
|
||||
vscode.type_to_filetypes["pwa-node"] = js_filetypes
|
||||
|
||||
for _, language in ipairs(js_filetypes) do
|
||||
if not dap.configurations[language] then
|
||||
dap.configurations[language] = {
|
||||
{
|
||||
type = "pwa-node",
|
||||
request = "launch",
|
||||
name = "Launch file",
|
||||
program = "${file}",
|
||||
cwd = "${workspaceFolder}",
|
||||
},
|
||||
{
|
||||
type = "pwa-node",
|
||||
request = "attach",
|
||||
name = "Attach",
|
||||
processId = require("dap.utils").pick_process,
|
||||
cwd = "${workspaceFolder}",
|
||||
},
|
||||
}
|
||||
end
|
||||
end
|
||||
end,
|
||||
},
|
||||
|
||||
-- Filetype icons
|
||||
{
|
||||
"echasnovski/mini.icons",
|
||||
opts = {
|
||||
file = {
|
||||
[".eslintrc.js"] = { glyph = "", hl = "MiniIconsYellow" },
|
||||
[".node-version"] = { glyph = "", hl = "MiniIconsGreen" },
|
||||
[".prettierrc"] = { glyph = "", hl = "MiniIconsPurple" },
|
||||
[".yarnrc.yml"] = { glyph = "", hl = "MiniIconsBlue" },
|
||||
["eslint.config.js"] = { glyph = "", hl = "MiniIconsYellow" },
|
||||
["package.json"] = { glyph = "", hl = "MiniIconsGreen" },
|
||||
["tsconfig.json"] = { glyph = "", hl = "MiniIconsAzure" },
|
||||
["tsconfig.build.json"] = { glyph = "", hl = "MiniIconsAzure" },
|
||||
["yarn.lock"] = { glyph = "", hl = "MiniIconsBlue" },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
@ -5,24 +5,7 @@ return {
|
|||
-- Author: shadmansaleh
|
||||
-- Credit: glepnir
|
||||
local lualine = require("lualine")
|
||||
local ctp = require("catppuccin.palettes").get_palette("macchiato")
|
||||
|
||||
-- Utility to blend two hex colors: result = (1 - alpha) * a + alpha * b
|
||||
local function blend_hex(hex_a, hex_b, alpha)
|
||||
local function hex_to_rgb(h)
|
||||
h = h:gsub("#", "")
|
||||
return tonumber(h:sub(1, 2), 16), tonumber(h:sub(3, 4), 16), tonumber(h:sub(5, 6), 16)
|
||||
end
|
||||
local function rgb_to_hex(r, g, b)
|
||||
return string.format("#%02x%02x%02x", math.floor(r + 0.5), math.floor(g + 0.5), math.floor(b + 0.5))
|
||||
end
|
||||
local ar, ag, ab = hex_to_rgb(hex_a)
|
||||
local br, bg, bb = hex_to_rgb(hex_b)
|
||||
local r = ar * (1 - alpha) + br * alpha
|
||||
local g = ag * (1 - alpha) + bg * alpha
|
||||
local b = ab * (1 - alpha) + bb * alpha
|
||||
return rgb_to_hex(r, g, b)
|
||||
end
|
||||
local ctp = require("catppuccin.palettes").get_palette("mocha")
|
||||
|
||||
local conditions = {
|
||||
buffer_not_empty = function()
|
||||
|
|
@ -41,11 +24,15 @@ return {
|
|||
-- Config
|
||||
local config = {
|
||||
options = {
|
||||
-- Disable sections and component separators
|
||||
component_separators = "",
|
||||
section_separators = "",
|
||||
theme = {
|
||||
normal = { c = { fg = ctp.text, bg = "NONE" } },
|
||||
inactive = { c = { fg = ctp.overlay0, bg = "NONE" } },
|
||||
-- We are going to use lualine_c an lualine_x as left and
|
||||
-- right section. Both are highlighted by c theme . So we
|
||||
-- are just setting default looks o statusline
|
||||
normal = { c = { fg = ctp.text, bg = ctp.base } },
|
||||
inactive = { c = { fg = ctp.overlay0, bg = ctp.base } },
|
||||
},
|
||||
},
|
||||
sections = {
|
||||
|
|
@ -177,41 +164,6 @@ return {
|
|||
return mode_colors[current_mode] or ctp.subtext0 -- Default to a neutral color if mode not found
|
||||
end
|
||||
|
||||
-- Human-readable mode labels
|
||||
local function get_mode_label()
|
||||
local m = vim.api.nvim_get_mode().mode
|
||||
local normal = {
|
||||
n = true,
|
||||
no = true,
|
||||
nov = true,
|
||||
["noV"] = true,
|
||||
["no\22"] = true,
|
||||
niI = true,
|
||||
niR = true,
|
||||
niV = true,
|
||||
nt = true,
|
||||
}
|
||||
if normal[m] then
|
||||
return "NORM"
|
||||
end
|
||||
if m == "i" or m == "ic" or m == "ix" then
|
||||
return "INS"
|
||||
end
|
||||
if m == "v" or m == "V" or m == "\22" or m == "vs" or m == "Vs" or m == "\22s" then
|
||||
return "VIS"
|
||||
end
|
||||
if m == "R" or m == "Rc" or m == "Rx" or m == "Rv" or m == "Rvc" or m == "Rvx" then
|
||||
return "REPL"
|
||||
end
|
||||
if m == "c" or m == "cv" or m == "ce" then
|
||||
return "CMD"
|
||||
end
|
||||
if m == "t" or m == "!" then
|
||||
return "TERM"
|
||||
end
|
||||
return "?"
|
||||
end
|
||||
|
||||
-- Inserts a component in lualine_c at left section
|
||||
local function ins_left(component)
|
||||
table.insert(config.sections.lualine_c, component)
|
||||
|
|
@ -224,14 +176,13 @@ return {
|
|||
|
||||
ins_left({
|
||||
function()
|
||||
return get_mode_label()
|
||||
return get_mode_abbr()
|
||||
end,
|
||||
color = function()
|
||||
local mode_color = get_mode_color()
|
||||
local mode_bg = blend_hex(ctp.base, mode_color, 0.254)
|
||||
return { fg = mode_color, bg = mode_bg, gui = "bold" }
|
||||
end,
|
||||
padding = { left = 1, right = 1 },
|
||||
local color = get_mode_color()
|
||||
return { fg = ctp.base, bg = color, gui = "bold" }
|
||||
end, -- Sets highlighting of component
|
||||
padding = { left = 1, right = 1 }, -- We don't need space before this
|
||||
})
|
||||
|
||||
ins_left({
|
||||
|
|
@ -240,13 +191,19 @@ return {
|
|||
color = { fg = ctp.subtext0 },
|
||||
})
|
||||
|
||||
-- visual separation using color only, no ASCII separators
|
||||
ins_left({ "location", color = { fg = ctp.overlay1 } })
|
||||
ins_left({
|
||||
-- filesize component
|
||||
"filesize",
|
||||
cond = conditions.buffer_not_empty,
|
||||
color = { fg = ctp.subtext1 },
|
||||
})
|
||||
|
||||
ins_left({ "location", color = { fg = ctp.subtext1 } })
|
||||
|
||||
ins_left({
|
||||
"diagnostics",
|
||||
sources = { "nvim_diagnostic" },
|
||||
symbols = { error = "", warn = "", info = "" },
|
||||
symbols = { error = " ", warn = " ", info = " " },
|
||||
diagnostics_color = {
|
||||
error = { fg = ctp.red },
|
||||
warn = { fg = ctp.yellow },
|
||||
|
|
@ -262,13 +219,14 @@ return {
|
|||
end,
|
||||
})
|
||||
|
||||
-- LSP client indicator (badge)
|
||||
ins_right({
|
||||
-- Lsp server name .
|
||||
function()
|
||||
local msg = "none"
|
||||
local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 })
|
||||
local clients = vim.lsp.get_clients()
|
||||
if next(clients) == nil then
|
||||
return ""
|
||||
return msg
|
||||
end
|
||||
for _, client in ipairs(clients) do
|
||||
local filetypes = client.config.filetypes
|
||||
|
|
@ -276,41 +234,42 @@ return {
|
|||
return client.name
|
||||
end
|
||||
end
|
||||
return ""
|
||||
return msg
|
||||
end,
|
||||
color = function()
|
||||
return { fg = ctp.sapphire, bg = blend_hex(ctp.base, ctp.sapphire, 0.254), gui = "bold" }
|
||||
end,
|
||||
padding = { left = 1, right = 1 },
|
||||
icon = "",
|
||||
color = { fg = ctp.overlay1, gui = "bold" },
|
||||
})
|
||||
|
||||
-- Add components to right sections
|
||||
ins_right({
|
||||
"branch",
|
||||
icon = "",
|
||||
color = { fg = ctp.mauve, gui = "bold" },
|
||||
})
|
||||
|
||||
ins_right({
|
||||
"diff",
|
||||
-- Is it me or the symbol for modified us really weird
|
||||
symbols = { added = " ", modified = " ", removed = " " },
|
||||
diff_color = {
|
||||
added = { fg = ctp.green },
|
||||
modified = { fg = ctp.peach },
|
||||
removed = { fg = ctp.red },
|
||||
},
|
||||
cond = conditions.hide_in_width,
|
||||
})
|
||||
|
||||
-- CMP badge (visible in insert mode)
|
||||
ins_right({
|
||||
function()
|
||||
return "CMP"
|
||||
return "▊"
|
||||
end,
|
||||
cond = function()
|
||||
local mode = vim.api.nvim_get_mode().mode
|
||||
return mode == "i" or mode == "ic" or mode == "ix"
|
||||
end,
|
||||
color = { fg = ctp.base, bg = ctp.teal },
|
||||
padding = { left = 1, right = 1 },
|
||||
})
|
||||
|
||||
-- Language/filetype badge
|
||||
ins_right({
|
||||
"filetype",
|
||||
colored = false,
|
||||
icon_only = false,
|
||||
color = function()
|
||||
return { fg = ctp.text, ctp.surface0, gui = "bold" }
|
||||
end,
|
||||
padding = { left = 1, right = 1 },
|
||||
local color = get_mode_color()
|
||||
return { fg = color }
|
||||
end, -- Sets highlighting of component
|
||||
padding = { left = 1 },
|
||||
})
|
||||
|
||||
-- Minimal right side
|
||||
ins_right({ "progress", color = { fg = ctp.overlay1 } })
|
||||
|
||||
-- Now don't forget to initialize lualine
|
||||
lualine.setup(config)
|
||||
end,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
return {
|
||||
"nvim-mini/mini.ai",
|
||||
"echasnovski/mini.ai",
|
||||
version = false,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
return {
|
||||
"chomosuke/typst-preview.nvim",
|
||||
lazy = false, -- or ft = 'typst'
|
||||
version = "1.*",
|
||||
opts = {}, -- lazy.nvim will implicitly calls `setup {}`
|
||||
}
|
||||
|
|
@ -27,23 +27,18 @@ with lib.custom; let
|
|||
in
|
||||
result;
|
||||
|
||||
pluginList = plugins:
|
||||
strings.concatMapStrings (
|
||||
plugin: " [\"${sanitizePluginName plugin.name}\"] = \"${plugin.outPath}\",\n"
|
||||
)
|
||||
plugins;
|
||||
pluginList = plugins: strings.concatMapStrings (plugin: " [\"${sanitizePluginName plugin.name}\"] = \"${plugin.outPath}\",\n") plugins;
|
||||
in {
|
||||
options.apps.tools.neovim = with types; {
|
||||
enable = mkBoolOpt false "Enable Neovim";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
catppuccin.nvim.enable = false;
|
||||
|
||||
programs.neovim = {
|
||||
catppuccin.enable = false;
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default;
|
||||
# package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default;
|
||||
extraLuaPackages = ps: [ps.magick];
|
||||
extraPackages = with pkgs; [
|
||||
# Formatters
|
||||
|
|
@ -60,21 +55,22 @@ in {
|
|||
# LSP
|
||||
lua-language-server
|
||||
nixd
|
||||
(pkgs.rust-bin.selectLatestNightlyWith
|
||||
(toolchain: toolchain.default))
|
||||
rust-analyzer
|
||||
nodePackages.typescript-language-server
|
||||
#nodePackages.astro-language-server
|
||||
nodePackages.bash-language-server
|
||||
nodePackages.svelte-language-server
|
||||
tailwindcss-language-server
|
||||
vtsls
|
||||
taplo
|
||||
docker-compose-language-service
|
||||
dockerfile-language-server
|
||||
dockerfile-language-server-nodejs
|
||||
haskellPackages.hadolint
|
||||
shellcheck
|
||||
markdownlint-cli2
|
||||
shfmt
|
||||
# sqlfluff
|
||||
sqlfluff
|
||||
go
|
||||
|
||||
tailwindcss-language-server
|
||||
|
|
@ -92,6 +88,7 @@ in {
|
|||
fswatch # File watcher utility, replacing libuv.fs_event for neovim 10.0
|
||||
sqlite
|
||||
postgresql
|
||||
mongosh
|
||||
# vscode-extensions.vadimcn.vscode-lldb.adapter
|
||||
];
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ in {
|
|||
enableNushellIntegration = config.programs.nushell.enable;
|
||||
settings = {
|
||||
add_newline = false;
|
||||
format = "$directory$git_branch$git_status$python$rust$nodejs$nix_shell$cmd_duration$line_break$character";
|
||||
format = "$username$directory$git_branch$git_status$python$rust$nodejs$nix_shell$cmd_duration$line_break$character";
|
||||
|
||||
# Username display
|
||||
username = {
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ in {
|
|||
enable = true;
|
||||
extraConfig = ''
|
||||
set -g @catppuccin_window_status_style "basic"
|
||||
set -g @catppuccin_status_background "#11111b"
|
||||
'';
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,261 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.custom; let
|
||||
cfg = config.apps.web.floorp;
|
||||
|
||||
natsumi = pkgs.fetchFromGitHub {
|
||||
owner = "greeeen-dev";
|
||||
repo = "natsumi-browser";
|
||||
rev = "v5.7.1";
|
||||
hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
|
||||
};
|
||||
in {
|
||||
options.apps.web.floorp = with types; {
|
||||
enable = mkBoolOpt false "Enable Floorp Browser";
|
||||
|
||||
setDefault = mkBoolOpt false "Enable Floorp as Default browser";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
xdg.mimeApps.defaultApplications = mkIf cfg.setDefault {
|
||||
"text/html" = "floorp.desktop";
|
||||
"x-scheme-handler/http" = "floorp.desktop";
|
||||
"x-scheme-handler/https" = "floorp.desktop";
|
||||
};
|
||||
|
||||
home.file.".floorp/default/chrome" = {
|
||||
source = "${natsumi}";
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
catppuccin.firefox.profiles.default.enable = false;
|
||||
|
||||
programs.floorp = {
|
||||
enable = true;
|
||||
|
||||
profiles.default = {
|
||||
extensions.force = true;
|
||||
search = {
|
||||
default = "SearXNG";
|
||||
|
||||
engines = {
|
||||
"NixOS Options" = {
|
||||
urls = [
|
||||
{
|
||||
template = "https://search.nixos.org/options?query={searchTerms}";
|
||||
}
|
||||
];
|
||||
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = ["@nixos"];
|
||||
};
|
||||
|
||||
"Nix Packages" = {
|
||||
urls = [
|
||||
{
|
||||
template = "https://search.nixos.org/packages?query={searchTerms}";
|
||||
}
|
||||
];
|
||||
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = ["@nixpkgs"];
|
||||
};
|
||||
|
||||
"OpenStreetMap" = {
|
||||
urls = [
|
||||
{
|
||||
template = "https://www.openstreetmap.org/search?query={searchTerms}";
|
||||
}
|
||||
];
|
||||
|
||||
icon = "https://www.openstreetmap.org/favicon.ico";
|
||||
definedAliases = ["@openstreetmap" "@osm"];
|
||||
};
|
||||
|
||||
"SearXNG" = {
|
||||
urls = [
|
||||
{
|
||||
template = "https://search.zoeys.computer/searx/search?q={searchTerms}";
|
||||
}
|
||||
];
|
||||
|
||||
icon = "https://search.zoeys.computer/searx/static/themes/simple/img/favicon.svg";
|
||||
definedAliases = ["@searx"];
|
||||
};
|
||||
|
||||
"docs.rs" = {
|
||||
urls = [
|
||||
{
|
||||
template = "https://docs.rs/releases/search?query={searchTerms}";
|
||||
}
|
||||
];
|
||||
|
||||
icon = "https://docs.rs/-/static/favicon.ico";
|
||||
definedAliases = ["@docs"];
|
||||
};
|
||||
|
||||
"crates.io" = {
|
||||
urls = [
|
||||
{
|
||||
template = "https://crates.io/search?q={searchTerms}";
|
||||
}
|
||||
];
|
||||
|
||||
icon = "https://crates.io/assets/cargo.png";
|
||||
definedAliases = ["@crates"];
|
||||
};
|
||||
};
|
||||
|
||||
force = true; # Required to prevent search engine symlink being overwritten. See https://github.com/nix-community/home-manager/issues/3698
|
||||
};
|
||||
};
|
||||
|
||||
policies = {
|
||||
DisableTelemetry = true;
|
||||
|
||||
Preferences = {
|
||||
"app.normandy.api_url" = "";
|
||||
"app.normandy.enabled" = false;
|
||||
"app.shield.optoutstudies.enabled" = false;
|
||||
"app.update.auto" = false;
|
||||
"beacon.enabled" = false;
|
||||
"breakpad.reportURL" = "";
|
||||
"browser.aboutConfig.showWarning" = false;
|
||||
"browser.cache.offline.enable" = false;
|
||||
"browser.crashReports.unsubmittedCheck.autoSubmit" = false;
|
||||
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
|
||||
"browser.crashReports.unsubmittedCheck.enabled" = false;
|
||||
"browser.disableResetPrompt" = true;
|
||||
"browser.newtab.preload" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||
"browser.newtabpage.enhanced" = false;
|
||||
"browser.newtabpage.introShown" = true;
|
||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||
"browser.newtabpage.activity-stream.system.showSponsored" = false;
|
||||
"browser.safebrowsing.appRepURL" = "";
|
||||
"browser.safebrowsing.blockedURIs.enabled" = false;
|
||||
"browser.safebrowsing.downloads.enabled" = false;
|
||||
"browser.safebrowsing.downloads.remote.enabled" = false;
|
||||
"browser.safebrowsing.downloads.remote.url" = "";
|
||||
"browser.safebrowsing.enabled" = false;
|
||||
"browser.safebrowsing.malware.enabled" = false;
|
||||
"browser.safebrowsing.phishing.enabled" = false;
|
||||
"browser.selfsupport.url" = "";
|
||||
"browser.send_pings" = false;
|
||||
"browser.sessionstore.privacy_level" = 0;
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
"browser.startup.homepage_override.mstone" = "";
|
||||
"browser.tabs.crashReporting.sendReport" = false;
|
||||
"browser.urlbar.groupLabels.enabled" = false;
|
||||
"browser.urlbar.quicksuggest.enabled" = false;
|
||||
"browser.urlbar.speculativeConnect.enabled" = false;
|
||||
"browser.urlbar.trimURLs" = false;
|
||||
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
|
||||
"datareporting.healthreport.service.enabled" = false;
|
||||
"datareporting.healthreport.uploadEnabled" = false;
|
||||
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||
"device.sensors.ambientLight.enabled" = false;
|
||||
"device.sensors.enabled" = false;
|
||||
"device.sensors.motion.enabled" = false;
|
||||
"device.sensors.orientation.enabled" = false;
|
||||
"device.sensors.proximity.enabled" = false;
|
||||
"dom.battery.enabled" = false;
|
||||
"dom.event.clipboardevents.enabled" = false;
|
||||
"dom.webaudio.enabled" = false;
|
||||
"experiments.activeExperiment" = false;
|
||||
"experiments.enabled" = false;
|
||||
"experiments.manifest.uri" = "";
|
||||
"experiments.supported" = false;
|
||||
"extensions.ClearURLs@kevinr.whiteList" = "";
|
||||
"extensions.Decentraleyes@ThomasRientjes.whiteList" = "";
|
||||
"extensions.FirefoxMulti-AccountContainers@mozilla.whiteList" = "";
|
||||
"extensions.TemporaryContainers@stoically.whiteList" = "";
|
||||
"extensions.autoDisableScopes" = 14;
|
||||
"extensions.getAddons.cache.enabled" = false;
|
||||
"extensions.getAddons.showPane" = false;
|
||||
"extensions.greasemonkey.stats.optedin" = false;
|
||||
"extensions.greasemonkey.stats.url" = "";
|
||||
"extensions.pocket.enabled" = false;
|
||||
"extensions.shield-recipe-client.api_url" = "";
|
||||
"extensions.shield-recipe-client.enabled" = false;
|
||||
"extensions.webservice.discoverURL" = "";
|
||||
"media.autoplay.default" = 0;
|
||||
"media.autoplay.enabled" = true;
|
||||
"media.eme.enabled" = false;
|
||||
"media.gmp-widevinecdm.enabled" = false;
|
||||
"media.navigator.enabled" = false;
|
||||
"media.peerconnection.enabled" = false;
|
||||
"media.video_stats.enabled" = false;
|
||||
"network.IDN_show_punycode" = true;
|
||||
"network.allow-experiments" = false;
|
||||
"network.captive-portal-service.enabled" = false;
|
||||
"network.cookie.cookieBehavior" = 1;
|
||||
"network.dns.disablePrefetch" = true;
|
||||
"network.dns.disablePrefetchFromHTTPS" = true;
|
||||
"network.http.referer.spoofSource" = true;
|
||||
"network.http.speculative-parallel-limit" = "";
|
||||
"network.predictor.enable-prefetch" = false;
|
||||
"network.predictor.enabled" = false;
|
||||
"network.prefetch-next" = false;
|
||||
"network.trr.mode" = "";
|
||||
"privacy.donottrackheader.enabled" = true;
|
||||
"privacy.donottrackheader.value" = "";
|
||||
"privacy.firstparty.isolate" = true;
|
||||
"privacy.query_stripping" = true;
|
||||
"privacy.trackingprotection.cryptomining.enabled" = true;
|
||||
"privacy.trackingprotection.enabled" = true;
|
||||
"privacy.trackingprotection.fingerprinting.enabled" = true;
|
||||
"privacy.trackingprotection.pbmode.enabled" = true;
|
||||
"privacy.usercontext.about_newtab_segregation.enabled" = true;
|
||||
"security.ssl.disable_session_identifiers" = true;
|
||||
"services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSite" = false;
|
||||
"signon.autofillForms" = false;
|
||||
"toolkit.telemetry.archive.enabled" = false;
|
||||
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||
"toolkit.telemetry.cachedClientID" = "";
|
||||
"toolkit.telemetry.enabled" = false;
|
||||
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||
"toolkit.telemetry.hybridContent.enabled" = false;
|
||||
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||
"toolkit.telemetry.prompted" = "";
|
||||
"toolkit.telemetry.rejected" = true;
|
||||
"toolkit.telemetry.reportingpolicy.firstRun" = false;
|
||||
"toolkit.telemetry.server" = "";
|
||||
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||
"toolkit.telemetry.unified" = false;
|
||||
"toolkit.telemetry.unifiedIsOptIn" = false;
|
||||
"toolkit.telemetry.updatePing.enabled" = false;
|
||||
"webgl.renderer-string-override" = " ";
|
||||
"webgl.vendor-string-override" = " ";
|
||||
};
|
||||
|
||||
ExtensionSettings = with builtins; let
|
||||
extension = shortId: uuid: {
|
||||
name = uuid;
|
||||
value = {
|
||||
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
|
||||
installation_mode = "normal_installed";
|
||||
};
|
||||
};
|
||||
in
|
||||
listToAttrs [
|
||||
(extension "ublock-origin" "uBlock0@raymondhill.net")
|
||||
(extension "privacy-badger17" "jid1-MnnxcxisBPnSXQ@jetpack")
|
||||
(extension "1password-x-password-manager" "{d634138d-c276-4fc8-924b-40a0ea21d284}")
|
||||
(extension "multi-account-containers" "@testpilot-containers")
|
||||
(extension "temporary-containers" "{c607c8df-14a7-4f28-894f-29e8722976af}")
|
||||
(extension "styl-us" "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}")
|
||||
(extension "betterttv" "firefox@betterttv.net")
|
||||
(extension "decentraleyes" "jid1-BoFifL9Vbdl2zQ@jetpack")
|
||||
(extension "canvasblocker" "CanvasBlocker@kkapsner.de")
|
||||
(extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}")
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -2,19 +2,11 @@
|
|||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.custom; let
|
||||
cfg = config.apps.web.librewolf;
|
||||
|
||||
natsumi = pkgs.fetchFromGitHub {
|
||||
owner = "greeeen-dev";
|
||||
repo = "natsumi-browser";
|
||||
rev = "v5.7.1";
|
||||
hash = "sha256-t5xVpFRV2qq5uJRGk7V50EiPnsxbd2cyeKPJYqg/LF0=";
|
||||
};
|
||||
in {
|
||||
options.apps.web.librewolf = with types; {
|
||||
enable = mkBoolOpt false "Enable or disable librewolf";
|
||||
|
|
@ -29,43 +21,13 @@ in {
|
|||
"x-scheme-handler/https" = "librewolf.desktop";
|
||||
};
|
||||
|
||||
home.file.".librewolf/${config.home.username}/chrome" = {
|
||||
source = "${natsumi}";
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
programs.librewolf = {
|
||||
enable = true;
|
||||
|
||||
profiles.default = lib.mkForce {
|
||||
id = 1;
|
||||
isDefault = false;
|
||||
extensions = {
|
||||
force = true;
|
||||
};
|
||||
};
|
||||
|
||||
profiles.${config.home.username} = {
|
||||
id = 0;
|
||||
isDefault = true;
|
||||
|
||||
extensions = {
|
||||
force = true;
|
||||
};
|
||||
|
||||
settings = {
|
||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||
"sidebar.verticalTabs" = true;
|
||||
|
||||
"webgl.disabled" = false;
|
||||
"privacy.resistFingerprinting" = false;
|
||||
"privacy.clearOnShutdown.history" = false;
|
||||
"privacy.clearOnShutdown.cookies" = false;
|
||||
"network.cookie.lifetimePolicy" = 0;
|
||||
|
||||
"natsumi.theme.type" = "default";
|
||||
};
|
||||
|
||||
search = {
|
||||
default = "SearXNG";
|
||||
|
||||
|
|
@ -100,10 +62,7 @@ in {
|
|||
];
|
||||
|
||||
icon = "https://www.openstreetmap.org/favicon.ico";
|
||||
definedAliases = [
|
||||
"@openstreetmap"
|
||||
"@osm"
|
||||
];
|
||||
definedAliases = ["@openstreetmap" "@osm"];
|
||||
};
|
||||
|
||||
"SearXNG" = {
|
||||
|
|
@ -145,6 +104,125 @@ in {
|
|||
};
|
||||
|
||||
policies = {
|
||||
DisableTelemetry = true;
|
||||
|
||||
Preferences = {
|
||||
"app.normandy.api_url" = "";
|
||||
"app.normandy.enabled" = false;
|
||||
"app.shield.optoutstudies.enabled" = false;
|
||||
"app.update.auto" = false;
|
||||
"beacon.enabled" = false;
|
||||
"breakpad.reportURL" = "";
|
||||
"browser.aboutConfig.showWarning" = false;
|
||||
"browser.cache.offline.enable" = false;
|
||||
"browser.crashReports.unsubmittedCheck.autoSubmit" = false;
|
||||
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
|
||||
"browser.crashReports.unsubmittedCheck.enabled" = false;
|
||||
"browser.disableResetPrompt" = true;
|
||||
"browser.newtab.preload" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||
"browser.newtabpage.enhanced" = false;
|
||||
"browser.newtabpage.introShown" = true;
|
||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||
"browser.newtabpage.activity-stream.system.showSponsored" = false;
|
||||
"browser.safebrowsing.appRepURL" = "";
|
||||
"browser.safebrowsing.blockedURIs.enabled" = false;
|
||||
"browser.safebrowsing.downloads.enabled" = false;
|
||||
"browser.safebrowsing.downloads.remote.enabled" = false;
|
||||
"browser.safebrowsing.downloads.remote.url" = "";
|
||||
"browser.safebrowsing.enabled" = false;
|
||||
"browser.safebrowsing.malware.enabled" = false;
|
||||
"browser.safebrowsing.phishing.enabled" = false;
|
||||
"browser.selfsupport.url" = "";
|
||||
"browser.send_pings" = false;
|
||||
"browser.sessionstore.privacy_level" = 0;
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
"browser.startup.homepage_override.mstone" = "";
|
||||
"browser.tabs.crashReporting.sendReport" = false;
|
||||
"browser.urlbar.groupLabels.enabled" = false;
|
||||
"browser.urlbar.quicksuggest.enabled" = false;
|
||||
"browser.urlbar.speculativeConnect.enabled" = false;
|
||||
"browser.urlbar.trimURLs" = false;
|
||||
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
|
||||
"datareporting.healthreport.service.enabled" = false;
|
||||
"datareporting.healthreport.uploadEnabled" = false;
|
||||
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||
"device.sensors.ambientLight.enabled" = false;
|
||||
"device.sensors.enabled" = false;
|
||||
"device.sensors.motion.enabled" = false;
|
||||
"device.sensors.orientation.enabled" = false;
|
||||
"device.sensors.proximity.enabled" = false;
|
||||
"dom.battery.enabled" = false;
|
||||
"dom.event.clipboardevents.enabled" = false;
|
||||
"dom.webaudio.enabled" = false;
|
||||
"experiments.activeExperiment" = false;
|
||||
"experiments.enabled" = false;
|
||||
"experiments.manifest.uri" = "";
|
||||
"experiments.supported" = false;
|
||||
"extensions.ClearURLs@kevinr.whiteList" = "";
|
||||
"extensions.Decentraleyes@ThomasRientjes.whiteList" = "";
|
||||
"extensions.FirefoxMulti-AccountContainers@mozilla.whiteList" = "";
|
||||
"extensions.TemporaryContainers@stoically.whiteList" = "";
|
||||
"extensions.autoDisableScopes" = 14;
|
||||
"extensions.getAddons.cache.enabled" = false;
|
||||
"extensions.getAddons.showPane" = false;
|
||||
"extensions.greasemonkey.stats.optedin" = false;
|
||||
"extensions.greasemonkey.stats.url" = "";
|
||||
"extensions.pocket.enabled" = false;
|
||||
"extensions.shield-recipe-client.api_url" = "";
|
||||
"extensions.shield-recipe-client.enabled" = false;
|
||||
"extensions.webservice.discoverURL" = "";
|
||||
"media.autoplay.default" = 0;
|
||||
"media.autoplay.enabled" = true;
|
||||
"media.eme.enabled" = false;
|
||||
"media.gmp-widevinecdm.enabled" = false;
|
||||
"media.navigator.enabled" = false;
|
||||
"media.peerconnection.enabled" = false;
|
||||
"media.video_stats.enabled" = false;
|
||||
"network.IDN_show_punycode" = true;
|
||||
"network.allow-experiments" = false;
|
||||
"network.captive-portal-service.enabled" = false;
|
||||
"network.cookie.cookieBehavior" = 1;
|
||||
"network.dns.disablePrefetch" = true;
|
||||
"network.dns.disablePrefetchFromHTTPS" = true;
|
||||
"network.http.referer.spoofSource" = true;
|
||||
"network.http.speculative-parallel-limit" = "";
|
||||
"network.predictor.enable-prefetch" = false;
|
||||
"network.predictor.enabled" = false;
|
||||
"network.prefetch-next" = false;
|
||||
"network.trr.mode" = "";
|
||||
"privacy.donottrackheader.enabled" = true;
|
||||
"privacy.donottrackheader.value" = "";
|
||||
"privacy.firstparty.isolate" = true;
|
||||
"privacy.query_stripping" = true;
|
||||
"privacy.trackingprotection.cryptomining.enabled" = true;
|
||||
"privacy.trackingprotection.enabled" = true;
|
||||
"privacy.trackingprotection.fingerprinting.enabled" = true;
|
||||
"privacy.trackingprotection.pbmode.enabled" = true;
|
||||
"privacy.usercontext.about_newtab_segregation.enabled" = true;
|
||||
"security.ssl.disable_session_identifiers" = true;
|
||||
"services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSite" = false;
|
||||
"signon.autofillForms" = false;
|
||||
"toolkit.telemetry.archive.enabled" = false;
|
||||
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||
"toolkit.telemetry.cachedClientID" = "";
|
||||
"toolkit.telemetry.enabled" = false;
|
||||
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||
"toolkit.telemetry.hybridContent.enabled" = false;
|
||||
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||
"toolkit.telemetry.prompted" = "";
|
||||
"toolkit.telemetry.rejected" = true;
|
||||
"toolkit.telemetry.reportingpolicy.firstRun" = false;
|
||||
"toolkit.telemetry.server" = "";
|
||||
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||
"toolkit.telemetry.unified" = false;
|
||||
"toolkit.telemetry.unifiedIsOptIn" = false;
|
||||
"toolkit.telemetry.updatePing.enabled" = false;
|
||||
"webgl.renderer-string-override" = " ";
|
||||
"webgl.vendor-string-override" = " ";
|
||||
};
|
||||
|
||||
ExtensionSettings = with builtins; let
|
||||
extension = shortId: uuid: {
|
||||
name = uuid;
|
||||
|
|
@ -158,11 +236,15 @@ in {
|
|||
(extension "ublock-origin" "uBlock0@raymondhill.net")
|
||||
(extension "privacy-badger17" "jid1-MnnxcxisBPnSXQ@jetpack")
|
||||
(extension "1password-x-password-manager" "{d634138d-c276-4fc8-924b-40a0ea21d284}")
|
||||
(extension "firefox-color" "FirefoxColor@mozilla.com")
|
||||
(extension "multi-account-containers" "@testpilot-containers")
|
||||
(extension "temporary-containers" "{c607c8df-14a7-4f28-894f-29e8722976af}")
|
||||
(extension "styl-us" "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}")
|
||||
(extension "betterttv" "firefox@betterttv.net")
|
||||
(extension "decentraleyes" "jid1-BoFifL9Vbdl2zQ@jetpack")
|
||||
(extension "canvasblocker" "CanvasBlocker@kkapsner.de")
|
||||
(extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}")
|
||||
(extension "mtab" "contact@maxhu.dev")
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@ in {
|
|||
|
||||
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
||||
xdg.mimeApps.defaultApplications = mkIf cfg.setDefault {
|
||||
"text/html" = "zen-twilight.desktop";
|
||||
"x-scheme-handler/http" = "zen-twilight.desktop";
|
||||
"x-scheme-handler/https" = "zen-twilight.desktop";
|
||||
"text/html" = "zen-beta.desktop";
|
||||
"x-scheme-handler/http" = "zen-beta.desktop";
|
||||
"x-scheme-handler/https" = "zen-beta.desktop";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
catppuccin.cursors.enable = true;
|
||||
catppuccin.pointerCursor.enable = true;
|
||||
|
||||
home.pointerCursor = {
|
||||
gtk.enable = true;
|
||||
|
|
@ -37,6 +37,10 @@ in {
|
|||
|
||||
iconTheme = {
|
||||
name = "Papirus-Dark";
|
||||
package = pkgs.catppuccin-papirus-folders.override {
|
||||
accent = ctp.accent;
|
||||
flavor = ctp.flavor;
|
||||
};
|
||||
};
|
||||
|
||||
gtk3.extraConfig = {
|
||||
|
|
|
|||
|
|
@ -15,10 +15,9 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
||||
catppuccin.swaylock.enable = false;
|
||||
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
catppuccin.enable = false;
|
||||
package = pkgs.swaylock-effects;
|
||||
settings = with colors; {
|
||||
clock = true;
|
||||
|
|
|
|||
55
modules/home/services/quickshell/default.nix
Normal file
55
modules/home/services/quickshell/default.nix
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
system,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.custom; let
|
||||
cfg = config.services.quickshell;
|
||||
|
||||
mkService = recursiveUpdate {
|
||||
Unit.PartOf = ["graphical-session.target"];
|
||||
Unit.After = ["graphical-session.target"];
|
||||
Install.WantedBy = ["graphical-session.target"];
|
||||
};
|
||||
in {
|
||||
options.services.quickshell = with types; {
|
||||
enable = mkBoolOpt false "Enable or Disable QuickShell";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
systemd.user.services = {
|
||||
quickshell = mkService {
|
||||
Unit.Description = "QuickShell Service";
|
||||
Service = {
|
||||
Environment = [
|
||||
"QSG_RENDER_LOOP=threaded"
|
||||
# "QT_QUICK_BACKEND=software"
|
||||
"QT_QPA_PLATFORM=wayland"
|
||||
"QSG_RENDERER_TIMING=true"
|
||||
"QML_DISABLE_DISTANCEFIELD=1"
|
||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION=1"
|
||||
"QT_QPA_PLATFORMTHEME=qt5ct"
|
||||
"QT_QPA_REFRESH_RATE=240"
|
||||
"__GL_SYNC_TO_VBLANK=0"
|
||||
"LIBGL_ALWAYS_SOFTWARE=0"
|
||||
"__GL_SYNC_DISPLAY_DEVICE=DP-1" # Adjust this to match your display connection
|
||||
"QML_ANIMATION_DRIVER=cadence"
|
||||
"QML_CADENCE_DURATION=4"
|
||||
"QML_CADENCE_MAX_RENDER_TIME=3.5"
|
||||
"QSG_RENDERER_USE_THREADED_GL=1"
|
||||
"QSG_RHI_PREFER_SOFTWARE_RENDERER=0"
|
||||
"QSG_RHI_FORCE_SYNC=0"
|
||||
"QSG_INFO=1"
|
||||
];
|
||||
ExecStart = ''
|
||||
${inputs.quickshell.packages.${system}.default}/bin/qs --log-rules 'quickshell.dbus.properties.warning = false;quickshell.dbus.dbusmenu.warning = false;quickshell.service.notifications.warning = false;quickshell.service.sni.host.warning = false'
|
||||
'';
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -16,7 +16,7 @@ with pkgs; {
|
|||
untar = "tar -xvf";
|
||||
untargz = "tar -xzf";
|
||||
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
|
||||
du = getExe dust;
|
||||
du = getExe du-dust;
|
||||
ps = getExe procs;
|
||||
lb = "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\"";
|
||||
deploy = "nixos-rebuild switch --flake ~/nixos#pluto --target-host zoeys.computer --use-remote-sudo";
|
||||
|
|
@ -28,8 +28,6 @@ with pkgs; {
|
|||
la = "${getExe eza} -lah --tree";
|
||||
ls = "${getExe eza} -h --git --icons --color=auto --group-directories-first -s extension";
|
||||
tree = "${getExe eza} --tree --icons --tree";
|
||||
ns = "nh os switch -- --cores 8 --max-jobs 1";
|
||||
nsu = "nh os switch --update -- --cores 8 --max-jobs 1";
|
||||
kys = "shutdown now";
|
||||
# w = ''| nvim -c "setlocal buftype=nofile bufhidden=wipe" -c "nnoremap <buffer> q :q!<CR>" -'';
|
||||
lv = "nvim -c \"normal '\''0\"";
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ in {
|
|||
set -g FZF_PREVIEW_FILE_CMD "head -n 10"
|
||||
set -g FZF_PREVIEW_DIR_CMD "ls"
|
||||
|
||||
set -gx AWS_DEFAULT_PROFILE (cat ~/.aws_profile | string collect)
|
||||
|
||||
set -Ux MANROFFOPT '-c'
|
||||
set -Ux MANPAGER "sh -c 'col -bx | bat -l man -p'"
|
||||
|
||||
|
|
@ -91,7 +93,7 @@ in {
|
|||
fzf
|
||||
|
||||
# dns client
|
||||
doggo
|
||||
dogdns
|
||||
|
||||
# neofetch but for git repos
|
||||
onefetch
|
||||
|
|
@ -114,6 +116,9 @@ in {
|
|||
imagemagick
|
||||
ffmpeg-full
|
||||
|
||||
# preview images in terminal
|
||||
catimg
|
||||
|
||||
# networking stuff
|
||||
nmap
|
||||
wget
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ with pkgs; {
|
|||
untar = "tar -xvf";
|
||||
untargz = "tar -xzf";
|
||||
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
|
||||
du = getExe dust;
|
||||
du = getExe du-dust;
|
||||
lb = "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\"";
|
||||
deploy = "nixos-rebuild switch --flake ~/nixos#pluto --target-host zoeys.computer --use-remote-sudo";
|
||||
m = "mkdir";
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ in {
|
|||
ripgrep
|
||||
gping
|
||||
fzf
|
||||
doggo
|
||||
dogdns
|
||||
onefetch
|
||||
cpufetch
|
||||
yt-dlp
|
||||
|
|
@ -62,6 +62,7 @@ in {
|
|||
hyperfine
|
||||
imagemagick
|
||||
ffmpeg-full
|
||||
catimg
|
||||
nmap
|
||||
wget
|
||||
fd
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ in {
|
|||
gping
|
||||
|
||||
# dns client
|
||||
doggo
|
||||
dogdns
|
||||
|
||||
# neofetch but for git repos
|
||||
onefetch
|
||||
|
|
@ -115,6 +115,9 @@ in {
|
|||
imagemagick
|
||||
ffmpeg-full
|
||||
|
||||
# preview images in terminal
|
||||
catimg
|
||||
|
||||
# networking stuff
|
||||
nmap
|
||||
wget
|
||||
|
|
|
|||
|
|
@ -76,6 +76,17 @@ in {
|
|||
"${mod},Q,killactive"
|
||||
"${mod},M,exit"
|
||||
"${mod},P,pseudo"
|
||||
"${mod},Z,exec,${pkgs.writeShellScriptBin "zen-launcher" ''
|
||||
ZEN_RESULT=$(${inputs.hyprland.packages.${pkgs.system}.default}/bin/hyprctl clients -j | ${lib.getExe pkgs.jq} '.[] | select(.class | contains("zen"))')
|
||||
|
||||
if [ -z "$ZEN_RESULT" ]; then
|
||||
${lib.getExe inputs.zen-browser.packages.${pkgs.system}.beta} &
|
||||
disown
|
||||
else
|
||||
ZEN_WORKSPACE=$(echo "$ZEN_RESULT" | ${lib.getExe pkgs.jq} '.workspace.id')
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch workspace "$ZEN_WORKSPACE"
|
||||
fi
|
||||
''}/bin/zen-launcher"
|
||||
|
||||
"${mod},J,togglesplit,"
|
||||
|
||||
|
|
@ -246,6 +257,7 @@ in {
|
|||
# };
|
||||
# };
|
||||
|
||||
services.quickshell.enable = true;
|
||||
services.wallpaper.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,15 +24,7 @@ with lib.custom; {
|
|||
relative-to ? "window",
|
||||
in' ? null,
|
||||
}: {
|
||||
gradient = {
|
||||
inherit
|
||||
from
|
||||
to
|
||||
angle
|
||||
relative-to
|
||||
in'
|
||||
;
|
||||
};
|
||||
gradient = {inherit from to angle relative-to in';};
|
||||
};
|
||||
|
||||
spawnSlackOnWeekday = pkgs.writeShellScriptBin "spawn-slack-on-weekday" ''
|
||||
|
|
@ -49,7 +41,7 @@ with lib.custom; {
|
|||
exit 0
|
||||
'';
|
||||
in {
|
||||
package = inputs.niri-src.packages.${pkgs.system}.niri;
|
||||
package = pkgs.niri;
|
||||
|
||||
settings = {
|
||||
# Input device configuration
|
||||
|
|
@ -63,8 +55,6 @@ with lib.custom; {
|
|||
variant = "";
|
||||
options = null; # Or "" if you prefer explicit empty
|
||||
};
|
||||
|
||||
repeat-rate = 40;
|
||||
};
|
||||
|
||||
touchpad = {
|
||||
|
|
@ -97,7 +87,7 @@ with lib.custom; {
|
|||
middle-emulation = false; # Commented out
|
||||
};
|
||||
|
||||
warp-mouse-to-focus.enable = true;
|
||||
warp-mouse-to-focus = true;
|
||||
|
||||
focus-follows-mouse = {
|
||||
enable = false; # Commented out in KDL
|
||||
|
|
@ -120,27 +110,6 @@ with lib.custom; {
|
|||
rotation = 0;
|
||||
flipped = false;
|
||||
};
|
||||
position = {
|
||||
x = 2560;
|
||||
y = 0;
|
||||
};
|
||||
};
|
||||
|
||||
outputs."DP-3" = {
|
||||
enable = true; # Not explicitly 'off'
|
||||
mode = {
|
||||
width = 3840;
|
||||
height = 2160;
|
||||
refresh = 240.0;
|
||||
};
|
||||
variable-refresh-rate = "on-demand";
|
||||
focus-at-startup = true;
|
||||
scale = 1.5;
|
||||
transform = {
|
||||
# "normal"
|
||||
rotation = 0;
|
||||
flipped = false;
|
||||
};
|
||||
position = {
|
||||
x = 0;
|
||||
y = 0;
|
||||
|
|
@ -170,18 +139,9 @@ with lib.custom; {
|
|||
|
||||
# preset-window-heights = []; # Empty in KDL
|
||||
|
||||
default-column-width = {
|
||||
proportion = 0.5;
|
||||
};
|
||||
default-column-width = {proportion = 0.5;};
|
||||
# default-column-width = {}; # Alternative from KDL comments
|
||||
|
||||
# blur = {
|
||||
# enable = true;
|
||||
# passes = 4;
|
||||
# radius = 4.0;
|
||||
# noise = 0.1;
|
||||
# };
|
||||
|
||||
focus-ring = {
|
||||
enable = true; # Not explicitly 'off'
|
||||
width = 4;
|
||||
|
|
@ -214,14 +174,10 @@ with lib.custom; {
|
|||
# Spawn processes at startup
|
||||
spawn-at-startup = [
|
||||
{command = ["xwayland-satellite"];}
|
||||
{
|
||||
command = [
|
||||
"${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed"
|
||||
];
|
||||
}
|
||||
{command = ["${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed"];}
|
||||
{command = ["${pkgs.writeShellScriptBin "zen-delayed" ''sleep 5; zen''}/bin/zen-delayed"];}
|
||||
{command = ["vesktop"];}
|
||||
{command = ["tidal-hifi"];}
|
||||
{command = ["spotify"];}
|
||||
|
||||
{command = ["${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday"];}
|
||||
];
|
||||
|
|
@ -240,6 +196,10 @@ with lib.custom; {
|
|||
# Individual animation settings can be added here if needed
|
||||
};
|
||||
|
||||
debug = {
|
||||
wait-for-frame-completion-in-pipewire = [];
|
||||
};
|
||||
|
||||
layer-rules = [
|
||||
{
|
||||
matches = [
|
||||
|
|
@ -381,16 +341,11 @@ with lib.custom; {
|
|||
# Keybindings
|
||||
binds =
|
||||
{
|
||||
"Mod+Shift+Slash" = {
|
||||
action = actions.show-hotkey-overlay;
|
||||
};
|
||||
"Mod+Shift+Slash" = {action = actions.show-hotkey-overlay;};
|
||||
|
||||
"Mod+Return" = {
|
||||
action = actions.spawn "kitty";
|
||||
};
|
||||
"Mod+D" = {
|
||||
action = actions.spawn "fuzzel";
|
||||
};
|
||||
"Mod+Return" = {action = actions.spawn "kitty";};
|
||||
"Mod+D" = {action = actions.spawn "fuzzel";};
|
||||
"Super+Alt+L" = {action = actions.spawn "swaylock";};
|
||||
# "Mod+T" = { action = actions.spawn "bash" "-c" "notify-send hello && exec alacritty"; };
|
||||
|
||||
# "Mod+S" = {action = actions.set-dynamic-cast-window;};
|
||||
|
|
@ -399,59 +354,43 @@ with lib.custom; {
|
|||
#
|
||||
# "Mod+Z" = {action = actions.clear-dynamic-cast-target;};
|
||||
|
||||
"Mod+Q" = {
|
||||
action = actions.close-window;
|
||||
"XF86AudioRaiseVolume" = {
|
||||
allow-when-locked = true;
|
||||
action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+";
|
||||
};
|
||||
"XF86AudioLowerVolume" = {
|
||||
allow-when-locked = true;
|
||||
action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-";
|
||||
};
|
||||
"XF86AudioMute" = {
|
||||
allow-when-locked = true;
|
||||
action = actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle";
|
||||
};
|
||||
"XF86AudioMicMute" = {
|
||||
allow-when-locked = true;
|
||||
action =
|
||||
actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle";
|
||||
};
|
||||
|
||||
"Mod+Left" = {
|
||||
action = actions.focus-column-left;
|
||||
};
|
||||
"Mod+Down" = {
|
||||
action = actions.focus-window-down;
|
||||
};
|
||||
"Mod+Up" = {
|
||||
action = actions.focus-window-up;
|
||||
};
|
||||
"Mod+Right" = {
|
||||
action = actions.focus-column-right;
|
||||
};
|
||||
"Mod+H" = {
|
||||
action = actions.focus-column-left;
|
||||
};
|
||||
"Mod+J" = {
|
||||
action = actions.focus-window-down;
|
||||
};
|
||||
"Mod+K" = {
|
||||
action = actions.focus-window-up;
|
||||
};
|
||||
"Mod+L" = {
|
||||
action = actions.focus-column-right;
|
||||
};
|
||||
"Mod+Q" = {action = actions.close-window;};
|
||||
|
||||
"Mod+Ctrl+Left" = {
|
||||
action = actions.move-column-left;
|
||||
};
|
||||
"Mod+Ctrl+Down" = {
|
||||
action = actions.move-window-down;
|
||||
};
|
||||
"Mod+Ctrl+Up" = {
|
||||
action = actions.move-window-up;
|
||||
};
|
||||
"Mod+Ctrl+Right" = {
|
||||
action = actions.move-column-right;
|
||||
};
|
||||
"Mod+Ctrl+H" = {
|
||||
action = actions.move-column-left;
|
||||
};
|
||||
"Mod+Ctrl+J" = {
|
||||
action = actions.move-window-down;
|
||||
};
|
||||
"Mod+Ctrl+K" = {
|
||||
action = actions.move-window-up;
|
||||
};
|
||||
"Mod+Ctrl+L" = {
|
||||
action = actions.move-column-right;
|
||||
};
|
||||
"Mod+Left" = {action = actions.focus-column-left;};
|
||||
"Mod+Down" = {action = actions.focus-window-down;};
|
||||
"Mod+Up" = {action = actions.focus-window-up;};
|
||||
"Mod+Right" = {action = actions.focus-column-right;};
|
||||
"Mod+H" = {action = actions.focus-column-left;};
|
||||
"Mod+J" = {action = actions.focus-window-down;};
|
||||
"Mod+K" = {action = actions.focus-window-up;};
|
||||
"Mod+L" = {action = actions.focus-column-right;};
|
||||
|
||||
"Mod+Ctrl+Left" = {action = actions.move-column-left;};
|
||||
"Mod+Ctrl+Down" = {action = actions.move-window-down;};
|
||||
"Mod+Ctrl+Up" = {action = actions.move-window-up;};
|
||||
"Mod+Ctrl+Right" = {action = actions.move-column-right;};
|
||||
"Mod+Ctrl+H" = {action = actions.move-column-left;};
|
||||
"Mod+Ctrl+J" = {action = actions.move-window-down;};
|
||||
"Mod+Ctrl+K" = {action = actions.move-window-up;};
|
||||
"Mod+Ctrl+L" = {action = actions.move-column-right;};
|
||||
|
||||
# Alternative commands (commented out in KDL)
|
||||
# "Mod+J" = { action = actions.focus-window-or-workspace-down; };
|
||||
|
|
@ -459,110 +398,44 @@ with lib.custom; {
|
|||
# "Mod+Ctrl+J" = { action = actions.move-window-down-or-to-workspace-down; };
|
||||
# "Mod+Ctrl+K" = { action = actions.move-window-up-or-to-workspace-up; };
|
||||
|
||||
"Mod+Home" = {
|
||||
action = actions.focus-column-first;
|
||||
};
|
||||
"Mod+End" = {
|
||||
action = actions.focus-column-last;
|
||||
};
|
||||
"Mod+Ctrl+Home" = {
|
||||
action = actions.move-column-to-first;
|
||||
};
|
||||
"Mod+Ctrl+End" = {
|
||||
action = actions.move-column-to-last;
|
||||
};
|
||||
"Mod+Home" = {action = actions.focus-column-first;};
|
||||
"Mod+End" = {action = actions.focus-column-last;};
|
||||
"Mod+Ctrl+Home" = {action = actions.move-column-to-first;};
|
||||
"Mod+Ctrl+End" = {action = actions.move-column-to-last;};
|
||||
|
||||
"Mod+Shift+Left" = {
|
||||
action = actions.focus-monitor-left;
|
||||
};
|
||||
"Mod+Shift+Down" = {
|
||||
action = actions.focus-monitor-down;
|
||||
};
|
||||
"Mod+Shift+Up" = {
|
||||
action = actions.focus-monitor-up;
|
||||
};
|
||||
"Mod+Shift+Right" = {
|
||||
action = actions.focus-monitor-right;
|
||||
};
|
||||
"Mod+Shift+H" = {
|
||||
action = actions.focus-monitor-left;
|
||||
};
|
||||
"Mod+Shift+J" = {
|
||||
action = actions.focus-workspace-down;
|
||||
};
|
||||
"Mod+Shift+K" = {
|
||||
action = actions.focus-workspace-up;
|
||||
};
|
||||
"Mod+Shift+L" = {
|
||||
action = actions.focus-monitor-right;
|
||||
};
|
||||
"Mod+Shift+Left" = {action = actions.focus-monitor-left;};
|
||||
"Mod+Shift+Down" = {action = actions.focus-monitor-down;};
|
||||
"Mod+Shift+Up" = {action = actions.focus-monitor-up;};
|
||||
"Mod+Shift+Right" = {action = actions.focus-monitor-right;};
|
||||
"Mod+Shift+H" = {action = actions.focus-monitor-left;};
|
||||
"Mod+Shift+J" = {action = actions.focus-workspace-down;};
|
||||
"Mod+Shift+K" = {action = actions.focus-workspace-up;};
|
||||
"Mod+Shift+L" = {action = actions.focus-monitor-right;};
|
||||
|
||||
"Mod+Ctrl+Shift+F" = {
|
||||
action = actions.toggle-windowed-fullscreen;
|
||||
};
|
||||
"Mod+Ctrl+Shift+F" = {action = actions.toggle-windowed-fullscreen;};
|
||||
|
||||
"Mod+Shift+Ctrl+Left" = {
|
||||
action = actions.move-column-to-monitor-left;
|
||||
};
|
||||
"Mod+Shift+Ctrl+Down" = {
|
||||
action = actions.move-column-to-monitor-down;
|
||||
};
|
||||
"Mod+Shift+Ctrl+Up" = {
|
||||
action = actions.move-column-to-monitor-up;
|
||||
};
|
||||
"Mod+Shift+Ctrl+Right" = {
|
||||
action = actions.move-column-to-monitor-right;
|
||||
};
|
||||
"Mod+Shift+Ctrl+H" = {
|
||||
action = actions.move-column-to-monitor-left;
|
||||
};
|
||||
"Mod+Shift+Ctrl+J" = {
|
||||
action = actions.move-column-to-monitor-down;
|
||||
};
|
||||
"Mod+Shift+Ctrl+K" = {
|
||||
action = actions.move-column-to-monitor-up;
|
||||
};
|
||||
"Mod+Shift+Ctrl+L" = {
|
||||
action = actions.move-column-to-monitor-right;
|
||||
};
|
||||
"Mod+Shift+Ctrl+Left" = {action = actions.move-column-to-monitor-left;};
|
||||
"Mod+Shift+Ctrl+Down" = {action = actions.move-column-to-monitor-down;};
|
||||
"Mod+Shift+Ctrl+Up" = {action = actions.move-column-to-monitor-up;};
|
||||
"Mod+Shift+Ctrl+Right" = {action = actions.move-column-to-monitor-right;};
|
||||
"Mod+Shift+Ctrl+H" = {action = actions.move-column-to-monitor-left;};
|
||||
"Mod+Shift+Ctrl+J" = {action = actions.move-column-to-monitor-down;};
|
||||
"Mod+Shift+Ctrl+K" = {action = actions.move-column-to-monitor-up;};
|
||||
"Mod+Shift+Ctrl+L" = {action = actions.move-column-to-monitor-right;};
|
||||
|
||||
"Mod+Page_Down" = {
|
||||
action = actions.focus-workspace-down;
|
||||
};
|
||||
"Mod+Page_Up" = {
|
||||
action = actions.focus-workspace-up;
|
||||
};
|
||||
"Mod+U" = {
|
||||
action = actions.focus-workspace-down;
|
||||
};
|
||||
"Mod+I" = {
|
||||
action = actions.focus-workspace-up;
|
||||
};
|
||||
"Mod+Ctrl+Page_Down" = {
|
||||
action = actions.move-column-to-workspace-down;
|
||||
};
|
||||
"Mod+Ctrl+Page_Up" = {
|
||||
action = actions.move-column-to-workspace-up;
|
||||
};
|
||||
"Mod+Ctrl+U" = {
|
||||
action = actions.move-column-to-workspace-down;
|
||||
};
|
||||
"Mod+Ctrl+I" = {
|
||||
action = actions.move-column-to-workspace-up;
|
||||
};
|
||||
"Mod+Page_Down" = {action = actions.focus-workspace-down;};
|
||||
"Mod+Page_Up" = {action = actions.focus-workspace-up;};
|
||||
"Mod+U" = {action = actions.focus-workspace-down;};
|
||||
"Mod+I" = {action = actions.focus-workspace-up;};
|
||||
"Mod+Ctrl+Page_Down" = {action = actions.move-column-to-workspace-down;};
|
||||
"Mod+Ctrl+Page_Up" = {action = actions.move-column-to-workspace-up;};
|
||||
"Mod+Ctrl+U" = {action = actions.move-column-to-workspace-down;};
|
||||
"Mod+Ctrl+I" = {action = actions.move-column-to-workspace-up;};
|
||||
|
||||
"Mod+Shift+Page_Down" = {
|
||||
action = actions.move-workspace-down;
|
||||
};
|
||||
"Mod+Shift+Page_Up" = {
|
||||
action = actions.move-workspace-up;
|
||||
};
|
||||
"Mod+Shift+U" = {
|
||||
action = actions.move-workspace-down;
|
||||
};
|
||||
"Mod+Shift+I" = {
|
||||
action = actions.move-workspace-up;
|
||||
};
|
||||
"Mod+Shift+Page_Down" = {action = actions.move-workspace-down;};
|
||||
"Mod+Shift+Page_Up" = {action = actions.move-workspace-up;};
|
||||
"Mod+Shift+U" = {action = actions.move-workspace-down;};
|
||||
"Mod+Shift+I" = {action = actions.move-workspace-up;};
|
||||
|
||||
"Mod+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
|
|
@ -581,116 +454,60 @@ with lib.custom; {
|
|||
action = actions.move-column-to-workspace-up;
|
||||
};
|
||||
|
||||
"Mod+WheelScrollRight" = {
|
||||
action = actions.focus-column-right;
|
||||
};
|
||||
"Mod+WheelScrollLeft" = {
|
||||
action = actions.focus-column-left;
|
||||
};
|
||||
"Mod+Ctrl+WheelScrollRight" = {
|
||||
action = actions.move-column-right;
|
||||
};
|
||||
"Mod+Ctrl+WheelScrollLeft" = {
|
||||
action = actions.move-column-left;
|
||||
};
|
||||
"Mod+WheelScrollRight" = {action = actions.focus-column-right;};
|
||||
"Mod+WheelScrollLeft" = {action = actions.focus-column-left;};
|
||||
"Mod+Ctrl+WheelScrollRight" = {action = actions.move-column-right;};
|
||||
"Mod+Ctrl+WheelScrollLeft" = {action = actions.move-column-left;};
|
||||
|
||||
"Mod+Shift+WheelScrollDown" = {
|
||||
action = actions.focus-column-right;
|
||||
};
|
||||
"Mod+Shift+WheelScrollUp" = {
|
||||
action = actions.focus-column-left;
|
||||
};
|
||||
"Mod+Ctrl+Shift+WheelScrollDown" = {
|
||||
action = actions.move-column-right;
|
||||
};
|
||||
"Mod+Ctrl+Shift+WheelScrollUp" = {
|
||||
action = actions.move-column-left;
|
||||
};
|
||||
"Mod+Shift+WheelScrollDown" = {action = actions.focus-column-right;};
|
||||
"Mod+Shift+WheelScrollUp" = {action = actions.focus-column-left;};
|
||||
"Mod+Ctrl+Shift+WheelScrollDown" = {action = actions.move-column-right;};
|
||||
"Mod+Ctrl+Shift+WheelScrollUp" = {action = actions.move-column-left;};
|
||||
|
||||
"Mod+Shift+Comma" = {
|
||||
action = actions.consume-window-into-column;
|
||||
};
|
||||
"Mod+Period" = {
|
||||
action = actions.expel-window-from-column;
|
||||
};
|
||||
"Mod+Comma" = {action = actions.consume-window-into-column;};
|
||||
"Mod+Period" = {action = actions.expel-window-from-column;};
|
||||
|
||||
"Mod+BracketLeft" = {
|
||||
action = actions.consume-or-expel-window-left;
|
||||
};
|
||||
"Mod+BracketRight" = {
|
||||
action = actions.consume-or-expel-window-right;
|
||||
};
|
||||
"Mod+BracketLeft" = {action = actions.consume-or-expel-window-left;};
|
||||
"Mod+BracketRight" = {action = actions.consume-or-expel-window-right;};
|
||||
|
||||
"Mod+R" = {
|
||||
action = actions.switch-preset-column-width;
|
||||
};
|
||||
"Mod+Shift+R" = {
|
||||
action = actions.switch-preset-window-height;
|
||||
};
|
||||
"Mod+Ctrl+R" = {
|
||||
action = actions.reset-window-height;
|
||||
};
|
||||
"Mod+F" = {
|
||||
action = actions.maximize-column;
|
||||
};
|
||||
"Mod+Shift+F" = {
|
||||
action = actions.fullscreen-window;
|
||||
};
|
||||
"Mod+C" = {
|
||||
action = actions.center-column;
|
||||
};
|
||||
"Mod+Ctrl+F" = {
|
||||
action = actions.expand-column-to-available-width;
|
||||
};
|
||||
"Mod+R" = {action = actions.switch-preset-column-width;};
|
||||
"Mod+Shift+R" = {action = actions.switch-preset-window-height;};
|
||||
"Mod+Ctrl+R" = {action = actions.reset-window-height;};
|
||||
"Mod+F" = {action = actions.maximize-column;};
|
||||
"Mod+Shift+F" = {action = actions.fullscreen-window;};
|
||||
"Mod+C" = {action = actions.center-column;};
|
||||
"Mod+Ctrl+F" = {action = actions.expand-column-to-available-width;};
|
||||
|
||||
"Mod+Shift+V" = {
|
||||
action = actions.toggle-window-floating;
|
||||
};
|
||||
"Mod+V" = {action = actions.toggle-window-floating;};
|
||||
|
||||
"Mod+Minus" = {
|
||||
action = actions.set-column-width "-10%";
|
||||
};
|
||||
"Mod+Equal" = {
|
||||
action = actions.set-column-width "+10%";
|
||||
};
|
||||
"Mod+Minus" = {action = actions.set-column-width "-10%";};
|
||||
"Mod+Equal" = {action = actions.set-column-width "+10%";};
|
||||
|
||||
"Mod+Shift+Minus" = {
|
||||
action = actions.set-window-height "-10%";
|
||||
};
|
||||
"Mod+Shift+Equal" = {
|
||||
action = actions.set-window-height "+10%";
|
||||
};
|
||||
"Mod+Shift+Minus" = {action = actions.set-window-height "-10%";};
|
||||
"Mod+Shift+Equal" = {action = actions.set-window-height "+10%";};
|
||||
|
||||
"Print" = {
|
||||
action.screenshot = [];
|
||||
}; # Empty attrset for default args
|
||||
"Mod+Shift+E" = {
|
||||
action = actions.quit {};
|
||||
}; # Default: no skip-confirmation
|
||||
"Ctrl+Alt+Delete" = {
|
||||
action = actions.quit {};
|
||||
};
|
||||
"Print" = {action = actions.screenshot {};}; # Empty attrset for default args
|
||||
"Mod+Shift+E" = {action = actions.quit {};}; # Default: no skip-confirmation
|
||||
"Ctrl+Alt+Delete" = {action = actions.quit {};};
|
||||
|
||||
"Mod+Shift+P" = {
|
||||
action = actions.power-off-monitors;
|
||||
};
|
||||
"Mod+Shift+P" = {action = actions.power-off-monitors;};
|
||||
}
|
||||
// lib.attrsets.listToAttrs (
|
||||
builtins.concatMap (i: [
|
||||
// lib.attrsets.listToAttrs (builtins.concatMap (i:
|
||||
with actions; [
|
||||
{
|
||||
name = "Mod+${toString i}";
|
||||
value.action = actions.focus-workspace i;
|
||||
value.action = focus-workspace i;
|
||||
}
|
||||
# FIXME: use this action directly untril sodiboo/niri-flake#1018 is fixed.
|
||||
{
|
||||
name = "Mod+Shift+${toString i}";
|
||||
value.action.move-window-to-workspace = i;
|
||||
value.action = spawn [niri "msg" "action" "move-column-to-workspace" (toString i)];
|
||||
}
|
||||
]) (lib.range 1 9)
|
||||
);
|
||||
]) (lib.range 1 9));
|
||||
};
|
||||
};
|
||||
|
||||
# services.wallpaper.enable = true;
|
||||
services.quickshell.enable = false;
|
||||
services.wallpaper.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,9 +24,39 @@ in {
|
|||
jack.enable = true;
|
||||
};
|
||||
|
||||
services.pipewire.extraConfig.pipewire."92-low-latency" = {
|
||||
"context.properties" = {
|
||||
"default.clock.rate" = 192000;
|
||||
systemd.user.services.cava-combine-inputs = {
|
||||
description = "Combine MOTU M4 Line Inputs L/R for Cava";
|
||||
|
||||
# Ensure this runs after pipewire-pulse is started
|
||||
after = ["pipewire-pulse.service"];
|
||||
wants = ["pipewire-pulse.service"]; # Start pipewire-pulse if not already running
|
||||
|
||||
# Make it part of the default user session target
|
||||
wantedBy = ["default.target"];
|
||||
|
||||
# Service configuration details
|
||||
serviceConfig = {
|
||||
Type = "oneshot"; # Run the command once and exit
|
||||
# Use RemainAfterExit if you want the service to show as 'active' after running
|
||||
# RemainAfterExit = true;
|
||||
|
||||
# Command to execute. Use full paths for robustness.
|
||||
# We use sh -c to run multiple commands sequentially.
|
||||
# pactl is provided by the pulseaudio package.
|
||||
ExecStart = "${pkgs.writeShellScriptBin "cava-start" ''
|
||||
echo "Attempting to load Cava combine modules..."
|
||||
# Load null sink (returns non-zero if it fails AND module doesn't exist)
|
||||
${pkgs.pulseaudio}/bin/pactl load-module module-null-sink sink_name=cava-line-in sink_properties=device.description="Cava_Combined_LineIn"
|
||||
# Load loopbacks (returns non-zero on failure)
|
||||
${pkgs.pulseaudio}/bin/pactl load-module module-loopback source="alsa_input.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line3__source" sink=cava-line-in latency_msec=10
|
||||
${pkgs.pulseaudio}/bin/pactl load-module module-loopback source="alsa_input.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line4__source" sink=cava-line-in latency_msec=10
|
||||
echo "Finished loading Cava combine modules (ignore errors if already loaded)."
|
||||
# Exit successfully even if modules were already loaded (pactl might return 0)
|
||||
exit 0
|
||||
''}/bin/cava-start";
|
||||
|
||||
# Prevent service from restarting automatically
|
||||
Restart = "no";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -24,9 +24,9 @@ with lib.custom; let
|
|||
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
|
||||
|
||||
# Isolate host to core 0
|
||||
systemctl set-property --runtime -- user.slice AllowedCPUs=0-15
|
||||
systemctl set-property --runtime -- system.slice AllowedCPUs=0-15
|
||||
systemctl set-property --runtime -- init.scope AllowedCPUs=0-15
|
||||
systemctl set-property --runtime -- user.slice AllowedCPUs=0-8
|
||||
systemctl set-property --runtime -- system.slice AllowedCPUs=0-8
|
||||
systemctl set-property --runtime -- init.scope AllowedCPUs=0-8
|
||||
|
||||
# disable vpn
|
||||
mullvad disconnect -w
|
||||
|
|
@ -110,6 +110,14 @@ with lib.custom; let
|
|||
libvirtd-cfg = config.virtualisation.libvirtd;
|
||||
|
||||
qemuConfigFile = pkgs.writeText "qemu.conf" ''
|
||||
${optionalString libvirtd-cfg.qemu.ovmf.enable ''
|
||||
nvram = [
|
||||
"/run/libvirt/nix-ovmf/AAVMF_CODE.fd:/run/libvirt/nix-ovmf/AAVMF_VARS.fd",
|
||||
"/run/libvirt/nix-ovmf/AAVMF_CODE.ms.fd:/run/libvirt/nix-ovmf/AAVMF_VARS.ms.fd",
|
||||
"/run/libvirt/nix-ovmf/OVMF_CODE.fd:/run/libvirt/nix-ovmf/OVMF_VARS.fd",
|
||||
"/run/libvirt/nix-ovmf/OVMF_CODE.ms.fd:/run/libvirt/nix-ovmf/OVMF_VARS.ms.fd"
|
||||
]
|
||||
''}
|
||||
${optionalString (!libvirtd-cfg.qemu.runAsRoot) ''
|
||||
user = "qemu-libvirtd"
|
||||
group = "qemu-libvirtd"
|
||||
|
|
@ -154,6 +162,16 @@ in {
|
|||
package = pkgs.qemu_kvm;
|
||||
runAsRoot = true;
|
||||
swtpm.enable = true;
|
||||
ovmf = {
|
||||
enable = true;
|
||||
packages = [
|
||||
(pkgs.OVMF.override {
|
||||
secureBoot = true;
|
||||
tpmSupport = true;
|
||||
})
|
||||
.fd
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -199,17 +217,29 @@ in {
|
|||
done
|
||||
|
||||
ln -s --force ${libvirtd-cfg.qemu.package}/bin/qemu-pr-helper /run/${dirName}/nix-helpers/
|
||||
|
||||
${optionalString libvirtd-cfg.qemu.ovmf.enable (
|
||||
let
|
||||
ovmfpackage = pkgs.buildEnv {
|
||||
name = "qemu-ovmf";
|
||||
paths = libvirtd-cfg.qemu.ovmf.packages;
|
||||
};
|
||||
in ''
|
||||
ln -s --force ${ovmfpackage}/FV/AAVMF_CODE{,.ms}.fd /run/${dirName}/nix-ovmf/
|
||||
ln -s --force ${ovmfpackage}/FV/OVMF_CODE{,.ms}.fd /run/${dirName}/nix-ovmf/
|
||||
ln -s --force ${ovmfpackage}/FV/AAVMF_VARS{,.ms}.fd /run/${dirName}/nix-ovmf/
|
||||
ln -s --force ${ovmfpackage}/FV/OVMF_VARS{,.ms}.fd /run/${dirName}/nix-ovmf/
|
||||
''
|
||||
)}
|
||||
'';
|
||||
|
||||
system.activationScripts.libvirt-hooks.text = ''
|
||||
ln -Tfs /etc/libvirt/hooks /var/lib/libvirt/hooks
|
||||
'';
|
||||
|
||||
# environment.systemPackages = with pkgs; [
|
||||
# libguestfs
|
||||
# ];
|
||||
|
||||
networking.firewall.trustedInterfaces = ["virbr0"];
|
||||
environment.systemPackages = with pkgs; [
|
||||
libguestfs-with-appliance
|
||||
];
|
||||
|
||||
environment.etc = {
|
||||
"/libvirt/hooks/qemu" = {
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ in {
|
|||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Only available from driver 515.43.04+
|
||||
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
||||
open = true;
|
||||
|
||||
# Enable the Nvidia settings menu,
|
||||
|
|
@ -43,18 +44,44 @@ in {
|
|||
nvidiaSettings = false;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
|
||||
version = "580.82.09";
|
||||
sha256_64bit = "sha256-Puz4MtouFeDgmsNMKdLHoDgDGC+QRXh6NVysvltWlbc=";
|
||||
sha256_aarch64 = "sha256-6tHiAci9iDTKqKrDIjObeFdtrlEwjxOHJpHfX4GMEGQ=";
|
||||
openSha256 = "sha256-YB+mQD+oEDIIDa+e8KX1/qOlQvZMNKFrI5z3CoVKUjs=";
|
||||
settingsSha256 = "sha256-um53cr2Xo90VhZM1bM2CH4q9b/1W2YOqUcvXPV6uw2s=";
|
||||
persistencedSha256 = "sha256-lbYSa97aZ+k0CISoSxOMLyyMX//Zg2Raym6BC4COipU=";
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
# package = config.boot.kernelPackages.nvidiaPackages.beta.overrideAttrs {
|
||||
# patchesOpen = with pkgs; [
|
||||
# (fetchpatch {
|
||||
# url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0001-Enable-atomic-kernel-modesetting-by-default.patch";
|
||||
# hash = "sha256-tvdm8nxxXslPUun33zj1kkYZOiWKK3F4nwcCkdzPW9s=";
|
||||
# })
|
||||
# (fetchpatch {
|
||||
# url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0002-Add-IBT-support.patch";
|
||||
# hash = "sha256-JUT8FwBhyRhOWxwET7Zw/xkIl8g6UCLMXSTofr0OuSg=";
|
||||
# })
|
||||
# (fetchpatch {
|
||||
# url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0003-Kbuild-Convert-EXTRA_CFLAGS-to-ccflags-y.patch";
|
||||
# hash = "sha256-W+yyiK6TpEs9IACMr/0V7EIP++u7MPOfa9ko3w8Gqtc=";
|
||||
# })
|
||||
# (fetchpatch {
|
||||
# url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0004-kernel-open-nvidia-Use-new-timer-functions-for-6.15.patch";
|
||||
# hash = "sha256-T3SY2O6Pmc8BA0oana5xGGDhBxCizwmRqMyPvgF3j8A=";
|
||||
# })
|
||||
# (fetchpatch {
|
||||
# url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0005-nvidia-uvm-Use-__iowrite64_hi_lo.patch";
|
||||
# hash = "sha256-T8BNr1H1vgEQoKB0S5cqcbq6fSQxiDK9bb/MCvMtzTI";
|
||||
# })
|
||||
# (fetchpatch {
|
||||
# url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0006-nvidia-uvm-Use-page_pgmap.patch";
|
||||
# hash = "sha256-YucFZ2Z7YSgUiah82uLOmd4Z/c5YLOXxzEZNO6ZvQQg=";
|
||||
# })
|
||||
# (fetchpatch {
|
||||
# url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0007-nvidia-uvm-Convert-make_device_exclusive_range-to-ma.patch";
|
||||
# hash = "sha256-AehV7D+yYBmE8FWsUiagnjB8V7S8RJSTNcVMwZIgw/I=";
|
||||
# })
|
||||
# (fetchpatch {
|
||||
# url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0008-kbuild-Add-workaround-for-GCC-15-Compilation.patch";
|
||||
# hash = "sha256-HrYBiAFy62Jll+ceVnGuJKGKDoaRObjAGIYa+yrAogA=";
|
||||
# })
|
||||
# ];
|
||||
# };
|
||||
};
|
||||
};
|
||||
|
||||
boot.initrd.kernelModules = ["nvidia"];
|
||||
boot.extraModulePackages = [config.boot.kernelPackages.nvidia_x11];
|
||||
|
||||
environment.variables = {
|
||||
GBM_BACKEND = "nvidia-drm";
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
services.displayManager.gdm.enable = false;
|
||||
services.displayManager.gdm.wayland = true;
|
||||
services.xserver.displayManager.gdm.enable = false;
|
||||
services.xserver.displayManager.gdm.wayland = true;
|
||||
|
||||
# services.displayManager.sddm.enable = true;
|
||||
# services.displayManager.sddm.package = lib.mkForce pkgs.kdePackages.sddm;
|
||||
|
|
|
|||
|
|
@ -1,31 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.custom; let
|
||||
cfg = config.services.crypto;
|
||||
in {
|
||||
options.services.crypto = with types; {
|
||||
enable = mkBoolOpt false "Enable Monero";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
services.wg-container.enable = true;
|
||||
|
||||
# systemd.services.monero.vpnConfinement = {
|
||||
# enable = true;
|
||||
# vpnNamespace = "wg";
|
||||
# };
|
||||
#
|
||||
# services.monero = {
|
||||
# enable = true;
|
||||
# mining.enable = false;
|
||||
# rpc = {address = "192.168.15.1";};
|
||||
# extraConfig = ''
|
||||
# confirm-external-bind=1
|
||||
# '';
|
||||
# };
|
||||
};
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ in {
|
|||
gitlab-email-pw-hashed.file = ./sec/gitlab-email-pw-hashed.age;
|
||||
};
|
||||
|
||||
mailserver = rec {
|
||||
mailserver = {
|
||||
enable = true;
|
||||
fqdn = "mail.zoeys.email";
|
||||
domains = ["zoeys.email" "zoeys.cloud" "zoeys.computer" "zackmyers.io" "zacharymyers.com" "pictureofcat.com"];
|
||||
|
|
@ -64,23 +64,27 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
enableManageSieve = true;
|
||||
|
||||
dmarcReporting.enable = true;
|
||||
|
||||
x509.useACMEHost = fqdn;
|
||||
certificateScheme = "acme-nginx";
|
||||
virusScanning = true;
|
||||
stateVersion = 3;
|
||||
stateVersion = 1;
|
||||
};
|
||||
|
||||
services.nginx = {
|
||||
virtualHosts = {
|
||||
"${config.mailserver.fqdn}" = {
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
# services.nginx = {
|
||||
# virtualHosts = {
|
||||
# "cal.zoeys.cloud" = {
|
||||
# forceSSL = true;
|
||||
# enableACME = true;
|
||||
# locations."/" = {
|
||||
# proxyPass = "http://localhost:5232/";
|
||||
# extraConfig = ''
|
||||
# proxy_set_header X-Script-Name /;
|
||||
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
# proxy_pass_header Authorization;
|
||||
# '';
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
|
||||
services.roundcube = {
|
||||
enable = true;
|
||||
|
|
|
|||
|
|
@ -1,146 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.custom; let
|
||||
cfg = config.services.matrix;
|
||||
in {
|
||||
options.services.matrix = with types; {
|
||||
enable = mkBoolOpt false "Matrix Web Server";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
sops = {
|
||||
defaultSopsFile = ../../../.sops.yaml;
|
||||
gnupg.home = "/var/lib/sops";
|
||||
gnupg.sshKeyPaths = [];
|
||||
|
||||
secrets = {
|
||||
"password" = {
|
||||
sopsFile = ../../../../secrets/matrix-db.yaml;
|
||||
owner = "root";
|
||||
group = "root";
|
||||
mode = "0444";
|
||||
neededForUsers = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.matrix-synapse-next = {
|
||||
enable = true;
|
||||
|
||||
workers.federationSenders = 2;
|
||||
workers.federationReceivers = 2;
|
||||
workers.initialSyncers = 2;
|
||||
workers.normalSyncers = 2;
|
||||
workers.eventPersisters = 2;
|
||||
workers.useUserDirectoryWorker = true;
|
||||
|
||||
enableNginx = true;
|
||||
|
||||
settings = {
|
||||
server_name = "zoeys.cloud";
|
||||
|
||||
recaptcha_public_key = "6LdcENQrAAAAAKFi-gTzPnf6Q2xq7yTmIYv6Xw5o";
|
||||
recaptcha_private_key = "6LdcENQrAAAAABfnE6TVkMWtRrw0OZqZEfYaGm7m";
|
||||
|
||||
enable_registration = true;
|
||||
enable_registration_captcha = true;
|
||||
|
||||
database = {
|
||||
name = "psycopg2";
|
||||
args = {
|
||||
host = "localhost";
|
||||
user = "synapse";
|
||||
password = "synapse";
|
||||
dbname = "synapse";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.redis.servers."".enable = true;
|
||||
|
||||
services.coturn = rec {
|
||||
enable = true;
|
||||
no-cli = true;
|
||||
no-tcp-relay = true;
|
||||
min-port = 49000;
|
||||
max-port = 50000;
|
||||
use-auth-secret = true;
|
||||
static-auth-secret = "will be world readable for local users :(";
|
||||
realm = "turn.zoeys.cloud";
|
||||
cert = "${config.security.acme.certs.${realm}.directory}/full.pem";
|
||||
pkey = "${config.security.acme.certs.${realm}.directory}/key.pem";
|
||||
extraConfig = ''
|
||||
verbose
|
||||
|
||||
no-multicast-peers
|
||||
denied-peer-ip=0.0.0.0-0.255.255.255
|
||||
denied-peer-ip=10.0.0.0-10.255.255.255
|
||||
denied-peer-ip=100.64.0.0-100.127.255.255
|
||||
denied-peer-ip=127.0.0.0-127.255.255.255
|
||||
denied-peer-ip=169.254.0.0-169.254.255.255
|
||||
denied-peer-ip=172.16.0.0-172.31.255.255
|
||||
denied-peer-ip=192.0.0.0-192.0.0.255
|
||||
denied-peer-ip=192.0.2.0-192.0.2.255
|
||||
denied-peer-ip=192.88.99.0-192.88.99.255
|
||||
denied-peer-ip=192.168.0.0-192.168.255.255
|
||||
denied-peer-ip=198.18.0.0-198.19.255.255
|
||||
denied-peer-ip=198.51.100.0-198.51.100.255
|
||||
denied-peer-ip=203.0.113.0-203.0.113.255
|
||||
denied-peer-ip=240.0.0.0-255.255.255.255
|
||||
denied-peer-ip=::1
|
||||
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
|
||||
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
|
||||
denied-peer-ip=100::-100::ffff:ffff:ffff:ffff
|
||||
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
|
||||
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
|
||||
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
|
||||
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
|
||||
'';
|
||||
};
|
||||
|
||||
networking.firewall = {
|
||||
interfaces.ens3 = let
|
||||
range = with config.services.coturn; [
|
||||
{
|
||||
from = min-port;
|
||||
to = max-port;
|
||||
}
|
||||
];
|
||||
in {
|
||||
allowedUDPPortRanges = range;
|
||||
allowedUDPPorts = [3478 5349];
|
||||
allowedTCPPortRanges = [];
|
||||
allowedTCPPorts = [3478 5349];
|
||||
};
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts.${config.services.coturn.realm} = {
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
locations."/" = {
|
||||
return = "200 '<html><body>Hai :3</body></html>'";
|
||||
};
|
||||
};
|
||||
|
||||
users.groups.turnserver.members = ["nginx"];
|
||||
|
||||
security.acme.certs.${config.services.coturn.realm} = {
|
||||
/*
|
||||
insert here the right configuration to obtain a certificate
|
||||
*/
|
||||
postRun = "systemctl restart coturn.service";
|
||||
group = "turnserver";
|
||||
};
|
||||
# configure synapse to point users to coturn
|
||||
services.matrix-synapse.settings = with config.services.coturn; {
|
||||
turn_uris = ["turn:${realm}:3478?transport=udp" "turn:${realm}:3478?transport=tcp"];
|
||||
turn_shared_secret = static-auth-secret;
|
||||
turn_user_lifetime = "1h";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.custom; let
|
||||
cfg = config.services.torrent;
|
||||
in {
|
||||
options.services.torrent = with types; {
|
||||
enable = mkBoolOpt false "Enable Transmission Service (for Linux ISOs)";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
services.wg-container.enable = true;
|
||||
|
||||
systemd.services.transmission.vpnConfinement = {
|
||||
enable = true;
|
||||
vpnNamespace = "wg";
|
||||
};
|
||||
|
||||
services.transmission = {
|
||||
enable = true;
|
||||
package = pkgs.transmission_4;
|
||||
settings = {
|
||||
incomplete-dir-enabled = true;
|
||||
rpc-bind-address = "192.168.15.1"; # Bind RPC/WebUI to VPN network namespace address
|
||||
rpc-whitelist-enabled = false;
|
||||
rpc-whitelist = [
|
||||
"192.168.15.1"
|
||||
"192.168.15.5" # Access from default network namespace
|
||||
"192.168.1.*" # Access from other machines on specific subnet
|
||||
"127.0.0.1" # Access through loopback within VPN network namespace
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -10,12 +10,25 @@ with lib.custom; let
|
|||
in {
|
||||
options.services.vpn = with types; {
|
||||
enable = mkBoolOpt false "Enable VPN service(s)";
|
||||
|
||||
mullvad = mkBoolOpt false "Enable Mullvad VPN Daemon";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.mullvad-vpn = {
|
||||
enable = true;
|
||||
enable = cfg.mullvad;
|
||||
package = nixos-stable.mullvad;
|
||||
};
|
||||
|
||||
services.openvpn = {
|
||||
servers = {
|
||||
work = {
|
||||
config = ''config /home/zoey/Downloads/zachary_myers.ovpn'';
|
||||
updateResolvConf = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.openvpn-work.wantedBy = lib.mkForce [];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ in {
|
|||
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
# package = pkgs.nginxStable.override {openssl = pkgs.libressl;};
|
||||
package = pkgs.nginxStable.override {openssl = pkgs.libressl;};
|
||||
recommendedProxySettings = true;
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
|
|
|
|||
|
|
@ -1,50 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.custom; let
|
||||
cfg = config.services.wg-container;
|
||||
in {
|
||||
options.services.wg-container = with types; {
|
||||
enable = mkBoolOpt false "Enable Wireguard Container";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
sops = {
|
||||
defaultSopsFile = ../../../.sops.yaml;
|
||||
gnupg.home = "/var/lib/sops";
|
||||
gnupg.sshKeyPaths = [];
|
||||
|
||||
secrets = {
|
||||
"vpn_config_file" = {
|
||||
sopsFile = ../../../../secrets/vpn-config.yaml;
|
||||
owner = "root";
|
||||
group = "root";
|
||||
mode = "0400";
|
||||
neededForUsers = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vpnNamespaces.wg = {
|
||||
enable = true;
|
||||
wireguardConfigFile = config.sops.secrets.vpn_config_file.path;
|
||||
accessibleFrom = [
|
||||
"192.168.0.0/24"
|
||||
];
|
||||
portMappings = [
|
||||
{
|
||||
from = 18081;
|
||||
to = 18081;
|
||||
protocol = "both";
|
||||
}
|
||||
{
|
||||
from = 9091;
|
||||
to = 9091;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -36,7 +36,7 @@ in {
|
|||
catppuccin.forgejo.enable = false;
|
||||
|
||||
services.gitea-actions-runner = {
|
||||
package = pkgs.forgejo-runner;
|
||||
package = pkgs.forgejo-actions-runner;
|
||||
instances.default = {
|
||||
enable = true;
|
||||
name = "monolith";
|
||||
|
|
|
|||
|
|
@ -19,5 +19,19 @@ in {
|
|||
user = "zoey";
|
||||
group = "users";
|
||||
};
|
||||
|
||||
# virtualisation.oci-containers = {
|
||||
# containers.jellyfin-vue = {
|
||||
# image = "ghcr.io/jellyfin/jellyfin-vue:unstable";
|
||||
# environment = {
|
||||
# "PUBLIC_JELLYFIN_API" = "http://localhost:8096";
|
||||
# };
|
||||
# ports = [
|
||||
# "8065:80"
|
||||
# ];
|
||||
# };
|
||||
# };
|
||||
|
||||
networking.firewall.allowedTCPPorts = [8065];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ in {
|
|||
|
||||
systemd.services."mirror-update" = {
|
||||
script = ''
|
||||
${pkgs.rsync}/bin/rsync -vPa --delete-after rsync://mirrors.lug.mtu.edu/archlinux/ /var/www/mirror.zackmyers.io/archlinux/
|
||||
${pkgs.rsync}/bin/rsync -vPa rsync://mirrors.lug.mtu.edu/archlinux/ /var/www/mirror.zackmyers.io/archlinux/
|
||||
'';
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
|
|
|
|||
|
|
@ -148,8 +148,6 @@ in {
|
|||
'';
|
||||
};
|
||||
|
||||
security.acme.certs."node.nyc.zackmyers.io".keyType = "rsa4096";
|
||||
|
||||
services.phpfpm = {
|
||||
phpOptions = ''
|
||||
extension=${pkgs.php83Extensions.openssl}/lib/php/extensions/openssl.so
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ in {
|
|||
# })
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
noto-fonts-color-emoji
|
||||
noto-fonts-emoji
|
||||
jetbrains-mono
|
||||
nerd-fonts.iosevka
|
||||
nerd-fonts.zed-mono
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
{...}: final: prev: {
|
||||
monado = prev.monado.overrideAttrs (old: {
|
||||
buildInputs = builtins.filter (x: x != prev.opencv) old.buildInputs;
|
||||
cmakeFlags =
|
||||
(old.cmakeFlags or [])
|
||||
++ [
|
||||
"-DBUILD_WITH_OPENCV=OFF"
|
||||
];
|
||||
});
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
owner = "bluesky-social";
|
||||
repo = "pds";
|
||||
rev = "main";
|
||||
hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
|
||||
hash = "sha256-dEB5u++Zx+F4TH5q44AF/tuwAhLEyYT+U5/18viT4sw=";
|
||||
};
|
||||
in
|
||||
inputs.pnpm2nix.packages.${pkgs.system}.mkPnpmPackage {
|
||||
|
|
|
|||
|
|
@ -1,47 +0,0 @@
|
|||
{
|
||||
fetchurl,
|
||||
stdenv,
|
||||
autoPatchelfHook,
|
||||
xorg,
|
||||
libGL,
|
||||
libgcc,
|
||||
systemdLibs,
|
||||
libz,
|
||||
glibc,
|
||||
fontconfig,
|
||||
e2fsprogs,
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
src = fetchurl {
|
||||
url = "https://cdn.discordapp.com/attachments/1306271439493533776/1414196667304902707/music-presence-2.3.3-preview.6-linux-x86_64.tar.gz?ex=68beb0c7&is=68bd5f47&hm=09a61b4eeadb1f0b61ed70a6d1a14fe267f320027e0aae8dca1923d0813b063a&";
|
||||
hash = "sha256-KqGnG4xdZcOQJQXrNU3leLXDNjNFAVjvuDUKAR38IBs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [autoPatchelfHook];
|
||||
|
||||
preBuild = ''
|
||||
addAutoPatchelfSearchPath ./usr/plugins/
|
||||
addAutoPatchelfSearchPath ./usr/bin/
|
||||
addAutoPatchelfSearchPath ./usr/lib/
|
||||
'';
|
||||
|
||||
buildInputs = [
|
||||
xorg.libX11
|
||||
xorg.libxcb
|
||||
libGL
|
||||
libgcc
|
||||
systemdLibs
|
||||
libz
|
||||
glibc
|
||||
fontconfig
|
||||
e2fsprogs
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
cp -r . $out
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
name = "discord-music-presence";
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
password: ENC[AES256_GCM,data:0fl9Py+dOU7yBG5+S9oikr/uVXM=,iv:ivZPbvIqCNH974p24ZXgobDQjZh4EaRqr9Mav0Ofv7Q=,tag:rPY6loyq5wCe/SXKsz39LA==,type:str]
|
||||
sops:
|
||||
shamir_threshold: 1
|
||||
age:
|
||||
- recipient: age1l6v7c5cp6sh6typgskwfufzkn3qw4av7r42z7lqyns6mtupytqhs2fg49u
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOZElOWnpHWC9mdGhOaVRQ
|
||||
U2d1Z3U0Uk9sZGhZWFp5ejRLV1FEbUpFcVNNCm1WN0xrV1FkLzB5TXBWa3dnMDFD
|
||||
eEI5L0hPbk1CM0dESWsxRXRKemp0RG8KLS0tIFNWR0M4a0tHSjR3ODV6aGpHQzZy
|
||||
Y3hyR2p4Qk52S2FRVnFQK2pTb21sK2cKfTp78UNAFB4umRGvwDq782dhBYPeO6ms
|
||||
wx9+gVmeRbHWC2SoVvjEpsK7FpSQDV5T6qDZP+L3DwWRKM2OfAdjRA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age16p54d6tx3mg0htkzj43q2mzpvlqj4gz63mz5qzx8mpsp5zx4xexsszdhuk
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXTXUwaHhQdHBBVWVSMmNH
|
||||
dUNJUys2VnhPbjdYd3NCUDM1dXV5am9FNkhzCnVmMnBOcmtrNVE5d012NzlsRm54
|
||||
SDlQekQxR3JkbENJbXkxbGdSa3BGMVkKLS0tIEV1b3pJbHdFbXMzSGRrOXpPUW1U
|
||||
OFpZeVVYYzJyMVMxOVBoNzFDVFdDc0UKu0T/bsKe7qaBbqWyalMEZ+MzuhZN2Jxk
|
||||
mAQsc9ZAZeRda/0IjpnWjwfxCbt99wMKms1cPyDwGxRdDu5xSNKmUg==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-09-20T18:43:33Z"
|
||||
mac: ENC[AES256_GCM,data:n0J6Go+8GfyG9CO/o2DAcaUCzEWjANRy9ZFHkoogqKX1N6oCFWnojqx3qeUw1QlzNHKYsCVRawsYp/oezox9wyjH/EvKS1Ocxm4b6segIFL38y2zllR+AKDu7FsfEz+nkgp8VrzruaoobTBp4HLxNvlVKg9sWLboIDw38jt58EA=,iv:Lz3ph/lelLNyIVlWRowW3QZQoZw2VhCGUhA0kJHM3wc=,tag:ucu/ee0YhDO53xCBtkOHfg==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.10.2
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
vpn_config_file: ENC[AES256_GCM,data:ZkHMWmbWTp3h1miVkMuO+9psw7FPyfM7wg9B2Ef9HMlcO2ZL5D7FFW8wWGOCksvhabYIvuN0v9Vfi3gFRQOrmlHS8VXNw5+tMNJ24Yhgx5W3/SD/BUdZfvfFRFNMkYwy/M3ztiOIlZlQhE+0rxhzFgaq6bbbwDRLK5GmG5BM6saoP4qXn17kdyY7BnEzFghHQBmfXSp24vuEZt9KyP/hSo+UzAr2VO6ougtIAvR2BLvgiN9YH5qUF3vQYARNadbw+m5EgEoBvNzST5d/FOH2Ify4d/yYzUmF2XS4oBkrGbYlwi9Khd6Kn/MkwWS2d8In6gT3LaJIhBwGCtEQCwAlRErC1nwghEkTIBYDmvp4mQNWBIwcP60zgswyjFWt1oy7u1E5,iv:JJDupaXEVxfpcWaoE/G5RvjMkpETYgiS4kSiQEgvZCc=,tag:E+4FgnsFwhNiEPr+b6b6Og==,type:str]
|
||||
sops:
|
||||
lastmodified: "2025-06-24T21:56:48Z"
|
||||
mac: ENC[AES256_GCM,data:gzKh3iFiNhHnI0b/ayOqVEZiMGR6aL6JGfr0q9f42dFlOW37bycIuSMNKdjeOslp7lvHdLSvrWW/aIGchBVHOMDSYFhiuxxmlhNbgAWAjDpDy2vbgIlKTEqt4ytQ+IKxN3mrCpEWiYVPi/FqzOKqZknWNEMQxxhIpbPx4FdaWPM=,iv:YE1eWK90EOL+zW/v0lL6DnStOYlF5mmdsRUaSHbbgJ4=,tag:v3S5GPstjZbbFcTj+dWWAg==,type:str]
|
||||
pgp:
|
||||
- created_at: "2025-06-24T21:10:42Z"
|
||||
enc: |-
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hF4DSgOXOlpD5vQSAQdA6VlJq7Q66Ggk4hq4Z7n1Rt0CfMA+QX+H7nyx7WG4vRUw
|
||||
G0ir2eYcyUETT35WWMu9weyNgRuwsuCT7GxpfWf82crp1RENKh/s0p4iFanhjIHo
|
||||
0l4BFFP+xxvPEbXOepRVf+ewEdVMQXUEe1O3Qmm2v5Y08FKwQY6N9ExBRxgbkCQm
|
||||
KTrTwHIfPGuZPLfgH2IAqmI7qbKiSTorLaBJOqDhtkFGcl6ALsNk40c42o6Yol4Q
|
||||
=Wnnp
|
||||
-----END PGP MESSAGE-----
|
||||
fp: "0x141576B17B4AE789"
|
||||
- created_at: "2025-06-24T21:10:42Z"
|
||||
enc: |-
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hQEMA3n+O3FJNc2rAQgAjpT5Nds28cgp1OyyFXUJ6ei8He6VX5q9SsFqN81h1QM8
|
||||
b0/EXG9+cVwIkN6nydjdygWChiVT3JutP3ucVOSGllA5B+NCGBZtt0i5bYfiMr5+
|
||||
wblTFY2sYBnfeYjtm0s/IjnwzsKdHxzP6pZjuXcA28icKkSgPPKVRamUt+ytStAg
|
||||
TDdP76Y1rN6Pp/jRYpPYGHML725LcEicSX++FCBdjMRvm+zxFXHigF4posoOwHST
|
||||
idizJwfIwkuzVvc23eHLlWADqh28SqSMZd2qojS5pXuXmEKua1JqmY4poNMkP+BU
|
||||
1j5EvcsmlNOGVY5+FFBkuGQ9rjOX61EjKUnGTO7d8tJeAYIsBS8EbFUv13YF/1UG
|
||||
kE4AVTuRDqPizxcKh0j/nhZOIUpbzDYR73ZgofB5jzYfUVN6ucphBLw6WafCk+8/
|
||||
F4DyFhGlHOX0QIMbYJRhOG2rFDk3oPpbiULRyKSpsA==
|
||||
=887e
|
||||
-----END PGP MESSAGE-----
|
||||
fp: 0DCB1C584AECEB2674BB76C179FE3B714935CDAB
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.10.2
|
||||
|
|
@ -6,10 +6,7 @@
|
|||
config,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./disk-config.nix
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
imports = [./disk-config.nix ./hardware-configuration.nix];
|
||||
|
||||
nix.settings = {
|
||||
trusted-users = ["zoey"];
|
||||
|
|
@ -20,7 +17,7 @@
|
|||
dates = ["03:45"];
|
||||
};
|
||||
|
||||
# nix.package = inputs.lix-module.packages.${pkgs.system}.default;
|
||||
nix.package = inputs.lix-module.packages.${pkgs.system}.default;
|
||||
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
|
|
@ -28,13 +25,36 @@
|
|||
options = "--delete-older-than 1d";
|
||||
};
|
||||
|
||||
boot.initrd.postResumeCommands = lib.mkAfter ''
|
||||
mkdir /btrfs_tmp
|
||||
mount /dev/root_vg/root /btrfs_tmp
|
||||
if [[ -e /btrfs_tmp/root ]]; then
|
||||
mkdir -p /btrfs_tmp/old_roots
|
||||
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
|
||||
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
|
||||
fi
|
||||
|
||||
delete_subvolume_recursively() {
|
||||
IFS=$'\n'
|
||||
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
|
||||
delete_subvolume_recursively "/btrfs_tmp/$i"
|
||||
done
|
||||
btrfs subvolume delete "$1"
|
||||
}
|
||||
|
||||
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
|
||||
delete_subvolume_recursively "$i"
|
||||
done
|
||||
|
||||
btrfs subvolume create /btrfs_tmp/root
|
||||
umount /btrfs_tmp
|
||||
'';
|
||||
|
||||
hardware.audio.enable = true;
|
||||
hardware.nvidia.enable = true;
|
||||
hardware.keyboard.qmk.enable = true;
|
||||
programs.nix-ld.enable = true;
|
||||
|
||||
services.flatpak.enable = true;
|
||||
|
||||
hardware.march = {
|
||||
arch = "znver3";
|
||||
enableNativeOptimizations = true;
|
||||
|
|
@ -62,24 +82,13 @@
|
|||
configuration = {
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
services.displayManager.sddm.enable = true;
|
||||
services.displayManager.gdm.enable = lib.mkForce false;
|
||||
services.xserver.displayManager.gdm.enable = lib.mkForce false;
|
||||
|
||||
programs.seahorse.enable = lib.mkForce false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# services.monado = {
|
||||
# enable = true;
|
||||
# defaultRuntime = true;
|
||||
# };
|
||||
#
|
||||
# systemd.user.services.monado.environment = {
|
||||
# STEAMVR_LH_ENABLE = "1";
|
||||
# XRT_COMPOSITOR_COMPUTE = "1";
|
||||
# XRT_COMPOSITOR_FORCE_WAYLAND_DIRECT = "1";
|
||||
# };
|
||||
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
|
|
@ -120,16 +129,28 @@
|
|||
|
||||
protocols.wayland.enable = true;
|
||||
|
||||
programs.openvpn3.enable = true;
|
||||
|
||||
services.udev.extraRules = ''
|
||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev"
|
||||
'';
|
||||
services.fstrim.enable = true;
|
||||
services.vpn.enable = true;
|
||||
services.xserver.enable = true;
|
||||
services.vpn.mullvad = true;
|
||||
services.lorri.enable = true;
|
||||
services.udisks2.enable = true;
|
||||
services.crypto.enable = false;
|
||||
services.torrent.enable = false;
|
||||
services.transmission = {
|
||||
enable = false;
|
||||
package = pkgs.transmission_4;
|
||||
settings = {
|
||||
download-dir = "/home/zoey/Downloads";
|
||||
incomplete-dir = "/home/zoey/Downloads/.incomplete";
|
||||
incomplete-dir-enabled = true;
|
||||
};
|
||||
user = "zoey";
|
||||
group = "users";
|
||||
};
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
# services.solaar = {
|
||||
# enable = true;
|
||||
|
|
@ -139,13 +160,11 @@
|
|||
polkitPolicyOwnerUsername = "zoey";
|
||||
};
|
||||
|
||||
security.polkit.enable = true;
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = lib.mkForce false;
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.lanzaboote = {
|
||||
enable = true;
|
||||
pkiBundle = "/var/lib/sbctl";
|
||||
enable = false;
|
||||
pkiBundle = "/etc/secureboot";
|
||||
};
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.blacklistedKernelModules = ["joydev"];
|
||||
|
|
@ -153,23 +172,18 @@
|
|||
networking.hostName = "earth"; # Define your hostname.
|
||||
networking.hostId = "a2a8bfcc";
|
||||
|
||||
networking.extraHosts = ''
|
||||
127.0.0.1 blahaj.local
|
||||
127.0.0.1 test.blahaj.local
|
||||
127.0.0.2 earth
|
||||
'';
|
||||
|
||||
networking.networkmanager = {
|
||||
enable = true;
|
||||
unmanaged = ["enp6s0"];
|
||||
# insertNameservers = ["1.1.1.1" "1.0.0.1"];
|
||||
};
|
||||
|
||||
# services.scx.enable = true;
|
||||
# services.scx.scheduler = "scx_rusty";
|
||||
# services.scx.package = pkgs.scx_git.full;
|
||||
services.scx.enable = true;
|
||||
services.scx.scheduler = "scx_rusty";
|
||||
services.scx.package = pkgs.scx_git.full;
|
||||
|
||||
boot.kernelPackages = pkgs.linuxPackages_zen;
|
||||
boot.kernelPackages = pkgs.linuxPackages_cachyos-lto;
|
||||
# CachyOS-inspired kernel parameters for better desktop responsiveness and gaming
|
||||
boot.kernelParams = [
|
||||
"nowatchdog"
|
||||
"preempt=full"
|
||||
|
|
@ -177,6 +191,11 @@
|
|||
"tsc=reliable"
|
||||
"clocksource=tsc"
|
||||
"preempt=voluntary"
|
||||
"futex.futex2_interface=1" # Better Wine/Proton compatibility
|
||||
"NVreg_UsePageAttributeTable=1" # Improved GPU memory management
|
||||
"io_uring.sqpoll=2" # Modern I/O scheduler polling
|
||||
"transparent_hugepage=madvise" # Better memory management
|
||||
"elevator=bfq" # Better I/O scheduling for gaming
|
||||
];
|
||||
boot.supportedFilesystems = ["ntfs"];
|
||||
|
||||
|
|
@ -199,30 +218,43 @@
|
|||
pkgs.sbctl
|
||||
pkgs.kdiskmark
|
||||
pkgs.mangohud
|
||||
pkgs.sops
|
||||
inputs.quickshell.packages.${system}.default
|
||||
(pkgs.shadps4.overrideAttrs {
|
||||
version = "0.9.0";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "AzaharPlus";
|
||||
repo = "shadPS4Plus";
|
||||
tag = "SHADPS4PLUS_0_9_0_A";
|
||||
hash = "sha256-ZwP+bOE4roWt51Ii53blDZzdq/SxK4Q69I4rLCNARLA=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
})
|
||||
(pkgs.lutris.override {
|
||||
extraPkgs = pkgs: [
|
||||
pkgs.winetricks
|
||||
];
|
||||
})
|
||||
pkgs.vulkan-hdr-layer-kwin6
|
||||
pkgs.bottles
|
||||
pkgs.file-roller
|
||||
pkgs.podman-tui
|
||||
pkgs.dive
|
||||
pkgs.docker-compose
|
||||
pkgs.podman-compose
|
||||
pkgs.transmission_4
|
||||
pkgs.protonup-qt
|
||||
pkgs.restic
|
||||
pkgs.qt5.qtwayland
|
||||
pkgs.vkbasalt # Vulkan post-processing layer for better visuals
|
||||
pkgs.vkBasalt # Vulkan post-processing layer for better visuals
|
||||
pkgs.goverlay # MangoHud and vkBasalt GUI configurator
|
||||
pkgs.cpupower-gui # CPU frequency control GUI
|
||||
pkgs.ananicy-cpp # Process priority daemon
|
||||
pkgs.umu-launcher
|
||||
# (inputs.umu.packages.${system}.umu-launcher.override {
|
||||
# withTruststore = true;
|
||||
# withDeltaUpdates = true;
|
||||
# })
|
||||
(inputs.umu.packages.${system}.umu-launcher.override {
|
||||
withTruststore = true;
|
||||
withDeltaUpdates = true;
|
||||
})
|
||||
inputs.agenix.packages.${system}.agenix
|
||||
inputs.awsvpnclient.packages.${system}.awsvpnclient
|
||||
];
|
||||
|
||||
programs.fish.enable = true;
|
||||
|
|
@ -231,18 +263,12 @@
|
|||
users.users.zoey = {
|
||||
isNormalUser = true;
|
||||
description = "zoey";
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"docker"
|
||||
"libvirtd"
|
||||
"plugdev"
|
||||
];
|
||||
extraGroups = ["networkmanager" "wheel" "docker" "libvirtd" "plugdev"];
|
||||
shell = pkgs.fish;
|
||||
initialHashedPassword = "$6$rounds=2000000$rFBJH7LwdEHvv.0i$HdHorWqp8REPdWPk5fEgZXX1TujRJkMxumGK0f0elFN0KRPlBjJMW2.35A.ID/o3eC/hGTwbSJAcJcwVN2zyV/";
|
||||
};
|
||||
|
||||
services.gnome.core-apps.enable = true; # Enable core GNOME utilities
|
||||
services.gnome.core-utilities.enable = true; # Enable core GNOME utilities
|
||||
|
||||
users.groups.plugdev = {};
|
||||
|
||||
|
|
@ -262,7 +288,12 @@
|
|||
ports = [22];
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [22 1069];
|
||||
networking.firewall.allowedTCPPorts = [22];
|
||||
|
||||
services.monero = {
|
||||
enable = false;
|
||||
mining.enable = false;
|
||||
};
|
||||
|
||||
services.samba = {
|
||||
enable = true;
|
||||
|
|
@ -301,13 +332,10 @@
|
|||
sites.mealie.enable = false;
|
||||
|
||||
virtualisation.containers.enable = true;
|
||||
# virtualisation.podman = {
|
||||
# enable = true;
|
||||
# dockerCompat = true;
|
||||
# defaultNetwork.settings.dns_enabled = true;
|
||||
# };
|
||||
virtualisation.docker = {
|
||||
virtualisation.podman = {
|
||||
enable = true;
|
||||
dockerCompat = true;
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
};
|
||||
hardware.gpu-passthru.enable = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@
|
|||
pterodactyl.enable = true;
|
||||
search.enable = true;
|
||||
map.enable = true;
|
||||
hydra.enable = false;
|
||||
hydra.enable = true;
|
||||
cache.enable = true;
|
||||
minio.enable = true;
|
||||
immich.enable = true;
|
||||
|
|
@ -105,7 +105,7 @@
|
|||
sourcehut.enable = false;
|
||||
forgejo.enable = true;
|
||||
zoeycomputer = {
|
||||
enable = false;
|
||||
enable = true;
|
||||
domain = "zoeys.computer";
|
||||
phx = {
|
||||
database = {
|
||||
|
|
@ -181,7 +181,6 @@
|
|||
hashedPassword = "$6$rounds=2000000$673Iz4rM8Dr9yz7C$Xq5JXxE7ioUrpZmMf3uTrPN2ODrEu3Sph6EhWyPoM5Ty./FhgB9hU0mz1yYo8sUj7wdUMWfR98haVJ24Wv3BK/";
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFuw7D+qDzzxBKsfKEmMd7odc98m3ZEnqWYFtuKwvC9k zoey@earth"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOTCj3aEDA8Bbg7ka1nnA6d92IyXYTSWKz/e1bl5Fdf+ root@earth"
|
||||
];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@
|
|||
|
||||
services.web.nginx.enable = true;
|
||||
services.mail.enable = true;
|
||||
services.matrix.enable = false;
|
||||
|
||||
environment.systemPackages = map lib.lowPrio [
|
||||
pkgs.curl
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue