Modularize hardware config and remove specific nix folder
This commit is contained in:
parent
a5042bb645
commit
9ac5b25036
72 changed files with 322 additions and 100 deletions
116
programs/coding.nix
Normal file
116
programs/coding.nix
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ...
|
||||
}:
|
||||
{
|
||||
programs.dashvim = {
|
||||
enable = true;
|
||||
colorscheme = config.conf.colorscheme;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
#basics
|
||||
gitui
|
||||
gcc
|
||||
meson
|
||||
ninja
|
||||
tree-sitter
|
||||
unzip
|
||||
pkg-config
|
||||
sqlite
|
||||
plantuml
|
||||
d-spy
|
||||
|
||||
# cpp
|
||||
bear
|
||||
clang-tools
|
||||
|
||||
#sql
|
||||
nodePackages.sql-formatter
|
||||
sqls
|
||||
|
||||
#assembly
|
||||
asm-lsp
|
||||
|
||||
#yaml
|
||||
yamlfmt
|
||||
yamllint
|
||||
yaml-language-server
|
||||
|
||||
#markdown
|
||||
marksman
|
||||
mdformat
|
||||
|
||||
#bash
|
||||
bash-language-server
|
||||
shfmt
|
||||
|
||||
#fsharp
|
||||
fsharp
|
||||
fsautocomplete
|
||||
|
||||
#haskell
|
||||
haskellPackages.cabal-install
|
||||
ghc
|
||||
haskellPackages.haskell-language-server
|
||||
|
||||
#html
|
||||
html-tidy
|
||||
|
||||
#json
|
||||
jq
|
||||
nodePackages.vscode-json-languageserver
|
||||
|
||||
#css
|
||||
tailwindcss
|
||||
tailwindcss-language-server
|
||||
vscode-langservers-extracted
|
||||
|
||||
#editors
|
||||
neovide
|
||||
##fallback
|
||||
vscodium
|
||||
|
||||
#rust
|
||||
rustup
|
||||
|
||||
#python
|
||||
python3
|
||||
python312Packages.python-lsp-server
|
||||
python312Packages.python-lsp-ruff
|
||||
python312Packages.python-lsp-black
|
||||
|
||||
#ts/js
|
||||
nodejs_20
|
||||
deno
|
||||
typescript
|
||||
nodePackages.typescript-language-server
|
||||
nodePackages.prettier
|
||||
|
||||
#go
|
||||
go
|
||||
gopls
|
||||
|
||||
#typst
|
||||
typst
|
||||
tinymist
|
||||
ltex-ls
|
||||
|
||||
#java
|
||||
gradle
|
||||
maven
|
||||
jdt-language-server
|
||||
adoptopenjdk-jre-bin
|
||||
|
||||
#.!
|
||||
dotnet-sdk_8
|
||||
omnisharp-roslyn
|
||||
csharpier
|
||||
netcoredbg
|
||||
|
||||
#zig
|
||||
zig
|
||||
zls
|
||||
];
|
||||
}
|
||||
128
programs/common.nix
Normal file
128
programs/common.nix
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
{ pkgs
|
||||
, inputs
|
||||
, lib
|
||||
, config
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
callPackage = lib.callPackageWith (pkgs);
|
||||
username = config.conf.username;
|
||||
in
|
||||
{
|
||||
manual = {
|
||||
html.enable = false;
|
||||
json.enable = false;
|
||||
manpages.enable = false;
|
||||
};
|
||||
|
||||
fonts.fontconfig.enable = true;
|
||||
home.packages = with pkgs; [
|
||||
vesktop
|
||||
kitty
|
||||
fish
|
||||
ripgrep
|
||||
rm-improved
|
||||
bat
|
||||
fd
|
||||
lsd
|
||||
(pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
|
||||
noto-fonts
|
||||
flatpak
|
||||
networkmanager
|
||||
zoxide
|
||||
fastfetch
|
||||
pkgs.gnome-keyring
|
||||
dbus
|
||||
killall
|
||||
adw-gtk3
|
||||
qt5ct
|
||||
qt6ct
|
||||
gnutar
|
||||
fishPlugins.tide
|
||||
nix-index
|
||||
libnotify
|
||||
zenith
|
||||
nh
|
||||
amberol
|
||||
pulseaudio
|
||||
playerctl
|
||||
ncspot
|
||||
poppler_utils
|
||||
brave
|
||||
greetd.regreet
|
||||
sops
|
||||
flake-checker
|
||||
ffmpeg
|
||||
system-config-printer
|
||||
brightnessctl
|
||||
(callPackage
|
||||
../override/cambalache.nix
|
||||
{ })
|
||||
];
|
||||
|
||||
#my own programs
|
||||
programs.oxicalc.enable = true;
|
||||
programs.oxinoti.enable = true;
|
||||
programs.oxidash.enable = true;
|
||||
programs.oxishut.enable = true;
|
||||
programs.oxipaste.enable = true;
|
||||
programs.hyprdock.enable = true;
|
||||
programs.ReSet.enable = true;
|
||||
programs.ReSet.config.plugins = [
|
||||
inputs.reset-plugins.packages."x86_64-linux".monitor
|
||||
inputs.reset-plugins.packages."x86_64-linux".keyboard
|
||||
];
|
||||
programs.ReSet.config.plugin_config = {
|
||||
Keyboard = {
|
||||
path = "/home/${username}/.config/reset/keyboard.conf";
|
||||
};
|
||||
};
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
home.username = username;
|
||||
home.homeDirectory = "/home/${username}";
|
||||
home.stateVersion = "24.05";
|
||||
|
||||
home.sessionPath = [
|
||||
"$HOME/.cargo/bin"
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
GOROOT = "$HOME/.go";
|
||||
};
|
||||
|
||||
home.keyboard = null;
|
||||
|
||||
home.file.".local/share/flatpak/overrides/global".text = ''
|
||||
[Context]
|
||||
filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0
|
||||
'';
|
||||
#
|
||||
# dconf.settings = {
|
||||
# "org/gnome/desktop/interface" = {
|
||||
# gtk-theme = "adw-gtk3";
|
||||
# cursor-theme = "Bibata-Modern-Classic";
|
||||
# cursor-size = 24;
|
||||
# icon-theme = "MoreWaita";
|
||||
# };
|
||||
# };
|
||||
|
||||
programs.nix-index =
|
||||
{
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
|
||||
sops = {
|
||||
gnupg = {
|
||||
home = "~/.gnupg";
|
||||
sshKeyPaths = [ ];
|
||||
};
|
||||
defaultSopsFile = ../secrets/secrets.yaml;
|
||||
secrets.hub = { };
|
||||
secrets.lab = { };
|
||||
secrets.${username} = { };
|
||||
};
|
||||
systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ];
|
||||
}
|
||||
48
programs/default.nix
Normal file
48
programs/default.nix
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
{ inputs, pkgs, config, lib, mod, ... }:
|
||||
let
|
||||
base_imports = [
|
||||
inputs.anyrun.homeManagerModules.default
|
||||
inputs.ironbar.homeManagerModules.default
|
||||
inputs.oxicalc.homeManagerModules.default
|
||||
inputs.oxishut.homeManagerModules.default
|
||||
inputs.oxinoti.homeManagerModules.default
|
||||
inputs.oxidash.homeManagerModules.default
|
||||
inputs.oxipaste.homeManagerModules.default
|
||||
inputs.hyprdock.homeManagerModules.default
|
||||
inputs.hyprland.homeManagerModules.default
|
||||
inputs.reset.homeManagerModules.default
|
||||
inputs.nix-flatpak.homeManagerModules.nix-flatpak
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
inputs.dashvim.homeManagerModules.dashvim
|
||||
];
|
||||
in
|
||||
{
|
||||
xdg.portal.config.common.default = "*";
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
];
|
||||
};
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
};
|
||||
|
||||
home-manager.users.${config.conf.username} = {
|
||||
imports = [
|
||||
./hyprland/default.nix
|
||||
./flatpak.nix
|
||||
./common.nix
|
||||
./coding.nix
|
||||
./xdg.nix
|
||||
./media.nix
|
||||
./utils.nix
|
||||
./oxi/default.nix
|
||||
./themes/default.nix
|
||||
./individual_configs/default.nix
|
||||
] ++ base_imports
|
||||
++ lib.optional (builtins.pathExists mod) mod;
|
||||
};
|
||||
}
|
||||
14
programs/flatpak.nix
Normal file
14
programs/flatpak.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{ lib, ... }: {
|
||||
|
||||
services.flatpak.remotes = lib.mkOptionDefault [{
|
||||
name = "flathub-stable";
|
||||
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
||||
}];
|
||||
services.flatpak.uninstallUnmanaged = true;
|
||||
services.flatpak.packages = [
|
||||
# fallback if necessary, but generally avoided as nix is superior :)
|
||||
"com.github.tchx84.Flatseal"
|
||||
"io.github.Foldex.AdwSteamGtk"
|
||||
];
|
||||
}
|
||||
|
||||
33
programs/gaming/default.nix
Normal file
33
programs/gaming/default.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ...
|
||||
}: lib.mkIf config.conf.gaming.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
gamemode
|
||||
steam
|
||||
lutris
|
||||
wine
|
||||
adwsteamgtk
|
||||
];
|
||||
|
||||
programs.steam.enable = true;
|
||||
programs.gamemode.enable = true;
|
||||
programs.gamemode = {
|
||||
enableRenice = true;
|
||||
settings = {
|
||||
general = {
|
||||
governor = "performance";
|
||||
};
|
||||
gpu = {
|
||||
apply_gpu_optimisations = "accept-responsibility";
|
||||
gpu_device = config.conf.gaming.device;
|
||||
amd_performance_level = "high";
|
||||
};
|
||||
custom = {
|
||||
start = "notify-send -a 'Gamemode' 'Optimizations activated'";
|
||||
end = "notify-send -a 'Gamemode' 'Optimizations deactivated'";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
69
programs/hyprland/anyrun.nix
Normal file
69
programs/hyprland/anyrun.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{ inputs, pkgs, ... }: {
|
||||
programs.anyrun = {
|
||||
enable = true;
|
||||
config = {
|
||||
plugins = [
|
||||
inputs.anyrun.packages.${pkgs.system}.applications
|
||||
inputs.anyrun.packages.${pkgs.system}.rink
|
||||
inputs.anyrun.packages.${pkgs.system}.translate
|
||||
inputs.anyrun.packages.${pkgs.system}.websearch
|
||||
];
|
||||
#position = "center";
|
||||
hideIcons = false;
|
||||
width = { fraction = 0.3; };
|
||||
y = { fraction = 0.5; };
|
||||
layer = "overlay";
|
||||
hidePluginInfo = true;
|
||||
closeOnClick = true;
|
||||
};
|
||||
|
||||
extraCss = ''
|
||||
#window {
|
||||
border-radius: 10px;
|
||||
background-color: none;
|
||||
}
|
||||
|
||||
box#main {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
list#main {
|
||||
border-radius: 10px;
|
||||
margin: 0px 10px 10px 10px;
|
||||
}
|
||||
|
||||
list#plugin {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
list#match {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
entry#entry {
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
margin: 10px 10px 0px 10px;
|
||||
}
|
||||
|
||||
label#match-desc {
|
||||
font-size: 12px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
label#match-title {
|
||||
font-size: 12px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
label#plugin {
|
||||
font-size: 16px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
* {
|
||||
border-radius: 10px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
261
programs/hyprland/config.nix
Normal file
261
programs/hyprland/config.nix
Normal file
|
|
@ -0,0 +1,261 @@
|
|||
{ config
|
||||
, lib
|
||||
, ...
|
||||
}:
|
||||
{
|
||||
wayland.windowManager.hyprland.enable = true;
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
"$mod" = "SUPER";
|
||||
"source" = "/home/${config.conf.username}/.config/reset/keyboard.conf";
|
||||
|
||||
bindm = [
|
||||
"$mod, mouse:272, movewindow"
|
||||
"$mod, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
bind = [
|
||||
# screenshots
|
||||
"$mod SUPER,S,exec,grim -g \"$(slurp)\" - | wl-copy"
|
||||
"$mod SUPERSHIFTALT,S,exec, grim -g \"$(slurp)\" $HOME/gits/ost-5semester/Screenshots/$(date +'%Y_%m_%d_%I_%M_%S.png') && (date +'%Y_%m_%d_%I_%M_%S.png') | wl-copy"
|
||||
"$mod SUPERSHIFT,S,exec,grim -g \"$(slurp)\" - | satty -f -"
|
||||
"$mod SUPERCONTROLSHIFT,S,exec,grim -c -g \"2560,0 3440x1440\" - | wl-copy"
|
||||
|
||||
# regular programs
|
||||
"$mod SUPER,F,exec,firefox"
|
||||
"$mod SUPER,T,exec,kitty -1"
|
||||
"$mod SUPER,E,exec,nautilus -w"
|
||||
"$mod SUPER,N,exec,neovide"
|
||||
"$mod SUPER,M,exec,oxidash"
|
||||
"$mod SUPER,R,exec,anyrun"
|
||||
"$mod SUPER,G,exec,oxicalc"
|
||||
"$mod SUPER,D,exec,oxishut"
|
||||
"$mod SUPER,A,exec,oxipaste"
|
||||
"$mod SUPERSHIFT,P,exec,hyprdock --gui"
|
||||
"$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend"
|
||||
"$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate"
|
||||
|
||||
# media keys
|
||||
",XF86AudioMute,exec, $HOME/.config/scripts/audio_control.sh mute"
|
||||
",XF86AudioLowerVolume,exec, $HOME/.config/scripts/audio_control.sh sink -5%"
|
||||
",XF86AudioRaiseVolume,exec, $HOME/.config/scripts/audio_control.sh sink +5%"
|
||||
",XF86AudioPlay,exec, playerctl play-pause"
|
||||
",XF86AudioNext,exec, playerctl next"
|
||||
",XF86AudioPrev,exec, playerctl previous"
|
||||
",XF86MonBrightnessDown,exec, $HOME/.config/scripts/change-brightness brightness 10%-"
|
||||
",XF86MonBrightnessUp,exec, $HOME/.config/scripts/change-brightness brightness +10%"
|
||||
|
||||
# hyprland keybinds
|
||||
# misc
|
||||
"$mod SUPER,V,togglefloating,"
|
||||
"$mod SUPER,B,fullscreen,"
|
||||
"$mod SUPER,C,togglesplit"
|
||||
"$mod SUPER,Q,killactive,"
|
||||
"$mod SUPERSHIFTALT,M,exit,"
|
||||
"$mod SUPERSHIFT,W,togglespecialworkspace"
|
||||
|
||||
# move
|
||||
"$mod SUPER,left,movewindow,l"
|
||||
"$mod SUPER,right,movewindow,r"
|
||||
"$mod SUPER,up,movewindow,u"
|
||||
"$mod SUPER,down,movewindow,d"
|
||||
|
||||
# workspaces
|
||||
"$mod SUPER,1,workspace,1"
|
||||
"$mod SUPER,2,workspace,2"
|
||||
"$mod SUPER,3,workspace,3"
|
||||
"$mod SUPER,4,workspace,4"
|
||||
"$mod SUPER,5,workspace,5"
|
||||
"$mod SUPER,6,workspace,6"
|
||||
"$mod SUPER,7,workspace,7"
|
||||
"$mod SUPER,8,workspace,8"
|
||||
"$mod SUPER,9,workspace,9"
|
||||
"$mod SUPER,0,workspace,10"
|
||||
|
||||
# move to workspace
|
||||
"$mod SUPERSHIFT,1,movetoworkspace,1"
|
||||
"$mod SUPERSHIFT,2,movetoworkspace,2"
|
||||
"$mod SUPERSHIFT,3,movetoworkspace,3"
|
||||
"$mod SUPERSHIFT,4,movetoworkspace,4"
|
||||
"$mod SUPERSHIFT,5,movetoworkspace,5"
|
||||
"$mod SUPERSHIFT,6,movetoworkspace,6"
|
||||
"$mod SUPERSHIFT,7,movetoworkspace,7"
|
||||
"$mod SUPERSHIFT,8,movetoworkspace,8"
|
||||
"$mod SUPERSHIFT,9,movetoworkspace,9"
|
||||
"$mod SUPERSHIFT,0,movetoworkspace,10"
|
||||
|
||||
|
||||
# move to workspace silent
|
||||
"$mod SUPERSHIFTALT,1,movetoworkspacesilent,1"
|
||||
"$mod SUPERSHIFTALT,2,movetoworkspacesilent,2"
|
||||
"$mod SUPERSHIFTALT,3,movetoworkspacesilent,3"
|
||||
"$mod SUPERSHIFTALT,4,movetoworkspacesilent,4"
|
||||
"$mod SUPERSHIFTALT,5,movetoworkspacesilent,5"
|
||||
"$mod SUPERSHIFTALT,6,movetoworkspacesilent,6"
|
||||
"$mod SUPERSHIFTALT,7,movetoworkspacesilent,7"
|
||||
"$mod SUPERSHIFTALT,8,movetoworkspacesilent,8"
|
||||
"$mod SUPERSHIFTALT,9,movetoworkspacesilent,9"
|
||||
"$mod SUPERSHIFTALT,0,movetoworkspacesilent,10"
|
||||
|
||||
# preselection
|
||||
"$mod SUPERALT,j,layoutmsg,preselect l"
|
||||
"$mod SUPERALT,k,layoutmsg,preselect d"
|
||||
"$mod SUPERALT,l,layoutmsg,preselect u"
|
||||
"$mod SUPERALT,semicolon,layoutmsg,preselect r"
|
||||
"$mod SUPERALT,h,layoutmsg,preselect n"
|
||||
];
|
||||
|
||||
binde = [
|
||||
# hyprland keybinds
|
||||
# focus
|
||||
"$mod SUPER,J,movefocus,l"
|
||||
"$mod SUPER,semicolon,movefocus,r"
|
||||
"$mod SUPER,L,movefocus,u"
|
||||
"$mod SUPER,K,movefocus,d"
|
||||
|
||||
# resize
|
||||
"$mod SUPER,U,resizeactive,-20 0"
|
||||
"$mod SUPER,P,resizeactive,20 0"
|
||||
"$mod SUPER,O,resizeactive,0 -20"
|
||||
"$mod SUPER,I,resizeactive,0 20"
|
||||
];
|
||||
|
||||
general = {
|
||||
gaps_out = "3,5,5,5";
|
||||
border_size = 3;
|
||||
"col.active_border" = lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg";
|
||||
# "col.inactive_border" = "0x66333333";
|
||||
allow_tearing = true;
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = 4;
|
||||
};
|
||||
|
||||
animations = {
|
||||
bezier = "penguin,0.05,0.9,0.1,1.0";
|
||||
animation = [
|
||||
"windowsMove,1,4,default"
|
||||
"windows,1,7,default,popin 70%"
|
||||
"windowsOut,1,7,default,popin 70%"
|
||||
"border,1,10,default"
|
||||
"fade,1,7,default"
|
||||
"workspaces,1,6,default"
|
||||
"layers,1,3,default,popin"
|
||||
];
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
preserve_split = true;
|
||||
pseudotile = 0;
|
||||
permanent_direction_override = false;
|
||||
};
|
||||
|
||||
input = {
|
||||
#kb_layout = "dashie";
|
||||
repeat_delay = 200;
|
||||
force_no_accel = true;
|
||||
touchpad = {
|
||||
natural_scroll = true;
|
||||
tap-to-click = true;
|
||||
tap-and-drag = true;
|
||||
};
|
||||
};
|
||||
|
||||
misc = {
|
||||
animate_manual_resizes = 1;
|
||||
enable_swallow = true;
|
||||
disable_splash_rendering = true;
|
||||
disable_hyprland_logo = true;
|
||||
swallow_regex = "^(.*)(kitty)(.*)$";
|
||||
initial_workspace_tracking = 1;
|
||||
};
|
||||
|
||||
cursor = {
|
||||
# conversion seems to be borked right now, i want a smooth bibata :(
|
||||
enable_hyprcursor = false;
|
||||
};
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = true;
|
||||
};
|
||||
|
||||
monitor = config.conf.hyprland.monitor;
|
||||
workspace = config.conf.hyprland.workspace;
|
||||
|
||||
env = [
|
||||
"GTK_CSD,0"
|
||||
"TERM,\"kitty /bin/fish\""
|
||||
"XDG_CURRENT_DESKTOP=Hyprland"
|
||||
"XDG_SESSION_TYPE=wayland"
|
||||
"XDG_SESSION_DESKTOP=Hyprland"
|
||||
"HYPRCURSOR_THEME,Bibata-Modern-Classic"
|
||||
"HYPRCURSOR_SIZE,24"
|
||||
"XCURSOR_THEME,Bibata-Modern-Classic"
|
||||
"XCURSOR_SIZE,24"
|
||||
"QT_QPA_PLATFORM,wayland"
|
||||
"QT_QPA_PLATFORMTHEME,qt5ct"
|
||||
"QT_WAYLAND_FORCE_DPI,96"
|
||||
"QT_AUTO_SCREEN_SCALE_FACTOR,0"
|
||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||
"QT_SCALE_FACTOR,1"
|
||||
"EDITOR,\"neovide --novsync --nofork\""
|
||||
"WLR_DRM_NO_ATOMIC,1"
|
||||
"GTK_USE_PORTAL, 1"
|
||||
];
|
||||
|
||||
layerrule = [
|
||||
# layer rules
|
||||
# mainly to disable animations within slurp and grim
|
||||
"noanim, selection"
|
||||
];
|
||||
|
||||
windowrule = [
|
||||
# window rules
|
||||
"tile,^(.*)(Spotify)(.*)$"
|
||||
"float,^(.*)(OxiCalc)(.*)$"
|
||||
"float,^(.*)(winecfg.exe)(.*)$"
|
||||
"float,^(.*)(speed.exe)(.*)$"
|
||||
"float,^(.*)(copyq)(.*)$"
|
||||
"center,^(.*)(swappy)(.*)$"
|
||||
"float,title:^(.*)(Spirit)(.*)$"
|
||||
"float,title:^(.*)(reset)(.*)$"
|
||||
"workspace 10 silent,^(.*)(steam)(.*)$"
|
||||
"workspace 9 silent,^(.*)(dota)(.*)$"
|
||||
"workspace 9 silent,^(.*)(battlebits)(.*)$"
|
||||
"workspace 9 silent,^(.*)(aoe)(.*)$"
|
||||
"suppressevent fullscreen maximize,^(.*)(neovide)(.*)$"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
"immediate,class:^(.*)(Pal)$"
|
||||
"immediate,class:^(.*)(dota2)$"
|
||||
"immediate,class:^(.*)(needforspeedheat.exe)$"
|
||||
];
|
||||
|
||||
exec-once = [
|
||||
# environment
|
||||
"systemctl --user import-environment"
|
||||
"dbus-update-activation-environment --systemd --all"
|
||||
"hyprctl setcursor Bibata-Modern-Classic 24"
|
||||
|
||||
# other programs
|
||||
"hyprpaper"
|
||||
"ironbar"
|
||||
"firefox"
|
||||
"oxipaste_daemon"
|
||||
"nextcloud --background"
|
||||
"oxinoti"
|
||||
] ++ config.conf.hyprland.extra_autostart;
|
||||
|
||||
# plugin = {
|
||||
# hyprspace = {
|
||||
# bind = [
|
||||
# "SUPER, W, overview:toggle, toggle"
|
||||
# ];
|
||||
# };
|
||||
# };
|
||||
};
|
||||
# wayland.windowManager.hyprland.plugins = [
|
||||
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
|
||||
# ];
|
||||
}
|
||||
28
programs/hyprland/default.nix
Normal file
28
programs/hyprland/default.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{ pkgs
|
||||
, ...
|
||||
}: {
|
||||
imports = [
|
||||
./anyrun.nix
|
||||
./config.nix
|
||||
./ironbar.nix
|
||||
./hyprpaper.nix
|
||||
./hyprlock.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
xorg.xprop
|
||||
grim
|
||||
slurp
|
||||
satty
|
||||
xdg-desktop-portal-gtk
|
||||
# xdg-desktop-portal-hyprland
|
||||
copyq
|
||||
nautilus
|
||||
sushi
|
||||
nautilus-python
|
||||
wl-clipboard
|
||||
hyprcursor
|
||||
hyprpaper
|
||||
hyprpicker
|
||||
];
|
||||
}
|
||||
36
programs/hyprland/hyprlock.nix
Normal file
36
programs/hyprland/hyprlock.nix
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{ config
|
||||
, ...
|
||||
}:
|
||||
{
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
background = [
|
||||
{
|
||||
monitor = "";
|
||||
path = "";
|
||||
color = "rgba(26, 27, 38, 1.0)";
|
||||
}
|
||||
];
|
||||
|
||||
input-field = [
|
||||
{
|
||||
monitor = "${config.conf.monitor}";
|
||||
|
||||
placeholder_text = "password or something";
|
||||
}
|
||||
];
|
||||
|
||||
label = [
|
||||
{
|
||||
monitor = "${config.conf.monitor}";
|
||||
text = "$TIME";
|
||||
font_size = 50;
|
||||
position = "0, 200";
|
||||
valign = "center";
|
||||
halign = "center";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
5
programs/hyprland/hyprpaper.nix
Normal file
5
programs/hyprland/hyprpaper.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{ config, ... }: {
|
||||
xdg.configFile."hypr/hyprpaper.conf" = {
|
||||
text = config.conf.hyprland.hyprpaper;
|
||||
};
|
||||
}
|
||||
261
programs/hyprland/ironbar.nix
Normal file
261
programs/hyprland/ironbar.nix
Normal file
|
|
@ -0,0 +1,261 @@
|
|||
{ config, ... }:
|
||||
let
|
||||
username = config.conf.username;
|
||||
in
|
||||
{
|
||||
|
||||
programs.ironbar =
|
||||
{
|
||||
enable = true;
|
||||
style = ''
|
||||
@import url("/home/${username}/.config/gtk-3.0/gtk.css");
|
||||
|
||||
* {
|
||||
color: #71bbe6;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.background {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.workspaces {
|
||||
margin: 2px 0px 0px 5px;
|
||||
border-radius: 10px;
|
||||
/* background-color: #2b2c3b; */
|
||||
background-color: #1E1E2E;
|
||||
padding: 2px 5px 2px 5px;
|
||||
}
|
||||
|
||||
.workspaces .item {
|
||||
margin: 0px 3px 0px 3px;
|
||||
font-size: 13px;
|
||||
border-radius: 100%;
|
||||
padding: 0px 2px 0px 3px;
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.workspaces .item:hover {
|
||||
background-color: #3e4152;
|
||||
}
|
||||
|
||||
.workspaces .item.focused {
|
||||
background-color: #3e4152;
|
||||
}
|
||||
|
||||
.audio-box {
|
||||
padding: 2em;
|
||||
background-color: #1E1E2E;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.audio-slider {
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.audio-button {
|
||||
padding: 5px 10px 5px 10px;
|
||||
margin: 0px 1em 20px 1em;
|
||||
border-radius: 100%;
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
.audio-button-box {
|
||||
padding: 0px 2.5em 0px 2.5em;
|
||||
}
|
||||
|
||||
.focused {
|
||||
/* margin: 2px 0px 0px 0px; */
|
||||
padding: 0px 5px 0px 5px;
|
||||
/* background-color: 1a1b26; */
|
||||
background-color: #1E1E2E;
|
||||
font-size: 17px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#bar #end {
|
||||
margin: 0px 5px 0px 0px;
|
||||
padding: 0px 5px 0px 5px;
|
||||
background-color: #1E1E2E;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.popup-button {
|
||||
padding: 0px 5px 0px 3px;
|
||||
margin: 0em 3px;
|
||||
border-radius: 100%;
|
||||
font-size: 13px;
|
||||
background-color: #1E1E2E;
|
||||
}
|
||||
|
||||
.popup-button-box {
|
||||
padding: 2px 0px 2px 0px;
|
||||
}
|
||||
|
||||
.clock {
|
||||
padding: 0px 5px 0px 5px;
|
||||
font-size: 17px;
|
||||
background-color: #1E1E2E;
|
||||
}
|
||||
|
||||
.clock:hover {
|
||||
background-color: #3e4152;
|
||||
}
|
||||
|
||||
.custom button {
|
||||
background-color: #1E1E2E;
|
||||
}
|
||||
|
||||
.custom button:hover {
|
||||
background-color: #3e4152;
|
||||
}
|
||||
|
||||
.memory-usage {
|
||||
font-size: 15px;
|
||||
margin: 0px 5px 0px 0px;
|
||||
}
|
||||
|
||||
.memory-usage:hover {
|
||||
background-color: #3e4152;
|
||||
}
|
||||
|
||||
.popup-clock {
|
||||
background-color: #1E1E2E;
|
||||
border-radius: 5px;
|
||||
padding: 2px 8px 10px 8px;
|
||||
}
|
||||
|
||||
.popup-clock .calendar-clock {
|
||||
font-size: 2.5em;
|
||||
padding-bottom: 0.1em;
|
||||
}
|
||||
|
||||
.popup-clock .calendar {
|
||||
border-radius: 5px;
|
||||
font-size: 1.05em;
|
||||
}
|
||||
|
||||
.popup-clock .calendar:selected {
|
||||
background-color: #3e4152;
|
||||
}
|
||||
'';
|
||||
features = [
|
||||
#"another_feature"
|
||||
];
|
||||
config = {
|
||||
monitors."${config.conf.monitor}" = {
|
||||
end = config.conf.ironbar.modules ++ [
|
||||
{
|
||||
type = "sys_info";
|
||||
format = [
|
||||
" {memory_percent}"
|
||||
];
|
||||
interval.memory = 30;
|
||||
class = "memory-usage";
|
||||
}
|
||||
{
|
||||
type = "custom";
|
||||
bar = [
|
||||
{
|
||||
type = "button";
|
||||
class = "popup-button";
|
||||
label = "";
|
||||
on_click = "popup:toggle";
|
||||
}
|
||||
];
|
||||
class = "popup-button-box";
|
||||
popup = [
|
||||
{
|
||||
type = "box";
|
||||
orientation = "vertical";
|
||||
class = "audio-box";
|
||||
widgets = [
|
||||
{
|
||||
type = "box";
|
||||
orientation = "horizontal";
|
||||
widgets = [
|
||||
{
|
||||
type = "button";
|
||||
class = "audio-button";
|
||||
label = "";
|
||||
on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth";
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
class = "audio-button";
|
||||
label = "";
|
||||
on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal";
|
||||
}
|
||||
];
|
||||
class = "audio-button-box";
|
||||
}
|
||||
{
|
||||
type = "label";
|
||||
label = "Output";
|
||||
}
|
||||
{
|
||||
type = "slider";
|
||||
class = "audio-slider";
|
||||
step = 1.0;
|
||||
length = 200;
|
||||
value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
|
||||
on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%";
|
||||
}
|
||||
{
|
||||
type = "label";
|
||||
label = "Input";
|
||||
}
|
||||
{
|
||||
type = "slider";
|
||||
class = "audio-slider";
|
||||
step = 1.0;
|
||||
length = 200;
|
||||
value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'";
|
||||
on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
type = "custom";
|
||||
bar = [
|
||||
{
|
||||
type = "button";
|
||||
class = "popup-button";
|
||||
label = "";
|
||||
on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css";
|
||||
}
|
||||
];
|
||||
class = "popup-button-box";
|
||||
}
|
||||
{
|
||||
type = "clock";
|
||||
format = "%I:%M";
|
||||
format_popup = "%I:%M:%S";
|
||||
locale = "en_US";
|
||||
}
|
||||
{ type = "tray"; }
|
||||
];
|
||||
position = "top";
|
||||
height = 10;
|
||||
anchor_to_edges = true;
|
||||
start = [{
|
||||
type = "workspaces";
|
||||
all_monitors = true;
|
||||
}];
|
||||
center = [
|
||||
{
|
||||
type = "focused";
|
||||
show_icon = true;
|
||||
show_title = true;
|
||||
icon_size = 20;
|
||||
truncate = "end";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
13
programs/individual_configs/default.nix
Normal file
13
programs/individual_configs/default.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
imports = [
|
||||
./kitty.nix
|
||||
./yazi.nix
|
||||
./fish.nix
|
||||
./ssh.nix
|
||||
./direnv.nix
|
||||
./git.nix
|
||||
./firefox.nix
|
||||
./keepass.nix
|
||||
./neovide.nix
|
||||
];
|
||||
}
|
||||
7
programs/individual_configs/direnv.nix
Normal file
7
programs/individual_configs/direnv.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{ pkgs, ... }: {
|
||||
xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" {
|
||||
global = {
|
||||
warn_timeout = "-1s";
|
||||
};
|
||||
};
|
||||
}
|
||||
29
programs/individual_configs/firefox.nix
Normal file
29
programs/individual_configs/firefox.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{ pkgs, config, ... }: {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
|
||||
policies = {
|
||||
EnableTrackingProtection = {
|
||||
Value = true;
|
||||
Locked = true;
|
||||
Cryptomining = true;
|
||||
Fingerprinting = true;
|
||||
};
|
||||
DisablePocket = true;
|
||||
DisplayBookmarksToolbar = "never";
|
||||
DisplayMenuBar = "default-off";
|
||||
};
|
||||
profiles.${config.conf.username} = {
|
||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
ublock-origin
|
||||
darkreader
|
||||
privacy-badger
|
||||
vimium
|
||||
keepassxc-browser
|
||||
i-dont-care-about-cookies
|
||||
tokyo-night-v2
|
||||
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
140
programs/individual_configs/fish.nix
Normal file
140
programs/individual_configs/fish.nix
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
{ config, ... }: {
|
||||
xdg.configFile."fish/config.fish" = {
|
||||
text =
|
||||
''
|
||||
if status is-interactive
|
||||
# Commands to run in interactive sessions can go here
|
||||
end
|
||||
|
||||
# =============================================================================
|
||||
#
|
||||
# Utility functions for zoxide.
|
||||
#
|
||||
|
||||
export NIX_PATH="$NIX_PATH:$HOME/gits/dotFiles/."
|
||||
|
||||
set EDITOR "neovide --no-fork"
|
||||
|
||||
alias rebuild='sudo nixos-rebuild switch --flake /home/${config.conf.username}/gits/dotFiles/.'
|
||||
abbr --add ls 'lsd'
|
||||
abbr --add :q 'exit'
|
||||
abbr --add gh 'git push origin'
|
||||
abbr --add gl 'git pull origin'
|
||||
abbr --add gm 'git commit -m'
|
||||
abbr --add ga "git add -A"
|
||||
abbr --add g+ 'bear -- g++ -Wextra -Werror -std=c++20'
|
||||
abbr --add s "kitty +kitten ssh"
|
||||
abbr --add zl 'z "" '
|
||||
abbr --add nv 'neovide'
|
||||
abbr --add cr 'cargo run'
|
||||
abbr --add grep 'rg'
|
||||
abbr --add cat 'bat'
|
||||
abbr --add find 'fd'
|
||||
abbr --add rm 'rip'
|
||||
|
||||
set fish_greeting
|
||||
# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
|
||||
function __zoxide_pwd
|
||||
builtin pwd -L
|
||||
end
|
||||
|
||||
# A copy of fish's internal cd function. This makes it possible to use
|
||||
# `alias cd=z` without causing an infinite loop.
|
||||
if ! builtin functions --query __zoxide_cd_internal
|
||||
if builtin functions --query cd
|
||||
builtin functions --copy cd __zoxide_cd_internal
|
||||
else
|
||||
alias __zoxide_cd_internal='builtin cd'
|
||||
end
|
||||
end
|
||||
|
||||
# cd + custom logic based on the value of _ZO_ECHO.
|
||||
function __zoxide_cd
|
||||
__zoxide_cd_internal $argv
|
||||
end
|
||||
|
||||
# =============================================================================
|
||||
#
|
||||
# Hook configuration for zoxide.
|
||||
#
|
||||
|
||||
# Initialize hook to add new entries to the database.
|
||||
function __zoxide_hook --on-variable PWD
|
||||
test -z "$fish_private_mode"
|
||||
and command zoxide add -- (__zoxide_pwd)
|
||||
end
|
||||
|
||||
# =============================================================================
|
||||
#
|
||||
# When using zoxide with --no-cmd, alias these internal functions as desired.
|
||||
#
|
||||
|
||||
if test -z $__zoxide_z_prefix
|
||||
set __zoxide_z_prefix 'z!'
|
||||
end
|
||||
set __zoxide_z_prefix_regex ^(string escape --style=regex $__zoxide_z_prefix)
|
||||
|
||||
# Jump to a directory using only keywords.
|
||||
function __zoxide_z
|
||||
set -l argc (count $argv)
|
||||
if test $argc -eq 0
|
||||
__zoxide_cd $HOME
|
||||
else if test "$argv" = -
|
||||
__zoxide_cd -
|
||||
else if test $argc -eq 1 -a -d $argv[1]
|
||||
__zoxide_cd $argv[1]
|
||||
else if set -l result (string replace --regex $__zoxide_z_prefix_regex \'\' $argv[-1]); and test -n $result
|
||||
__zoxide_cd $result
|
||||
else
|
||||
set -l result (command zoxide query --exclude (__zoxide_pwd) -- $argv)
|
||||
and __zoxide_cd $result
|
||||
end
|
||||
end
|
||||
|
||||
# Completions.
|
||||
function __zoxide_z_complete
|
||||
set -l tokens (commandline --current-process --tokenize)
|
||||
set -l curr_tokens (commandline --cut-at-cursor --current-process --tokenize)
|
||||
|
||||
if test (count $tokens) -le 2 -a (count $curr_tokens) -eq 1
|
||||
# If there are < 2 arguments, use `cd` completions.
|
||||
complete --do-complete "\'\' "(commandline --cut-at-cursor --current-token) | string match --regex '.*/$'
|
||||
else if test (count $tokens) -eq (count $curr_tokens); and ! string match --quiet --regex $__zoxide_z_prefix_regex. $tokens[-1]
|
||||
# If the last argument is empty and the one before doesn't start with
|
||||
# $__zoxide_z_prefix, use interactive selection.
|
||||
set -l query $tokens[2..-1]
|
||||
set -l result (zoxide query --exclude (__zoxide_pwd) --interactive -- $query)
|
||||
and echo $__zoxide_z_prefix$result
|
||||
commandline --function repaint
|
||||
end
|
||||
end
|
||||
complete --command __zoxide_z --no-files --arguments '(__zoxide_z_complete)'
|
||||
|
||||
# Jump to a directory using interactive search.
|
||||
function __zoxide_zi
|
||||
set -l result (command zoxide query --interactive -- $argv)
|
||||
and __zoxide_cd $result
|
||||
end
|
||||
|
||||
# =============================================================================
|
||||
#
|
||||
# Commands for zoxide. Disable these using --no-cmd.
|
||||
#
|
||||
|
||||
abbr --erase z &>/dev/null
|
||||
alias z=__zoxide_z
|
||||
|
||||
abbr --erase zi &>/dev/null
|
||||
alias zi=__zoxide_zi
|
||||
|
||||
# =============================================================================
|
||||
#
|
||||
# To initialize zoxide, add this to your configuration (usually
|
||||
# ~/.config/fish/config.fish):
|
||||
#
|
||||
# zoxide init fish | source
|
||||
|
||||
direnv hook fish | source
|
||||
'';
|
||||
};
|
||||
}
|
||||
16
programs/individual_configs/git.nix
Normal file
16
programs/individual_configs/git.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "DashieTM";
|
||||
userEmail = "fabio.lenherr@gmail.com";
|
||||
extraConfig = {
|
||||
merge = {
|
||||
tool = "nvimdiff";
|
||||
};
|
||||
diff = {
|
||||
tool = "nvimdiff";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
26
programs/individual_configs/keepass.nix
Normal file
26
programs/individual_configs/keepass.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
xdg.configFile."keepassxc/keepassxc.ini" = {
|
||||
text =
|
||||
''
|
||||
[General]
|
||||
ConfigVersion=2
|
||||
|
||||
[Browser]
|
||||
CustomProxyLocation=
|
||||
Enabled=true
|
||||
|
||||
[GUI]
|
||||
ApplicationTheme=classic
|
||||
HidePasswords=true
|
||||
TrayIconAppearance=monochrome-light
|
||||
|
||||
[PasswordGenerator]
|
||||
AdditionalChars=
|
||||
ExcludedChars=
|
||||
Length=18
|
||||
|
||||
[Security]
|
||||
EnableCopyOnDoubleClick=true
|
||||
'';
|
||||
};
|
||||
}
|
||||
83
programs/individual_configs/kitty.nix
Normal file
83
programs/individual_configs/kitty.nix
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
{ lib, config, inputs, pkgs, ... }:
|
||||
let
|
||||
base16 = pkgs.callPackage inputs.base16.lib { };
|
||||
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme);
|
||||
hexTable = {
|
||||
"0" = "1";
|
||||
"1" = "0";
|
||||
"2" = "1";
|
||||
"3" = "2";
|
||||
"4" = "3";
|
||||
"5" = "4";
|
||||
"6" = "5";
|
||||
"7" = "6";
|
||||
"8" = "7";
|
||||
"9" = "8";
|
||||
"a" = "9";
|
||||
"b" = "a";
|
||||
"c" = "b";
|
||||
"d" = "c";
|
||||
"e" = "d";
|
||||
"f" = "e";
|
||||
};
|
||||
base = "#" + lib.strings.concatStrings ((lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00)) ++ [ hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}" ]);
|
||||
in
|
||||
{
|
||||
|
||||
stylix.targets.kitty = {
|
||||
enable = false;
|
||||
};
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
enable_audio_bell = "no";
|
||||
window_alert_on_bell = "no";
|
||||
cursor_blink_interval = "0";
|
||||
window_padding_width = "1";
|
||||
shell_integration = "yes";
|
||||
sync_with_monitor = "no";
|
||||
background_opacity = "0.8";
|
||||
|
||||
font_family = "JetBrainsMono Nerd Font Mono";
|
||||
bold_font = "JetBrainsMono Nerd Font Mono Extra Bold";
|
||||
italic_font = "JetBrainsMono Nerd Font Mono Extra Italic";
|
||||
bold_italic_font = "JetBrainsMono Nerd Font Mono Extra Bold Italic";
|
||||
|
||||
background = base;
|
||||
foreground = "#" + scheme.base05;
|
||||
selection_foreground = "#" + scheme.base05;
|
||||
selection_background = base;
|
||||
url_color = "#" + scheme.base04;
|
||||
cursor = "#" + scheme.base05;
|
||||
active_border_color = "#" + scheme.base03;
|
||||
inactive_border_color = "#" + scheme.base01;
|
||||
active_tab_background = base;
|
||||
active_tab_foreground = "#" + scheme.base05;
|
||||
inactive_tab_background = "#" + scheme.base01;
|
||||
inactive_tab_foreground = "#" + scheme.base04;
|
||||
tab_bar_background = "#" + scheme.base01;
|
||||
|
||||
color0 = base;
|
||||
color1 = "#" + scheme.base08;
|
||||
color2 = "#" + scheme.base0B;
|
||||
color3 = "#" + scheme.base0A;
|
||||
color4 = "#" + scheme.base0D;
|
||||
color5 = "#" + scheme.base0E;
|
||||
color6 = "#" + scheme.base0C;
|
||||
color7 = "#" + scheme.base05;
|
||||
|
||||
color8 = "#" + scheme.base03;
|
||||
color9 = "#" + scheme.base08;
|
||||
color10 = "#" + scheme.base0B;
|
||||
color11 = "#" + scheme.base0A;
|
||||
color12 = "#" + scheme.base0D;
|
||||
color13 = "#" + scheme.base0E;
|
||||
color14 = "#" + scheme.base0C;
|
||||
color15 = "#" + scheme.base07;
|
||||
|
||||
shell = "fish";
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
38
programs/individual_configs/ncspot.nix
Normal file
38
programs/individual_configs/ncspot.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{ pkgs, ... }: {
|
||||
xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml { }).generate "ncspot" {
|
||||
notify = true;
|
||||
shuffle = true;
|
||||
cover_max_scale = 2;
|
||||
initial_screen = "library";
|
||||
library_tabs = [ "playlists" ];
|
||||
theme = {
|
||||
background = "#1a1b26";
|
||||
primary = "#9aa5ce";
|
||||
secondary = "#414868";
|
||||
title = "#9ece6a";
|
||||
playing = "#7aa2f7";
|
||||
playing_selected = "#bb9af7";
|
||||
playing_bg = "#24283b";
|
||||
highlight = "#c0caf5";
|
||||
highlight_bg = "#24283b";
|
||||
error = "#414868";
|
||||
error_bg = "#f7768e";
|
||||
statusbar = "#ff9e64";
|
||||
statusbar_progress = "#7aa2f7";
|
||||
statusbar_bg = "#1a1b26";
|
||||
cmdline = "#c0caf5";
|
||||
cmdline_bg = "#24283b";
|
||||
search_match = "#f7768e";
|
||||
};
|
||||
keybindings = {
|
||||
"j" = "move left 1";
|
||||
"k" = "move down 1";
|
||||
"l" = "move up 1";
|
||||
";" = "move right 1";
|
||||
};
|
||||
notification_format = {
|
||||
title = "%artists";
|
||||
body = "%title";
|
||||
};
|
||||
};
|
||||
}
|
||||
3
programs/individual_configs/neovide.nix
Normal file
3
programs/individual_configs/neovide.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{ pkgs, ... }: {
|
||||
xdg.configFile."neovide/config.toml".source = (pkgs.formats.toml { }).generate "neovide" { };
|
||||
}
|
||||
10
programs/individual_configs/ssh.nix
Normal file
10
programs/individual_configs/ssh.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{ config, ... }: {
|
||||
home.file.".ssh/config".text = ''
|
||||
Host github.com
|
||||
IdentityFile ${config.sops.secrets.hub.path}
|
||||
Host gitlab.com
|
||||
IdentityFile ${config.sops.secrets.lab.path}
|
||||
Host dashie.org
|
||||
IdentityFile ${config.sops.secrets.dashie.path}
|
||||
'';
|
||||
}
|
||||
1494
programs/individual_configs/yazi.nix
Normal file
1494
programs/individual_configs/yazi.nix
Normal file
File diff suppressed because it is too large
Load diff
34
programs/media.nix
Normal file
34
programs/media.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
# base audio
|
||||
pipewire
|
||||
wireplumber
|
||||
# audio control
|
||||
playerctl
|
||||
# images
|
||||
imv
|
||||
# videos
|
||||
mpv
|
||||
# pdf
|
||||
zathura
|
||||
evince
|
||||
libreoffice-fresh
|
||||
onlyoffice-bin
|
||||
pdftk
|
||||
pdfpc
|
||||
polylux2pdfpc
|
||||
# spotify
|
||||
# video editing
|
||||
kdenlive
|
||||
# image creation
|
||||
inkscape
|
||||
gimp
|
||||
krita
|
||||
yt-dlp
|
||||
];
|
||||
programs.obs-studio.enable = true;
|
||||
programs.obs-studio.plugins = with pkgs; [
|
||||
obs-studio-plugins.obs-vaapi
|
||||
];
|
||||
}
|
||||
9
programs/oxi/default.nix
Normal file
9
programs/oxi/default.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
imports = [
|
||||
./oxipaste.nix
|
||||
./oxinoti.nix
|
||||
./oxishut.nix
|
||||
./oxidash.nix
|
||||
];
|
||||
}
|
||||
|
||||
53
programs/oxi/oxidash.nix
Normal file
53
programs/oxi/oxidash.nix
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
{
|
||||
xdg.configFile."oxidash/style.css" = {
|
||||
text =
|
||||
''
|
||||
#MainWindow {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#MainBox {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#MainButtonBox {
|
||||
padding: 10px;
|
||||
margin: 5px 0px 5px 0px;
|
||||
border-radius: 5px;
|
||||
border: solid 2px #327cd5;
|
||||
}
|
||||
|
||||
#DoNotDisturbButton {
|
||||
}
|
||||
|
||||
#ExitButton {
|
||||
}
|
||||
|
||||
#ClearNotificationsButton {
|
||||
}
|
||||
|
||||
#NotificationsWindow {
|
||||
}
|
||||
|
||||
.debugimage {
|
||||
border: solid 3px blue;
|
||||
}
|
||||
|
||||
.Notification {
|
||||
padding: 10px;
|
||||
margin: 5px 0px 5px 0px;
|
||||
border: solid 2px #327cd5;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.CloseNotificationButton {
|
||||
margin: 0px 5px 0px 10px;
|
||||
}
|
||||
.PictureButtonBox {
|
||||
}
|
||||
.BaseBox {
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
92
programs/oxi/oxinoti.nix
Normal file
92
programs/oxi/oxinoti.nix
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
{ config, ... }: {
|
||||
xdg.configFile."oxinoti/style.css" = {
|
||||
text = /*css*/
|
||||
''
|
||||
@import url("/home/${config.conf.username}/.config/gtk-3.0/gtk.css");
|
||||
|
||||
#MainWindow {
|
||||
background-color: transparent;
|
||||
padding: 0px;
|
||||
/* opacity: 0; */
|
||||
}
|
||||
|
||||
.MainBox {
|
||||
background-color: transparent;
|
||||
padding: 0px;
|
||||
/* opacity: 0; */
|
||||
}
|
||||
|
||||
.NotificationBox {
|
||||
background-color: #353747;
|
||||
border-radius: 5px;
|
||||
border: solid 1px;
|
||||
margin: 0px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.NotificationLow {
|
||||
border-color: green;
|
||||
}
|
||||
|
||||
.NotificationNormal {
|
||||
border-color: purple;
|
||||
}
|
||||
|
||||
.NotificationUrgent {
|
||||
border-color: red;
|
||||
}
|
||||
|
||||
.miscbox {
|
||||
margin: 0px 10px 0px 0px;
|
||||
}
|
||||
|
||||
.bodybox {
|
||||
}
|
||||
|
||||
.imagebox {
|
||||
margin: 0px 0px 0px 10px;
|
||||
}
|
||||
|
||||
.appname {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.timestamp {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.image {
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.underline {
|
||||
text-decoration-line: underline;
|
||||
}
|
||||
'';
|
||||
};
|
||||
xdg.configFile."oxinoti/oxinoti.toml" = {
|
||||
text = ''
|
||||
timeout = 3
|
||||
dnd_override = 2
|
||||
'';
|
||||
};
|
||||
}
|
||||
31
programs/oxi/oxipaste.nix
Normal file
31
programs/oxi/oxipaste.nix
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
xdg.configFile."oxipaste/style.css" = {
|
||||
text =
|
||||
''
|
||||
.main-window {
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
border: 2px solid #2AC3DE;
|
||||
}
|
||||
|
||||
.item-window {
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
border: 2px solid #C0CAF5;
|
||||
}
|
||||
|
||||
.item-button {
|
||||
background-color: #1A1B26;
|
||||
border-radius: 5px;
|
||||
border: 1px solid #6D728D;
|
||||
}
|
||||
|
||||
.delete-button {
|
||||
margin: 5px 25px 5px 5px;
|
||||
}
|
||||
|
||||
.item-box {
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
25
programs/oxi/oxishut.nix
Normal file
25
programs/oxi/oxishut.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
xdg.configFile."oxishut/style.css" = {
|
||||
text =
|
||||
''
|
||||
#mainwindow {
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.mainbox {
|
||||
border-radius: 5px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.button {
|
||||
margin: 5px;
|
||||
background-color: #2b2c3b;
|
||||
-gtk-icon-size: 5rem;
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
background-color: #3e4152;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
9
programs/themes/default.nix
Normal file
9
programs/themes/default.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
imports = [
|
||||
./qt.nix
|
||||
./stylix.nix
|
||||
# ./gtk3.nix
|
||||
# ./gtk4.nix
|
||||
];
|
||||
}
|
||||
|
||||
112
programs/themes/qt.nix
Normal file
112
programs/themes/qt.nix
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
{ config, inputs, pkgs, ... }:
|
||||
let
|
||||
username = config.conf.username;
|
||||
# at time of using this here, stylix might not be evaluated yet
|
||||
# hence ensure it is by using base16 mkSchemeAttrs
|
||||
base16 = pkgs.callPackage inputs.base16.lib { };
|
||||
scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme);
|
||||
# active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5
|
||||
# disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d
|
||||
# inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d
|
||||
color = ''
|
||||
[ColorScheme]
|
||||
active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
|
||||
disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
|
||||
inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04}
|
||||
'';
|
||||
qss = ''
|
||||
QTabBar::tab:selected {
|
||||
color: palette(highlight);
|
||||
}
|
||||
QMenuBar, QMenu, QToolBar, QStatusBar, QFrame, QScrollBar {
|
||||
border: none;
|
||||
}
|
||||
'';
|
||||
in
|
||||
{
|
||||
xdg.configFile."qt5ct/colors/tokyonight.conf" = {
|
||||
text = "${color}";
|
||||
};
|
||||
xdg.configFile."qt6ct/colors/tokyonight.conf" = {
|
||||
text = "${color}";
|
||||
};
|
||||
xdg.configFile."qt5ct/qss/tab.qss" = {
|
||||
text = "${qss}";
|
||||
};
|
||||
xdg.configFile."qt5ct/qt5ct.conf" = {
|
||||
text =
|
||||
''
|
||||
[Appearance]
|
||||
color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf
|
||||
custom_palette=true
|
||||
icon_theme=MoreWaita
|
||||
standard_dialogs=gtk3
|
||||
style=Breeze
|
||||
|
||||
[Fonts]
|
||||
fixed="Noto Sans,12,-1,5,50,0,0,0,0,0"
|
||||
general="Noto Sans,12,-1,5,50,0,0,0,0,0"
|
||||
|
||||
[Interface]
|
||||
activate_item_on_single_click=2
|
||||
buttonbox_layout=3
|
||||
cursor_flash_time=1000
|
||||
dialog_buttons_have_icons=0
|
||||
double_click_interval=400
|
||||
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
|
||||
keyboard_scheme=4
|
||||
menus_have_icons=true
|
||||
show_shortcuts_in_context_menus=true
|
||||
stylesheets=/home/${username}/.config/qt5ct/qss/tab.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/fusion-fixes.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/scrollbar-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/sliders-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/tooltip-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/traynotification-simple.qss
|
||||
toolbutton_style=4
|
||||
underline_shortcut=0
|
||||
wheel_scroll_lines=3
|
||||
|
||||
[SettingsWindow]
|
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q\0\0\n\0\0\0\0\0\0\0\r[\0\0\x5\x7f\0\0\0\0\x2\0\0\0\rp\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q)
|
||||
|
||||
[Troubleshooting]
|
||||
force_raster_widgets=1
|
||||
ignored_applications=@Invalid()
|
||||
'';
|
||||
};
|
||||
xdg.configFile."qt6ct/qt6ct.conf" = {
|
||||
text =
|
||||
''
|
||||
[Appearance]
|
||||
color_scheme_path=/home/${username}/.config/qt6ct/colors/toykonight.conf
|
||||
custom_palette=true
|
||||
standard_dialogs=default
|
||||
style=Adwaita-Dark
|
||||
|
||||
[Fonts]
|
||||
fixed="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||
general="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||
|
||||
[Interface]
|
||||
activate_item_on_single_click=2
|
||||
buttonbox_layout=3
|
||||
cursor_flash_time=1000
|
||||
dialog_buttons_have_icons=0
|
||||
double_click_interval=400
|
||||
gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
|
||||
keyboard_scheme=4
|
||||
menus_have_icons=true
|
||||
show_shortcuts_in_context_menus=true
|
||||
stylesheets=@Invalid()
|
||||
toolbutton_style=4
|
||||
underline_shortcut=1
|
||||
wheel_scroll_lines=3
|
||||
|
||||
[PaletteEditor]
|
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4)
|
||||
|
||||
[SettingsWindow]
|
||||
geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\rp\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,)"
|
||||
|
||||
[Troubleshooting]
|
||||
force_raster_widgets=1
|
||||
ignored_applications=@Invalid()
|
||||
'';
|
||||
};
|
||||
}
|
||||
44
programs/themes/stylix.nix
Normal file
44
programs/themes/stylix.nix
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{ pkgs, config, ... }:
|
||||
{
|
||||
stylix = {
|
||||
enable = true;
|
||||
image = ../../base/black.jpg;
|
||||
polarity = "dark";
|
||||
targets = {
|
||||
nixvim.enable = false;
|
||||
fish.enable = false;
|
||||
};
|
||||
|
||||
fonts = {
|
||||
serif = {
|
||||
package = pkgs.cantarell-fonts;
|
||||
name = "Cantarell";
|
||||
};
|
||||
|
||||
sansSerif = {
|
||||
package = pkgs.cantarell-fonts;
|
||||
name = "Cantarell";
|
||||
};
|
||||
|
||||
monospace = {
|
||||
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
|
||||
# name = "JetBrains Mono Nerd";
|
||||
name = "JetBrainsMono Nerd Font Mono";
|
||||
};
|
||||
|
||||
emoji = {
|
||||
package = pkgs.noto-fonts-emoji;
|
||||
name = "Noto Color Emoji";
|
||||
};
|
||||
};
|
||||
|
||||
cursor = {
|
||||
package = pkgs.bibata-cursors;
|
||||
name = "Bibata-Modern-Classic";
|
||||
size = 24;
|
||||
};
|
||||
|
||||
base16Scheme =
|
||||
(if builtins.isAttrs config.conf.colorscheme then config.conf.colorscheme else "${pkgs.base16-schemes}/share/themes/${config.conf.colorscheme}.yaml");
|
||||
};
|
||||
}
|
||||
11
programs/utils.nix
Normal file
11
programs/utils.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{ pkgs
|
||||
, ...
|
||||
}:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
keepassxc
|
||||
nheko
|
||||
nextcloud-client
|
||||
xournalpp
|
||||
];
|
||||
}
|
||||
71
programs/xdg.nix
Normal file
71
programs/xdg.nix
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
# Copyright (c) 2020-2021 Mihai Fufezan
|
||||
# credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix
|
||||
{ config
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
browser = [ "firefox" ];
|
||||
imageViewer = [ "imv" ];
|
||||
videoPlayer = [ "mpv" ];
|
||||
audioPlayer = [ "io.bassi.Amberol" ];
|
||||
|
||||
xdgAssociations = type: program: list:
|
||||
builtins.listToAttrs (map
|
||||
(e: {
|
||||
name = "${type}/${e}";
|
||||
value = program;
|
||||
})
|
||||
list);
|
||||
|
||||
image = xdgAssociations "image" imageViewer [ "png" "svg" "jpeg" "gif" ];
|
||||
video = xdgAssociations "video" videoPlayer [ "mp4" "avi" "mkv" ];
|
||||
audio = xdgAssociations "audio" audioPlayer [ "mp3" "flac" "wav" "aac" ];
|
||||
browserTypes =
|
||||
(xdgAssociations "application" browser [
|
||||
"json"
|
||||
"x-extension-htm"
|
||||
"x-extension-html"
|
||||
"x-extension-shtml"
|
||||
"x-extension-xht"
|
||||
"x-extension-xhtml"
|
||||
])
|
||||
// (xdgAssociations "x-scheme-handler" browser [
|
||||
"about"
|
||||
"ftp"
|
||||
"http"
|
||||
"https"
|
||||
"unknown"
|
||||
]);
|
||||
|
||||
# XDG MIME types
|
||||
associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ({
|
||||
"application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ];
|
||||
"text/html" = browser;
|
||||
"text/plain" = [ "neovide" ];
|
||||
"x-scheme-handler/chrome" = [ "com.brave.browser" ];
|
||||
"inode/directory" = [ "yazi" ];
|
||||
}
|
||||
// image
|
||||
// video
|
||||
// audio
|
||||
// browserTypes);
|
||||
in
|
||||
{
|
||||
xdg = {
|
||||
enable = true;
|
||||
cacheHome = config.home.homeDirectory + "/.local/cache";
|
||||
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = associations;
|
||||
};
|
||||
|
||||
userDirs = {
|
||||
enable = true;
|
||||
createDirectories = true;
|
||||
extraConfig = {
|
||||
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue