Init Config
20
.gitignore
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
# Nix build results
|
||||
result
|
||||
result-*
|
||||
|
||||
# sops age keys (never commit private keys)
|
||||
*.age
|
||||
keys.txt
|
||||
|
||||
# macOS
|
||||
.DS_Store
|
||||
._.DS_Store
|
||||
**/.DS_Store
|
||||
**/._.DS_Store
|
||||
|
||||
# secrets (encrypted via sops, but extra safety)
|
||||
secrets/*.yaml~
|
||||
|
||||
# Editor
|
||||
.direnv/
|
||||
.envrc
|
||||
@@ -37,7 +37,7 @@ cd ~/.config/nix
|
||||
|
||||
Replace placeholders in `home/git.nix`:
|
||||
- `DerGrumpf` → your Git username
|
||||
- `p.keier@beyerstedt-it.de` → your Git email
|
||||
- `phil.keier@hotmail.com` → your Git email
|
||||
|
||||
### Apply
|
||||
```bash
|
||||
|
||||
BIN
assets/avatar/avatar.png
Normal file
|
After Width: | Height: | Size: 1.8 MiB |
BIN
assets/avatar/avatar_high.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
assets/avatar/avatar_no_bg.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
assets/avatar/avatar_sloth.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
assets/avatar/avatar_sloth_no_bg.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
assets/avatar/avatar_talking.gif
Normal file
|
After Width: | Height: | Size: 23 MiB |
BIN
assets/avatar/avatar_talking.mp4
Normal file
BIN
assets/avatar/avatar_talking_no_bg.gif
Normal file
|
After Width: | Height: | Size: 20 MiB |
BIN
assets/avatar/avatar_talking_no_bg.mp4
Normal file
BIN
assets/avatar/avatar_weather.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
assets/avatar/avatar_weather_no_bg.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
assets/wallpapers/Ghost_in_the_Shell.png
Normal file
|
After Width: | Height: | Size: 3.3 MiB |
BIN
assets/wallpapers/Helicopter.png
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
BIN
assets/wallpapers/Major.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
assets/wallpapers/bike.gif
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
assets/wallpapers/corner.gif
Normal file
|
After Width: | Height: | Size: 350 KiB |
BIN
assets/wallpapers/daemon.gif
Normal file
|
After Width: | Height: | Size: 3.2 MiB |
BIN
assets/wallpapers/daemon_layer.png
Normal file
|
After Width: | Height: | Size: 737 KiB |
BIN
assets/wallpapers/dead_cyborg.png
Normal file
|
After Width: | Height: | Size: 3.7 MiB |
BIN
assets/wallpapers/dna.gif
Normal file
|
After Width: | Height: | Size: 854 KiB |
BIN
assets/wallpapers/ghost.gif
Normal file
|
After Width: | Height: | Size: 1.8 MiB |
BIN
assets/wallpapers/girl.png
Normal file
|
After Width: | Height: | Size: 17 MiB |
BIN
assets/wallpapers/girl_nixos.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
assets/wallpapers/lucy.png
Normal file
|
After Width: | Height: | Size: 15 MiB |
BIN
assets/wallpapers/lucy_with_cat.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
assets/wallpapers/rain.gif
Normal file
|
After Width: | Height: | Size: 4.3 MiB |
BIN
assets/wallpapers/space_station.png
Normal file
|
After Width: | Height: | Size: 3.4 MiB |
BIN
assets/wallpapers/tokio.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
51
darwin/default.nix
Normal file
@@ -0,0 +1,51 @@
|
||||
{ pkgs, inputs, self, primaryUser, ... }: {
|
||||
imports = [ ./homebrew.nix ./settings.nix ./yabai.nix ];
|
||||
|
||||
# nix config
|
||||
nix = {
|
||||
settings = {
|
||||
experimental-features = [ "nix-command" "flakes" ];
|
||||
max-jobs = "auto"; # Use all CPU cores
|
||||
cores = 0; # Use all cores per build
|
||||
# disabled due to https://github.com/NixOS/nix/issues/7273
|
||||
# auto-optimise-store = true;
|
||||
};
|
||||
enable = true; # using determinate installer
|
||||
|
||||
# Garbage collection
|
||||
gc = {
|
||||
automatic = true;
|
||||
interval = { Weekday = 7; }; # Run weekly
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
};
|
||||
|
||||
# Disable Docs
|
||||
documentation = {
|
||||
enable = true;
|
||||
doc.enable = false; # Skip large documentation
|
||||
man.enable = true; # Keep man pages
|
||||
info.enable = false; # Skip info pages
|
||||
};
|
||||
|
||||
nixpkgs.config = { allowUnfree = true; };
|
||||
# homebrew installation manager
|
||||
nix-homebrew = {
|
||||
user = primaryUser;
|
||||
enable = true;
|
||||
autoMigrate = true;
|
||||
};
|
||||
|
||||
# macOS-specific settings
|
||||
programs.fish.enable = true;
|
||||
environment.shells = [ pkgs.fish ];
|
||||
system.primaryUser = primaryUser;
|
||||
users.users.${primaryUser} = {
|
||||
home = "/Users/${primaryUser}";
|
||||
shell = pkgs.fish;
|
||||
};
|
||||
environment = {
|
||||
systemPath = [ "/opt/homebrew/bin" ];
|
||||
pathsToLink = [ "/Applications" ];
|
||||
};
|
||||
}
|
||||
20
darwin/homebrew.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{ ... }: {
|
||||
homebrew = {
|
||||
enable = true;
|
||||
|
||||
onActivation = {
|
||||
autoUpdate = false;
|
||||
upgrade = true;
|
||||
cleanup = "zap";
|
||||
};
|
||||
|
||||
caskArgs.no_quarantine = true;
|
||||
global.brewfile = true;
|
||||
|
||||
# homebrew is best for GUI apps
|
||||
# nixpkgs is best for CLI tools
|
||||
casks = [ "element" "affinity" "onlyoffice" "tailscale" ];
|
||||
brews = [ ];
|
||||
taps = [ ];
|
||||
};
|
||||
}
|
||||
76
darwin/settings.nix
Normal file
@@ -0,0 +1,76 @@
|
||||
{ self, ... }: {
|
||||
# touch ID for sudo
|
||||
security.pam.services.sudo_local.touchIdAuth = true;
|
||||
|
||||
# system defaults and preferences
|
||||
system = {
|
||||
stateVersion = 6;
|
||||
configurationRevision = self.rev or self.dirtyRev or null;
|
||||
|
||||
startup.chime = false;
|
||||
|
||||
activationScripts = {
|
||||
setWallpaper.text = ''
|
||||
/usr/bin/osascript <<EOF
|
||||
tell application "System Events"
|
||||
tell every desktop
|
||||
set picture to "/Users/phil/Pictures/Wallpapers/Ghost_in_the_Shell.png"
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
defaults = {
|
||||
ActivityMonitor = {
|
||||
IconType = 5;
|
||||
OpenMainWindow = true;
|
||||
ShowCategory = 101;
|
||||
};
|
||||
|
||||
dock = {
|
||||
enable-spring-load-actions-on-all-items = true;
|
||||
appswitcher-all-displays = false;
|
||||
autohide = false;
|
||||
launchanim = true;
|
||||
mru-spaces = false;
|
||||
orientation = "left";
|
||||
persistent-apps = [
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/kitty.app"; }
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/Vesktop.app"; }
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/Spotify.app"; }
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/Floorp.app"; }
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/Obsidian.app"; }
|
||||
{ app = "/Users/phil/Applications/Home Manager Apps/OpenSCAD.app"; }
|
||||
{ app = "/Applications/okular.app"; }
|
||||
{ app = "/Applications/Affinity.app"; }
|
||||
{ app = "/System/Applications/Mail.app"; }
|
||||
{ app = "/System/Applications/Launchpad.app"; }
|
||||
];
|
||||
show-recents = false;
|
||||
mineffect = "genie";
|
||||
};
|
||||
|
||||
loginwindow = {
|
||||
GuestEnabled = false;
|
||||
DisableConsoleAccess = true;
|
||||
};
|
||||
|
||||
finder = {
|
||||
AppleShowAllFiles = true; # hidden files
|
||||
AppleShowAllExtensions = true; # file extensions
|
||||
_FXShowPosixPathInTitle = true; # title bar full path
|
||||
ShowPathbar = true; # breadcrumb nav at bottom
|
||||
ShowStatusBar = true; # file count & disk space
|
||||
};
|
||||
|
||||
NSGlobalDomain = {
|
||||
NSAutomaticSpellingCorrectionEnabled = false;
|
||||
NSAutomaticCapitalizationEnabled = false;
|
||||
NSAutomaticPeriodSubstitutionEnabled = false;
|
||||
NSAutomaticWindowAnimationsEnabled = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
105
darwin/yabai.nix
Normal file
@@ -0,0 +1,105 @@
|
||||
{ pkgs, ... }: {
|
||||
services = {
|
||||
yabai = {
|
||||
enable = true;
|
||||
config = {
|
||||
external_bar = "main:40:0";
|
||||
menubar_opacity = 1.0;
|
||||
mouse_follows_focus = "on";
|
||||
focus_follows_mouse = "on";
|
||||
display_arrangement_order = "default";
|
||||
|
||||
window_origin_display = "default";
|
||||
window_placement = "second_child";
|
||||
window_insertion_point = "focused";
|
||||
window_zoom_persist = "on";
|
||||
window_shadow = "off";
|
||||
window_animation_duration = 0.0;
|
||||
window_animation_easing = "ease_out_circ";
|
||||
window_opacity_duration = 0.0;
|
||||
active_window_opacity = 1.0;
|
||||
normal_window_opacity = 0.9;
|
||||
window_opacity = "off";
|
||||
|
||||
insert_feedback_color = "0xffd75f5f";
|
||||
split_ratio = 0.5;
|
||||
split_type = "auto";
|
||||
auto_balance = "off";
|
||||
top_padding = 2;
|
||||
bottom_padding = 2;
|
||||
left_padding = 2;
|
||||
right_padding = 2;
|
||||
window_gap = 2;
|
||||
|
||||
layout = "bsp";
|
||||
mouse_modifier = "fn";
|
||||
mouse_action1 = "move";
|
||||
mouse_action2 = "resize";
|
||||
mouse_drop_action = "swap";
|
||||
};
|
||||
};
|
||||
|
||||
# skhd = {
|
||||
# enable = true;
|
||||
# skhdConfig = ''
|
||||
# Application Bindings
|
||||
# cmd - q : open -a kitty
|
||||
# cmd - e : ${pkgs.kitty}/bin/kitty yazi
|
||||
# cmd - o : open -a "Obsidian"
|
||||
# cmd - i : open -a "Floorp"
|
||||
# cmd - g : open -a "Mail"
|
||||
|
||||
# Window Management (using yabai if installed, otherwise basic macOS)
|
||||
#cmd + shift - c : yabai -m window --close || osascript -e 'tell application "System Events" to keystroke "w" using command down'
|
||||
#cmd + shift - v : yabai -m window --toggle float
|
||||
|
||||
# Focus windows (vim-like)
|
||||
# cmd - left : yabai -m window --focus west
|
||||
# cmd - right : yabai -m window --focus east
|
||||
# cmd - up : yabai -m window --focus north
|
||||
# cmd - down : yabai -m window --focus south
|
||||
|
||||
# Move windows to spaces (workspaces)
|
||||
# cmd + shift - 1 : yabai -m window --space 1
|
||||
# cmd + shift - 2 : yabai -m window --space 2
|
||||
# cmd + shift - 3 : yabai -m window --space 3
|
||||
# cmd + shift - 4 : yabai -m window --space 4
|
||||
# cmd + shift - 5 : yabai -m window --space 5
|
||||
# cmd + shift - 6 : yabai -m window --space 6
|
||||
# cmd + shift - 7 : yabai -m window --space 7
|
||||
# cmd + shift - 8 : yabai -m window --space 8
|
||||
# cmd + shift - 9 : yabai -m window --space 9
|
||||
# cmd + shift - 0 : yabai -m window --space 10
|
||||
|
||||
# Switch to spaces (workspaces)
|
||||
# cmd - 1 : yabai -m space --focus 1
|
||||
# cmd - 2 : yabai -m space --focus 2
|
||||
# cmd - 3 : yabai -m space --focus 3
|
||||
# cmd - 4 : yabai -m space --focus 4
|
||||
# cmd - 5 : yabai -m space --focus 5
|
||||
# cmd - 6 : yabai -m space --focus 6
|
||||
# cmd - 7 : yabai -m space --focus 7
|
||||
# cmd - 8 : yabai -m space --focus 8
|
||||
# cmd - 9 : yabai -m space --focus 9
|
||||
# cmd - 0 : yabai -m space --focus 10
|
||||
|
||||
# Screenshot (macOS native)
|
||||
# cmd - z : screencapture -i ~/Pictures/Screenshots/$(date +%s).png
|
||||
# cmd - u : screencapture ~/Pictures/Screenshots/$(date +%s).png
|
||||
|
||||
# Launcher (using Raycast or Spotlight as Rofi alternative)
|
||||
# cmd - r : open -a "Raycast" || osascript -e 'tell application "System Events" to keystroke space using command down'
|
||||
|
||||
# Lock screen
|
||||
# cmd - m : pmset displaysleepnow
|
||||
|
||||
# Toggle layout (if using yabai)
|
||||
# cmd - j : yabai -m space --layout $(yabai -m query --spaces --space | jq -r 'if .type == "bsp" then "float" else "bsp" end')
|
||||
# cmd - p : yabai -m window --toggle split
|
||||
|
||||
# Reload skhd config
|
||||
# cmd + shift - r : skhd --reload
|
||||
# '';
|
||||
# };
|
||||
};
|
||||
}
|
||||
925
flake.lock
generated
Normal file
@@ -0,0 +1,925 @@
|
||||
{
|
||||
"nodes": {
|
||||
"aquamarine": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1774211390,
|
||||
"narHash": "sha256-sTtAgCCaX8VNNZlQFACd3i1IQ+DB0Wf3COgiFS152ds=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"rev": "f62a4dbfa4e5584f14ad4c62afedf6e4b433cf70",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"brew-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1774235677,
|
||||
"narHash": "sha256-0ryNYmzDAeRlrzPTAgmzGH/Cgc8iv/LBN6jWGUANvIk=",
|
||||
"owner": "Homebrew",
|
||||
"repo": "brew",
|
||||
"rev": "894a3d23ac0c8aaf561b9874b528b9cb2e839201",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Homebrew",
|
||||
"ref": "5.1.1",
|
||||
"repo": "brew",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"catppuccin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775213373,
|
||||
"narHash": "sha256-wJHsijC2l/E+ovmlpPGha8pXA6RHSwHWmBV97gvkmyI=",
|
||||
"owner": "catppuccin",
|
||||
"repo": "nix",
|
||||
"rev": "ba73719e673e7c2d89ac2f8df0bc0d48983e4907",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "catppuccin",
|
||||
"repo": "nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775037210,
|
||||
"narHash": "sha256-KM2WYj6EA7M/FVZVCl3rqWY+TFV5QzSyyGE2gQxeODU=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "06648f4902343228ce2de79f291dd5a58ee12146",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1767039857,
|
||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"locked": {
|
||||
"lastModified": 1733328505,
|
||||
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||
"revCount": 69,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772408722,
|
||||
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_2": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1769996383,
|
||||
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"pre-commit-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775247674,
|
||||
"narHash": "sha256-MCaiC3iWarAsmu8KJXgJHb1H8lf+BD9gymvxkbmNVdc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "03bdcf84f092956943dcf9ef164481e463512716",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "master",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprcursor": {
|
||||
"inputs": {
|
||||
"hyprlang": "hyprlang",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772461003,
|
||||
"narHash": "sha256-pVICsV7FtcEeVwg5y/LFh3XFUkVJninm/P1j/JHzEbM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"rev": "b62396457b9cfe2ebf24fe05404b09d2a40f8ed7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprcursor_2": {
|
||||
"inputs": {
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772461003,
|
||||
"narHash": "sha256-pVICsV7FtcEeVwg5y/LFh3XFUkVJninm/P1j/JHzEbM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"rev": "b62396457b9cfe2ebf24fe05404b09d2a40f8ed7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprgraphics": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772461523,
|
||||
"narHash": "sha256-mI6A51do+hEUzeJKk9YSWfVHdI/SEEIBi2tp5Whq5mI=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"rev": "7d63c04b4a2dd5e59ef943b4b143f46e713df804",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland": {
|
||||
"inputs": {
|
||||
"aquamarine": "aquamarine",
|
||||
"hyprcursor": "hyprcursor_2",
|
||||
"hyprgraphics": "hyprgraphics",
|
||||
"hyprland-guiutils": "hyprland-guiutils",
|
||||
"hyprland-protocols": "hyprland-protocols",
|
||||
"hyprlang": "hyprlang_2",
|
||||
"hyprutils": "hyprutils_2",
|
||||
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||
"hyprwire": "hyprwire",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"pre-commit-hooks": "pre-commit-hooks",
|
||||
"systems": "systems_2",
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775165818,
|
||||
"narHash": "sha256-Bkb1ha9bB8IiWIBW2Z6shj2Erqx08VH1I9ljYl8zxGU=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"rev": "f25473b21b45ab8ded4a0dbba69eb6b6660d568e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-guiutils": {
|
||||
"inputs": {
|
||||
"aquamarine": [
|
||||
"hyprland",
|
||||
"aquamarine"
|
||||
],
|
||||
"hyprgraphics": [
|
||||
"hyprland",
|
||||
"hyprgraphics"
|
||||
],
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"hyprtoolkit": "hyprtoolkit",
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772467975,
|
||||
"narHash": "sha256-kipyuDBxrZq+beYpZqWzGvFWm4QbayW9agAvi94vDXY=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-guiutils",
|
||||
"rev": "5e1c6b9025aaf4d578f3eff7c0eb1f0c197a9507",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-guiutils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-plugins": {
|
||||
"inputs": {
|
||||
"hyprland": [
|
||||
"hyprland"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland-plugins",
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland-plugins",
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1771865848,
|
||||
"narHash": "sha256-xwNa+1D8WPsDnJtUofDrtyDCZKZotbUymzV/R5s+M0I=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-plugins",
|
||||
"rev": "b85a56b9531013c79f2f3846fd6ee2ff014b8960",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-plugins",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-protocols": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772460177,
|
||||
"narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprlang": {
|
||||
"inputs": {
|
||||
"hyprutils": "hyprutils",
|
||||
"nixpkgs": [
|
||||
"hyprcursor",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprcursor",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772459629,
|
||||
"narHash": "sha256-/iwvNUYShmmnwmz/czEUh6+0eF5vCMv0xtDW0STPIuM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"rev": "7615ee388de18239a4ab1400946f3d0e498a8186",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprlang_2": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772459629,
|
||||
"narHash": "sha256-/iwvNUYShmmnwmz/czEUh6+0eF5vCMv0xtDW0STPIuM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"rev": "7615ee388de18239a4ab1400946f3d0e498a8186",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprtoolkit": {
|
||||
"inputs": {
|
||||
"aquamarine": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"aquamarine"
|
||||
],
|
||||
"hyprgraphics": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"hyprgraphics"
|
||||
],
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"hyprlang"
|
||||
],
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772462885,
|
||||
"narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprtoolkit",
|
||||
"rev": "9af245a69fa6b286b88ddfc340afd288e00a6998",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprtoolkit",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprutils": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprcursor",
|
||||
"hyprlang",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprcursor",
|
||||
"hyprlang",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1771271487,
|
||||
"narHash": "sha256-41gEiUS0Pyw3L/ge1l8MXn61cK14VAhgWB/JV8s/oNI=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"rev": "340a792e3b3d482c4ae5f66d27a9096bdee6d76d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprutils_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1774211405,
|
||||
"narHash": "sha256-6KNwP4ojUzv3YBlZU5BqCpTrWHcix1Jo01BISsTT0xk=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"rev": "cb4e152dc72095a2af422956c6b689590572231a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprwayland-scanner": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772459835,
|
||||
"narHash": "sha256-978jRz/y/9TKmZb/qD4lEYHCQGHpEXGqy+8X2lFZsak=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"rev": "0a692d4a645165eebd65f109146b8861e3a925e7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprwire": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773074819,
|
||||
"narHash": "sha256-qRqYnXiKoJLRTcfaRukn7EifmST2IVBUMZOeZMAc5UA=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwire",
|
||||
"rev": "f68afd0e73687598cc2774804fedad76693046f0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwire",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-homebrew": {
|
||||
"inputs": {
|
||||
"brew-src": "brew-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1774720267,
|
||||
"narHash": "sha256-YYftFe8jyfpQI649yfr0E+dqEXE2jznZNcYvy/lKV1U=",
|
||||
"owner": "zhaofengli",
|
||||
"repo": "nix-homebrew",
|
||||
"rev": "a7760a3a83f7609f742861afb5732210fdc437ed",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "zhaofengli",
|
||||
"repo": "nix-homebrew",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixcord": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-nixcord": "nixpkgs-nixcord"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775215862,
|
||||
"narHash": "sha256-YoFvBMHRE4jCUoAk73bsUOo20j1sQV2NQm4BgQCKqSA=",
|
||||
"owner": "kaylorben",
|
||||
"repo": "nixcord",
|
||||
"rev": "164e25500dcda5261d23242788ece7ab4f0a4619",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "kaylorben",
|
||||
"repo": "nixcord",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1775036866,
|
||||
"narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6201e203d09599479a3b3450ed24fa81537ebc4e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1772328832,
|
||||
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-nixcord": {
|
||||
"locked": {
|
||||
"lastModified": 1773222311,
|
||||
"narHash": "sha256-BHoB/XpbqoZkVYZCfXJXfkR+GXFqwb/4zbWnOr2cRcU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0590cd39f728e129122770c029970378a79d076a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1774802402,
|
||||
"narHash": "sha256-L1UJ/zxKTyyaGGmytH6OYlgQ0HGSMhvPkvU+iz4Mkb8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "cbd8536a05d1aae2593cb5c9ace1010c8c5845cb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1774104215,
|
||||
"narHash": "sha256-EAtviqz0sEAxdHS4crqu7JGR5oI3BwaqG0mw7CmXkO8=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "f799ae951fde0627157f40aec28dec27b22076d0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"catppuccin": "catppuccin",
|
||||
"darwin": "darwin",
|
||||
"home-manager": "home-manager",
|
||||
"hyprcursor": "hyprcursor",
|
||||
"hyprland": "hyprland",
|
||||
"hyprland-plugins": "hyprland-plugins",
|
||||
"nix-homebrew": "nix-homebrew",
|
||||
"nixcord": "nixcord",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixvim": "nixvim",
|
||||
"sops-nix": "sops-nix",
|
||||
"spicetify-nix": "spicetify-nix"
|
||||
}
|
||||
},
|
||||
"sops-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775188331,
|
||||
"narHash": "sha256-/0BoSi0Dg0ON7IW0oscM12WSPBaMSCn36XTt0lHZoy8=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "8f093d0d2f08f37317778bd94db5951d6cce6c46",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"spicetify-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1774790928,
|
||||
"narHash": "sha256-/JO77td8AOH45kg9IJl2DXDwbhn+cyQxYbCMu4Ae1CA=",
|
||||
"owner": "Gerg-L",
|
||||
"repo": "spicetify-nix",
|
||||
"rev": "2bfdf55faf76fed12950b17d4af501e5a463607f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Gerg-L",
|
||||
"repo": "spicetify-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_4": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xdph": {
|
||||
"inputs": {
|
||||
"hyprland-protocols": [
|
||||
"hyprland",
|
||||
"hyprland-protocols"
|
||||
],
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773601989,
|
||||
"narHash": "sha256-2tJf/CQoHApoIudxHeJye+0Ii7scR0Yyi7pNiWk0Hn8=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"rev": "a9b862d1aa000a676d310cc62d249f7ad726233d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
119
flake.nix
Normal file
@@ -0,0 +1,119 @@
|
||||
{
|
||||
description = "DerGrumpfs Nix Configuration";
|
||||
|
||||
inputs = {
|
||||
# monorepo w/ recipes ("derivations")
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
|
||||
# declarative Configs
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/master";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# declarative Hyprland
|
||||
hyprland = {
|
||||
url = "github:hyprwm/Hyprland";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
hyprland-plugins = {
|
||||
url = "github:hyprwm/hyprland-plugins";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
|
||||
hyprcursor = {
|
||||
url = "github:hyprwm/hyprcursor";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# system-level software and settings (macOS)
|
||||
darwin = {
|
||||
url = "github:lnl7/nix-darwin";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# declarative homebrew management
|
||||
nix-homebrew = { url = "github:zhaofengli/nix-homebrew"; };
|
||||
|
||||
# declarative Neovim
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# declarative Discord
|
||||
nixcord = {
|
||||
url = "github:kaylorben/nixcord";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# declarative Spotify
|
||||
spicetify-nix = {
|
||||
url = "github:Gerg-L/spicetify-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# declarative Encryption
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# declarative Catppuccin
|
||||
catppuccin = {
|
||||
url = "github:catppuccin/nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, home-manager, darwin, nix-homebrew, nixvim
|
||||
, hyprland, sops-nix, ... }@inputs:
|
||||
let
|
||||
primaryUser = "phil";
|
||||
|
||||
mkNixos = hostName:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
modules = [
|
||||
{
|
||||
nixpkgs.hostPlatform = "x86_64-linux";
|
||||
networking.hostName = hostName;
|
||||
}
|
||||
./nixos
|
||||
./hosts/cyper-desktop/configuration.nix
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.extraSpecialArgs = {
|
||||
inherit inputs primaryUser self;
|
||||
};
|
||||
home-manager.users.${primaryUser} = import ./home;
|
||||
}
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
specialArgs = { inherit inputs primaryUser self hostName; };
|
||||
};
|
||||
|
||||
mkDarwin = hostName:
|
||||
darwin.lib.darwinSystem {
|
||||
system = "x86_64-darwin";
|
||||
modules = [
|
||||
./darwin
|
||||
./hosts/cyper-mac/configuration.nix
|
||||
{ networking.hostName = hostName; }
|
||||
inputs.nix-homebrew.darwinModules.nix-homebrew
|
||||
inputs.home-manager.darwinModules.home-manager
|
||||
{
|
||||
home-manager.extraSpecialArgs = {
|
||||
inherit inputs primaryUser self;
|
||||
};
|
||||
home-manager.users.${primaryUser} = import ./home;
|
||||
}
|
||||
inputs.sops-nix.darwinModules.sops
|
||||
];
|
||||
specialArgs = { inherit inputs primaryUser self hostName; };
|
||||
};
|
||||
in {
|
||||
nixosConfigurations."cyper-desktop" = mkNixos "cyper-desktop";
|
||||
darwinConfigurations."cyper-mac" = mkDarwin "cyper-mac";
|
||||
};
|
||||
}
|
||||
122
home/default.nix
Normal file
@@ -0,0 +1,122 @@
|
||||
{ config, primaryUser, inputs, self, pkgs, lib, ... }: {
|
||||
imports = [
|
||||
|
||||
./packages.nix
|
||||
./git.nix
|
||||
./shell.nix
|
||||
|
||||
./neovim
|
||||
./python.nix
|
||||
|
||||
./nixcord.nix
|
||||
|
||||
./spicetify.nix
|
||||
|
||||
./floorp.nix
|
||||
./obsidian.nix
|
||||
|
||||
./desktop
|
||||
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
] ++ lib.optionals (!pkgs.stdenv.isDarwin) [ ./xdg.nix ];
|
||||
|
||||
catppuccin = {
|
||||
enable = false;
|
||||
accent = "sky";
|
||||
flavor = "mocha";
|
||||
|
||||
eza.enable = true;
|
||||
fzf.enable = true;
|
||||
bat.enable = true;
|
||||
|
||||
element-desktop = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||
enable = true;
|
||||
accent = "green";
|
||||
};
|
||||
|
||||
btop.enable = true;
|
||||
|
||||
cava = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||
enable = true;
|
||||
transparent = true;
|
||||
};
|
||||
|
||||
kitty.enable = true;
|
||||
lazygit.enable = true;
|
||||
yazi.enable = true;
|
||||
fish.enable = true;
|
||||
|
||||
cursors = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||
enable = true;
|
||||
accent = "sapphire";
|
||||
};
|
||||
|
||||
hyprland = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; };
|
||||
|
||||
hyprlock = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||
enable = true;
|
||||
useDefaultConfig = false;
|
||||
};
|
||||
|
||||
waybar = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||
enable = true;
|
||||
mode = "createLink";
|
||||
};
|
||||
|
||||
mako.enable = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) true;
|
||||
mpv.enable = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) true;
|
||||
newsboat.enable = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) true;
|
||||
mangohud.enable = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) true;
|
||||
|
||||
gtk.icon.enable = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) true;
|
||||
|
||||
kvantum = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||
enable = true;
|
||||
apply = true;
|
||||
};
|
||||
};
|
||||
|
||||
home = {
|
||||
username = primaryUser;
|
||||
stateVersion = "26.05";
|
||||
sessionVariables = lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||
GROQ_API_KEY = config.sops.secrets.GROQ_API_KEY.path;
|
||||
OPENWEATHER_API_KEY = config.sops.secrets.OPENWEATHER_API_KEY.path;
|
||||
};
|
||||
|
||||
file = {
|
||||
"Pictures/Avatar" = {
|
||||
source = "${self}/assets/avatar";
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
"Pictures/Wallpapers" = {
|
||||
source = "${self}/assets/wallpapers";
|
||||
recursive = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
sops = {
|
||||
defaultSopsFile = ../secrets/secrets.yaml;
|
||||
defaultSopsFormat = "yaml";
|
||||
age.keyFile = if pkgs.stdenv.isDarwin then
|
||||
"/Users/${primaryUser}/.config/sops/age/keys.txt"
|
||||
else
|
||||
"/home/${primaryUser}/.config/sops/age/keys.txt";
|
||||
|
||||
secrets = {
|
||||
GROQ_API_KEY = { };
|
||||
OPENWEATHER_API_KEY = { };
|
||||
ssh_private_key = {
|
||||
path = if pkgs.stdenv.isDarwin then
|
||||
"/Users/${primaryUser}/.ssh/ssh"
|
||||
else
|
||||
"/home/${primaryUser}/.ssh/ssh";
|
||||
mode = "0600";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.man.enable = false;
|
||||
}
|
||||
47
home/desktop/default.nix
Normal file
@@ -0,0 +1,47 @@
|
||||
{ pkgs, inputs, ... }: {
|
||||
imports = [ inputs.catppuccin.homeModules.catppuccin ]
|
||||
++ pkgs.lib.optionals (!pkgs.stdenv.isDarwin) [
|
||||
./hyprland
|
||||
./rofi
|
||||
./waybar
|
||||
./gtk.nix
|
||||
./qt.nix
|
||||
] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ ./sketchybar.nix ];
|
||||
|
||||
_module.args.compositor =
|
||||
if pkgs.stdenv.isDarwin then "quartz" else "hyprland";
|
||||
|
||||
home = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||
packages = with pkgs; [ waypaper swww ];
|
||||
file.".config/waypaper/config.ini".source = ./waypaper.ini;
|
||||
};
|
||||
|
||||
# TODO: Qutebrowser install
|
||||
programs = pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) {
|
||||
mangohud = {
|
||||
enable = true;
|
||||
settings = {
|
||||
position = "top-right";
|
||||
|
||||
offset_x = 20;
|
||||
offset_y = 20;
|
||||
|
||||
fps = true;
|
||||
cpu_stats = true;
|
||||
gpu_stats = true;
|
||||
cpu_temp = true;
|
||||
gpu_temp = true;
|
||||
ram = true;
|
||||
vram = true;
|
||||
|
||||
background_alpha = 0.5;
|
||||
};
|
||||
};
|
||||
|
||||
# TODO: Needs config!
|
||||
mpv = {
|
||||
enable = true;
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
53
home/desktop/gtk.nix
Normal file
@@ -0,0 +1,53 @@
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
theme = pkgs.magnetic-catppuccin-gtk;
|
||||
theme_name = "Catppuccin-GTK-Dark";
|
||||
in
|
||||
{
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
adwaita-icon-theme
|
||||
];
|
||||
#pointerCursor = {
|
||||
# gtk.enable = true;
|
||||
# name = "catppuccin-mocha-sapphire-cursors";
|
||||
# package = pkgs.catppuccin-cursors.mochaSapphire;
|
||||
# size = 24;
|
||||
#};
|
||||
file = {
|
||||
".config/gtk-4.0/gtk.css".source = "${theme}/share/themes/${theme_name}/gtk-4.0/gtk.css";
|
||||
".config/gtk-4.0/gtk-dark.css".source = "${theme}/share/themes/${theme_name}/gtk-4.0/gtk-dark.css";
|
||||
".config/gtk-4.0/assets".source = "${theme}/share/themes/${theme_name}/gtk-4.0/assets";
|
||||
};
|
||||
};
|
||||
gtk = {
|
||||
enable = true;
|
||||
font = {
|
||||
name = "FiraCode Nerd Font Propo";
|
||||
size = 12;
|
||||
};
|
||||
theme = {
|
||||
name = theme_name;
|
||||
package = theme;
|
||||
};
|
||||
iconTheme = {
|
||||
name = "Papirus-Dark";
|
||||
package = lib.mkForce (
|
||||
pkgs.catppuccin-papirus-folders.override {
|
||||
accent = "sky";
|
||||
flavor = "mocha";
|
||||
}
|
||||
);
|
||||
};
|
||||
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
|
||||
};
|
||||
dconf = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
gtk-theme = theme_name;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
299
home/desktop/hyprland/default.nix
Normal file
@@ -0,0 +1,299 @@
|
||||
{ inputs, pkgs, ... }:
|
||||
let
|
||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
super = "SUPER";
|
||||
terminal = "kitty";
|
||||
fileManager = "yazi";
|
||||
theme = "-theme $HOME/.config/rofi/custom.rasi";
|
||||
menu = "rofi -show drun ${theme}";
|
||||
filebrowser = "rofi -show filebrowser ${theme}";
|
||||
power = "rofi -show p -modi p:rofi-power-menu -theme $HOME/.config/rofi/power.rasi";
|
||||
apps = "rofi -show window ${theme}";
|
||||
in
|
||||
{
|
||||
|
||||
imports = [
|
||||
./hypridle.nix
|
||||
./hyprlock.nix
|
||||
./mako.nix
|
||||
./portal.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
catppuccin-cursors.mochaDark
|
||||
grim
|
||||
slurp
|
||||
wl-clipboard
|
||||
pamixer
|
||||
brightnessctl
|
||||
playerctl
|
||||
];
|
||||
|
||||
systemd.user.targets.hyprland-session.Unit.Wants = [
|
||||
"xdg-desktop-autostart.target"
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
inherit package;
|
||||
enable = true;
|
||||
|
||||
xwayland.enable = true;
|
||||
|
||||
systemd = {
|
||||
enable = true;
|
||||
variables = [ "--all" ];
|
||||
enableXdgAutostart = false;
|
||||
};
|
||||
|
||||
plugins = with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}; [
|
||||
#hyprbars
|
||||
# hyprexpo
|
||||
];
|
||||
|
||||
settings = {
|
||||
env = [
|
||||
"NIXOS_OZONE_WL,1"
|
||||
"MOZ_ENABLE_WAYLAND,1"
|
||||
"MOZ_WEBRENDER,1"
|
||||
"_JAVA_AWT_WM_NONREPARENTING,1"
|
||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||
"QT_QPA_PLATFORM,wayland"
|
||||
"SDL_VIDEODRIVER,wayland"
|
||||
"GDK_BACKEND,wayland,x11"
|
||||
"XCURSOR_SIZE,24"
|
||||
"EDITOR,nvim"
|
||||
"GSK_RENDERER,gl"
|
||||
"HYPRCURSOR_THEME,catppuccin-mocha-dark"
|
||||
"HYPRCURSOR_SIZE,24"
|
||||
"XCURSOR_THEME,catppuccin-mocha-dark"
|
||||
"XCURSOR_SIZE,24"
|
||||
];
|
||||
|
||||
monitor = [
|
||||
"DP-1, 1920x1080@60, 1920x0, 1"
|
||||
"HDMI-A-2, 1920x1080@60, 0x0, 1"
|
||||
];
|
||||
|
||||
input = {
|
||||
kb_layout = "de";
|
||||
kb_variant = "mac";
|
||||
kb_options = "apple:fn_lock";
|
||||
repeat_rate = 50;
|
||||
repeat_delay = 300;
|
||||
|
||||
accel_profile = "flat";
|
||||
follow_mouse = 1;
|
||||
mouse_refocus = false;
|
||||
sensitivity = 0; # -1.0 to 1.0, 0 means no modification.
|
||||
|
||||
numlock_by_default = 1;
|
||||
touchpad = {
|
||||
natural_scroll = true;
|
||||
tap-to-click = true;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
general = {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
gaps_in = 2;
|
||||
gaps_out = 0;
|
||||
border_size = 4;
|
||||
|
||||
"col.active_border" = "$green";
|
||||
"col.inactive_border" = "$red";
|
||||
|
||||
layout = "dwindle";
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false;
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = 1;
|
||||
|
||||
shadow = {
|
||||
enabled = false;
|
||||
range = 16;
|
||||
render_power = 4;
|
||||
ignore_window = true;
|
||||
color = "$green";
|
||||
color_inactive = "$red";
|
||||
};
|
||||
|
||||
blur = {
|
||||
enabled = false;
|
||||
size = 1;
|
||||
passes = 3;
|
||||
new_optimizations = 1;
|
||||
noise = 0.04;
|
||||
};
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = "yes";
|
||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||
animation = [
|
||||
"windows, 1, 7, myBezier"
|
||||
"windowsOut, 1, 7, default, popin 80%"
|
||||
"border, 1, 10, default"
|
||||
"borderangle, 1, 8, default"
|
||||
"fade, 1, 7, default"
|
||||
"workspaces, 1, 6, default"
|
||||
];
|
||||
};
|
||||
|
||||
# layerrule = [
|
||||
# "ignorezero,notifications"
|
||||
# "ignorezero,rofi"
|
||||
# ];
|
||||
|
||||
dwindle = {
|
||||
pseudotile = "yes";
|
||||
preserve_split = "yes";
|
||||
};
|
||||
|
||||
# gestures = {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
# workspace_swipe = true;
|
||||
# workspace_swipe_fingers = 3;
|
||||
# workspace_swipe_distance = 300;
|
||||
# workspace_swipe_invert = false;
|
||||
# workspace_swipe_cancel_ratio = 0.5;
|
||||
# };
|
||||
|
||||
misc = {
|
||||
force_default_wallpaper = 0;
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
mouse_move_enables_dpms = true;
|
||||
key_press_enables_dpms = true;
|
||||
vfr = true;
|
||||
vrr = 0;
|
||||
};
|
||||
|
||||
device = {
|
||||
name = "usb-optical-mouse-";
|
||||
sensitivity = 0;
|
||||
};
|
||||
#deprecated
|
||||
# windowrulev2 = [
|
||||
# "suppressevent maximize, class:.*"
|
||||
# "float, class:^(com.obsproject.Studio)$"
|
||||
# "size 1280 800, class:^(com.obsproject.Studio)$"
|
||||
# "float, class:^(xdg-desktop-portal-gtk)$"
|
||||
# "center, class:^(xdg-desktop-portal-gtk)$"
|
||||
# ];
|
||||
|
||||
# windowrule = [
|
||||
# "opacity 0.0 override, class:^(xwaylandvideobridge)$"
|
||||
# "noanim, class:^(xwaylandvideobridge)$"
|
||||
# "noinitialfocus, class:^(xwaylandvideobridge)$"
|
||||
# "maxsize 1 1, class:^(xwaylandvideobridge)$"
|
||||
# "noblur, class:^(xwaylandvideobridge)$"
|
||||
# "nofocus, class:^(xwaylandvideobridge)$"
|
||||
# "noblur, class:^(org\\.gnome\\.|io\\.github\\.|org\\.gtk\\.)"
|
||||
# ];
|
||||
|
||||
exec-once = [
|
||||
"swww-daemon & disown"
|
||||
"waybar &"
|
||||
];
|
||||
|
||||
# Keybindings
|
||||
bind = [
|
||||
|
||||
# Application Bindings
|
||||
"${super}, Q, exec, ${terminal}"
|
||||
"${super}, E, exec, ${fileManager}"
|
||||
"${super}, O, exec, obsidian"
|
||||
"${super}, I, exec, floorp"
|
||||
"${super}, G, exec, thunderbird"
|
||||
", XF86Mail, exec, thunderbird"
|
||||
"${super}, N, exec, nautilus"
|
||||
", XF86Search, exec, nautilus"
|
||||
|
||||
# Lock Screen
|
||||
"${super}, M, exit, "
|
||||
|
||||
# Rofi bindings
|
||||
"${super}, F, exec, ${filebrowser}"
|
||||
"${super}, A, exec, ${apps}"
|
||||
", Menu, exec, ${apps}"
|
||||
"${super}, R, exec, ${menu}"
|
||||
", XF86LaunchA, exec, ${menu}"
|
||||
"${super}, S, exec, ${power}"
|
||||
", XF86LaunchB, exec, ${power}"
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
"${super}, left, movefocus, l"
|
||||
"${super}, right, movefocus, r"
|
||||
"${super}, up, movefocus, u"
|
||||
"${super}, down, movefocus, d"
|
||||
|
||||
# Window Modifiers
|
||||
"${super}, P, pseudo, " # dwindle
|
||||
# "${super}, J, togglesplit, " # dwindle doenst exist
|
||||
"${super}, V, togglefloating, " # dwindle
|
||||
"${super}, C, killactive, "
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
"${super}, 1, workspace, 1"
|
||||
"${super}, 2, workspace, 2"
|
||||
"${super}, 3, workspace, 3"
|
||||
"${super}, 4, workspace, 4"
|
||||
"${super}, 5, workspace, 5"
|
||||
"${super}, 6, workspace, 6"
|
||||
"${super}, 7, workspace, 7"
|
||||
"${super}, 8, workspace, 8"
|
||||
"${super}, 9, workspace, 9"
|
||||
"${super}, 0, workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"${super} SHIFT, 1, movetoworkspace, 1"
|
||||
"${super} SHIFT, 2, movetoworkspace, 2"
|
||||
"${super} SHIFT, 3, movetoworkspace, 3"
|
||||
"${super} SHIFT, 4, movetoworkspace, 4"
|
||||
"${super} SHIFT, 5, movetoworkspace, 5"
|
||||
"${super} SHIFT, 6, movetoworkspace, 6"
|
||||
"${super} SHIFT, 7, movetoworkspace, 7"
|
||||
"${super} SHIFT, 8, movetoworkspace, 8"
|
||||
"${super} SHIFT, 9, movetoworkspace, 9"
|
||||
"${super} SHIFT, 0, movetoworkspace, 10"
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
#"${super}, S, togglespecialworkspace, magic"
|
||||
"${super} SHIFT, S, movetoworkspace, special:magic"
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
"${super}, mouse_down, workspace, e+1"
|
||||
"${super}, mouse_up, workspace, e-1"
|
||||
|
||||
# Screenshot
|
||||
''${super}, Z, exec, grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%s_grim.png')''
|
||||
"${super}, U, exec, grim $HOME/Pictures/Screenshots/$(date +'%s_grim.png')"
|
||||
];
|
||||
|
||||
bindl = [
|
||||
#", XF86AudioMute, exec, amixer set Master toggle
|
||||
", XF86AudioMute, exec, pamixer -t"
|
||||
", XF86AudioPlay, exec, playerctl play-pause" # the stupid key is called play , but it toggles
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioPrev, exec, playerctl previous"
|
||||
];
|
||||
|
||||
bindle = [
|
||||
# Multi Media Control
|
||||
", XF86AudioRaiseVolume, exec, pamixer -i 5"
|
||||
", XF86AudioLowerVolume, exec, pamixer -d 5"
|
||||
", XF86MonBrightnessUp, exec, brightnessctl set +5%"
|
||||
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
"${super}, mouse:272, movewindow"
|
||||
"${super}, mouse:273, resizewindow"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
27
home/desktop/hyprland/hypridle.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{ ... }:
|
||||
{
|
||||
# Hypridle configuration
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
ignore_dbus_inhibit = false;
|
||||
lock_cmd = "hyprlock";
|
||||
before_sleep_cmd = "notify-send -u critical \"I'm getting sleepy… I'll see you in my code dreams 💖\" --icon=$HOME/.config/hypr/avatar.png --app-name=Hyprlock";
|
||||
};
|
||||
|
||||
listener = [
|
||||
{
|
||||
timeout = 300;
|
||||
on-timeout = "hyprlock";
|
||||
}
|
||||
{
|
||||
timeout = 600;
|
||||
on-timeout = "hyprctl dispatch dpms off";
|
||||
on-resume = "hyprctl dispatch dpms on";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
112
home/desktop/hyprland/hyprlock.nix
Normal file
@@ -0,0 +1,112 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
|
||||
# Hyprlock configuration
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
||||
"$accent" = "$mauve";
|
||||
"$accentAlpha" = "$mauveAlpha";
|
||||
"$font" = "FiraCode Nerd Font";
|
||||
|
||||
general = {
|
||||
disable_loading_bar = true;
|
||||
hide_cursor = true;
|
||||
};
|
||||
|
||||
background = [
|
||||
{
|
||||
path = "~/Pictures/Wallpapers/lucy_with_cat.png";
|
||||
blur_passes = 1;
|
||||
blur_size = 5;
|
||||
}
|
||||
];
|
||||
|
||||
label = [
|
||||
# TIME
|
||||
{
|
||||
monitor = "";
|
||||
text = "$TIME";
|
||||
color = "$peach";
|
||||
font_size = 90;
|
||||
font_family = "$font";
|
||||
position = "0, -100";
|
||||
halign = "center";
|
||||
valign = "top";
|
||||
}
|
||||
|
||||
# DATE
|
||||
{
|
||||
monitor = "";
|
||||
text = ''cmd[update:43200000] date +"%A, %d %B %Y"'';
|
||||
color = "$peach";
|
||||
font_size = 25;
|
||||
font_family = "$font";
|
||||
position = "0, 100";
|
||||
halign = "center";
|
||||
valign = "bottom";
|
||||
}
|
||||
|
||||
# Message
|
||||
{
|
||||
monitor = "";
|
||||
text = "Waiting for you...";
|
||||
color = "$peach";
|
||||
font_size = 20;
|
||||
font_family = "$font";
|
||||
position = "0, 200";
|
||||
halign = "center";
|
||||
valign = "bottom";
|
||||
}
|
||||
|
||||
# Weather
|
||||
{
|
||||
monitor = "";
|
||||
text = ''cmd[update:60000] curl -s "wttr.in/52.281311,10.527029?format=1"'';
|
||||
color = "$peach";
|
||||
font_size = 20;
|
||||
font_family = "$font";
|
||||
position = "0, 50";
|
||||
halign = "center";
|
||||
valign = "bottom";
|
||||
}
|
||||
];
|
||||
|
||||
# INPUT FIELD
|
||||
input-field = {
|
||||
monitor = "";
|
||||
size = "300, 60";
|
||||
outline_thickness = 4;
|
||||
dots_size = 0.2;
|
||||
dots_spacing = 0.2;
|
||||
dots_center = "true";
|
||||
outer_color = "$red";
|
||||
inner_color = "$surface0";
|
||||
font_color = "$text";
|
||||
fade_on_empty = false;
|
||||
placeholder_text = ''<span foreground="##$textAlpha"><i> Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>'';
|
||||
hide_input = false;
|
||||
check_color = "$accent";
|
||||
fail_color = "$red";
|
||||
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
|
||||
capslock_color = "$yellow";
|
||||
position = "0, -150";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
};
|
||||
|
||||
image = {
|
||||
monitor = "";
|
||||
path = "~/.config/hypr/avatar/avatar.png";
|
||||
size = 300;
|
||||
border_color = "$teal";
|
||||
position = "0, 75";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
12
home/desktop/hyprland/mako.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ ... }:
|
||||
{
|
||||
services.mako = {
|
||||
enable = true;
|
||||
settings = {
|
||||
font = "FiraCodeNerdFontPropo 12";
|
||||
border-size = 4;
|
||||
border-radius = 8;
|
||||
default-timeout = 5000;
|
||||
};
|
||||
};
|
||||
}
|
||||
17
home/desktop/hyprland/portal.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
config = {
|
||||
common.default = [ "gtk" ];
|
||||
hyprland.default = [
|
||||
"gtk"
|
||||
"hyprland"
|
||||
];
|
||||
};
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
];
|
||||
};
|
||||
}
|
||||
0
home/desktop/niri/default.nix
Normal file
0
home/desktop/niri/swayidle.nix
Normal file
0
home/desktop/niri/swaylock.nix
Normal file
110
home/desktop/niri/swaync.nix
Normal file
@@ -0,0 +1,110 @@
|
||||
{ ... }:
|
||||
{
|
||||
services.swaync = {
|
||||
enable = true;
|
||||
settings = {
|
||||
positionX = "center";
|
||||
positionY = "center";
|
||||
layer = "overlay";
|
||||
control-center-layer = "top";
|
||||
layer-shell = true;
|
||||
cssPriority = "user";
|
||||
control-center-margin-top = 100;
|
||||
control-center-margin-bottom = 200;
|
||||
control-center-margin-right = 0;
|
||||
control-center-margin-left = 0;
|
||||
notification-2fa-action = true;
|
||||
notification-inline-replies = false;
|
||||
notification-icon-size = 64;
|
||||
notification-body-image-height = 100;
|
||||
notification-body-image-width = 200;
|
||||
widgets = [
|
||||
"mpris"
|
||||
"volume"
|
||||
"inhibitors"
|
||||
"title"
|
||||
"dnd"
|
||||
"notifications"
|
||||
];
|
||||
widget-config = {
|
||||
|
||||
mpris = {
|
||||
blacklist = [ ];
|
||||
autohide = false;
|
||||
show-album-art = "always";
|
||||
loop-carousel = false;
|
||||
image-size = 96;
|
||||
image-radius = 12;
|
||||
};
|
||||
|
||||
volume = {
|
||||
label = "gain";
|
||||
show-per-app = false;
|
||||
empty-list-label = "Nothin' is playin'";
|
||||
expand-button-label = "⤢";
|
||||
collaps-button-label = "⤡";
|
||||
};
|
||||
|
||||
title = {
|
||||
text = "Hollerin'";
|
||||
clear-all-button = true;
|
||||
button-text = "Sheriff's Pardon";
|
||||
};
|
||||
|
||||
dnd = {
|
||||
text = "Let'er rest";
|
||||
};
|
||||
|
||||
menubar = {
|
||||
"menu#power" = {
|
||||
label = "Power";
|
||||
position = "right";
|
||||
animation-type = "slide_down";
|
||||
animation-duration = 250;
|
||||
actions = [
|
||||
{
|
||||
label = "Bolt It";
|
||||
command = "hyprlock";
|
||||
}
|
||||
{
|
||||
label = "Ride Out";
|
||||
command = "hyprctl dispatch exit";
|
||||
}
|
||||
{
|
||||
label = "Circle Back";
|
||||
command = "systemctl reboot";
|
||||
}
|
||||
{
|
||||
label = "Bet Down the Horses";
|
||||
command = "systemctl poweroff";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
"buttons#media" = {
|
||||
position = "left";
|
||||
actions = [
|
||||
{
|
||||
label = "Play/Pause";
|
||||
command = "playerctl play-pause";
|
||||
}
|
||||
{
|
||||
label = "Next";
|
||||
command = "playerctl next";
|
||||
}
|
||||
{
|
||||
label = "Previous";
|
||||
command = "playerctl previous";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
notifications = {
|
||||
vexpand = true;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
12
home/desktop/qt.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
qt = {
|
||||
enable = true;
|
||||
style.name = "kvantum";
|
||||
platformTheme.name = "kvantum";
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
kdePackages.qt6ct
|
||||
kdePackages.qtstyleplugin-kvantum
|
||||
];
|
||||
}
|
||||
BIN
home/desktop/rofi/background.png
Normal file
|
After Width: | Height: | Size: 9.2 MiB |
232
home/desktop/rofi/custom.rasi
Normal file
@@ -0,0 +1,232 @@
|
||||
* {
|
||||
rosewater: #f5e0dc;
|
||||
flamingo: #f2cdcd;
|
||||
pink: #f5c2e7;
|
||||
mauve: #cba6f7;
|
||||
red: #f38ba8;
|
||||
maroon: #eba0ac;
|
||||
peach: #fab387;
|
||||
yellow: #f9e2af;
|
||||
green: #a6e3a1;
|
||||
teal: #94e2d5;
|
||||
sky: #89dceb;
|
||||
sapphire: #74c7ec;
|
||||
blue: #89b4fa;
|
||||
lavender: #b4befe;
|
||||
text: #cdd6f4;
|
||||
subtext1: #bac2de;
|
||||
subtext0: #a6adc8;
|
||||
overlay2: #9399b2;
|
||||
overlay1: #7f849c;
|
||||
overlay0: #6c7086;
|
||||
surface2: #585b70;
|
||||
surface1: #45475a;
|
||||
surface0: #313244;
|
||||
base: #1e1e2e;
|
||||
mantle: #181825;
|
||||
crust: #11111b;
|
||||
}
|
||||
|
||||
configuration {
|
||||
show-icons: true;
|
||||
modi: "window,drun,filebrowser";
|
||||
display-drun: "Apps";
|
||||
display-filebrowser: "Files";
|
||||
display-run: "RUN";
|
||||
display-window: "Active";
|
||||
drun-display-format: "{name}";
|
||||
window-format: "{w} · {c} · {t}";
|
||||
}
|
||||
|
||||
/* Main Window */
|
||||
window {
|
||||
/* properties for window widget */
|
||||
transparency: "real";
|
||||
location: center;
|
||||
anchor: center;
|
||||
fullscreen: false;
|
||||
width: 50%;
|
||||
height: 90%;
|
||||
x-offset: 0px;
|
||||
y-offset: 0px;
|
||||
|
||||
/* properties for all widgets */
|
||||
enabled: true;
|
||||
border-radius: 1px;
|
||||
cursor: "default";
|
||||
background-color: @base;
|
||||
|
||||
border: 4px;
|
||||
border-color: @yellow;
|
||||
}
|
||||
|
||||
/* Main Box */
|
||||
|
||||
mainbox {
|
||||
enabled: true;
|
||||
spacing: 0px;
|
||||
background-color: transparent;
|
||||
orientation: horizontal;
|
||||
children: [ "imagebox", "listbox" ];
|
||||
}
|
||||
|
||||
imagebox {
|
||||
padding: 20px;
|
||||
background-color: transparent;
|
||||
background-image: url("~/.config/rofi/background.png", height);
|
||||
orientation: vertical;
|
||||
children: [ "inputbar", "weatherelement", "dummy", "mode-switcher" ];
|
||||
}
|
||||
|
||||
listbox {
|
||||
spacing: 20px;
|
||||
padding: 20px;
|
||||
background-color: transparent;
|
||||
orientation: vertical;
|
||||
children: [ "message", "listview" ];
|
||||
}
|
||||
|
||||
weatherelement {
|
||||
border-radius: 20px;
|
||||
background-color: transparent;
|
||||
text-color: @peach;
|
||||
str: "Hello This is text";
|
||||
}
|
||||
|
||||
dummy {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Input */
|
||||
inputbar {
|
||||
enabled: true;
|
||||
spacing: 10px;
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
background-color: @crust;
|
||||
text-color: @text;
|
||||
children: [ "textbox-prompt-colon", "entry" ];
|
||||
}
|
||||
textbox-prompt-colon {
|
||||
enabled: true;
|
||||
expand: false;
|
||||
str: "";
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
entry {
|
||||
enabled: true;
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
cursor: text;
|
||||
placeholder: "Search";
|
||||
placeholder-color: inherit;
|
||||
}
|
||||
|
||||
/* Mode Switcher */
|
||||
mode-switcher{
|
||||
enabled: true;
|
||||
spacing: 20px;
|
||||
background-color: transparent;
|
||||
text-color: @text;
|
||||
}
|
||||
button {
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
background-color: @base;
|
||||
text-color: inherit;
|
||||
cursor: pointer;
|
||||
}
|
||||
button selected {
|
||||
background-color: @base;
|
||||
text-color: @pink;
|
||||
}
|
||||
|
||||
/* Listview */
|
||||
listview {
|
||||
enabled: true;
|
||||
columns: 1;
|
||||
lines: 8;
|
||||
cycle: true;
|
||||
dynamic: true;
|
||||
scrollbar: false;
|
||||
layout: vertical;
|
||||
reverse: false;
|
||||
fixed-height: true;
|
||||
fixed-columns: true;
|
||||
|
||||
spacing: 10px;
|
||||
background-color: transparent;
|
||||
text-color: @text;
|
||||
cursor: "default";
|
||||
}
|
||||
|
||||
/* Elements */
|
||||
element {
|
||||
enabled: true;
|
||||
spacing: 15px;
|
||||
padding: 8px;
|
||||
border-radius: 10px;
|
||||
background-color: transparent;
|
||||
text-color: @mauve;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
element normal.normal {
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
element normal.urgent {
|
||||
background-color: inherit;
|
||||
text-color: @red;
|
||||
}
|
||||
element normal.active {
|
||||
background-color: inherit;
|
||||
text-color: @blue;
|
||||
}
|
||||
|
||||
element selected.normal {
|
||||
background-color: @crust;
|
||||
text-color: @pink;
|
||||
}
|
||||
element selected.urgent {
|
||||
background-color: @crust;
|
||||
text-color: @maroon;
|
||||
}
|
||||
element selected.active {
|
||||
background-color: @crust;
|
||||
text-color: @sky;
|
||||
}
|
||||
element-icon {
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
size: 32px;
|
||||
cursor: inherit;
|
||||
}
|
||||
element-text {
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
cursor: inherit;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.0;
|
||||
}
|
||||
|
||||
/* Message */
|
||||
message {
|
||||
background-color: transparent;
|
||||
}
|
||||
textbox {
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
background-color: @overlay0;
|
||||
text-color: @peach;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.0;
|
||||
}
|
||||
|
||||
error-message {
|
||||
padding: 15px;
|
||||
border-radius: 20px;
|
||||
background-color: @surface0;
|
||||
text-color: @red;
|
||||
}
|
||||
31
home/desktop/rofi/default.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
home.packages = with pkgs; [
|
||||
rofi-power-menu
|
||||
rofi-calc
|
||||
];
|
||||
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
cycle = true;
|
||||
package = pkgs.rofi;
|
||||
font = "FiraCode Nerd Font Mono 12";
|
||||
|
||||
location = "center";
|
||||
terminal = "${pkgs.kitty}/bin/kitty";
|
||||
|
||||
};
|
||||
|
||||
home.file = {
|
||||
".config/rofi/background.png".source = ./background.png;
|
||||
".config/rofi/custom.rasi".source = ./custom.rasi;
|
||||
".config/rofi/power.jpg".source = ./power.jpg;
|
||||
".config/rofi/power.rasi".source = ./power.rasi;
|
||||
".config/rofi/smoking_girl.png".source = ./smoking_girl.png;
|
||||
};
|
||||
|
||||
}
|
||||
BIN
home/desktop/rofi/power.jpg
Normal file
|
After Width: | Height: | Size: 447 KiB |
163
home/desktop/rofi/power.rasi
Normal file
@@ -0,0 +1,163 @@
|
||||
* {
|
||||
rosewater: #f5e0dc;
|
||||
flamingo: #f2cdcd;
|
||||
pink: #f5c2e7;
|
||||
mauve: #cba6f7;
|
||||
red: #f38ba8;
|
||||
maroon: #eba0ac;
|
||||
peach: #fab387;
|
||||
yellow: #f9e2af;
|
||||
green: #a6e3a1;
|
||||
teal: #94e2d5;
|
||||
sky: #89dceb;
|
||||
sapphire: #74c7ec;
|
||||
blue: #89b4fa;
|
||||
lavender: #b4befe;
|
||||
text: #cdd6f4;
|
||||
subtext1: #bac2de;
|
||||
subtext0: #a6adc8;
|
||||
overlay2: #9399b2;
|
||||
overlay1: #7f849c;
|
||||
overlay0: #6c7086;
|
||||
surface2: #585b70;
|
||||
surface1: #45475a;
|
||||
surface0: #313244;
|
||||
base: #1e1e2e;
|
||||
mantle: #181825;
|
||||
crust: #11111b;
|
||||
}
|
||||
|
||||
configuration {
|
||||
font: "Fira Code Bold 20px";
|
||||
show-icons: true;
|
||||
}
|
||||
|
||||
/*
|
||||
USE_BUTTONS=YES
|
||||
*/
|
||||
|
||||
/*****----- Main Window -----*****/
|
||||
window {
|
||||
transparency: "real";
|
||||
location: center;
|
||||
anchor: center;
|
||||
fullscreen: false;
|
||||
width: 1000px;
|
||||
x-offset: 0px;
|
||||
y-offset: 0px;
|
||||
|
||||
padding: 0px;
|
||||
border: 4px solid;
|
||||
border-radius: 2px;
|
||||
border-color: @blue;
|
||||
cursor: "default";
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
/*****----- Main Box -----*****/
|
||||
mainbox {
|
||||
enabled: true;
|
||||
spacing: 0px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: 0px solid;
|
||||
border-radius: 0px;
|
||||
border-color: @blue;
|
||||
background-color: transparent;
|
||||
children: [ "inputbar", "listview", "message" ];
|
||||
}
|
||||
|
||||
|
||||
/*****----- Inputbar -----*****/
|
||||
inputbar {
|
||||
enabled: true;
|
||||
spacing: 20px;
|
||||
padding: 100px 40px;
|
||||
background-color: transparent;
|
||||
background-image: url("~/.config/rofi/power.jpg", width);
|
||||
children: [ "textbox-prompt-colon", "prompt"];
|
||||
}
|
||||
|
||||
dummy {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
textbox-prompt-colon {
|
||||
enabled: true;
|
||||
expand: false;
|
||||
str: " System";
|
||||
padding: 15px;
|
||||
border: 0px 0px 0px 10px;
|
||||
border-radius: 100% 100% 0px 100%;
|
||||
border-color: @blue;
|
||||
background-color: @crust;
|
||||
text-color: @text;
|
||||
}
|
||||
prompt {
|
||||
enabled: true;
|
||||
padding: 15px;
|
||||
border: 0px;
|
||||
border-radius: 0px 100% 100% 100%;
|
||||
border-color: @blue;
|
||||
background-color: @crust;
|
||||
text-color: @text;
|
||||
}
|
||||
|
||||
/*****----- Listview -----*****/
|
||||
listview {
|
||||
enabled: true;
|
||||
columns: 6;
|
||||
lines: 1;
|
||||
cycle: true;
|
||||
dynamic: true;
|
||||
scrollbar: false;
|
||||
layout: vertical;
|
||||
reverse: false;
|
||||
fixed-height: true;
|
||||
fixed-columns: true;
|
||||
|
||||
spacing: 30px;
|
||||
margin: 10px;
|
||||
background-color: transparent;
|
||||
cursor: "default";
|
||||
}
|
||||
|
||||
/*****----- Elements -----*****/
|
||||
element {
|
||||
enabled: true;
|
||||
padding: 10px;
|
||||
border-radius: 1%;
|
||||
background-color: @crust;
|
||||
text-color: @text;
|
||||
cursor: pointer;
|
||||
children: [ element-text ];
|
||||
}
|
||||
element-text {
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
cursor: inherit;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.5;
|
||||
}
|
||||
element selected.normal {
|
||||
background-color: @crust;
|
||||
text-color: @yellow;
|
||||
}
|
||||
|
||||
/*****----- Message -----*****/
|
||||
message {
|
||||
enabled: true;
|
||||
margin: 0px;
|
||||
padding: 15px;
|
||||
border-radius: 0px;
|
||||
background-color: @crust;
|
||||
text-color: @yellow;
|
||||
}
|
||||
textbox {
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.5;
|
||||
}
|
||||
|
||||
|
||||
BIN
home/desktop/rofi/smoking_girl.png
Normal file
|
After Width: | Height: | Size: 5.6 MiB |
7
home/desktop/sketchybar.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{ pkgs, ... }: {
|
||||
programs.sketchybar = {
|
||||
enable = true;
|
||||
configType = "lua";
|
||||
sbarLuaPackage = pkgs.sbarlua;
|
||||
};
|
||||
}
|
||||
181
home/desktop/waybar/common.nix
Normal file
@@ -0,0 +1,181 @@
|
||||
{
|
||||
widgets = {
|
||||
"group/media" = {
|
||||
orientation = "horizontal";
|
||||
|
||||
modules = [
|
||||
"mpris"
|
||||
"custom/cava"
|
||||
"wireplumber"
|
||||
];
|
||||
};
|
||||
|
||||
mpris = {
|
||||
format = "{player_icon}";
|
||||
format-paused = "{status_icon}";
|
||||
max-length = 100;
|
||||
player-icons = {
|
||||
default = "||";
|
||||
mpv = "||";
|
||||
};
|
||||
status-icons = {
|
||||
paused = "▶";
|
||||
};
|
||||
};
|
||||
|
||||
"custom/cava" = {
|
||||
exec = "sh ~/.config/waybar/cava.sh";
|
||||
format = "{} ♪";
|
||||
on-click = "hyprctl dispatch focuswindow class:spotify";
|
||||
};
|
||||
|
||||
wireplumber = {
|
||||
format = "{volume}%";
|
||||
format-muted = "";
|
||||
max-volume = 110;
|
||||
scroll-step = 0.2;
|
||||
};
|
||||
|
||||
"group/hardware" = {
|
||||
orientation = "horizontal";
|
||||
modules = [
|
||||
"cpu"
|
||||
"network"
|
||||
"memory"
|
||||
"disk"
|
||||
"temperature"
|
||||
];
|
||||
};
|
||||
|
||||
network = {
|
||||
# Wifi
|
||||
tooltip = true;
|
||||
format-wifi = "{icon} ";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
rotate = 0;
|
||||
|
||||
# Ethernet
|
||||
format-ethernet = "⇵{bandwidthTotalBits}";
|
||||
tooltip-format = "Network: <big><b>{essid}</b></big>\nSignal strength: <b>{signaldBm}dBm ({signalStrength}%)</b>\nFrequency: <b>{frequency}MHz</b>\nInterface: <b>{ifname}</b>\nIP: <b>{ipaddr}/{cidr}</b>\nGateway: <b>{gwaddr}</b>\nNetmask: <b>{netmask}</b>\nCurrent : <b>{bandwidthTotalBits}</b>\nUp : <b>{bandwidthUpBits}</b>\nDown : <b>{bandwidthDownBits}</b>";
|
||||
format-linked = " {ifname} (No IP)";
|
||||
format-disconnected = " ";
|
||||
tooltip-format-disconnected = "Disconnected";
|
||||
interval = 2;
|
||||
};
|
||||
|
||||
memory = {
|
||||
interval = 1;
|
||||
#rotate = 270;
|
||||
format = "{icon} {percentage}%";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
max-length = 10;
|
||||
};
|
||||
|
||||
cpu = {
|
||||
interval = 1;
|
||||
format = "{icon} {usage}%";
|
||||
#rotate = 270;
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
|
||||
temperature = {
|
||||
format = " {temperatureC}°C";
|
||||
thermal-zone = 0;
|
||||
hwmon-path = "/sys/class/thermal/thermal_zone1/temp";
|
||||
critical-threshold = 80;
|
||||
};
|
||||
|
||||
disk = {
|
||||
format = " {percentage_free}%";
|
||||
tooltip = true;
|
||||
tooltip-format = "{free} / {total} ({percentage_free})";
|
||||
};
|
||||
|
||||
clock = {
|
||||
format = "{:%a %b %d, %I:%M %p}";
|
||||
rotate = 0;
|
||||
on-click = " ";
|
||||
tooltip-format = "<tt>{calendar}</tt>";
|
||||
calendar = {
|
||||
mode = "month";
|
||||
mode-mon-col = 3;
|
||||
on-scroll = 1;
|
||||
on-click-right = "mode";
|
||||
format = {
|
||||
months = "<span color='#cba6f7'><b>{}</b></span>";
|
||||
weekdays = "<span color='#74c7ec'><b>{}</b></span>";
|
||||
today = "<span color='#f38ba8'><b>{}</b></span>";
|
||||
};
|
||||
};
|
||||
actions = {
|
||||
on-click-right = "mode";
|
||||
on-click-forward = "tz_up";
|
||||
on-click-backward = "tz_down";
|
||||
on-scroll-up = "shift_up";
|
||||
on-scroll-down = "shift_down";
|
||||
};
|
||||
};
|
||||
|
||||
"custom/nixicon" = {
|
||||
format = " ";
|
||||
on-click = "rofi -show drun -theme $HOME/.config/rofi/custom.rasi";
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
"custom/weather" = {
|
||||
format = "{}";
|
||||
return-type = "json";
|
||||
exec = ''
|
||||
curl -s -X GET "https://api.openweathermap.org/data/2.5/weather?lat=52.281311&lon=10.527029&appid=$(cat $OPENWEATHER_API_KEY)&units=metric&lang=en" | jq -c '{text: "\(.name) \(.main.temp)C°"}'
|
||||
'';
|
||||
interval = 120;
|
||||
on-click = ''
|
||||
data=$(curl -s -X GET "https://api.openweathermap.org/data/2.5/weather?lat=52.281311&lon=10.527029&appid=$(cat $OPENWEATHER_API_KEY)&units=metric&lang=en")
|
||||
city=$(echo "$data" | jq -r '.name')
|
||||
temp=$(echo "$data" | jq -r '.main.temp')
|
||||
feels=$(echo "$data" | jq -r '.main.feels_like')
|
||||
humidity=$(echo "$data" | jq -r '.main.humidity')
|
||||
wind=$(echo "$data" | jq -r '.wind.speed')
|
||||
clouds=$(echo "$data" | jq -r '.clouds.all')
|
||||
sunrise=$(echo "$data" | jq -r '.sys.sunrise | strftime("%H:%M")')
|
||||
sunset=$(echo "$data" | jq -r '.sys.sunset | strftime("%H:%M")')
|
||||
notify-send "$city" "Temperature: $temp °C\nFeels Like: $feels °C\nHumidity: $humidity%\nWind: $wind m/s\nClouds: $clouds%\nSunrise at: $sunrise\nSunset at: $sunset" -u normal --icon="$HOME/Pictures/Avatar/avatar_weather_no_bg.png"
|
||||
'';
|
||||
};
|
||||
|
||||
"custom/wallpaper" = {
|
||||
format = "【{} 】";
|
||||
exec = "basename $(swww query | grep -oP 'image: \\K.*')";
|
||||
interval = 5;
|
||||
on-click = "waypaper";
|
||||
tooltip = true;
|
||||
tooltip-format = "{}";
|
||||
max-length = 30;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
42
home/desktop/waybar/configs/cava.sh
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Not my own work. Credit to original author
|
||||
|
||||
#----- Optimized bars animation without much CPU usage increase --------
|
||||
bar="▁▂▃▄▅▆▇█"
|
||||
dict="s/;//g"
|
||||
|
||||
# Calculate the length of the bar outside the loop
|
||||
bar_length=${#bar}
|
||||
|
||||
# Create dictionary to replace char with bar
|
||||
for ((i = 0; i < bar_length; i++)); do
|
||||
dict+=";s/$i/${bar:$i:1}/g"
|
||||
done
|
||||
|
||||
# Create cava config
|
||||
config_file="/tmp/bar_cava_config"
|
||||
cat >"$config_file" <<EOF
|
||||
[general]
|
||||
# Older systems show significant CPU use with default framerate
|
||||
# Setting maximum framerate to 30
|
||||
# You can increase the value if you wish
|
||||
framerate = 60
|
||||
bars = 14
|
||||
|
||||
[input]
|
||||
method = pulse
|
||||
source = auto
|
||||
|
||||
[output]
|
||||
method = raw
|
||||
raw_target = /dev/stdout
|
||||
data_format = ascii
|
||||
ascii_max_range = 7
|
||||
EOF
|
||||
|
||||
# Kill cava if it's already running
|
||||
pkill -f "cava -p $config_file"
|
||||
|
||||
# Read stdout from cava and perform substitution in a single sed command
|
||||
cava -p "$config_file" | sed -u "$dict"
|
||||
329
home/desktop/waybar/configs/nix-snowflake.svg
Executable file
@@ -0,0 +1,329 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="535"
|
||||
height="535"
|
||||
viewBox="0 0 501.56251 501.56249"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
sodipodi:docname="nix-snowflake.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5562">
|
||||
<stop
|
||||
style="stop-color:#699ad7;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop5564" />
|
||||
<stop
|
||||
id="stop5566"
|
||||
offset="0.24345198"
|
||||
style="stop-color:#7eb1dd;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#7ebae4;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop5568" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5053">
|
||||
<stop
|
||||
style="stop-color:#415e9a;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop5055" />
|
||||
<stop
|
||||
id="stop5057"
|
||||
offset="0.23168644"
|
||||
style="stop-color:#4a6baf;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#5277c3;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop5059" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5960"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop5962"
|
||||
offset="0"
|
||||
style="stop-color:#637ddf;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#649afa;stop-opacity:1"
|
||||
offset="0.23168644"
|
||||
id="stop5964" />
|
||||
<stop
|
||||
id="stop5966"
|
||||
offset="1"
|
||||
style="stop-color:#719efa;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5867">
|
||||
<stop
|
||||
style="stop-color:#7363df;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop5869" />
|
||||
<stop
|
||||
id="stop5871"
|
||||
offset="0.23168644"
|
||||
style="stop-color:#6478fa;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#719efa;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop5873" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="515.97058"
|
||||
x2="282.26105"
|
||||
y1="338.62445"
|
||||
x1="213.95642"
|
||||
gradientTransform="translate(-197.75174,-337.1451)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient5855-8"
|
||||
xlink:href="#linearGradient5867"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="247.58188"
|
||||
x2="-702.75317"
|
||||
y1="102.74675"
|
||||
x1="-775.20807"
|
||||
gradientTransform="translate(983.36076,601.38885)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient4544"
|
||||
xlink:href="#linearGradient5960"
|
||||
inkscape:collect="always" />
|
||||
<clipPath
|
||||
id="clipPath4501"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<circle
|
||||
r="241.06563"
|
||||
cy="686.09473"
|
||||
cx="335.13995"
|
||||
id="circle4503"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#adadad;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
id="clipPath5410"
|
||||
clipPathUnits="userSpaceOnUse">
|
||||
<circle
|
||||
r="241.13741"
|
||||
cy="340.98975"
|
||||
cx="335.98114"
|
||||
id="circle5412"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
</clipPath>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5053"
|
||||
id="linearGradient5137"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(864.55062,-2197.497)"
|
||||
x1="-584.19934"
|
||||
y1="782.33563"
|
||||
x2="-496.29703"
|
||||
y2="937.71399" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5053"
|
||||
id="linearGradient5147"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(864.55062,-2197.497)"
|
||||
x1="-584.19934"
|
||||
y1="782.33563"
|
||||
x2="-496.29703"
|
||||
y2="937.71399" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5562"
|
||||
id="linearGradient5162"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(70.505061,-1761.3076)"
|
||||
x1="200.59668"
|
||||
y1="351.41116"
|
||||
x2="290.08701"
|
||||
y2="506.18814" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5562"
|
||||
id="linearGradient5172"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(70.505061,-1761.3076)"
|
||||
x1="200.59668"
|
||||
y1="351.41116"
|
||||
x2="290.08701"
|
||||
y2="506.18814" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5562"
|
||||
id="linearGradient5182"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(70.505061,-1761.3076)"
|
||||
x1="200.59668"
|
||||
y1="351.41116"
|
||||
x2="290.08701"
|
||||
y2="506.18814" />
|
||||
<linearGradient
|
||||
y2="506.18814"
|
||||
x2="290.08701"
|
||||
y1="351.41116"
|
||||
x1="200.59668"
|
||||
gradientTransform="translate(70.505061,-1761.3076)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient5201"
|
||||
xlink:href="#linearGradient5562"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="937.71399"
|
||||
x2="-496.29703"
|
||||
y1="782.33563"
|
||||
x1="-584.19934"
|
||||
gradientTransform="translate(864.55062,-2197.497)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient5205"
|
||||
xlink:href="#linearGradient5053"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5562"
|
||||
id="linearGradient4328"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(70.650339,-1055.1511)"
|
||||
x1="200.59668"
|
||||
y1="351.41116"
|
||||
x2="290.08701"
|
||||
y2="506.18814" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5053"
|
||||
id="linearGradient4330"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(864.69589,-1491.3405)"
|
||||
x1="-584.19934"
|
||||
y1="782.33563"
|
||||
x2="-496.29703"
|
||||
y2="937.71399" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.70904368"
|
||||
inkscape:cx="99.429699"
|
||||
inkscape:cy="195.33352"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer3"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1050"
|
||||
inkscape:window-x="1920"
|
||||
inkscape:window-y="30"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="gradient-logo"
|
||||
style="display:inline;opacity:1"
|
||||
transform="translate(-156.41121,933.30685)">
|
||||
<g
|
||||
id="g2"
|
||||
transform="matrix(0.99994059,0,0,0.99994059,-0.06321798,33.188377)"
|
||||
style="stroke-width:1.00006">
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3336-6"
|
||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z"
|
||||
style="opacity:1;fill:url(#linearGradient4328);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00018;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<use
|
||||
height="100%"
|
||||
width="100%"
|
||||
transform="rotate(60,407.11155,-715.78724)"
|
||||
id="use3439-6"
|
||||
inkscape:transform-center-y="151.59082"
|
||||
inkscape:transform-center-x="124.43045"
|
||||
xlink:href="#path3336-6"
|
||||
y="0"
|
||||
x="0"
|
||||
style="stroke-width:1.00006" />
|
||||
<use
|
||||
height="100%"
|
||||
width="100%"
|
||||
transform="rotate(-60,407.31177,-715.70016)"
|
||||
id="use3445-0"
|
||||
inkscape:transform-center-y="75.573958"
|
||||
inkscape:transform-center-x="-168.20651"
|
||||
xlink:href="#path3336-6"
|
||||
y="0"
|
||||
x="0"
|
||||
style="stroke-width:1.00006" />
|
||||
<use
|
||||
height="100%"
|
||||
width="100%"
|
||||
transform="rotate(180,407.41868,-715.7565)"
|
||||
id="use3449-5"
|
||||
inkscape:transform-center-y="-139.94592"
|
||||
inkscape:transform-center-x="59.669705"
|
||||
xlink:href="#path3336-6"
|
||||
y="0"
|
||||
x="0"
|
||||
style="stroke-width:1.00006" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4330);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00018;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z"
|
||||
id="path4260-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
<use
|
||||
height="100%"
|
||||
width="100%"
|
||||
transform="rotate(120,407.33916,-716.08356)"
|
||||
id="use4354-5"
|
||||
xlink:href="#path4260-0"
|
||||
y="0"
|
||||
x="0"
|
||||
style="display:inline;stroke-width:1.00006" />
|
||||
<use
|
||||
height="100%"
|
||||
width="100%"
|
||||
transform="rotate(-120,407.28823,-715.86995)"
|
||||
id="use4362-2"
|
||||
xlink:href="#path4260-0"
|
||||
y="0"
|
||||
x="0"
|
||||
style="display:inline;stroke-width:1.00006" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
175
home/desktop/waybar/configs/style.css
Normal file
@@ -0,0 +1,175 @@
|
||||
@import "catppuccin.css";
|
||||
|
||||
* {
|
||||
border: none;
|
||||
font-family: "FiraCode Nerd Font";
|
||||
font-size: 15px;
|
||||
min-height: 10px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: @crust;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
/* - Genera rules for visible modules -- */
|
||||
#media,
|
||||
#clock,
|
||||
#cpu,
|
||||
#memory,
|
||||
#disk,
|
||||
#temperature,
|
||||
#network,
|
||||
#custom-wallpaper,
|
||||
#media,
|
||||
#custom-weather {
|
||||
color: @crust;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
/* Separation to the left */
|
||||
#custom-nixicon,
|
||||
#cpu {
|
||||
margin-left: 5px;
|
||||
border-top-left-radius: 10px;
|
||||
border-bottom-left-radius: 10px;
|
||||
}
|
||||
|
||||
/* Separation to the rigth */
|
||||
#clock,
|
||||
#temperature {
|
||||
margin-right: 20px;
|
||||
border-top-right-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
}
|
||||
|
||||
/* -- Specific styles -- */
|
||||
|
||||
#custom-nixicon {
|
||||
background-image: url("nix-snowflake.svg");
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
min-height: 24px;
|
||||
min-width: 24px;
|
||||
|
||||
padding: 0px;
|
||||
padding-right: 15px;
|
||||
padding-left: 10px;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
/* Hardware Group */
|
||||
#clock {
|
||||
background: @yellow;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
background: @blue;
|
||||
}
|
||||
|
||||
#memory {
|
||||
background: @red;
|
||||
}
|
||||
|
||||
#disk {
|
||||
background: @peach;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
background: @sky;
|
||||
}
|
||||
|
||||
#network {
|
||||
background: @lavender;
|
||||
padding-right: 13px;
|
||||
}
|
||||
|
||||
/* Workspace */
|
||||
#workspaces {
|
||||
border-radius: 10px;
|
||||
margin: 6px 5px;
|
||||
padding: 0px 6px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: @text;
|
||||
background: transparent;
|
||||
padding: 4px 4px;
|
||||
transition: color 0.3s ease, text-shadow 0.3s ease, transform 0.3s ease;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#workspaces button.occupied {
|
||||
color: @red;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: @green;
|
||||
text-shadow: 0 0 4px @green;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
color: @teal;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#workspaces button.active:hover {}
|
||||
|
||||
|
||||
|
||||
/* Media Group */
|
||||
#media {
|
||||
background: @overlay2;
|
||||
border-radius: 10px;
|
||||
color: @crust;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#custom-cava {
|
||||
color: @sky;
|
||||
}
|
||||
|
||||
#wireplumber, #custom-cava, #mpris {
|
||||
margin-left: 10px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
#wireplumber {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
|
||||
/* Weather */
|
||||
#custom-weather {
|
||||
background: @sky;
|
||||
color: @crust;
|
||||
border-radius: 10px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
/* SwayNC */
|
||||
#custom-notification {
|
||||
font-family: "NotoSansMono Nerd Font";
|
||||
background: @green;
|
||||
border-radius: 10px;
|
||||
padding-left: 10px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
/* Wallpaper */
|
||||
#custom-wallpaper {
|
||||
background: @red;
|
||||
color: @mantle;
|
||||
border-radius: 10px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
1
home/desktop/waybar/configs/style.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*{border:none;min-height:10px;font-family:FiraCode Nerd Font;font-size:15px}window#waybar{background:@crust}window#waybar.hidden{opacity:.2} #media,#clock,#cpu,#memory,#disk,#temperature,#network,#custom-wallpaper,#media,#custom-weather{color:@crust;margin-top:6px;margin-bottom:6px;padding-left:10px;padding-right:10px;transition:none}#custom-nixicon,#cpu{border-top-left-radius:10px;border-bottom-left-radius:10px;margin-left:5px}#clock,#temperature{border-top-right-radius:10px;border-bottom-right-radius:10px;margin-right:20px}#custom-nixicon{background-image:url(nix-snowflake.svg);background-position:50%;background-repeat:no-repeat;background-size:contain;min-width:24px;min-height:24px;margin-top:6px;margin-bottom:6px;margin-left:15px;padding:0 15px 0 10px}#clock{background:@yellow}#cpu{background:@blue}#memory{background:@red}#disk{background:@peach}#temperature{background:@sky}#network{background:@lavender;padding-right:13px}#workspaces{border-radius:10px;margin:6px 5px;padding:0 6px}#workspaces button{color:@text;background:0 0;border:none;padding:4px;transition:color .3s,text-shadow .3s,transform .3s}#workspaces button.occupied{color:@red}#workspaces button.active{color:@green;text-shadow:0 0 4px @green}#workspaces button:hover{color:@teal;border:none}#media{background:@overlay2;color:@crust;border-radius:10px;margin-left:20px}#custom-cava{color:@green}#wireplumber,#custom-cava,#mpris{margin-left:10px;margin-right:5px}#wireplumber{margin-right:5px}#custom-weather{background:@sky;color:@crust;border-radius:10px;margin-right:20px}#custom-notification{background:@green;border-radius:10px;padding-left:10px;padding-right:5px;font-family:NotoSansMono Nerd Font}#custom-wallpaper{background:@red;color:@mantle;border-radius:10px;margin-left:5px}
|
||||
20
home/desktop/waybar/default.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
pkgs,
|
||||
compositor ? "hyprland",
|
||||
...
|
||||
}:
|
||||
{
|
||||
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
package = pkgs.waybar;
|
||||
}
|
||||
// (import ./dual.nix { inherit compositor; });
|
||||
home = {
|
||||
packages = with pkgs; [ cava ];
|
||||
file.".config/waybar" = {
|
||||
source = ./configs;
|
||||
recursive = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
52
home/desktop/waybar/dual.nix
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
compositor ? "hyprland",
|
||||
}:
|
||||
let
|
||||
common = import ./common.nix;
|
||||
wm = if compositor == "hyprland" then import ./hyprland-wm.nix else import ./niri-wm.nix;
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
settings = {
|
||||
mainBar = {
|
||||
layer = "top";
|
||||
position = "top";
|
||||
height = 30;
|
||||
output = [ "DP-1" ];
|
||||
modules-left = [
|
||||
"custom/nixicon"
|
||||
"clock"
|
||||
];
|
||||
modules-center = [
|
||||
"hyprland/workspaces"
|
||||
"niri/workspaces"
|
||||
"custom/mako"
|
||||
"custom/swaync"
|
||||
];
|
||||
modules-right = [
|
||||
"group/hardware"
|
||||
];
|
||||
}
|
||||
// common.widgets
|
||||
// wm.widgets;
|
||||
|
||||
secondBar = {
|
||||
layer = "top";
|
||||
position = "top";
|
||||
height = 30;
|
||||
output = [ "HDMI-A-2" ];
|
||||
modules-left = [
|
||||
"group/media"
|
||||
"custom/wallpaper"
|
||||
];
|
||||
modules-center = [
|
||||
"hyprland/workspaces"
|
||||
"niri/workspaces"
|
||||
];
|
||||
modules-right = [ "custom/weather" ];
|
||||
}
|
||||
// common.widgets
|
||||
// wm.widgets;
|
||||
};
|
||||
|
||||
}
|
||||
23
home/desktop/waybar/hyprland-wm.nix
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
widgets = {
|
||||
"hyprland/workspaces" = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
default = "";
|
||||
active = "";
|
||||
};
|
||||
};
|
||||
"custom/mako" = {
|
||||
tooltip = false;
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
enabled = " ";
|
||||
disabled = " ";
|
||||
};
|
||||
return-type = "json";
|
||||
exec = "makoctl mode | grep -q do-not-disturb && echo '{\"text\":\"\",\"class\":\"disabled\"}' || echo '{\"text\":\"\",\"class\":\"enabled\"}'";
|
||||
on-click = "makoctl mode -t do-not-disturb";
|
||||
interval = 1;
|
||||
};
|
||||
};
|
||||
}
|
||||
31
home/desktop/waybar/niri-wm.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
widgets = {
|
||||
"niri/workspaces" = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
default = "";
|
||||
active = "";
|
||||
};
|
||||
};
|
||||
"custom/swaync" = {
|
||||
tooltip = false;
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
notification = "<span foreground='red'><sup></sup></span>";
|
||||
none = " ";
|
||||
dnd-notification = "<span foreground='red'><sup></sup></span>";
|
||||
dnd-none = " ";
|
||||
inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
||||
inhibited-none = " ";
|
||||
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
||||
dnd-inhibited-none = " ";
|
||||
};
|
||||
return-type = "json";
|
||||
exec-if = "which swaync-client";
|
||||
exec = "swaync-client -swb";
|
||||
on-click = "swaync-client -t -sw";
|
||||
on-click-right = "swaync-client -d -sw";
|
||||
escape = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
25
home/desktop/waypaper.ini
Normal file
@@ -0,0 +1,25 @@
|
||||
[Settings]
|
||||
# Which backend to use
|
||||
backend = swww
|
||||
|
||||
# Wallpaper directory to browse
|
||||
wallpaper_dirs = ~/Pictures/Wallpapers/
|
||||
|
||||
# Transition settings for swww
|
||||
swww_transition = wave
|
||||
swww_fps = 30
|
||||
swww_duration = 0.7
|
||||
|
||||
# Restore wallpaper on startup
|
||||
restore_last = true
|
||||
|
||||
# Fit options: fill | contain | cover | center | tile
|
||||
mode = fill
|
||||
|
||||
# Enable preview thumbnails
|
||||
show_thumbnails = true
|
||||
|
||||
# Random wallpaper button
|
||||
random = true
|
||||
|
||||
|
||||
171
home/fastfetch.jsonc
Normal file
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||
"logo": {
|
||||
"type": "kitty-icat",
|
||||
"source": "~/Pictures/Avatar/avatar_no_bg.png",
|
||||
// "height": 15,
|
||||
"width": 36,
|
||||
"padding": {
|
||||
"top": 0,
|
||||
"left": 0
|
||||
}
|
||||
},
|
||||
"modules": [
|
||||
"break",
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m┌──────────────────────Hardware──────────────────────┐"
|
||||
},
|
||||
{
|
||||
"type": "host",
|
||||
"key": " PC",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "cpu",
|
||||
"key": "│ ├",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "gpu",
|
||||
"key": "│ ├",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "disk",
|
||||
"key": "│ ├",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "memory",
|
||||
"key": "└ └",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
|
||||
},
|
||||
"break",
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m┌──────────────────────Software──────────────────────┐"
|
||||
},
|
||||
{
|
||||
"type": "os",
|
||||
"key": " OS",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "kernel",
|
||||
"key": "│ ├",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "bios",
|
||||
"key": "│ ├",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "packages",
|
||||
"key": "│ ├",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"key": "└ └",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
"break",
|
||||
{
|
||||
"type": "de",
|
||||
"key": " DE",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "lm",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "wm",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "wmtheme",
|
||||
"key": "│ ├",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "terminal",
|
||||
"key": "└ └",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
|
||||
},
|
||||
"break",
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m┌─────────────────Uptime / Age / DT──────────────────┐"
|
||||
},
|
||||
{
|
||||
"type": "command",
|
||||
"key": " OS Age ",
|
||||
"keyColor": "magenta",
|
||||
"text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days"
|
||||
},
|
||||
{
|
||||
"type": "uptime",
|
||||
"key": " Uptime ",
|
||||
"keyColor": "magenta"
|
||||
},
|
||||
{
|
||||
"type": "datetime",
|
||||
"key": " DateTime ",
|
||||
"keyColor": "magenta"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
|
||||
},
|
||||
"break",
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m┌─────────────────────Networking─────────────────────┐"
|
||||
},
|
||||
{
|
||||
"type": "publicip",
|
||||
"key": " Public ",
|
||||
"keyColor": "magenta"
|
||||
},
|
||||
{
|
||||
"type": "localip",
|
||||
"key": " Local ",
|
||||
"keyColor": "magenta"
|
||||
},
|
||||
{
|
||||
"type": "dns",
|
||||
"key": " DNS ",
|
||||
"keyColor": "magenta"
|
||||
},
|
||||
{
|
||||
"type": "netio",
|
||||
"key": " Net I/O ",
|
||||
"keyColor": "magenta"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "\u001b[90m└────────────────────────────────────────────────────┘"
|
||||
},
|
||||
{
|
||||
"type": "colors",
|
||||
"paddingLeft": 2,
|
||||
"symbol": "circle"
|
||||
},
|
||||
"break",
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
5
home/floorp.nix
Normal file
@@ -0,0 +1,5 @@
|
||||
_: {
|
||||
programs.floorp = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
22
home/git.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ primaryUser, pkgs, ... }: {
|
||||
|
||||
home.packages = with pkgs; [ gh gnupg ];
|
||||
|
||||
programs = {
|
||||
git = {
|
||||
enable = true;
|
||||
settings = {
|
||||
github = { user = primaryUser; };
|
||||
init = { defaultBranch = "main"; };
|
||||
user = {
|
||||
name = "DerGrumpf"; # TODO replace
|
||||
email = "phil.keier@hotmail.com"; # TODO replace
|
||||
};
|
||||
};
|
||||
|
||||
lfs.enable = true;
|
||||
ignores = [ "**/.DS_STORE" "result" ];
|
||||
};
|
||||
lazygit = { enable = true; };
|
||||
};
|
||||
}
|
||||
147
home/neovim/alpha.nix
Normal file
@@ -0,0 +1,147 @@
|
||||
{ pkgs, ... }: {
|
||||
# Alpha: Start screen/dashboard for Neovim
|
||||
# Shows a custom ASCII art header and quick action buttons on startup.
|
||||
programs.nixvim.plugins.alpha = {
|
||||
enable = true;
|
||||
settings.layout = [
|
||||
{
|
||||
type = "padding";
|
||||
val = 2;
|
||||
}
|
||||
{
|
||||
type = "text";
|
||||
val = [
|
||||
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣯⣿⠿⣟⣷⣯⣛⢿⣿⣿⣾⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿"
|
||||
"⣿⣿⣿⣿⣿⣿⣿⡿⣵⣿⡿⣴⣽⡟⣳⢿⢽⣽⣕⣽⢿⡿⣿⣟⣿⣿⣿⣿⣿⣿⣿"
|
||||
"⣿⣿⣿⣷⣿⣿⢟⣫⣿⢟⢟⣾⣾⣿⣿⣞⢳⣻⢞⣎⠿⢞⣊⣿⣞⣿⣿⣿⣿⣿⢽"
|
||||
"⣿⣿⣿⣿⣿⣏⢯⣿⣏⣏⠔⢇⣿⢢⢆⢀⢆⣧⣼⢻⢰⡧⢻⣝⣏⡸⣧⣾⣿⣿⣿"
|
||||
"⣿⣿⣿⣿⡟⣻⣿⣿⡾⡿⡼⢸⡝⣝⡳⢢⣧⢳⣳⢷⡇⣗⢺⡺⣿⡧⣿⣿⣿⢿⢿"
|
||||
"⣿⡿⣿⣼⡼⣿⣿⡗⡧⣧⠁⡝⣧⣳⠅⡾⠈⣎⢮⣧⣿⣿⣗⣷⣻⢷⣏⣼⢏⣺⣿"
|
||||
"⣿⣿⣿⣻⣿⣿⣿⢧⣿⢹⠉⢷⢿⣧⣲⡏⡀⡈⢆⠳⣿⡿⢿⣿⣱⢿⢫⣷⣝⣿⣿"
|
||||
"⣿⣿⣿⡯⡟⣿⣿⢽⣡⠟⢿⣮⠁⠙⠛⠈⡴⢿⣿⡷⣬⣽⢽⠧⣷⡏⣿⡇⣧⣽⣿"
|
||||
"⣿⠟⢻⡧⡇⣿⡇⣇⣆⢄⡜⢃⡀⡀⡀⡀⡀⢎⣁⠁⣸⣗⣸⣿⣧⣼⡿⢹⢿⢾⣿"
|
||||
"⣿⣷⣾⣿⢻⣿⢧⢻⣽⡀⡀⡀⡀⢄⡀⡀⡀⡀⡀⢀⣷⡸⡟⣿⣶⣻⣧⡛⡱⢝⣿"
|
||||
"⣿⣿⣿⣿⢸⡿⢚⡜⣿⣇⡀⡀⡀⡀⡀⡀⡀⡀⠚⢁⢣⣜⡿⣿⡇⢼⣿⠨⣸⣿⣿"
|
||||
"⣿⣄⣿⣗⢾⢻⣧⢿⣾⣿⣦⡀⡀⠑⠚⠉⡀⡀⣤⣿⢨⣿⠗⣻⢣⣿⢹⢈⣽⣿⣿"
|
||||
"⣿⣿⣿⣿⢎⡄⢿⣞⡇⣿⠹⣿⣶⣀⡀⣀⡴⡩⢸⢏⣿⣿⣶⢻⣾⢏⡞⠡⢽⣇⣾"
|
||||
"⣿⣿⣿⣮⣼⢬⣦⢿⣳⣌⠧⡉⠈⣇⣛⣁⣈⣼⣿⡸⠫⠛⠐⠛⠕⣙⣻⣬⣼⣿⣿"
|
||||
"⢟⢿⣿⣿⣿⡢⣃⣪⣭⣡⣤⣶⠟⡿⠿⠿⠿⠛⢁⣿⣿⢩⠉⡀⠈⠓⡝⣿⣿⣿⣿"
|
||||
"⣾⣿⣿⣿⣿⠞⢔⡣⡴⣾⣿⠓⣤⢧⡼⣉⠠⢤⣿⣿⠇⠃⡀⡀⡀⡀⡸⢿⣾⣿⣿"
|
||||
"⣿⣿⣿⡿⣺⡸⢗⢠⣇⣿⣿⠊⠃⡀⠉⡀⢠⣿⣿⠟⡸⡀⡀⡀⡀⡀⣃⣬⠽⠿⣿"
|
||||
"⣿⣿⣿⣿⡇⡏⢸⣿⠟⣽⡇⡀⡀⡀⡀⣴⣟⢭⣾⣿⡇⠎⣠⠒⠉⠈⢀⡀⢨⡋⣿"
|
||||
"⠛⠛⠛⠋⠃⠓⠚⠛⠘⠛⠃⡀⠊⡀⠛⠛⠛⠂⠛⠛⠓⠁⠚⡀⠂⠒⠒⠐⠒⠋⠛"
|
||||
];
|
||||
opts = {
|
||||
position = "center";
|
||||
hl = "Type";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "padding";
|
||||
val = 2;
|
||||
}
|
||||
{
|
||||
type = "group";
|
||||
val = [
|
||||
{
|
||||
type = "button";
|
||||
val = "[+] New file";
|
||||
on_press.__raw =
|
||||
"function() vim.cmd[[ene]] vim.cmd[[startinsert]] end";
|
||||
opts = {
|
||||
keymap = [ "n" "e" ":ene <BAR> startinsert <CR>" { } ];
|
||||
shortcut = "e";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = "[?] Find file";
|
||||
on_press.__raw = "function() vim.cmd[[Telescope find_files]] end";
|
||||
opts = {
|
||||
keymap = [ "n" "f" ":Telescope find_files <CR>" { } ];
|
||||
shortcut = "f";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = "[~] Recent files";
|
||||
on_press.__raw = "function() vim.cmd[[Telescope oldfiles]] end";
|
||||
opts = {
|
||||
keymap = [ "n" "r" ":Telescope oldfiles <CR>" { } ];
|
||||
shortcut = "r";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = "[Y] Yazi";
|
||||
on_press.__raw = "function() require('yazi').yazi() end";
|
||||
opts = {
|
||||
keymap = [ "n" "y" ":Yazi<CR>" { } ];
|
||||
shortcut = "y";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = "[A] Open Prompt";
|
||||
#on_press.__raw = "function() require('yazi').yazi() end";
|
||||
opts = {
|
||||
keymap = [ "n" "a" ":AvanteChatNew<CR>" { } ];
|
||||
shortcut = "a";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = "[X] Quit";
|
||||
on_press.__raw = "function() vim.cmd[[qa]] end";
|
||||
opts = {
|
||||
keymap = [ "n" "q" ":qa<CR>" { } ];
|
||||
shortcut = "q";
|
||||
position = "center";
|
||||
cursor = 3;
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
type = "padding";
|
||||
val = 2;
|
||||
}
|
||||
{
|
||||
type = "text";
|
||||
val = "Circuits hum in anticipation of your will.";
|
||||
opts = {
|
||||
position = "center";
|
||||
hl = "Comment";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
106
home/neovim/avante.nix
Normal file
@@ -0,0 +1,106 @@
|
||||
{ pkgs, ... }: {
|
||||
# Avante: AI-powered coding assistant (Cursor-like experience in Neovim)
|
||||
programs.nixvim = {
|
||||
|
||||
plugins = {
|
||||
markdown-preview.enable = true;
|
||||
render-markdown.enable = true;
|
||||
#extraConfigLuaPre = ''
|
||||
# vim.env.GROQ_API_KEY = os.getenv("GROQ_API_KEY")
|
||||
#'';
|
||||
# TODO: Integrate CoPilot https://github.com/settings/copilot/features
|
||||
avante = {
|
||||
enable = true;
|
||||
autoLoad = true;
|
||||
settings = {
|
||||
provider = "groq";
|
||||
|
||||
providers.groq = {
|
||||
__inherited_from = "openai";
|
||||
api_key_name = "GROQ_API_KEY";
|
||||
endpoint = "https://api.groq.com/openai/v1/";
|
||||
model = "groq/compound-mini";
|
||||
disable_tools = true;
|
||||
extra_request_body = {
|
||||
temperature = 1;
|
||||
max_tokens = 8192;
|
||||
tools = null;
|
||||
tool_choice = "none";
|
||||
};
|
||||
};
|
||||
|
||||
# auto_suggestions_provider = "copilot";
|
||||
|
||||
render = { markdown = true; };
|
||||
|
||||
behaviour = {
|
||||
auto_suggestions = false;
|
||||
auto_set_highlight_group = true;
|
||||
auto_set_keymaps = true;
|
||||
auto_apply_diff_after_generation = false;
|
||||
support_paste_from_clipboard = false;
|
||||
};
|
||||
|
||||
mappings = {
|
||||
ask = "<leader>aa";
|
||||
edit = "<leader>ae";
|
||||
refresh = "<leader>ar";
|
||||
diff = {
|
||||
ours = "co";
|
||||
theirs = "ct";
|
||||
all_theirs = "ca";
|
||||
both = "cb";
|
||||
cursor = "cc";
|
||||
next = "]x";
|
||||
prev = "[x";
|
||||
};
|
||||
suggestion = {
|
||||
accept = "<M-l>";
|
||||
next = "<M-]>";
|
||||
prev = "<M-[>";
|
||||
dismiss = "<C-]>";
|
||||
};
|
||||
jump = {
|
||||
next = "]]";
|
||||
prev = "[[";
|
||||
};
|
||||
submit = {
|
||||
normal = "<CR>";
|
||||
insert = "<C-s>";
|
||||
};
|
||||
sidebar = {
|
||||
switch_windows = "<Tab>";
|
||||
reverse_switch_windows = "<S-Tab>";
|
||||
};
|
||||
};
|
||||
|
||||
hints = { enabled = true; };
|
||||
|
||||
windows = {
|
||||
position = "right";
|
||||
wrap = true;
|
||||
width = 30;
|
||||
sidebar_header = {
|
||||
align = "center";
|
||||
rounded = true;
|
||||
};
|
||||
};
|
||||
|
||||
highlights = {
|
||||
diff = {
|
||||
current = "DiffText";
|
||||
incoming = "DiffAdd";
|
||||
};
|
||||
};
|
||||
|
||||
diff = {
|
||||
autojump = true;
|
||||
list_opener = "copen";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
extraPackages = with pkgs; [ curl ];
|
||||
};
|
||||
};
|
||||
}
|
||||
34
home/neovim/catppuccin.nix
Normal file
@@ -0,0 +1,34 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# Catppuccin: Soothing pastel theme for Neovim
|
||||
# Provides consistent theming across plugins with transparency support.
|
||||
programs.nixvim = {
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
settings = {
|
||||
flavour = "mocha";
|
||||
transparent_background = true;
|
||||
term_colors = true;
|
||||
integrations = {
|
||||
treesitter = true;
|
||||
cmp = true;
|
||||
gitsigns = true;
|
||||
telescope = {
|
||||
enabled = true;
|
||||
};
|
||||
notify = true;
|
||||
mini = {
|
||||
enabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Custom highlight overrides
|
||||
extraConfigLua = ''
|
||||
local colors = require("catppuccin.palettes").get_palette("mocha")
|
||||
vim.api.nvim_set_hl(0, "LineNr", { fg = colors.text, bg = "NONE" })
|
||||
vim.api.nvim_set_hl(0, "CursorLineNr", { fg = colors.pink, bg = "NONE", bold = true })
|
||||
'';
|
||||
};
|
||||
}
|
||||
34
home/neovim/conform.nix
Normal file
@@ -0,0 +1,34 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# Conform: Code formatter that runs external formatting tools
|
||||
# Automatically formats code on save for consistent style.
|
||||
programs.nixvim = {
|
||||
plugins.conform-nvim = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
formatters_by_ft = {
|
||||
lua = [ "stylua" ];
|
||||
nix = [ "nixfmt" ];
|
||||
python = [ "black" ];
|
||||
rust = [ "rustfmt" ];
|
||||
rasi = [ "prettierd" ];
|
||||
};
|
||||
|
||||
format_on_save = {
|
||||
timeout_ms = 2000;
|
||||
lsp_fallback = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Install formatters
|
||||
extraPackages = with pkgs; [
|
||||
stylua
|
||||
nixfmt
|
||||
black
|
||||
rustfmt
|
||||
prettierd
|
||||
];
|
||||
};
|
||||
}
|
||||
102
home/neovim/default.nix
Normal file
@@ -0,0 +1,102 @@
|
||||
{ pkgs, inputs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.nixvim.homeModules.nixvim
|
||||
./treesitter.nix
|
||||
./lint.nix
|
||||
./lsp.nix
|
||||
./conform.nix
|
||||
./lualine.nix
|
||||
./yazi.nix
|
||||
./toggleterm.nix
|
||||
./telescope.nix
|
||||
./catppuccin.nix
|
||||
./alpha.nix
|
||||
./avante.nix
|
||||
./openscad.nix
|
||||
./molten.nix
|
||||
./live-server.nix
|
||||
./which-key.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
nil
|
||||
biome
|
||||
];
|
||||
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
|
||||
# Leader key
|
||||
globals.mapleader = " ";
|
||||
|
||||
plugins.web-devicons.enable = true;
|
||||
|
||||
opts = {
|
||||
number = true; # Show line numbers
|
||||
cursorline = true; # Highlight current line
|
||||
showmode = true; # already in statusline
|
||||
hlsearch = true; # Highlight search result
|
||||
incsearch = true; # Incremental Search
|
||||
tabstop = 4;
|
||||
termguicolors = true; # Enable 24-bit colormode
|
||||
};
|
||||
|
||||
# Clipboard keymaps - yank to system clipboard
|
||||
keymaps = [
|
||||
# Yank operations
|
||||
{
|
||||
mode = "n";
|
||||
key = "y";
|
||||
action = ''"+y'';
|
||||
options.desc = "Yank to clipboard";
|
||||
}
|
||||
{
|
||||
mode = "v";
|
||||
key = "y";
|
||||
action = ''"+y'';
|
||||
options.desc = "Yank to clipboard";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "Y";
|
||||
action = ''"+Y'';
|
||||
options.desc = "Yank line to clipboard";
|
||||
}
|
||||
# Delete operations
|
||||
{
|
||||
mode = "n";
|
||||
key = "d";
|
||||
action = ''"+d'';
|
||||
options.desc = "Delete to clipboard";
|
||||
}
|
||||
{
|
||||
mode = "v";
|
||||
key = "d";
|
||||
action = ''"+d'';
|
||||
options.desc = "Delete to clipboard";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "D";
|
||||
action = ''"+D'';
|
||||
options.desc = "Delete line to clipboard";
|
||||
}
|
||||
# Paste operations
|
||||
{
|
||||
mode = "n";
|
||||
key = "p";
|
||||
action = ''"+p'';
|
||||
options.desc = "Paste from clipboard";
|
||||
}
|
||||
{
|
||||
mode = "v";
|
||||
key = "p";
|
||||
action = ''"+p'';
|
||||
options.desc = "Paste from clipboard";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
42
home/neovim/lint.nix
Normal file
@@ -0,0 +1,42 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# nvim-lint: Asynchronous linter that runs external linting tools
|
||||
# to find errors and style issues without blocking the editor.
|
||||
# Runs automatically after saving files.
|
||||
programs.nixvim = {
|
||||
plugins.lint = {
|
||||
enable = true;
|
||||
|
||||
# Configure linters for each filetype
|
||||
lintersByFt = {
|
||||
lua = [ "luacheck" ];
|
||||
nix = [ "statix" ]; # Nix static analyzer
|
||||
python = [ "ruff" ];
|
||||
javascript = [ "eslint" ];
|
||||
rust = [ "clippy" ];
|
||||
# rasi has no common linter
|
||||
};
|
||||
|
||||
# Trigger linting after saving a file
|
||||
autoCmd = {
|
||||
event = [ "BufWritePost" ];
|
||||
callback = {
|
||||
__raw = ''
|
||||
function()
|
||||
require('lint').try_lint()
|
||||
end
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Install linter binaries
|
||||
extraPackages = with pkgs; [
|
||||
lua54Packages.luacheck
|
||||
statix
|
||||
ruff
|
||||
nodePackages.eslint
|
||||
clippy
|
||||
];
|
||||
};
|
||||
}
|
||||
15
home/neovim/live-server.nix
Normal file
@@ -0,0 +1,15 @@
|
||||
{ pkgs, ... }: {
|
||||
# Live Server: Auto-reload browser for web development
|
||||
# Uses browser-sync for live reload functionality
|
||||
programs.nixvim = {
|
||||
keymaps = [{
|
||||
mode = "n";
|
||||
key = "<leader>ls";
|
||||
action =
|
||||
"<cmd>terminal browser-sync start --server --files '*.html, *.css, *.js' --no-notify<cr>";
|
||||
options.desc = "Start live server (browser-sync)";
|
||||
}];
|
||||
|
||||
extraPackages = with pkgs; [ nodePackages.browser-sync ];
|
||||
};
|
||||
}
|
||||
91
home/neovim/lsp.nix
Normal file
@@ -0,0 +1,91 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# LSP configuration: Language Server Protocol provides IDE features
|
||||
# like autocomplete, go-to-definition, diagnostics, and more.
|
||||
programs.nixvim = {
|
||||
plugins = {
|
||||
# LSP configuration
|
||||
lsp = {
|
||||
enable = true;
|
||||
|
||||
# Language servers for each language
|
||||
servers = {
|
||||
lua_ls = {
|
||||
enable = true;
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime.version = "LuaJIT";
|
||||
diagnostics.globals = [ "vim" ];
|
||||
workspace.library = [ ]; # Populated by nixvim
|
||||
telemetry.enable = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nil_ls.enable = true; # Nix language server
|
||||
rust_analyzer = {
|
||||
enable = true; # Rust language server
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
};
|
||||
pylsp.enable = true; # Python language server
|
||||
};
|
||||
|
||||
# Keymaps for LSP actions
|
||||
keymaps = {
|
||||
diagnostic = {
|
||||
"<leader>e" = "open_float";
|
||||
"[d" = "goto_prev";
|
||||
"]d" = "goto_next";
|
||||
};
|
||||
lspBuf = {
|
||||
"gd" = "definition";
|
||||
"K" = "hover";
|
||||
"<leader>rn" = "rename";
|
||||
"<leader>ca" = "code_action";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Autocompletion
|
||||
cmp = {
|
||||
enable = true;
|
||||
autoEnableSources = true;
|
||||
|
||||
settings = {
|
||||
snippet.expand = ''
|
||||
function(args)
|
||||
require('luasnip').lsp_expand(args.body)
|
||||
end
|
||||
'';
|
||||
|
||||
mapping = {
|
||||
"<C-b>" = "cmp.mapping.scroll_docs(-4)";
|
||||
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
||||
"<C-Space>" = "cmp.mapping.complete()";
|
||||
"<C-e>" = "cmp.mapping.abort()";
|
||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||
};
|
||||
|
||||
sources = [
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "luasnip"; }
|
||||
{ name = "buffer"; }
|
||||
{ name = "path"; }
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# Snippet engine (required for completion)
|
||||
luasnip.enable = true;
|
||||
};
|
||||
|
||||
# Install LSP servers
|
||||
extraPackages = with pkgs; [
|
||||
lua-language-server
|
||||
nil
|
||||
rust-analyzer
|
||||
python314Packages.python-lsp-server
|
||||
];
|
||||
};
|
||||
}
|
||||
22
home/neovim/lualine.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# Lualine: Fast and customizable statusline for Neovim
|
||||
# Displays file info, git status, diagnostics, and mode at the bottom of the editor.
|
||||
programs.nixvim.plugins.lualine = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
options = {
|
||||
theme = "catppuccin";
|
||||
component_separators = {
|
||||
left = "|";
|
||||
right = "|";
|
||||
};
|
||||
section_separators = {
|
||||
left = "";
|
||||
right = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
43
home/neovim/molten.nix
Normal file
@@ -0,0 +1,43 @@
|
||||
{ pkgs, ... }: {
|
||||
programs.nixvim = {
|
||||
plugins.molten = {
|
||||
enable = true;
|
||||
python3Dependencies = p:
|
||||
with p; [
|
||||
pynvim
|
||||
jupyter-client
|
||||
cairosvg
|
||||
ipython
|
||||
nbformat
|
||||
ipykernel
|
||||
pnglatex
|
||||
plotly
|
||||
kaleido
|
||||
pyperclip
|
||||
];
|
||||
settings = {
|
||||
kernel_name = "python3";
|
||||
auto_open_output = true;
|
||||
output_win_max_width = 80;
|
||||
output_win_max_height = 20;
|
||||
};
|
||||
};
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>ml";
|
||||
action = "<cmd>MoltenEvaluateLine<CR>";
|
||||
options.desc = "Molten: Evaluate line";
|
||||
options.silent = true;
|
||||
}
|
||||
{
|
||||
mode = "v";
|
||||
key = "<leader>mv";
|
||||
action = "<Cmd>MoltenEvaluateVisual<CR>";
|
||||
options.desc = "Molten: Evaluate selection";
|
||||
options.silent = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
28
home/neovim/openscad.nix
Normal file
@@ -0,0 +1,28 @@
|
||||
{ pkgs, ... }: {
|
||||
# OpenSCAD: 3D modeling language support with syntax highlighting,
|
||||
# cheatsheet, snippets, offline manual and fuzzy help
|
||||
programs.nixvim = {
|
||||
plugins.openscad = {
|
||||
enable = true;
|
||||
autoLoad = true;
|
||||
settings = {
|
||||
fuzzy_finder = "fzf";
|
||||
auto_open = true;
|
||||
cheatsheet_toggle_key = "<leader>os";
|
||||
default_mappings = true;
|
||||
exec_openscad_trig_key = "<leader>oo";
|
||||
help_manual_trig_key = "<leader>om";
|
||||
help_trig_key = "<leader>oh";
|
||||
top_toggle = "<leader>oc";
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
# Install OpenSCAD binary for preview/compilation
|
||||
extraPackages = with pkgs; [
|
||||
openscad
|
||||
zathura # PDF viewer for manual
|
||||
fzf
|
||||
];
|
||||
};
|
||||
}
|
||||
27
home/neovim/telescope.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# Telescope: Fuzzy finder for files, buffers, grep, and more
|
||||
# Provides fast search and navigation throughout your project.
|
||||
programs.nixvim.plugins.telescope = {
|
||||
enable = true;
|
||||
|
||||
keymaps = {
|
||||
"<leader>ff" = {
|
||||
action = "find_files";
|
||||
options.desc = "Telescope find files";
|
||||
};
|
||||
"<leader>fg" = {
|
||||
action = "live_grep";
|
||||
options.desc = "Telescope live grep";
|
||||
};
|
||||
"<leader>fb" = {
|
||||
action = "buffers";
|
||||
options.desc = "Telescope buffers";
|
||||
};
|
||||
"<leader>fh" = {
|
||||
action = "help_tags";
|
||||
options.desc = "Telescope help tags";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
64
home/neovim/toggleterm.nix
Normal file
@@ -0,0 +1,64 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# ToggleTerm: Terminal emulator inside Neovim
|
||||
# Provides floating, horizontal, and vertical terminal windows.
|
||||
programs.nixvim.plugins.toggleterm = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
size = 20;
|
||||
open_mapping = "[[<c-\\>]]";
|
||||
direction = "float";
|
||||
float_opts = {
|
||||
border = "single";
|
||||
width = 200;
|
||||
height = 40;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.nixvim.keymaps = [
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>h";
|
||||
action.__raw = ''
|
||||
function()
|
||||
require("toggleterm").toggle(1, 10, vim.loop.cwd(), "horizontal")
|
||||
end
|
||||
'';
|
||||
options.desc = "Toggle terminal (horizontal)";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>v";
|
||||
action.__raw = ''
|
||||
function()
|
||||
require("toggleterm").toggle(2, 60, vim.loop.cwd(), "vertical")
|
||||
end
|
||||
'';
|
||||
options.desc = "Toggle terminal (vertical)";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>ft";
|
||||
action.__raw = ''
|
||||
function()
|
||||
require("toggleterm").toggle(3, 20, vim.loop.cwd(), "float")
|
||||
end
|
||||
'';
|
||||
options.desc = "Toggle terminal (float)";
|
||||
}
|
||||
{
|
||||
mode = "t";
|
||||
key = "<C-t>";
|
||||
action = "<Cmd>ToggleTerm<CR>";
|
||||
options.desc = "Toggle terminal";
|
||||
}
|
||||
{
|
||||
mode = "t";
|
||||
key = "<C-v>";
|
||||
action = "<C-\\><C-n>v";
|
||||
options.desc = "Exit terminal and enter visual mode";
|
||||
}
|
||||
];
|
||||
}
|
||||
24
home/neovim/treesitter.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
|
||||
# Install language parsers declaratively
|
||||
# Syntax Highlighting
|
||||
programs.nixvim.plugins.treesitter = {
|
||||
enable = true;
|
||||
grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
|
||||
lua
|
||||
nix
|
||||
python
|
||||
javascript
|
||||
rust
|
||||
rasi
|
||||
];
|
||||
|
||||
settings = {
|
||||
highlight = {
|
||||
enable = true;
|
||||
additional_vim_regex_highlighting = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
94
home/neovim/which-key.nix
Normal file
@@ -0,0 +1,94 @@
|
||||
{ pkgs, ... }: {
|
||||
# Which-key: Display available keybindings in popup
|
||||
# Shows all possible key combinations after pressing leader or other prefix keys
|
||||
programs.nixvim.plugins.which-key = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
delay = 500; # Time in ms before popup shows
|
||||
|
||||
icons = {
|
||||
breadcrumb = "»";
|
||||
separator = "➜";
|
||||
group = "+";
|
||||
};
|
||||
|
||||
# Organize keymaps into named groups
|
||||
spec = [
|
||||
# Leader key groups
|
||||
{
|
||||
__unkeyed-1 = "<leader>a";
|
||||
group = "Avante AI";
|
||||
icon = "🤖";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>f";
|
||||
group = "Find/Files/Terminal";
|
||||
icon = "🔍";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>m";
|
||||
group = "Molten (Jupyter)";
|
||||
icon = "📓";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "<leader>o";
|
||||
group = "OpenSCAD";
|
||||
icon = "🔧";
|
||||
}
|
||||
|
||||
# Bracket navigation groups
|
||||
{
|
||||
__unkeyed-1 = "[";
|
||||
group = "Previous";
|
||||
icon = "⬅️";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "]";
|
||||
group = "Next";
|
||||
icon = "➡️";
|
||||
}
|
||||
|
||||
# g prefix groups
|
||||
{
|
||||
__unkeyed-1 = "g";
|
||||
group = "Go/LSP";
|
||||
icon = "🎯";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "gr";
|
||||
group = "LSP References/Rename";
|
||||
icon = "🔗";
|
||||
}
|
||||
{
|
||||
__unkeyed-1 = "gc";
|
||||
group = "Comments";
|
||||
icon = "💬";
|
||||
}
|
||||
|
||||
# l prefix
|
||||
{
|
||||
__unkeyed-1 = "<leader>l";
|
||||
group = "Live Server";
|
||||
icon = "🌐";
|
||||
}
|
||||
|
||||
# z prefix
|
||||
{
|
||||
__unkeyed-1 = "z";
|
||||
group = "Folds/Spell";
|
||||
icon = "📋";
|
||||
}
|
||||
];
|
||||
|
||||
# Hide specific mappings to reduce clutter
|
||||
disable = {
|
||||
builtin_keys = {
|
||||
# Hide these default vim keys from which-key
|
||||
i = [ "<C-R>" "<C-W>" ];
|
||||
n = [ "<C-W>" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
41
home/neovim/yazi.nix
Normal file
@@ -0,0 +1,41 @@
|
||||
{ pkgs, ... }: {
|
||||
# Yazi: Terminal file manager integration for Neovim
|
||||
# Provides a fast, visual way to browse and manage files.
|
||||
programs.nixvim = {
|
||||
# Use extraPlugins to manually load yazi.nvim
|
||||
extraPlugins = with pkgs.vimPlugins; [ yazi-nvim ];
|
||||
|
||||
# Configure yazi after it's loaded
|
||||
extraConfigLua = ''
|
||||
require('yazi').setup({
|
||||
open_for_directories = true,
|
||||
})
|
||||
'';
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>fy";
|
||||
action.__raw = ''
|
||||
function()
|
||||
require('yazi').yazi(nil, vim.loop.cwd())
|
||||
end
|
||||
'';
|
||||
options.desc = "Open Yazi file manager";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>fd";
|
||||
action.__raw = ''
|
||||
function()
|
||||
require('yazi').yazi(nil, vim.fn.expand("%:p:h"))
|
||||
end
|
||||
'';
|
||||
options.desc = "Open Yazi in current file directory";
|
||||
}
|
||||
];
|
||||
|
||||
# Install yazi terminal program
|
||||
extraPackages = with pkgs; [ yazi ];
|
||||
};
|
||||
}
|
||||
37
home/nixcord.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{ lib, inputs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.nixcord.homeModules.nixcord
|
||||
];
|
||||
|
||||
programs.nixcord = {
|
||||
enable = true;
|
||||
discord = lib.mkForce { enable = false; };
|
||||
vesktop.enable = true;
|
||||
|
||||
config = {
|
||||
useQuickCss = true;
|
||||
themeLinks = [
|
||||
"https://raw.githubusercontent.com/catppuccin/discord/refs/heads/main/themes/mocha.theme.css"
|
||||
];
|
||||
frameless = true;
|
||||
plugins = {
|
||||
betterFolders.enable = true;
|
||||
betterRoleContext.enable = true;
|
||||
mentionAvatars.enable = true;
|
||||
# copyUserURLs.enable = true;
|
||||
fakeNitro.enable = true;
|
||||
decor.enable = true;
|
||||
accountPanelServerProfile.enable = true;
|
||||
copyFileContents.enable = true;
|
||||
fakeProfileThemes.enable = true;
|
||||
friendsSince.enable = true;
|
||||
implicitRelationships.enable = true;
|
||||
# noTrack.enable = true;
|
||||
permissionsViewer.enable = true;
|
||||
serverInfo.enable = true;
|
||||
translate.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
4
home/obsidian.nix
Normal file
@@ -0,0 +1,4 @@
|
||||
_: {
|
||||
# TODO: Add Automatic Vault pull and detection
|
||||
programs.obsidian.enable = true;
|
||||
}
|
||||
4
home/onlyoffice.nix
Normal file
@@ -0,0 +1,4 @@
|
||||
{ pkgs, ... }: {
|
||||
programs.onlyoffice =
|
||||
pkgs.lib.mkIf (!pkgs.stdenv.isDarwin) { enable = true; };
|
||||
}
|
||||
65
home/packages.nix
Normal file
@@ -0,0 +1,65 @@
|
||||
{ pkgs, lib, ... }: {
|
||||
home = {
|
||||
packages = with pkgs;
|
||||
[
|
||||
# dev tools
|
||||
curl
|
||||
wget
|
||||
btop
|
||||
tree
|
||||
ripgrep
|
||||
jq
|
||||
yq-go
|
||||
|
||||
# GUI
|
||||
openscad
|
||||
blender
|
||||
fstl
|
||||
|
||||
# PDF Tools
|
||||
pandoc
|
||||
|
||||
# misc
|
||||
yt-dlp
|
||||
ffmpeg
|
||||
|
||||
# Archives
|
||||
zip
|
||||
unzip
|
||||
xz
|
||||
zstd
|
||||
gnutar
|
||||
unrar
|
||||
|
||||
# Nix tools
|
||||
nix-index
|
||||
] ++ lib.optionals (!pkgs.stdenv.isDarwin) [
|
||||
# dev tools
|
||||
pciutils
|
||||
usbutils
|
||||
nvme-cli
|
||||
nmap
|
||||
iperf3
|
||||
lm_sensors
|
||||
file
|
||||
which
|
||||
libnotify
|
||||
|
||||
# encryption
|
||||
age
|
||||
ssh-to-age
|
||||
|
||||
# GUI
|
||||
element-desktop
|
||||
zapzap
|
||||
nautilus
|
||||
swayimg
|
||||
kdePackages.okular
|
||||
gnumeric
|
||||
sqlitebrowser
|
||||
thunderbird
|
||||
xonotic
|
||||
irssi
|
||||
] ++ lib.optionals pkgs.stdenv.isDarwin [ graphite-cli ];
|
||||
};
|
||||
}
|
||||
20
home/python.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
# Python 3.14 (newest stable)
|
||||
python314
|
||||
python314Packages.pip
|
||||
python314Packages.virtualenv
|
||||
|
||||
# Additional useful tools
|
||||
python314Packages.pipx # Install Python apps in isolated environments
|
||||
uv # Fast Python package installer (alternative to pip)
|
||||
];
|
||||
|
||||
# Set up default Python version
|
||||
home.sessionVariables = { PYTHON = "${pkgs.python313}/bin/python3"; };
|
||||
|
||||
programs.fish.shellAliases = {
|
||||
venv = "python3 -m venv";
|
||||
activate = "source venv/bin/activate.fish";
|
||||
};
|
||||
}
|
||||
233
home/shell.nix
Normal file
@@ -0,0 +1,233 @@
|
||||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
eza # ls replacement
|
||||
tdf # terminal pdf viewer
|
||||
jq # json parser
|
||||
fastfetch # system stats
|
||||
tabiew # Table viewer
|
||||
glow # MD Viewer
|
||||
fd # find alternative
|
||||
bat # cat alternative
|
||||
ripgrep # grep alternative
|
||||
|
||||
# LLM in the Terminal
|
||||
(pkgs.llm.withPlugins { llm-groq = true; })
|
||||
|
||||
# Fun stuff
|
||||
zoxide
|
||||
lolcat
|
||||
cmatrix
|
||||
];
|
||||
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
|
||||
font = {
|
||||
name = "Fira Code Nerd Font";
|
||||
size = 10;
|
||||
};
|
||||
|
||||
settings = {
|
||||
confirm_os_window_close = 0;
|
||||
dynamic_background_opacity = true; # ctrl+shift+a>m/l
|
||||
enable_audio_bell = false;
|
||||
mouse_hide_wait = 3.0;
|
||||
window_padding_width = 10;
|
||||
|
||||
background_opacity = 0.8;
|
||||
background_blur = 5;
|
||||
|
||||
tab_bar_min_tabs = 1;
|
||||
tab_bar_edge = "bottom";
|
||||
tab_bar_style = "custom"; # Should be changed to custom
|
||||
tab_title_template =
|
||||
"{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}";
|
||||
|
||||
symbol_map = let
|
||||
mappings = [
|
||||
"U+23FB-U+23FE"
|
||||
"U+2B58"
|
||||
"U+E200-U+E2A9"
|
||||
"U+E0A0-U+E0A3"
|
||||
"U+E0B0-U+E0BF"
|
||||
"U+E0C0-U+E0C8"
|
||||
"U+E0CC-U+E0CF"
|
||||
"U+E0D0-U+E0D2"
|
||||
"U+E0D4"
|
||||
"U+E700-U+E7C5"
|
||||
"U+F000-U+F2E0"
|
||||
"U+2665"
|
||||
"U+26A1"
|
||||
"U+F400-U+F4A8"
|
||||
"U+F67C"
|
||||
"U+E000-U+E00A"
|
||||
"U+F300-U+F313"
|
||||
"U+E5FA-U+E62B"
|
||||
];
|
||||
in (builtins.concatStringsSep "," mappings) + " Symbols Nerd Font Mono";
|
||||
};
|
||||
};
|
||||
|
||||
programs.newsboat = {
|
||||
enable = true;
|
||||
autoReload = true;
|
||||
browser = if pkgs.stdenv.isDarwin then "open" else "xdg-open";
|
||||
urls = [
|
||||
{
|
||||
url = "https://www.tagesschau.de/xml/rss2";
|
||||
tags = [ "news" "de" ];
|
||||
}
|
||||
{
|
||||
url = "https://www.spiegel.de/schlagzeilen/index.rss";
|
||||
tags = [ "news" "de" ];
|
||||
}
|
||||
{
|
||||
url = "https://www.focus.de/rss";
|
||||
tags = [ "news" "de" ];
|
||||
}
|
||||
{
|
||||
url = "https://feeds.feedburner.com/blogspot/rkEL";
|
||||
tags = [ "blog" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
programs.cava = { enable = true; };
|
||||
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
enableFishIntegration = true;
|
||||
|
||||
settings = { ration = [ 1 3 4 ]; };
|
||||
};
|
||||
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
enableFishIntegration = true;
|
||||
defaultCommand = "fd --type f --strip-cwd-prefix --hidden --exclude .git";
|
||||
fileWidgetCommand =
|
||||
"fd --type f --strip-cwd-prefix --hidden --exclude .git";
|
||||
defaultOptions = [
|
||||
"--height 100%"
|
||||
"--border sharp"
|
||||
"--layout=reverse"
|
||||
"--inline-info"
|
||||
"--preview 'bat --color=always --style=numbers {}'"
|
||||
];
|
||||
};
|
||||
|
||||
# TODO: Install OpenCode
|
||||
# TODO: Install NuShell
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
||||
shellAliases = {
|
||||
ls = "eza --icons=always";
|
||||
la = "eza -la --icons=always";
|
||||
f = "nvim $(fzf)";
|
||||
tree = "eza --icons=always -T";
|
||||
i = "kitty +kitten icat";
|
||||
cat = "bat --color=always --style=numbers";
|
||||
grep = "ripgrep";
|
||||
nix-switch = if pkgs.stdenv.isDarwin then
|
||||
"darwin-rebuild switch --flake ~/.config/nix#(hostname -s)"
|
||||
else
|
||||
"sudo nixos-rebuild switch --flake ~/.config/nix#(hostname -s)";
|
||||
};
|
||||
|
||||
interactiveShellInit = ''
|
||||
starship init fish | source
|
||||
fzf --fish | source
|
||||
function fish_greeting
|
||||
fastfetch
|
||||
end
|
||||
'';
|
||||
|
||||
functions.l = {
|
||||
body = ''
|
||||
llm prompt -m groq/llama-3.3-70b-versatile -t std $argv | glow
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
settings = {
|
||||
add_newline = true;
|
||||
command_timeout = 500;
|
||||
|
||||
format = ''
|
||||
$username$hostname $directory $git_branch$git_status
|
||||
$character '';
|
||||
right_format = "$cmd_duration";
|
||||
|
||||
username = {
|
||||
style_user = "bold #cba6f7";
|
||||
style_root = "bold #f38ba8";
|
||||
format = "[┌](bold #a6e3a1)[$user]($style)";
|
||||
show_always = true;
|
||||
};
|
||||
|
||||
hostname = {
|
||||
style = "bold #74c7ec";
|
||||
format = "[@](bold #fab387)[$hostname]($style)";
|
||||
ssh_only = false;
|
||||
};
|
||||
|
||||
directory = {
|
||||
style = "bold #a6e3a1";
|
||||
truncation_length = 0;
|
||||
truncation_symbol = "";
|
||||
format = "[⤇ ](bold #f38ba8)[《$path 》]($style)";
|
||||
};
|
||||
|
||||
git_branch = {
|
||||
format = "[⟦$branch⟧]($style)";
|
||||
style = "bold #f9e2af";
|
||||
};
|
||||
|
||||
# Git status module settings
|
||||
git_status = {
|
||||
format =
|
||||
"[[(*$conflicted$untracked$modified$staged$renamed$deleted)](red) ($ahead_behind$stashed)]($style)";
|
||||
style = "bold #a6e3a1";
|
||||
conflicted = "";
|
||||
untracked = "";
|
||||
modified = "";
|
||||
staged = "";
|
||||
renamed = "";
|
||||
deleted = "";
|
||||
};
|
||||
|
||||
# Command duration module
|
||||
cmd_duration = {
|
||||
format = "[$duration]($style)";
|
||||
style = "bold #cdd6f4";
|
||||
min_time = 5000; # Only show if command takes longer than 5 seconds
|
||||
};
|
||||
|
||||
# Character module (prompt symbol)
|
||||
character = {
|
||||
success_symbol = "[└──────⇴ ](bold #a6e3a1)";
|
||||
error_symbol = "[└──────⇴ ](bold #f38ba8)";
|
||||
};
|
||||
|
||||
nix_shell = {
|
||||
format = "[$symbol$state( ($name))]($style)";
|
||||
symbol = "U+02744";
|
||||
style = "bold #89dceb";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home.file = {
|
||||
".config/fastfetch/config.jsonc".source = ./fastfetch.jsonc;
|
||||
".config/tabiew/theme.toml".source = ./tabiew.toml;
|
||||
".config/kitty/tab_bar.py".source = ./tab_bar.py;
|
||||
".hushlogin".text = ""; # Suppress login
|
||||
};
|
||||
}
|
||||
39
home/spicetify.nix
Normal file
@@ -0,0 +1,39 @@
|
||||
{ pkgs, inputs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.spicetify-nix.homeManagerModules.default
|
||||
];
|
||||
|
||||
programs.spicetify =
|
||||
let
|
||||
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
spotifyPackage = pkgs.spotify;
|
||||
theme = spicePkgs.themes.catppuccin;
|
||||
colorScheme = "mocha";
|
||||
|
||||
enabledExtensions = with spicePkgs.extensions; [
|
||||
bookmark
|
||||
fullAppDisplay
|
||||
keyboardShortcut
|
||||
popupLyrics
|
||||
shuffle
|
||||
autoVolume
|
||||
betterGenres
|
||||
adblock
|
||||
wikify
|
||||
songStats
|
||||
];
|
||||
|
||||
enabledCustomApps = with spicePkgs.apps; [
|
||||
lyricsPlus
|
||||
newReleases
|
||||
marketplace
|
||||
];
|
||||
|
||||
#enabledSnippets = with spicePkgs.snippets; [ ];
|
||||
|
||||
};
|
||||
}
|
||||
34
home/tab_bar.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from datetime import datetime
|
||||
from kitty.tab_bar import DrawData, ExtraData, TabBarData, as_rgb
|
||||
from kitty.fast_data_types import Screen
|
||||
|
||||
|
||||
def draw_tab(
|
||||
draw_data: DrawData,
|
||||
screen: Screen,
|
||||
tab: TabBarData,
|
||||
before: int,
|
||||
max_title_length: int,
|
||||
index: int,
|
||||
is_last: bool,
|
||||
extra_data: ExtraData,
|
||||
) -> int:
|
||||
|
||||
# Left side: Current directory or command
|
||||
screen.cursor.fg = as_rgb(int("a6e3a1", 16))
|
||||
screen.cursor.bg = as_rgb(int("1e1e2e", 16))
|
||||
|
||||
# Get the foreground process (command) or use title
|
||||
title = tab.active_fg or tab.title or "shell"
|
||||
screen.draw(f" {title} ")
|
||||
|
||||
# Middle: Nix icon
|
||||
screen.cursor.fg = as_rgb(int("89dceb", 16))
|
||||
screen.draw(" ❄ ")
|
||||
|
||||
# Right: Current time
|
||||
screen.cursor.fg = as_rgb(int("cdd6f4", 16))
|
||||
current_time = datetime.now().strftime("%H:%M")
|
||||
screen.draw(f"{current_time} ")
|
||||
|
||||
return screen.cursor.x
|
||||
141
home/tabiew.toml
Normal file
@@ -0,0 +1,141 @@
|
||||
# Catppuccin Mocha Theme for Tabiew
|
||||
# Base colors from Catppuccin Mocha palette
|
||||
|
||||
[table_header]
|
||||
fg = "#F5E0DC" # Rosewater
|
||||
bg = "#181825" # Mantle
|
||||
add_modifier = "BOLD"
|
||||
sub_modifier = ""
|
||||
|
||||
[[table_headers]]
|
||||
fg = "#F5C2E7" # Pink
|
||||
bg = "#181825" # Mantle
|
||||
add_modifier = "BOLD"
|
||||
sub_modifier = ""
|
||||
|
||||
[[table_headers]]
|
||||
fg = "#CBA6F7" # Mauve
|
||||
bg = "#181825" # Mantle
|
||||
add_modifier = "BOLD"
|
||||
sub_modifier = ""
|
||||
|
||||
[[table_headers]]
|
||||
fg = "#89DCEB" # Sky
|
||||
bg = "#181825" # Mantle
|
||||
add_modifier = "BOLD"
|
||||
sub_modifier = ""
|
||||
|
||||
[[rows]]
|
||||
fg = "#CDD6F4" # Text
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[[rows]]
|
||||
fg = "#CDD6F4" # Text
|
||||
bg = "#181825" # Mantle
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[highlight]
|
||||
fg = "#181825" # Mantle
|
||||
bg = "#F9E2AF" # Yellow
|
||||
add_modifier = "BOLD"
|
||||
sub_modifier = ""
|
||||
|
||||
[[table_tags]]
|
||||
fg = "#181825" # Mantle
|
||||
bg = "#F38BA8" # Red
|
||||
add_modifier = "BOLD"
|
||||
sub_modifier = ""
|
||||
|
||||
[[table_tags]]
|
||||
fg = "#181825" # Mantle
|
||||
bg = "#A6E3A1" # Green
|
||||
add_modifier = "BOLD"
|
||||
sub_modifier = ""
|
||||
|
||||
[block]
|
||||
fg = "#FAB387" # Peach
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[block_tag]
|
||||
fg = "#181825" # Mantle
|
||||
bg = "#FAB387" # Peach
|
||||
add_modifier = "BOLD"
|
||||
sub_modifier = ""
|
||||
|
||||
[text]
|
||||
fg = "#CDD6F4" # Text
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[subtext]
|
||||
fg = "#9399B2" # Overlay1
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[error]
|
||||
fg = "#CDD6F4" # Text
|
||||
bg = "#F38BA8" # Red
|
||||
add_modifier = "BOLD"
|
||||
sub_modifier = ""
|
||||
|
||||
[[chart]]
|
||||
fg = "#F38BA8" # Red
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[[chart]]
|
||||
fg = "#FAB387" # Peach (Orange)
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[[chart]]
|
||||
fg = "#F9E2AF" # Yellow
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[[chart]]
|
||||
fg = "#A6E3A1" # Green
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[[chart]]
|
||||
fg = "#94E2D5" # Teal
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[[chart]]
|
||||
fg = "#89DCEB" # Sky (Cyan)
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[[chart]]
|
||||
fg = "#89B4FA" # Blue
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[[chart]]
|
||||
fg = "#CBA6F7" # Mauve (Purple)
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
[[chart]]
|
||||
fg = "#F5C2E7" # Pink
|
||||
bg = "#313244" # Surface0
|
||||
add_modifier = ""
|
||||
sub_modifier = ""
|
||||
|
||||
94
home/xdg.nix
Normal file
@@ -0,0 +1,94 @@
|
||||
{ pkgs, config, ... }:
|
||||
let
|
||||
browser = [ "floorp.desktop" ];
|
||||
|
||||
# XDG MIME types
|
||||
associations = {
|
||||
"application/x-extension-htm" = browser;
|
||||
"application/x-extension-html" = browser;
|
||||
"application/x-extension-shtml" = browser;
|
||||
"application/x-extension-xht" = browser;
|
||||
"application/x-extension-xhtml" = browser;
|
||||
"application/xhtml+xml" = browser;
|
||||
"text/html" = browser;
|
||||
"x-scheme-handler/about" = browser;
|
||||
"x-scheme-handler/chrome" = [ "chromium-browser.desktop" ];
|
||||
"x-scheme-handler/ftp" = browser;
|
||||
"x-scheme-handler/http" = browser;
|
||||
"x-scheme-handler/https" = browser;
|
||||
"x-scheme-handler/unknown" = browser;
|
||||
|
||||
"audio/*" = [ "mpv.desktop" ];
|
||||
"video/*" = [ "mpv.desktop" ];
|
||||
"image/*" = [ "swayimg.desktop" ];
|
||||
#"application/json" = browser;
|
||||
"application/pdf" = [ "okular.desktop" ];
|
||||
"x-scheme-handler/discord" = [ "discordcanary.desktop" ];
|
||||
"x-scheme-handler/spotify" = [ "spotify.desktop" ];
|
||||
"x-scheme-handler/tg" = [ "telegramdesktop.desktop" ];
|
||||
|
||||
"text/csv" = [ "gnumeric.desktop" ];
|
||||
"application/csv" = [ "gnumeric.desktop" ];
|
||||
"text/tab-separated-values" = [ "gnumeric.desktop" ];
|
||||
"application/tsv" = [ "gnumeric.desktop" ];
|
||||
"application/json" = [ "kitty-tabiew.desktop" ];
|
||||
"application/x-ndjson" = [ "kitty-tabiew.desktop" ];
|
||||
"application/vnd.apache.arrow.file" = [ "kitty-tabiew.desktop" ];
|
||||
"application/parquet" = [ "kitty-tabiew.desktop" ];
|
||||
"application/x-parquet" = [ "kitty-tabiew.desktop" ];
|
||||
"application/vnd.sqlite3" = [ "sqlitebrowser.desktop" ];
|
||||
"application/x-sqlite3" = [ "sqlitebrowser.desktop" ];
|
||||
"application/fwf" = [ "kitty-tabiew.desktop" ];
|
||||
"text/fwf" = [ "kitty-tabiew.desktop" ];
|
||||
|
||||
};
|
||||
in
|
||||
{
|
||||
xdg = {
|
||||
enable = true;
|
||||
cacheHome = config.home.homeDirectory + "/.local/cache";
|
||||
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = associations;
|
||||
};
|
||||
|
||||
desktopEntries = {
|
||||
kitty-tabiew = {
|
||||
name = "Tabiew CSV Viewer";
|
||||
exec = "kitty -e tw %F --theme catppuccin";
|
||||
terminal = false;
|
||||
type = "Application";
|
||||
mimeType = [
|
||||
"text/csv"
|
||||
"application/csv"
|
||||
"text/tab-separated-values"
|
||||
"application/tsv"
|
||||
"application/json"
|
||||
"application/x-ndjson"
|
||||
"application/vnd.apache.arrow.file"
|
||||
"application/parquet"
|
||||
"application/x-parquet"
|
||||
"application/vnd.sqlite3"
|
||||
"application/x-sqlite3"
|
||||
"application/fwf"
|
||||
"text/fwf"
|
||||
];
|
||||
categories = [
|
||||
"Utility"
|
||||
"Viewer"
|
||||
"Database"
|
||||
"Development"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
userDirs = {
|
||||
enable = true;
|
||||
createDirectories = true;
|
||||
extraConfig = {
|
||||
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
33
hosts/cyper-desktop/configuration.nix
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
imports = [ ./hardware-configuration.nix ];
|
||||
|
||||
networking = {
|
||||
useNetworkd = true;
|
||||
useDHCP = false;
|
||||
firewall.enable = true;
|
||||
};
|
||||
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."10-ethernet" = {
|
||||
matchConfig.Name = "eno1";
|
||||
networkConfig = {
|
||||
Address = "192.168.2.40/24";
|
||||
Gateway = "192.168.2.1";
|
||||
DNS = "192.168.2.2";
|
||||
DHCP = "no";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
boot.loader = {
|
||||
systemd-boot = {
|
||||
enable = true;
|
||||
configurationLimit = 10;
|
||||
editor = false;
|
||||
};
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
|
||||
system.stateVersion = "26.05";
|
||||
}
|
||||
67
hosts/cyper-desktop/hardware-configuration.nix
Normal file
@@ -0,0 +1,67 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot = {
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"nvme"
|
||||
"usbhid"
|
||||
"usb_storage"
|
||||
"sd_mod"
|
||||
];
|
||||
kernelModules = [ ];
|
||||
};
|
||||
kernelModules = [
|
||||
"kvm-intel"
|
||||
"v4l2loopback"
|
||||
];
|
||||
extraModulePackages = [ config.boot.kernelPackages.v4l2loopback.out ];
|
||||
extraModprobeConfig = ''
|
||||
options v4l2loopback exclusive_caps=1 card_label="Virtual Camera"
|
||||
'';
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/NIXROOT";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-label/NIXBOOT";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
|
||||
"/storage" = {
|
||||
device = "/dev/disk/by-label/STORAGE";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
|
||||
hardware = {
|
||||
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
1
hosts/cyper-mac/configuration.nix
Normal file
@@ -0,0 +1 @@
|
||||
{ ... }: { }
|
||||
12
nixos/audio.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{ ... }:
|
||||
{
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
pulse.enable = true;
|
||||
};
|
||||
security.rtkit.enable = true;
|
||||
}
|
||||
99
nixos/default.nix
Normal file
@@ -0,0 +1,99 @@
|
||||
{ pkgs, inputs, primaryUser, ... }: {
|
||||
imports = [
|
||||
./fonts.nix
|
||||
./sops.nix
|
||||
./regreet.nix
|
||||
./plymouth.nix
|
||||
./audio.nix
|
||||
./ssh.nix
|
||||
./locale.nix
|
||||
./tailscale.nix
|
||||
./virt.nix
|
||||
./webcam.nix
|
||||
|
||||
inputs.catppuccin.nixosModules.catppuccin
|
||||
];
|
||||
|
||||
catppuccin = {
|
||||
enable = true;
|
||||
accent = "sky";
|
||||
flavor = "mocha";
|
||||
cache.enable = true;
|
||||
|
||||
cursors = {
|
||||
enable = true;
|
||||
accent = "sapphire";
|
||||
};
|
||||
|
||||
fcitx5.enable = false;
|
||||
forgejo.enable = false;
|
||||
gitea.enable = false;
|
||||
sddm.enable = false;
|
||||
};
|
||||
|
||||
# nix config
|
||||
nix = {
|
||||
settings = {
|
||||
experimental-features = [ "nix-command" "flakes" ];
|
||||
max-jobs = "auto";
|
||||
cores = 0;
|
||||
substituters =
|
||||
[ "https://hyprland.cachix.org" "https://nix-community.cachix.org" ];
|
||||
trusted-public-keys = [
|
||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
];
|
||||
};
|
||||
|
||||
# Garbage collection
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
};
|
||||
|
||||
# Disable Docs
|
||||
documentation = {
|
||||
enable = true;
|
||||
doc.enable = false; # Skip large documentation
|
||||
man.enable = false; # Keep man pages
|
||||
info.enable = false; # Skip info pages
|
||||
};
|
||||
|
||||
nixpkgs.config = { allowUnfree = true; };
|
||||
|
||||
programs = {
|
||||
fish.enable = true;
|
||||
hyprland = {
|
||||
enable = true;
|
||||
package =
|
||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
};
|
||||
steam.enable = true;
|
||||
dconf.enable = true;
|
||||
appimage = {
|
||||
enable = true;
|
||||
binfmt = true;
|
||||
};
|
||||
};
|
||||
|
||||
security = {
|
||||
pam.services.swaylock = { };
|
||||
polkit.enable = true;
|
||||
apparmor.enable = false;
|
||||
};
|
||||
|
||||
services.gnome = {
|
||||
tinysparql.enable = true;
|
||||
localsearch.enable = true;
|
||||
};
|
||||
|
||||
users.users.${primaryUser} = {
|
||||
home = "/home/${primaryUser}";
|
||||
shell = pkgs.fish;
|
||||
isNormalUser = true;
|
||||
openssh.authorizedKeys.keyFiles = [ ./ssh-key ];
|
||||
extraGroups = [ "wheel" "video" "audio" "libvirtd" ];
|
||||
};
|
||||
}
|
||||