Move HM modules

This commit is contained in:
Filippo Berto 2023-07-19 10:42:09 +01:00
parent 5db76d0fed
commit 3cf0004b78
No known key found for this signature in database
GPG key ID: FE98AE5EC52B1056
110 changed files with 403 additions and 564 deletions

36
modules/hm/__basic.nix Normal file
View file

@ -0,0 +1,36 @@
{ pkgs, ... }: {
home = {
language.base = "it_IT.UTF-8";
packages = builtins.attrValues {
inherit (pkgs)
fd file htop lf mmv-go neofetch nixos-option pv ripgrep unrar unzip wget
xclip yq zip;
};
};
imports = [
./configurations.nix
./bash.nix
./bat.nix
./bottom.nix
# ./broot.nix
./dircolors.nix
./direnv.nix
./exa.nix
./fzf.nix
./git.nix
./gpg.nix
./info.nix
./jq.nix
./keychain.nix
./man.nix
./shell_aliases.nix
./ssh.nix
./starship.nix
./tmux.nix
./zellij.nix
./zoxide.nix
./zsh.nix
];
}

57
modules/hm/alacritty.nix Normal file
View file

@ -0,0 +1,57 @@
{ pkgs, ... }:
let
strPalette = with pkgs.rice;
pkgs.lib.nix-rice.palette.toRgbHex rec {
inherit (colorPalette) normal bright primary;
dim = colorPalette.dark;
cursor = {
cursor = normal.white;
text = normal.black;
};
vi_mode_cursor = {
cursor = normal.white;
text = normal.black;
};
selection.background = dim.blue;
search = {
matches.background = dim.cyan;
bar = {
foreground = dim.cyan;
background = dim.yellow;
};
};
};
in
{
# Include fonts packages
home.packages = [ pkgs.rice.font.monospace.package ];
programs.alacritty = {
enable = true;
settings = {
key_bindings = [{
key = "Return";
mods = "Control|Shift";
action = "SpawnNewInstance";
}];
# env.TERM = "xterm-256color";
env = {
TERM = "alacritty";
WINIT_X11_SCALE_FACTOR = "1";
};
scrolling.history = 3000;
font = {
normal.family = pkgs.rice.font.monospace.name;
inherit (pkgs.rice.font.monospace) size;
};
window.opacity = pkgs.rice.opacity;
mouse = {
# hide_when_typing = true;
hints.modifiers = "Control";
};
colors = strPalette // {
selection.text = "CellForeground";
search.matches.foreground = "CellForeground";
};
};
};
}

136
modules/hm/autorandr.nix Normal file
View file

@ -0,0 +1,136 @@
{
programs.autorandr = {
enable = true;
profiles =
let
dell-laptop = {
dpi = 96;
fingerprint =
"00ffffffffffff0030e43f0500000000001a010495221378eaa1c59459578f27205054000000010101010101010101010101010101012e3680a070381f403020350058c21000001a5c2b80a070381f403020350058c21000001a000000fe0034584b3133803135365746360a000000000000413196001000000a010a202000c5";
mode = "1920x1080";
};
schermo_lab_dp = {
dpi = 96;
fingerprint = "00ffffffffffff0010ac73404c47334428160104a5331d783bdd45a3554fa027125054a54b00714f8180d1c001010101010101010101023a801871382d40582c4500fe1f1100001e000000ff004b463837593241364433474c0a000000fc0044454c4c205532333132484d0a000000fd00384c1e5311000a2020202020200096";
mode = "1920x1080";
};
lab_screen = {
dpi = 96;
fingerprint = "00ffffffffffff0010acd3a14246313216200104a53b21783be755a9544aa1260d5054a54b00714f8180a9c0d1c00101010101010101565e00a0a0a029503020350055502100001a000000ff00435958564744330a2020202020000000fc0044454c4c20533237323244430a000000fd00304b72723c010a20202020202001d9020325f14f101f051404131211030216150706012309070783010000681a00000101304b007e3900a080381f4030203a0055502100001a023a801871382d40582c450055502100001ed97600a0a0a034503020350055502100001a00000000000000000000000000000000000000000000000000000000000000000000000092";
mode = "2560x1440";
};
in
{
odin-nvidia = {
fingerprint = { "eDP-1-1" = dell-laptop.fingerprint; };
config = {
"eDP-1-1" = {
inherit (dell-laptop) mode dpi;
primary = true;
};
};
};
odin-intel = {
fingerprint = { "eDP1" = dell-laptop.fingerprint; };
config = {
"eDP1" = {
inherit (dell-laptop) mode dpi;
primary = true;
};
};
};
odin-intel-lab-dock = {
fingerprint = {
"DP1-2" = schermo_lab_dp.fingerprint;
"eDP1" = dell-laptop.fingerprint;
};
config = {
"DP1-2" = {
inherit (schermo_lab_dp) mode dpi;
primary = true;
};
"eDP1" = {
inherit (dell-laptop) mode dpi;
position = "0x1080";
};
};
};
odin-nvidia-lab-dock = {
fingerprint = {
"DP-1-1-2" = schermo_lab_dp.fingerprint;
"eDP-1-1" = dell-laptop.fingerprint;
};
config = {
"DP-1-1-2" = {
inherit (schermo_lab_dp) mode dpi;
primary = true;
};
"eDP-1-1" = {
inherit (dell-laptop) mode dpi;
position = "0x1080";
};
};
};
odin-intel-lab-screen = {
fingerprint = {
"DP1" = lab_screen.fingerprint;
"eDP1" = dell-laptop.fingerprint;
};
config = {
"DP1" = {
inherit (lab_screen) mode dpi;
primary = true;
};
"eDP1" = {
inherit (dell-laptop) mode dpi;
position = "320x1440";
};
};
};
odin-nvidia-lab-screen = {
fingerprint = {
"DP-1-1" = lab_screen.fingerprint;
"eDP-1-1" = dell-laptop.fingerprint;
};
config = {
"DP-1-1" = {
inherit (lab_screen) mode dpi;
primary = true;
};
"eDP-1-1" = {
inherit (dell-laptop) mode dpi;
position = "320x1440";
};
};
};
thor-default = {
fingerprint = {
"DP-2" =
"00ffffffffffff001e6d7f5ba1c60a00011f0104b53c22789f8cb5af4f43ab260e5054254b007140818081c0a9c0b300d1c08100d1cf09ec00a0a0a0675030203a0055502100001a000000fd0030901ee63c000a202020202020000000fc004c4720554c545241474541520a000000ff003130314e5454514c533230390a017102031a7123090607e305c000e606050160592846100403011f136fc200a0a0a0555030203a0055502100001a565e00a0a0a029503020350055502100001a5aa000a0a0a0465030203a005550210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000da";
"HDMI-0" =
"00ffffffffffff004c2d2c0d443650302e19010380341d782a5295a556549d250e5054bb8c00b30081c0810081809500a9c001010101023a801871382d40582c450009252100001e000000fd0030481e5216000a202020202020000000fc00433234463339300a2020202020000000ff00485451483330353636370a20200163020324f14690041f131203230907078301000067030c001000802b681a00000101304800011d00bc52d01e20b828554009252100001e8c0ad090204031200c4055000925210000188c0ad08a20e02d10103e9600092521000018215280a07238304088c8350009252100001c00000000000000000000000000000000000000fa";
};
config = {
"DP-2" = {
mode = "2560x1440";
position = "1080x346";
primary = true;
dpi = 96;
};
"HDMI-0" = {
mode = "1920x1080";
position = "0x0";
rotate = "right";
dpi = 96;
};
};
};
};
};
}

11
modules/hm/bash.nix Normal file
View file

@ -0,0 +1,11 @@
{
programs.bash = {
enable = true;
enableVteIntegration = true;
shellAliases = { ".." = "cd .."; };
bashrcExtra = ''
source $HOME/.profile
'';
};
}

9
modules/hm/bat.nix Normal file
View file

@ -0,0 +1,9 @@
{
programs.bat = {
enable = true;
config = {
theme = "Nord";
tabs = "2";
};
};
}

6
modules/hm/biblio.nix Normal file
View file

@ -0,0 +1,6 @@
{ pkgs, ... }: {
home.packages = builtins.attrValues {
inherit (pkgs) calibre;
inherit (pkgs.unstable_pkgs) mangal;
};
}

8
modules/hm/bitwarden.nix Normal file
View file

@ -0,0 +1,8 @@
{ pkgs, config, lib, ... }: {
home.packages =
[ pkgs.bitwarden ] ++
lib.optionals config.programs.rofi.enable (builtins.attrValues {
inherit (pkgs.unstable_pkgs) rbw rofi-rbw;
inherit (pkgs.pinentry) gnome3;
});
}

1
modules/hm/blender.nix Normal file
View file

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

View file

@ -0,0 +1,4 @@
{ pkgs, ... }: {
home.packages = [ (pkgs.blender.override { cudaSupport = true; }) ];
}

11
modules/hm/bottom.nix Normal file
View file

@ -0,0 +1,11 @@
{ pkgs, ... }:
let tomlGenerate = (pkgs.formats.toml { }).generate "bottom-toml";
in {
home.packages = [ pkgs.bottom ];
xdg.configFile."bottom/bottom.toml".source = tomlGenerate {
"flags" = {
"left_legend" = true;
"color" = "nord";
};
};
}

7
modules/hm/broot.nix Normal file
View file

@ -0,0 +1,7 @@
{
programs.broot = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
}

51
modules/hm/bspwm.nix Normal file
View file

@ -0,0 +1,51 @@
{ pkgs, lib, ... }:
with pkgs.lib.nix-rice;
let
xsetroot = "${pkgs.xorg.xsetroot}/bin/xsetroot";
monitorPages = [ "" "" "" "" "" "" "" "" "" "" ];
monitorPagesString = lib.strings.concatStringsSep " " monitorPages;
monitorSetupScript = pkgs.writeShellScript "monitorSetupScript" ''
for monitor in $(bspc query -M --names); do
bspc monitor $monitor -d ${monitorPagesString}
done
${pkgs.autorandr}/bin/autorandr -c || true
systemctl --user restart polybar # Restart polybar
systemctl --user restart kdeconnect-indicator # Restart polybar
'';
strPalette = palette.toRGBHex pkgs.rice.colorPalette;
in
{
xsession.windowManager.bspwm = {
enable = true;
settings = {
border_width = 1;
border_radius = 8;
window_gap = 2;
split_ratio = 0.5;
top_padding = 0;
bottom_padding = 0;
right_padding = 0;
left_padding = 0;
borderless_monocle = true;
gapless_monocle = false;
normal_border_color = strPalette.normal.blue;
focused_border_color = strPalette.bright.red;
};
# monitors = builtins.foldl' (acc: monitor: acc // { ${monitor} = monitorPages; }) { } monitors;
rules = {
"*" = { follow = true; };
"Zathura" = { state = "tiled"; };
"Yad" = { state = "floating"; };
};
startupPrograms = [
"${monitorSetupScript}" # Setup monitors
"${xsetroot} -solid black -cursor_name left_ptr" # Set cursor
"${pkgs.update-background}/bin/update-background" # Set background
];
};
services = {
network-manager-applet.enable = true;
blueman-applet.enable = true;
};
home.packages = [ pkgs.blueman ];
}

29
modules/hm/cava.nix Normal file
View file

@ -0,0 +1,29 @@
{ pkgs, lib, ... }:
let
strPalette = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.colorPalette;
fmtString = str: "'${str}'";
in
{
home.packages = [ pkgs.cava ];
xdg.configFile."cava/config".text = lib.generators.toINI { } {
general = {
bar_width = 1;
bar_spacing = 1;
};
color = {
gradient = 1;
gradient_count = 5;
gradient_color_1 = fmtString strPalette.normal.red;
gradient_color_2 = fmtString strPalette.normal.yellow;
gradient_color_3 = fmtString strPalette.normal.white;
gradient_color_4 = fmtString strPalette.normal.cyan;
gradient_color_5 = fmtString strPalette.normal.blue;
};
smoothing = {
gravity = 40;
noise_reduction = 0.25;
monstercat = 1;
};
};
}

View file

@ -0,0 +1,19 @@
{
editorconfig = {
enable = true;
settings = {
"*" = {
charset = "utf-8";
end_of_line = "lf";
indent_size = "2";
# max_line_width = "120";
indent_style = "space";
trim_trailing_whitespace = "true";
insert_final_newline = "true";
};
"*.py" = {
indent_size = 4;
};
};
};
}

View file

@ -0,0 +1,9 @@
{ pkgs, config, lib, ... }: {
home.packages =
lib.optionals config.programs.helix.enable builtins.attrValues
{
inherit (pkgs) clang-tools cmake-language-server;
} ++ lib.optionals config.programs.kakoune.enable builtins.attrValues {
inherit (pkgs) clang-tools cmake-language-server;
};
}

View file

@ -0,0 +1,11 @@
{ config, pkgs, lib, ... }: {
home.packages =
lib.optionals config.programs.helix.enable builtins.attrValues
{
inherit (pkgs) yaml-language-server taplo-cli;
inherit (pkgs.nodePackages) vscode-langservers-extracted;
} ++ lib.optionals config.programs.kakoune.enable builtins.attrValues {
inherit (pkgs) yaml-language-server;
inherit (pkgs.nodePackages) vscode-langservers-extracted;
};
}

View file

@ -0,0 +1,3 @@
{ pkgs, ... }: {
home.packages = builtins.attrValues { inherit (pkgs.unstable_pkgs.jetbrains) datagrip jdk; };
}

View file

@ -0,0 +1,14 @@
{ pkgs, config, lib, ... }: {
home.packages =
builtins.attrValues { inherit (pkgs) docker-compose docker-machine; }
++ lib.optionals config.programs.helix.enable builtins.attrValues {
inherit (pkgs.nodePackages) dockerfile-language-server-nodejs;
};
home.shellAliases = {
"dkcd" = "docker-compose down";
"dkc" = "docker-compose";
"dkcu" = "docker-compose up";
"dk" = "docker";
};
}

View file

@ -0,0 +1,9 @@
{ pkgs, lib, config, ... }: {
programs.go = {
enable = true;
goPath = ".go";
};
home.packages = lib.optionals config.programs.helix.enable [ pkgs.gopls ]
++ (lib.optionals config.programs.kakoune.enable [ pkgs.gopls ]);
}

View file

@ -0,0 +1,11 @@
{ pkgs, lib, config, ... }: {
home.packages =
lib.optionals config.programs.helix.enable builtins.attrValues
{
inherit (pkgs.nodePackages) typescript-language-server;
} ++ lib.optionals config.programs.kakoune.enable builtins.attrValues {
inherit (pkgs.nodePackages) typescript-language-server;
};
programs.neovim.withNodeJs = true;
}

View file

@ -0,0 +1,4 @@
{ pkgs, ... }: {
home.packages =
builtins.attrValues { inherit (pkgs) awscli2 kubectl kubernetes-helm openlens; };
}

View file

@ -0,0 +1,8 @@
{ pkgs, config, lib, ... }: {
home.packages = [ pkgs.bibtool pkgs.texlive.combined.scheme-medium ]
++ lib.optionals config.programs.helix.enable [ pkgs.texlab ]
++ lib.optionals config.programs.kakoune.enable (builtins.attrValues {
inherit (pkgs) texlab aspell;
inherit (pkgs.aspellDicts) en en-computers en-science it;
});
}

View file

@ -0,0 +1,10 @@
{ pkgs, lib, config, ... }: {
home.packages = [
pkgs.pandoc
# pkgs.pandoc-drawio-filter
# pkgs.pandoc-imagine
]
++ lib.optionals config.programs.helix.enable [
pkgs.marksman
];
}

View file

@ -0,0 +1,8 @@
{ pkgs, config, lib, ... }: {
home.packages = builtins.attrValues
{
inherit (pkgs) nixpkgs-fmt nixfmt nix-prefetch-scripts nix-review nix-tree;
} ++ lib.optionals config.programs.helix.enable [ pkgs.nil ]
++ lib.optionals config.programs.kakoune.enable [ pkgs.rnix-lsp ];
programs.neovim.plugins = [ pkgs.vimPlugins.vim-nix ];
}

View file

@ -0,0 +1,20 @@
{ pkgs, lib, config, ... }:
let
py = pkgs.python3;
pyPkgs = py.pkgs;
in
{
home.packages = [ py pyPkgs.black ]
++ lib.optionals config.programs.helix.enable ([
pyPkgs.python-lsp-server
pyPkgs.pyls-flake8
pyPkgs.pyls-isort
] ++ pyPkgs.python-lsp-server.optional-dependencies.all)
++ lib.optionals config.programs.kakoune.enable ([
pyPkgs.python-lsp-server
pyPkgs.pyls-flake8
pyPkgs.pyls-isort
] ++ pyPkgs.python-lsp-server.optional-dependencies.all);
programs.neovim.withPython3 = true;
}

View file

@ -0,0 +1,24 @@
{ pkgs, lib, config, ... }: {
home.file.".cargo/config".text = ''
[build]
rustc-wrapper = "${pkgs.sccache}/bin/sccache"
'';
home.packages = builtins.attrValues
{
inherit (pkgs)
bacon cargo cargo-audit cargo-criterion cargo-deadlinks cargo-expand
cargo-flamegraph cargo-fuzz cargo-hack cargo-hakari cargo-inspect
cargo-modules cargo-outdated cargo-profiler cargo-release cargo-show-asm
cargo-spellcheck cargo-tarpaulin cargo-udeps cargo-watch cargo-workspaces
clippy rustc rustfmt;
# cargo-about
# cargo-auditable
# cargo-deny
# cargo-deps
# cargo-feature
} ++ lib.optionals config.programs.helix.enable
(builtins.attrValues { inherit (pkgs) lldb rust-analyzer; })
++ lib.optionals config.programs.kakoune.enable
(builtins.attrValues { inherit (pkgs) rust-analyzer; });
}

7
modules/hm/dircolors.nix Normal file
View file

@ -0,0 +1,7 @@
{
programs.dircolors = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
}

8
modules/hm/direnv.nix Normal file
View file

@ -0,0 +1,8 @@
{
programs.direnv = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
}

53
modules/hm/dunst.nix Normal file
View file

@ -0,0 +1,53 @@
{ pkgs, ... }:
with pkgs.lib.nix-rice;
let strPalette = palette.toRGBHex pkgs.rice.colorPalette;
in {
home.packages = builtins.attrValues {
inherit (pkgs) dunst;
inherit (pkgs.rice.font.normal) package;
};
services.dunst = {
enable = true;
iconTheme = {
package = pkgs.qogir-icon-theme;
name = "Qogir";
};
settings = {
global = {
browser = "${pkgs.xdg-utils}/bin/xdg-open";
# corner_radius = 8;
dmenu = "${pkgs.rofi}/bin/rofi -dmenu -p dunst:";
follow = "keyboard";
font = "${pkgs.rice.font.normal.name} 10";
frame_color = strPalette.normal.blue;
frame_width = 1;
height = 320;
mouse_middle_click = "context";
notification_limit = 10;
offset = "7x28";
separator_color = strPalette.normal.blue;
transparency = 100 - float.round (pkgs.rice.opacity * 100);
width = "(0, 320)";
};
urgency_low = {
inherit (strPalette) background foreground;
timeout = 10;
};
urgency_normal = {
inherit (strPalette) background foreground;
timeout = 10;
};
urgency_critical = {
inherit (strPalette) background foreground;
frame_color = strPalette.bright.red;
timeout = 0;
};
shortcuts = {
# close = "ctrl+space";
# close_all = "ctrl+shift+space";
# history = "ctrl+backslash";
# context = "ctrl+shift+period";
};
};
};
}

View file

@ -0,0 +1,9 @@
{ pkgs, ... }:
let
package = with pkgs.dwarf-fortress-packages;
dwarf-fortress-full.override {
theme = themes.ironhand;
enableFPS = true;
};
in
{ home.packages = [ package ]; }

View file

@ -0,0 +1 @@
{ services.easyeffects.enable = true; }

7
modules/hm/exa.nix Normal file
View file

@ -0,0 +1,7 @@
{
programs.exa = {
enable = true;
enableAliases = true;
};
}

11
modules/hm/firefox.nix Normal file
View file

@ -0,0 +1,11 @@
{
programs.firefox = {
enable = true;
profiles.default = {
settings = {
# "gfx.webrender.all" = true;
"browser.altClickSave" = true;
};
};
};
}

9
modules/hm/fonts.nix Normal file
View file

@ -0,0 +1,9 @@
{ pkgs, ... }: {
fonts.fontconfig = { enable = true; };
home.packages = builtins.attrValues {
inherit (pkgs)
dejavu_fonts noto-fonts noto-fonts-extra noto-fonts-cjk-sans font-awesome
corefonts# Microsoft fonts
vistafonts;
};
}

8
modules/hm/fzf.nix Normal file
View file

@ -0,0 +1,8 @@
{
programs.fzf = {
enable = true;
tmux.enableShellIntegration = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
}

126
modules/hm/git.nix Normal file
View file

@ -0,0 +1,126 @@
{ pkgs, ... }:
let
shellAliases = {
"g" = "git";
"ga" = "git add";
"gaa" = "git add --all";
"gau" = "git add --update";
"gav" = "git add --verbose";
"gb" = "git branch";
"gba" = "git branch -a";
"gbd" = "git branch -d";
"gbD" = "git branch -D";
"gbl" = "git blame -b -w";
"gbnm" = "git branch --no-merged";
"gbr" = "git branch --remote";
"gbs" = "git bisect";
"gbsb" = "git bisect bad";
"gbsg" = "git bisect good";
"gbsr" = "git bisect reset";
"gbss" = "git bisect start";
"gc" = "git commit -v";
"gc!" = "git commit -v --amend";
"gcn!" = "git commit -v --no-edit --amend";
"gca" = "git commit -v -a";
"gca!" = "git commit -v -a --amend";
"gcan!" = "git commit -v -a --no-edit --amend";
"gcans!" = "git commit -v -a -s --no-edit --amend";
"gcas" = "git commit -a -s";
"gcb" = "git checkout -b";
"gcl" = "git clone --recurse-submodules";
"gclean" = "git clean -id";
"gpristine" = "git reset --hard && git clean -dffx";
"gco" = "git checkout";
"gcount" = "git shortlog -sn";
"gcp" = "git cherry-pick";
"gcpa" = "git cherry-pick --abort";
"gcpc" = "git cherry-pick --continue";
"gd" = "git diff";
"gdtd" = "git difftool -g --dir-diff";
"gdca" = "git diff --cached";
"gdcw" = "git diff --cached --word-diff";
"gdct" = "git describe --tags $(git rev-list --tags --max-count=1)";
"gds" = "git diff --staged";
"gdt" = "git diff-tree --no-commit-id --name-only -r";
"gdw" = "git diff --word-diff";
"gf" = "git fetch";
"gfa" = "git fetch --all --prune";
"gfg" = "git ls-files | grep";
"gignored" = ''git ls-files -v \| grep"^[[ :lower: ]]"'';
"glo" = "git log --oneline --decorate";
"glols" =
"git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --stat";
"glola" =
"git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --all";
"glog" = "git log --oneline --decorate --graph";
"gloga" = "git log --oneline --decorate --graph --all";
"gm" = "git merge";
"gma" = "git merge --abort";
"gp" = "git push";
"gpa" = "git push --all";
"gpf!" = "git push --force";
"gpoat" = "git push origin --all && git push origin --tags";
"gpu" = "git push upstream";
"gpv" = "git push -v";
"gr" = "git remote";
"gra" = "git remote add";
"grb" = "git rebase";
"grba" = "git rebase --abort";
"grbc" = "git rebase --continue";
"grbi" = "git rebase -i";
"grev" = "git revert";
"grh" = "git reset";
"grhh" = "git reset --hard";
"grm" = "git rm";
"grmc" = "git rm --cached";
"grs" = "git restore";
"grv" = "git remote -v";
"gss" = "git status -s";
"gst" = "git status";
"gsta" = "git stash push";
"gstas" = "git stash save";
"gstaa" = "git stash apply";
"gstc" = "git stash clear";
"gstd" = "git stash drop";
"gstl" = "git stash list";
"gstp" = "git stash pop";
"gsts" = "git stash show --text";
"gup" = "git pull --rebase";
"gupv" = "git pull --rebase -v";
};
in
{
programs.git = {
enable = true;
userName = "Filippo Berto";
userEmail = "berto.f@protonmail.com";
# signing = {
# key = "berto.f@protonmail.com";
# signByDefault = true;
# };
extraConfig = {
"add.interactive".useBuiltin = false;
commit.gpgSign = true;
core.editor = "hx";
credential.helper = "cache --timeout=3600 ";
delta.navigate = true;
# delta.side-by-side = true;
diff.colorMoved = "default";
diff.guitool = "meld";
diff.tool = "meld";
# init.defaultBranch = "main";
merge.conflictstyle = "diff3";
merge.guitool = "meld";
merge.tool = "meld";
pull.rebase = true;
rebase.autoStash = true;
user.signingKey = "berto.f@protonmail.com";
};
lfs.enable = true;
delta.enable = true;
};
programs.bash.shellAliases = shellAliases;
programs.zsh.shellAliases = shellAliases;
home.packages =
builtins.attrValues { inherit (pkgs) gh git-secret glab meld; };
}

View file

@ -0,0 +1,32 @@
{ pkgs, ... }:
let
gnomeExtensions = with pkgs.gnomeExtensions; [
appindicator
aylurs-widgets
babar
caffeine
dash-to-dock
dash-to-panel
# dash-to-plank
# devbar
dock-from-dash
# espresso
# focus
freon
gamemode
# git
gtile
# jiggle
just-perfection
# keyman
spotify-tray
topiconsfix
# tray-icons
tray-icons-reloaded
unite
user-themes
# vitals
];
in
{ home.packages = [ pkgs.gnome.gnome-tweaks ] ++ gnomeExtensions; }

12
modules/hm/gpg.nix Normal file
View file

@ -0,0 +1,12 @@
{
programs.gpg = {
enable = true;
settings = { };
};
services.gpg-agent = {
enable = true;
defaultCacheTtl = 600;
# extraConfig = "allow-loopback-pinentry";
};
}

23
modules/hm/grobi.nix Normal file
View file

@ -0,0 +1,23 @@
{
services.grobi = {
enable = true;
rules = [
{
name = "Nvidia2screens";
outputs_connected = [ "HDMI-0" "eDP-1-1" ];
configure_column = [ "HDMI-0" "eDP-1-1" ];
primary = "HDMI-0";
}
{
name = "FallbackIntel";
outputs_connected = [ "eDP1" ];
configure_single = "eDP1";
}
{
name = "FallbackNvidia";
outputs_connected = [ "eDP-1-1" ];
configure_single = "eDP-1-1";
}
];
};
}

29
modules/hm/gtk_theme.nix Normal file
View file

@ -0,0 +1,29 @@
{ pkgs, ... }: {
gtk = with pkgs.rice; {
enable = true;
font = font.normal;
iconTheme = {
package = pkgs.qogir-icon-theme;
name = "Qogir-dark";
};
theme = {
package = pkgs.arc-theme;
name = "Arc-Dark";
};
};
qt = {
enable = true;
platformTheme = "gtk";
};
home = {
pointerCursor = {
package = pkgs.qogir-icon-theme;
name = "Qogir";
# size = 64;
# x11.enable = true;
gtk.enable = true;
};
};
}

15
modules/hm/heif.nix Normal file
View file

@ -0,0 +1,15 @@
{ pkgs, ... }:
let thumbnailer = "${pkgs.libheif.bin}/bin/heif-thumbnailer";
in {
# home.packages = [
# pkgs.libheif.bin
# ];
xdg.dataFile."thumbnailers/heic.thumbnailer".text = ''
[Thumbnailer Entry]
TryExec=${thumbnailer}
Exec=${thumbnailer} -s %s %i %o
MimeType=image/heif;image/heic
'';
}

126
modules/hm/helix.nix Normal file
View file

@ -0,0 +1,126 @@
{ pkgs, ... }: {
programs.bash.shellAliases = { x = "hx"; };
programs.zsh.shellAliases = { x = "hx"; };
home.sessionVariables = {
EDITOR = "hx";
VISUAL = "hx";
};
home.packages = builtins.attrValues {
inherit (pkgs) nil; # Nix language server
# inherit desktopItem;
};
programs.helix = {
enable = true;
package = pkgs.unstable_pkgs.helix;
languages.language = [
{
name = "nix";
config = { nil.formatting.command = [ "nixpkgs-fmt" ]; };
}
{
name = "latex";
config = {
texlab.formatterLineLength = 0;
texlab.bibtexFormatter = "latexindent";
texlab.latexindent.modifyLineBreaks = false;
# texlab.chktex.onOpenAndSave = true;
texlab.chktex.onEdit = true;
};
}
];
settings = {
theme = "nightfox";
editor = {
lsp.display-messages = true;
lsp.display-inlay-hints = true;
scrolloff = 5;
soft-wrap.enable = true;
true-color = true;
};
keys.normal = {
"C-A-l" = ":format";
"A-r" = ":reload";
"C-A-r" = ":reload-all";
};
};
themes =
let
transparent = "none";
gray = "#665c54";
dark-gray = "#3c3836";
white = "#fbf1c7";
black = "#282828";
red = "#fb4934";
green = "#b8bb26";
yellow = "#fabd2f";
orange = "#fe8019";
blue = "#83a598";
magenta = "#d3869b";
cyan = "#8ec07c";
in
{
base16 = {
"ui.menu" = transparent;
"ui.menu.selected" = { modifiers = [ "reversed" ]; };
"ui.linenr" = {
fg = gray;
bg = dark-gray;
};
"ui.popup" = { modifiers = [ "reversed" ]; };
"ui.linenr.selected" = {
fg = white;
bg = black;
modifiers = [ "bold" ];
};
"ui.selection" = {
fg = black;
bg = blue;
};
"ui.selection.primary" = { modifiers = [ "reversed" ]; };
"comment" = { fg = gray; };
"ui.statusline" = {
fg = white;
bg = dark-gray;
};
"ui.statusline.inactive" = {
fg = dark-gray;
bg = white;
};
"ui.help" = {
fg = dark-gray;
bg = white;
};
"ui.cursor" = { modifiers = [ "reversed" ]; };
"variable" = red;
"variable.builtin" = orange;
"constant.numeric" = orange;
"constant" = orange;
"attributes" = yellow;
"type" = yellow;
"ui.cursor.match" = {
fg = yellow;
modifiers = [ "underlined" ];
};
"string" = green;
"variable.other.member" = red;
"constant.character.escape" = cyan;
"function" = blue;
"constructor" = blue;
"special" = blue;
"keyword" = magenta;
"label" = magenta;
"namespace" = blue;
"diff.plus" = green;
"diff.delta" = yellow;
"diff.minus" = red;
"diagnostic" = { modifiers = [ "underlined" ]; };
"ui.gutter" = { bg = black; };
"info" = blue;
"hint" = dark-gray;
"debug" = dark-gray;
"warning" = yellow;
"error" = red;
};
};
};
}

1
modules/hm/info.nix Normal file
View file

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

1
modules/hm/java.nix Normal file
View file

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

View file

@ -0,0 +1,17 @@
{ pkgs, ... }:
let joystickwakeCmd = "${pkgs.joystickwake}/bin/joystickwake";
in {
systemd.user.services."joystickwake" = {
Unit = {
Description = "Keep lockscreen from activating";
After = [ "graphical-session.target" ];
PartOf = [ "graphical-session.target" ];
};
Install = { WantedBy = [ "graphical-session.target" ]; };
Service = {
Type = "simple";
ExecStart = joystickwakeCmd;
Environment = [ "DISPLAY=:0" ];
};
};
}

1
modules/hm/jq.nix Normal file
View file

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

392
modules/hm/kakoune.nix Normal file
View file

@ -0,0 +1,392 @@
{ pkgs, ... }:
let
themeBuilder = palette:
with palette; ''
set-face global value rgb:${normal.magenta},default
set-face global type rgb:${bright.white},default
set-face global identifier rgb:${normal.cyan},default
set-face global string rgb:${normal.green},default
set-face global error rgb:${normal.red},default
set-face global keyword rgb:${normal.blue},default
set-face global operator rgb:${normal.blue},default
set-face global attribute rgb:${bright.blue},default
set-face global comment rgb:${bright.blue},default
set-face global meta rgb:${normal.yellow},default
set-face global Default rgb:${normal.white},default
set-face global PrimarySelection rgb:${normal.black},rgb:${dark.yellow}
set-face global SecondarySelection rgb:${normal.black},rgb:${dark.white}
set-face global PrimaryCursor rgb:${normal.black},rgb:${normal.yellow}
set-face global SecondaryCursor rgb:${normal.black},rgb:${normal.white}
set-face global MenuForeground rgb:${normal.white},rgb:${bright.black}
set-face global MenuBackground default,rgb:${normal.black}
set-face global MenuInfo default,rgb:${normal.black}
set-face global Information rgb:${dark.black},rgb:${normal.cyan}
set-face global StatusLine rgb:${normal.white},rgb:${normal.black}
set-face global StatusLineMode rgb:${normal.blue},rgb:${normal.black}
set-face global StatusLineInfo rgb:${normal.blue},rgb:${normal.black}
set-face global StatusLineValue rgb:${normal.blue},rgb:${normal.black}
set-face global StatusCursor rgb:${dark.black},rgb:${normal.yellow}
set-face global Prompt rgb:${normal.cyan},rgb:${normal.black}
set-face global BufferPadding default,default
'';
desktopItem = pkgs.makeDesktopItem {
name = "Kakoune";
exec = "kak %F";
icon = "kakoune";
desktopName = "Kakoune";
comment = "Kakoune text editor";
terminal = true;
categories = [ "Development" ];
mimeTypes = [
"text/english"
"text/plain"
"text/x-makefile"
"text/x-c++hdr"
"text/x-c++src"
"text/x-chdr"
"text/x-csrc"
"text/x-java"
"text/x-moc"
"text/x-pascal"
"text/x-tcl"
"text/x-tex"
"application/x-shellscript"
"text/x-c"
"text/x-c++"
];
};
packages = builtins.attrValues {
inherit (pkgs) editorconfig-core-c;
inherit desktopItem;
};
in
{
programs.bash.shellAliases = { k = "kak"; };
programs.zsh.shellAliases = { k = "kak"; };
home.packages = packages;
programs.kakoune = {
enable = true;
config = {
colorScheme = "nord";
tabStop = 2;
indentWidth = 2;
alignWithTabs = true;
scrollOff = {
lines = 5;
columns = 3;
};
ui = {
setTitle = true;
changeColors = true;
enableMouse = true;
};
wrapLines = {
enable = true;
word = true;
};
numberLines = {
enable = true;
highlightCursor = true;
};
keyMappings = [
{
mode = "normal";
docstring = "Edit file";
key = "<c-e>";
effect = ":edit<space>";
}
{
mode = "user";
docstring = "Code actions";
key = "a";
effect = ":lsp-code-actions<ret>";
}
{
mode = "user";
docstring = "Comment block";
key = "b";
effect = ":comment-block<ret>";
}
{
mode = "user";
docstring = "Comment line";
key = "l";
effect = ":comment-line<ret>";
}
{
mode = "user";
docstring = "Copy to clipboard";
key = "y";
effect = "<a-|>${pkgs.xclip}/bin/xclip -i -selection clipboard<ret>";
}
{
mode = "user";
docstring = "Format code with formatter";
key = "f";
effect = ":format<ret>";
}
{
mode = "user";
docstring = "Format code with LSP";
key = "F";
effect = ":lsp-formatting-sync<ret>";
}
{
mode = "user";
docstring = "Jump to definition";
key = "d";
effect = ":lsp-definition<ret>";
}
{
mode = "user";
docstring = "Rename object";
key = "r";
effect = ":lsp-rename-prompt<ret>";
}
{
mode = "user";
docstring = "Jump to type definition";
key = "t";
effect = ":lsp-type-definition<ret>";
}
{
mode = "user";
docstring = "List project diagnostics";
key = "i";
effect = ":lsp-diagnostics<ret>";
}
{
mode = "user";
docstring = "Paste from clipboard (after)";
key = "P";
effect = "<a-!>${pkgs.xclip}/bin/xclip -selection clipboard -o<ret>";
}
{
mode = "user";
docstring = "Paste from clipboard (before)";
key = "p";
effect = "!${pkgs.xclip}/bin/xclip -selection clipboard -o<ret>";
}
{
mode = "user";
docstring = "Show hover info";
key = "q";
effect = ":lsp-hover<ret>";
}
{
mode = "user";
docstring = "Spellcheck English";
key = "S";
effect = ":spell en<ret>";
}
{
mode = "user";
docstring = "Spellcheck";
key = "s";
effect = ":spell ";
}
{
mode = "normal";
docstring = "Try next snippet placeholder";
key = "<c-n>";
effect = "<a-;>: insert-c-n<ret>";
}
# { mode = "normal"; docstring = "Search"; key = "/"; effect = "/(?i)"; }
# { mode = "normal"; docstring = "Reverse search"; key = "<a-/>"; effect = "<a-/>(?i)"; }
];
hooks = [
{
name = "BufCreate";
option = ".*";
commands = "editorconfig-load";
}
# { name = "ModuleLoaded"; option = "auto-pairs"; commands = "auto-pairs-enable"; }
{
name = "ModuleLoaded";
option = "powerline";
commands = "powerline-enable; powerline-start";
}
{
name = "BufSetOption";
option = "filetype=latex";
commands = "set-option buffer formatcmd latexindent";
}
{
name = "BufSetOption";
option = "filetype=python";
commands = "set-option buffer formatcmd 'black -'";
}
{
name = "BufSetOption";
option = "filetype=(markdown|html|json|yaml|css|scss|less)";
commands = "set-option buffer formatcmd prettier";
}
{
name = "BufSetOption";
option = "filetype=rust";
commands = "set-option buffer formatcmd 'rustfmt'";
}
{
name = "BufSetOption";
option = "filetype=sh";
commands = "set-option buffer formatcmd 'rustfmt'";
}
];
# TODO add more formatters from https://github.com/mawww/kakoune/wiki/Format
};
extraConfig = builtins.concatStringsSep "\n" [
"# Custom commands"
"add-highlighter global/ regex \\h+$ 0:Error # Highlight trailing spaces"
"eval %sh{kak-lsp --kakoune -s $kak_session}"
"lsp-enable"
''
def -hidden insert-c-n %{
try %{
lsp-snippets-select-next-placeholders
exec '<a-;>d'
} catch %{
exec -with-hooks '<c-n>'
}
}
''
"require-module powerline"
"require-module connect-broot"
"require-module connect-lf"
"require-module connect-rofi"
];
plugins = with pkgs.kakounePlugins; [
prelude-kak
kak-lsp
auto-pairs-kak
powerline-kak
connect-kak
];
};
# THEME FILE
xdg.configFile."kak/colors/nord.kak".text = themeBuilder
(pkgs.lib.nix-rice.palette.toRgbShortHex pkgs.rice.colorPalette);
xdg.configFile."kak-lsp/kak-lsp.toml".text = ''
snippet_support = false
verbosity = 2
[server]
timeout = 1800 # seconds = 30 minutes
[language.c_cpp]
filetypes = ["c", "cpp"]
roots = ["compile_commands.json", ".clangd"]
command = "clangd"
offset_encoding = "utf-8"
[language.json]
filetypes = ["json"]
roots = ["package.json"]
command = "vscode-json-language-server"
args = ["--stdio"]
[language.yaml]
filetypes = ["yaml"]
roots = [".git"]
command = "yaml-language-server"
args = ["--stdio"]
[language.yaml.settings]
# See https://github.com/redhat-developer/yaml-language-server#language-server-settings
# Defaults are at https://github.com/redhat-developer/yaml-language-server/blob/master/src/yamlSettings.ts
yaml.format.enable = true
[language.go]
filetypes = ["go"]
roots = ["Gopkg.toml", "go.mod", ".git", ".hg"]
command = "gopls"
offset_encoding = "utf-8"
settings_section = "gopls"
[language.go.settings.gopls]
# See https://github.com/golang/tools/blob/master/gopls/doc/settings.md
# "build.buildFlags" = []
[language.html]
filetypes = ["html"]
roots = ["package.json"]
command = "vscode-html-language-server"
args = ["--stdio"]
[language.css]
filetypes = ["css"]
roots = ["package.json", ".git"]
command = "vscode-css-language-server"
args = ["--stdio"]
[language.less]
filetypes = ["less"]
roots = ["package.json", ".git"]
command = "vscode-css-language-server"
args = ["--stdio"]
[language.scss]
filetypes = ["scss"]
roots = ["package.json", ".git"]
command = "vscode-css-language-server"
args = ["--stdio"]
[language.javascript]
filetypes = ["javascript"]
roots = [".flowconfig"]
command = "flow"
args = ["lsp"]
[language.latex]
filetypes = ["latex"]
roots = [".git"]
command = "texlab"
settings_section = "texlab"
[language.latex.settings.texlab]
# See https://github.com/latex-lsp/texlab/blob/master/src/options.rs
# bibtexFormatter = "texlab"
[language.nix]
filetypes = ["nix"]
roots = ["flake.nix", "shell.nix", ".git"]
command = "rnix-lsp"
[language.python]
filetypes = ["python"]
roots = ["requirements.txt", "setup.py", ".git", ".hg"]
command = "pylsp"
offset_encoding = "utf-8"
[language.python.settings]
# See https://github.com/palantir/python-language-server#configuration
# and https://github.com/palantir/python-language-server/blob/develop/vscode-client/package.json
# "pyls.configurationSources" = ["flake8"]
[language.rust]
filetypes = ["rust"]
roots = ["Cargo.toml"]
command = "rust-analyzer"
settings_section = "rust-analyzer"
[language.rust.settings.rust-analyzer]
hoverActions.enable = false # kak-lsp doesn't support this at the moment
# cargo.features = []
# See https://rust-analyzer.github.io/manual.html#configuration
# If you get 'unresolved proc macro' warnings, you have two options
# 1. The safe choice is two disable the warning:
diagnostics.disabled = ["unresolved-proc-macro"]
# 2. Or you can opt-in for proc macro support
procMacro.enable = true
cargo.loadOutDirsFromCheck = true
# See https://github.com/rust-analyzer/rust-analyzer/issues/6448
[language.bash]
filetypes = ["sh"]
roots = [".git", ".hg"]
command = "bash-language-server"
args = ["start"]
'';
}

View file

@ -0,0 +1,6 @@
{
services.kdeconnect = {
enable = true;
indicator = true;
};
}

13
modules/hm/keepassxc.nix Normal file
View file

@ -0,0 +1,13 @@
{ pkgs, ... }: {
config.systemd.user.services.keepassxc = {
Unit = {
Description = "KeePassXC password manager";
After = [ "graphical-session-pre.target" ];
Partof = [ "graphical-session.target" ];
};
Install = { WantedBy = [ "graphical-session.target" ]; };
Service = { ExecStart = "${pkgs.keepassxc}/bin/keepassxc"; };
};
}

10
modules/hm/keychain.nix Normal file
View file

@ -0,0 +1,10 @@
{
programs.keychain = {
enable = true;
keys = [ "id_ed25519" ];
agents = [ "gpg" "ssh" ];
enableBashIntegration = true;
enableZshIntegration = true;
enableXsessionIntegration = true;
};
}

1
modules/hm/kicad.nix Normal file
View file

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

33
modules/hm/kitty.nix Normal file
View file

@ -0,0 +1,33 @@
{ pkgs, ... }:
let
strPalette = pkgs.lib.nix-rice.palette.toRgbHex {
inherit (pkgs.rice.colorPalette)
background foreground color0 color1 color2 color3 color4 color5 color6
color7 color8 color9 color10 color11 color12 color13 color14 color15;
};
in
{
programs.kitty = {
enable = true;
settings = {
scrollback_lines = 10000;
enable_audio_bell = false;
visual_bell_duration = toString 0.1;
update_check_interval = 0;
background_opacity = toString pkgs.rice.opacity;
close_on_child_death = "yes";
clipboard_control =
"write-clipboard write-primary read-clipboard read-primary";
disable_ligatures = "never";
editor = "kak";
} // strPalette;
keybindings = {
"ctrl+shift+t" = "new_tab_with_cwd";
"ctrl+shift+enter" = "new_window_with_cwd";
"ctrl+shift+n" = "new_os_window_with_cwd";
"ctrl+shift+up" = "previous_window";
"ctrl+shift+down" = "next_window";
};
font = pkgs.rice.font.monospace;
};
}

442
modules/hm/lf.nix Normal file
View file

@ -0,0 +1,442 @@
{ pkgs, ... }:
let
lf_kitty_cleaner = pkgs.writeShellScript "lf_kitty_cleaner" ''
kitty +icat --clear --silent --transfer-mode file
'';
lf_kitty_preview = pkgs.writeShellScript "lf_kitty_preview" ''
file=$1
w=$2
h=$3
x=$4
y=$5
if [[ "$( file -Lb --mime-type "$file")" =~ ^image ]]; then
kitty +icat --silent --transfer-mode file --place "''${w}x''${h}@''${x}x''${y}" "$file"
exit 1
fi
${pkgs.pistol}/bin/pistol "$file"
'';
in
{
programs.lf = {
enable = true;
settings = {
dircounts = true;
icons = true;
# mouse = true;
number = true;
# scrollof = 3;
hidden = true;
tabstop = 2;
};
previewer = {
source = lf_kitty_preview;
# keybinding = "i";
};
keybindings = { "<c-f>" = "$EDITOR $(fzf)"; };
commands = {
"z" = ''
''${{
result="$(zoxide query --exclude "$PWD" -- "$@")"
lf -remote "send $id cd '$result'"
}}'';
"zi" = ''
''${{
result="$(zoxide query -i -- "$@")"
lf -remote "send $id cd '$result'"
}}'';
"extract" = ''
''${{
set -f
case $f in
*.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
*.tar.gz|*.tgz) tar xzvf $f;;
*.tar.xz|*.txz) tar xJvf $f;;
*.zip) unzip $f;;
*.rar) unrar x $f;;
*.7z) 7z x $f;;
esac
}}'';
"tar" = ''
''${{
set -f
mkdir $1
cp -r $fx $1
tar czf $1.tar.gz $1
rm -rf $1
}}'';
"zip" = ''
''${{
set -f
mkdir $1
cp -r $fx $1
zip -r $1.zip $1
rm -rf $1
}}'';
};
extraConfig = ''
set cleaner ${lf_kitty_cleaner}
'';
};
xdg.configFile."lf/icons".text = ''
# vim:ft=conf
# These examples require Nerd Fonts or a compatible font to be used.
# See https://www.nerdfonts.com for more information.
# default values from lf (with matching order)
# ln l # LINK
# or l # ORPHAN
# tw t # STICKY_OTHER_WRITABLE
# ow d # OTHER_WRITABLE
# st t # STICKY
# di d # DIR
# pi p # FIFO
# so s # SOCK
# bd b # BLK
# cd c # CHR
# su u # SETUID
# sg g # SETGID
# ex x # EXEC
# fi - # FILE
# file types (with matching order)
ln # LINK
or # ORPHAN
tw t # STICKY_OTHER_WRITABLE
ow # OTHER_WRITABLE
st t # STICKY
di # DIR
pi p # FIFO
so s # SOCK
bd b # BLK
cd c # CHR
su u # SETUID
sg g # SETGID
ex # EXEC
fi # FILE
# file extensions (vim-devicons)
*.styl
*.sass
*.scss
*.htm
*.html
*.slim
*.haml
*.ejs
*.css
*.less
*.md
*.mdx
*.markdown
*.rmd
*.json
*.webmanifest
*.js
*.mjs
*.jsx
*.rb
*.gemspec
*.rake
*.php
*.py
*.pyc
*.pyo
*.pyd
*.coffee
*.mustache
*.hbs
*.conf
*.ini
*.yml
*.yaml
*.toml
*.bat
*.mk
*.jpg
*.jpeg
*.bmp
*.png
*.webp
*.gif
*.ico
*.twig
*.cpp
*.c++
*.cxx
*.cc
*.cp
*.c
*.cs
*.h
*.hh
*.hpp
*.hxx
*.hs
*.lhs
*.nix
*.lua
*.java
*.sh
*.fish
*.bash
*.zsh
*.ksh
*.csh
*.awk
*.ps1
*.ml λ
*.mli λ
*.diff
*.db
*.sql
*.dump
*.clj
*.cljc
*.cljs
*.edn
*.scala
*.go
*.dart
*.xul
*.sln
*.suo
*.pl
*.pm
*.t
*.rss
'*.f#' 
*.fsscript
*.fsx
*.fs
*.fsi
*.rs
*.rlib
*.d
*.erl
*.hrl
*.ex
*.exs
*.eex
*.leex
*.heex
*.vim
*.ai
*.psd
*.psb
*.ts
*.tsx
*.jl
*.pp
*.vue
*.elm
*.swift
*.xcplayground
*.tex
*.r
*.rproj
*.sol
*.pem
# file names (vim-devicons) (case-insensitive not supported in lf)
*gruntfile.coffee
*gruntfile.js
*gruntfile.ls
*gulpfile.coffee
*gulpfile.js
*gulpfile.ls
*mix.lock
*dropbox
*.ds_store
*.gitconfig
*.gitignore
*.gitattributes
*.gitlab-ci.yml
*.bashrc
*.zshrc
*.zshenv
*.zprofile
*.vimrc
*.gvimrc
*_vimrc
*_gvimrc
*.bashprofile
*favicon.ico
*license
*node_modules
*react.jsx
*procfile
*dockerfile
*docker-compose.yml
*rakefile
*config.ru
*gemfile
*makefile
*cmakelists.txt
*robots.txt
# file names (case-sensitive adaptations)
*Gruntfile.coffee
*Gruntfile.js
*Gruntfile.ls
*Gulpfile.coffee
*Gulpfile.js
*Gulpfile.ls
*Dropbox
*.DS_Store
*LICENSE
*React.jsx
*Procfile
*Dockerfile
*Docker-compose.yml
*Rakefile
*Gemfile
*Makefile
*CMakeLists.txt
# file patterns (vim-devicons) (patterns not supported in lf)
# .*jquery.*\.js$ 
# .*angular.*\.js$ 
# .*backbone.*\.js$ 
# .*require.*\.js$ 
# .*materialize.*\.js$ 
# .*materialize.*\.css$ 
# .*mootools.*\.js$ 
# .*vimrc.* 
# Vagrantfile$ 
# file patterns (file name adaptations)
*jquery.min.js
*angular.min.js
*backbone.min.js
*require.min.js
*materialize.min.js
*materialize.min.css
*mootools.min.js
*vimrc
Vagrantfile
# archives or compressed (extensions from dircolors defaults)
*.tar
*.tgz
*.arc
*.arj
*.taz
*.lha
*.lz4
*.lzh
*.lzma
*.tlz
*.txz
*.tzo
*.t7z
*.zip
*.z
*.dz
*.gz
*.lrz
*.lz
*.lzo
*.xz
*.zst
*.tzst
*.bz2
*.bz
*.tbz
*.tbz2
*.tz
*.deb
*.rpm
*.jar
*.war
*.ear
*.sar
*.rar
*.alz
*.ace
*.zoo
*.cpio
*.7z
*.rz
*.cab
*.wim
*.swm
*.dwm
*.esd
# image formats (extensions from dircolors defaults)
*.jpg
*.jpeg
*.mjpg
*.mjpeg
*.gif
*.bmp
*.pbm
*.pgm
*.ppm
*.tga
*.xbm
*.xpm
*.tif
*.tiff
*.png
*.svg
*.svgz
*.mng
*.pcx
*.mov
*.mpg
*.mpeg
*.m2v
*.mkv
*.webm
*.ogm
*.mp4
*.m4v
*.mp4v
*.vob
*.qt
*.nuv
*.wmv
*.asf
*.rm
*.rmvb
*.flc
*.avi
*.fli
*.flv
*.gl
*.dl
*.xcf
*.xwd
*.yuv
*.cgm
*.emf
*.ogv
*.ogx
# audio formats (extensions from dircolors defaults)
*.aac
*.au
*.flac
*.m4a
*.mid
*.midi
*.mka
*.mp3
*.mpc
*.ogg
*.ra
*.wav
*.oga
*.opus
*.spx
*.xspf
# other formats
*.pdf
'';
}

View file

@ -0,0 +1,25 @@
{ pkgs, ... }:
let
libinputGesturesCmd = "${pkgs.libinput-gestures}/bin/libinput-gestures";
xdotool = "${pkgs.xdotool}/bin/xdotool";
in
{
systemd.user.services."libinput-gestures" = {
Unit = {
Description = "Touchpad gestures";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
};
Install = { WantedBy = [ "graphical-session.target" ]; };
Service = {
Type = "simple";
ExecStart = libinputGesturesCmd;
};
};
xdg.configFile."libinput-gestures.conf".text = ''
gesture swipe left ${xdotool} key alt+Right
gesture swipe right ${xdotool} key alt+Left
gesture swipe up ${xdotool} key alt+Tab
'';
}

1
modules/hm/lorri.nix Normal file
View file

@ -0,0 +1 @@
{ services.lorri.enable = true; }

6
modules/hm/lsd.nix Normal file
View file

@ -0,0 +1,6 @@
{
programs.lsd = {
enable = true;
enableAliases = true;
};
}

3
modules/hm/lutris.nix Normal file
View file

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

6
modules/hm/man.nix Normal file
View file

@ -0,0 +1,6 @@
{
programs.man = {
enable = true;
# generateCaches = true;
};
}

29
modules/hm/mangohud.nix Normal file
View file

@ -0,0 +1,29 @@
{ pkgs, ... }:
with pkgs.lib.nix-rice;
let strPalette = palette.toRgbShortHex pkgs.rice.colorPalette;
in {
programs.mangohud = {
enable = true;
enableSessionWide = true;
settings = {
toggle_fps_limit = "F1";
cpu_color = strPalette.normal.blue;
cpu_temp = true;
engine_color = strPalette.normal.red;
gpu_color = strPalette.normal.green;
gpu_stats = true;
gpu_temp = true;
io_color = strPalette.normal.white;
media_player_color = strPalette.normal.white;
media_player_name = "spotify";
output_folder = "/home/bertof";
position = "top-left";
ram = true;
ram_color = strPalette.normal.magenta;
toggle_hud = "Shift_L+F12";
toggle_logging = "Shift_L+F2";
vram = true;
vram_color = strPalette.dark.magenta;
};
};
}

18
modules/hm/megasync.nix Normal file
View file

@ -0,0 +1,18 @@
{ pkgs, ... }:
let megasyncCmd = "${pkgs.megacmd}/bin/mega-cmd-server";
in {
home.packages = [ pkgs.megacmd ];
systemd.user.services."mega-cmd-server" = {
Unit = {
Description = "Mega command server";
After = [ "default.target" ];
PartOf = [ "default.target" ];
};
Install = { WantedBy = [ "default.target" ]; };
Service = {
Type = "simple";
ExecStart = megasyncCmd;
};
};
}

9
modules/hm/mpv.nix Normal file
View file

@ -0,0 +1,9 @@
{
programs.mpv = {
enable = true;
bindings = {
"Ctrl+Right" = "playlist-next";
"Ctrl+Left" = "playlist-prev";
};
};
}

1
modules/hm/nautilus.nix Normal file
View file

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

12
modules/hm/ncspot.nix Normal file
View file

@ -0,0 +1,12 @@
{
programs.ncspot = {
enable = true;
# package = pkgs.ncspot.overrideAttrs (o: {
# buildFeatures = o.buildFeatures ++ [ "cover" "mpris" "notify" "share_clipboard" ];
# });
settings = {
use_nerdfont = true;
notify = true;
};
};
}

6
modules/hm/nemo.nix Normal file
View file

@ -0,0 +1,6 @@
{ pkgs, ... }: {
home.packages = with pkgs.cinnamon; [
nemo
];
}

31
modules/hm/nix-index.nix Normal file
View file

@ -0,0 +1,31 @@
{
programs.nix-index = {
enable = true;
# package = pkgs.unstable_pkgs.nix-index;
enableBashIntegration = true;
enableZshIntegration = true;
};
# systemd.user = {
# services."nix-index" = {
# Unit = {
# Description = "Update the nix-locate database";
# After = [ "network.target" ];
# };
# Service = {
# Type = "oneshot";
# ExecStart = "${config.programs.nix-index.package}/bin/nix-index";
# };
# };
# timers."nix-index" = {
# Unit.Description = "Daily update the nix-locate database";
# Timer = {
# OnCalendar = "daily";
# Persistent = true;
# Unit = "nix-index.service";
# };
# Install.WantedBy = [ "timers.target" ];
# };
# };
}

1
modules/hm/noti.nix Normal file
View file

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

11
modules/hm/nushell.nix Normal file
View file

@ -0,0 +1,11 @@
{
programs.nushell = {
enable = true;
configFile.text = ''
let-env config = {
show_banner: false
}
'';
envFile.text = "";
};
}

20
modules/hm/obs-studio.nix Normal file
View file

@ -0,0 +1,20 @@
{ pkgs, ... }: {
programs.obs-studio = {
enable = true;
package = pkgs.obs-studio;
plugins = with pkgs.obs-studio-plugins; [
# obs-backgroundremoval
# obs-multi-rtmp
obs-nvfbc
obs-pipewire-audio-capture
obs-vkcapture
obs-backgroundremoval
input-overlay
# obs-linuxbrowser
# obs-gstreamer
# obs-move-transition
# obs-multi-rtmp
];
};
}

6
modules/hm/office.nix Normal file
View file

@ -0,0 +1,6 @@
{ pkgs, ... }: {
home.packages = builtins.attrValues {
inherit (pkgs) hunspell libreoffice-fresh;
inherit (pkgs.hunspellDicts) en_GB-large en_US-large it_IT;
};
}

17
modules/hm/onedrive.nix Normal file
View file

@ -0,0 +1,17 @@
{ pkgs, ... }:
let onedriveCmd = "${pkgs.onedrive}/bin/onedrive --monitor";
in {
systemd.user.services."onedrive" = {
Unit = {
Description = "OneDrive synchronization service";
After = [ "network.target" ];
PartOf = [ "default.target" ];
};
Install = { WantedBy = [ "default.target" ]; };
Service = {
ExecStart = onedriveCmd;
Restart = "always";
RestartSec = "30s";
};
};
}

14
modules/hm/pass.nix Normal file
View file

@ -0,0 +1,14 @@
{ pkgs, ... }: {
programs.password-store = {
package = pkgs.pass.withExtensions (ext:
with ext; [
# pass-audit
pass-checkup
pass-import
pass-otp
pass-tomb
pass-update
]);
enable = true;
};
}

27
modules/hm/picom.nix Normal file
View file

@ -0,0 +1,27 @@
{
services.picom = {
enable = true;
# blur = true;
# experimentalBackends = true;
# fade = false;
# shadow = true;
# vSync = true;
# settings = {
# blur =
# {
# method = "gaussian";
# size = 10;
# deviation = 7.0;
# };
# };
# extraOptions = ''
# blur:
# {
# method = "gaussian";
# size = 10;
# deviation = 7.0;
# }
# '';
};
}

342
modules/hm/polybar.nix Normal file
View file

@ -0,0 +1,342 @@
{ nixosConfig, config, pkgs, lib, ... }:
with lib;
let
inherit (pkgs.rice) colorPalette opacity;
grep = "${pkgs.gnugrep}/bin/grep";
cut = "${pkgs.coreutils}/bin/cut";
pavucontrol = "${pkgs.pavucontrol}/bin/pavucontrol";
pgrep = "${pkgs.procps}/bin/pgrep";
pkill = "${pkgs.procps}/bin/pkill";
playerCtl = "${pkgs.playerctl}/bin/playerctl";
dunstctl = "${pkgs.dunst}/bin/dunstctl";
zscroll = "${pkgs.zscroll}/bin/zscroll";
notificationStatus = pkgs.writeShellScript "notificationStatus" ''
PATH=$PATH:"${lib.makeBinPath [ pkgs.dbus ]}"
if [[ `${dunstctl} is-paused` == "true" ]]; then echo 󰂛; else echo 󰂚; fi
'';
notificationToggle = pkgs.writeShellScript "notificationToggle" ''
PATH=$PATH:"${lib.makeBinPath [ pkgs.dbus ]}"
${dunstctl} set-paused toggle
'';
keyboardStatus = pkgs.writeShellScript "keyboardStatus" ''
PATH=$PATH:"${lib.makeBinPath [ pkgs.coreutils ]}"
if [[ `cat ~/.local/share/keyboard-switch.state` == "disabled" ]]; then echo 󰌐; else echo 󰌌; fi
'';
keyboardToggle = pkgs.writeShellScript "keyboardToggle" ''
PATH=$PATH:"${lib.makeBinPath [ pkgs.keyboard-switch ]}"
keyboard-switch
'';
notificationHistory = pkgs.writeShellScript "notificationToggle" ''
PATH=$PATH:"${lib.makeBinPath [ pkgs.dbus ]}"
${dunstctl} set-paused false
for i in {1..10}; do ${dunstctl} history-pop; done
'';
playerStatusBasic = pkgs.writeShellScript "playerStatusBasic" ''
${playerCtl} status || true
'';
playerStatusSrc = pkgs.writeShellScript "playerStatusSrc" ''
${playerCtl} -f '{{title}} - {{artist}}' metadata || true
'';
playerStatus = pkgs.writeShellScript "playerStatus" ''
${zscroll} -l 25 -M ${playerStatusBasic} \
-m "Playing" "-b ' ' -s 1" \
-m "Paused" "-b ' ' -s 0" \
-u true ${playerStatusSrc} &
wait
'';
powermenu = pkgs.writeShellScript "powermenu" ''
PATH=$PATH:"${lib.makeBinPath [ pkgs.rofi pkgs.rofi-power-menu pkgs.zsh ]}"
zsh -c 'rofi -show menu -modi "menu:rofi-power-menu --choices=shutdown/reboot/hibernate/logout"'
'';
colors = with pkgs.lib.nix-rice;
let alpha = 255 * opacity;
in palette.toARGBHex rec {
normal = {
foreground = color.darken 10 colorPalette.foreground;
background = color.setAlphaRgba alpha colorPalette.background;
underline = colorPalette.normal.blue;
};
active = {
inherit (colorPalette) foreground;
background = color.setAlphaRgba alpha colorPalette.background;
underline = colorPalette.normal.yellow;
};
selected = {
inherit (colorPalette) foreground;
background = color.setAlphaRgba alpha colorPalette.background;
underline = colorPalette.bright.red;
};
inherit (colorPalette.normal) green red yellow;
inherit (color) transparent;
orange = colorPalette.bright.red;
alert = orange;
};
commonBar = {
locale = config.home.language.base;
monitor = "\${env:MONITOR}";
width = "100%";
height = 20;
radius = 6.0;
fixed-center = false;
inherit (colors.normal) background foreground;
line-size = 2;
line-color = colors.normal.underline;
padding = 0;
module.margin = 0;
separator = " ";
border = {
color = colors.transparent;
left.size = 2;
righ.sizet = 2;
top.size = 2;
bottom.size = 0;
};
font = [
"${pkgs.rice.font.monospace.name}:size=${
toString pkgs.rice.font.monospace.size
};2"
# "Font Awesome 6 Free:size=14;0"
# "Noto Color Emoji:size=2;2"
"Noto Sans Symbols2:size=${toString pkgs.rice.font.monospace.size};2"
"Material Design Icons:size=${toString pkgs.rice.font.monospace.size};2"
# "EmojiOne Color:size=${toString pkgs.rice.font.monospace.size};0"
"Noto Sans CJK JP:size=${toString pkgs.rice.font.monospace.size};0"
"Noto Sans CJK KR:size=${toString pkgs.rice.font.monospace.size};0"
"Noto Sans CJK CN:size=${toString pkgs.rice.font.monospace.size};0"
"Noto Sans CJK HK:size=${toString pkgs.rice.font.monospace.size};0"
];
enable-ipc = true;
wm-restack = "bspwm";
};
ramp = [ "" "" "" "" "" "" ];
in
{
home.packages = builtins.attrValues {
inherit (pkgs) noto-fonts material-design-icons noto-fonts-cjk-sans;
# emojione
# noto-fonts-emoji
# font-awesome
inherit (pkgs.rice.font.monospace) package;
};
services.polybar = {
enable = true;
package = pkgs.polybarFull;
script = ''
monitor=`polybar -m | ${grep} primary | ${cut} -d":" -f1`
MONITOR=$monitor polybar primary &
monitors=(`polybar -m | ${grep} -v primary | ${cut} -d":" -f1`)
for monitor in "''${monitors[@]}"; do
MONITOR=$monitor polybar secondary &
done
'';
settings = {
"settings" = { screenchange-reload = false; };
"bar/primary" = recursiveUpdate commonBar {
modules-left = "bspwm";
# modules-center =
modules-right =
"player pulseaudio temperature cpu memory battery keyboard-switch notifications powermenu date";
tray = {
position = "right";
padding = 1;
};
};
"bar/secondary" = recursiveUpdate commonBar {
modules-left = "bspwm";
# modules-center =
modules-right =
"player pulseaudio temperature cpu memory battery keyboard-switch notifications powermenu date";
};
"module/battery" = {
type = "internal/battery";
adapter = "AC";
battery = "BAT0";
full.at = 98;
animation = {
charging = { text = [ "" "" "" "" "" ]; framerate = "750"; };
discharging = { text = [ "" "" "" "" "" ]; framerate = "750"; };
};
format = {
charging = recursiveUpdate colors.selected {
text = "<animation-charging> <label-charging>";
};
discharging = recursiveUpdate colors.active {
text = "<animation-discharging> <label-discharging>";
};
full = recursiveUpdate colors.normal { text = " <label-full>"; };
};
label.text = "%percentage%%";
# = {
# chargin = "%percentage%%";
# dischargin = "%percentage%%";
# full = "%percentage%%";
# };
};
"module/bspwm" = {
type = "internal/bspwm";
format = "<label-state>";
label =
let
common = {
padding = 1;
# separator = " ";
text = "%name%";
};
in
{
focused = recursiveUpdate common colors.selected;
occupied = recursiveUpdate common colors.active;
urgent = recursiveUpdate (recursiveUpdate common colors.active) { background = colors.alert; };
empty = recursiveUpdate common colors.normal;
};
};
"module/cpu" = {
type = "internal/cpu";
format = recursiveUpdate colors.normal { text = " <label>"; };
interval = 2;
label = "%percentage-sum%%";
ramp-load = ramp;
};
"module/date" = {
type = "internal/date";
format = colors.normal;
date = { alt = "%Y-%m-%d"; text = "%a %d/%m/%y"; };
interval = "1";
label = "%date% %time%";
time = { alt = "%H:%M:%S"; text = "%H:%M"; };
};
"module/memory" = {
type = "internal/memory";
format = recursiveUpdate colors.normal { text = " <label>"; };
interval = 2;
label = "%percentage_used%%";
ramp-used = ramp;
};
"module/pulseaudio" = {
interval = 2;
bar.volume = {
empty = { text = ""; };
fill = { text = ""; };
indicator = { text = "|"; };
width = "10";
foreground = [
colors.green
colors.green
colors.green
colors.green
colors.green
colors.yellow
colors.orange
colors.red
];
};
click.right =
"${pgrep} pavucontrol && ${pkill} pavucontrol || ${pavucontrol}";
format = {
padding = 1;
muted = colors.active;
volume = recursiveUpdate colors.normal {
text = "<ramp-volume> <label-volume>";
};
};
label.muted.text = "󰝟 muted";
label.volume.text = "%percentage%%";
ramp.volume = [ "󰕿" "󰖀" "󰕾" ];
type = "internal/pulseaudio";
};
"module/temperature" = {
format = recursiveUpdate colors.normal {
text = "<ramp> <label>";
warn = {
text = "<ramp> <label-warn>";
underline = colors.alert;
};
};
label = {
text = "%temperature-c%";
warn = "%temperature-c%";
};
ramp.text = [ "" "" "" "" "" ];
thermal.zone = if nixosConfig.networking.hostName == "odin" then 8 else 0;
type = "internal/temperature";
warn.temperature = "90";
};
"module/powermenu" = {
type = "custom/script";
format = recursiveUpdate colors.normal { padding = 0; };
exec = "echo ";
click.left = "${powermenu}";
};
"module/notifications" = {
type = "custom/script";
format = recursiveUpdate colors.normal { padding = 0; };
exec = "${notificationStatus}";
click.left = "${notificationToggle}";
click.right = "${notificationHistory}";
interval = 0.5;
# tail = 1;
};
"module/keyboard-switch" = {
type = "custom/script";
format = recursiveUpdate colors.normal { padding = 0; };
exec = "${keyboardStatus}";
click.left = "${keyboardToggle}";
interval = 1;
# tail = 1;
};
"module/player" = {
type = "custom/script";
format = colors.normal;
exec = playerStatus;
tail = true;
click.left = "${playerCtl} play-pause";
clicl.right = "${playerCtl} stop";
scroll = {
up = "${playerCtl} previous";
down = "${playerCtl} next";
};
};
"module/player-prev" = {
type = "custom/script";
format = colors.normal;
exec = "echo 󰒮";
click.left = "${playerCtl} previous";
};
"module/player-next" = {
type = "custom/script";
format = colors.normal;
exec = "echo 󰒭";
click.left = "${playerCtl} next";
};
"module/player-play-pause" = {
type = "custom/script";
format = colors.normal;
exec = "echo 󰐎";
click.left = "${playerCtl} play-pause";
};
};
};
}

36
modules/hm/pro_audio.nix Normal file
View file

@ -0,0 +1,36 @@
{ pkgs, ... }:
let
user = "bertof";
systemLibFolder = "/run/current-system/sw/lib/";
userLibFolder =
"/nix/var/nix/profiles/per-user/${user}/home-manager/home-path/lib/";
variables = {
DSSI_PATH = "$HOME/.dssi:${userLibFolder}/dssi:${systemLibFolder}/dssi";
LADSPA_PATH =
"$HOME/.ladspa:${userLibFolder}/ladspa:${systemLibFolder}/ladspa";
LV2_PATH = "$HOME/.lv2:${userLibFolder}/lv2:${systemLibFolder}/lv2";
LXVST_PATH = "$HOME/.lxvst:${userLibFolder}/lxvst:${systemLibFolder}/lxvst";
VST_PATH = "$HOME/.vst:${userLibFolder}/vst:${systemLibFolder}/vst";
VST3_PATH = "$HOME/.vst3:${userLibFolder}/vst3:${systemLibFolder}/vst3";
};
in
{
home.packages = builtins.attrValues {
inherit (pkgs)
ardour breeze-icons carla mamba mixxx rnnoise
# zrythm
# Plugins
artyFX autotalent boops cardinal geonkick giada lsp-plugins samplv1 surge
surge-XT talentedhack vocproc x42-plugins zita-at1 zyn-fusion zynaddsubfx
# helm
# noise-repellent
# speech-denoiser
# stochas
# sunvox
# tunefish
;
};
home.sessionVariables = variables;
}

6
modules/hm/pycharm.nix Normal file
View file

@ -0,0 +1,6 @@
{ pkgs, ... }: {
home.packages = builtins.attrValues {
inherit (pkgs) python3;
inherit (pkgs.unstable_pkgs.jetbrains) pycharm-professional jdk;
};
}

9
modules/hm/research.nix Normal file
View file

@ -0,0 +1,9 @@
{ pkgs, ... }: {
home.packages = builtins.attrValues {
inherit (pkgs.unstable_pkgs)
# mendeley # Reference manager
obsidian# Note manager
zotero
;
};
}

217
modules/hm/rofi.nix Normal file
View file

@ -0,0 +1,217 @@
{ pkgs, ... }: {
home.packages = builtins.attrValues {
inherit (pkgs)
rofimoji
rofi-bluetooth
rofi-power-menu
rofi-vpn
xdotool
;
};
programs.rofi = {
enable = true;
location = "center";
font = "${pkgs.rice.font.monospace.name} ${toString pkgs.rice.font.monospace.size}";
plugins = [ pkgs.rofi-calc ];
extraConfig = { modi = "drun,run,ssh,window,calc"; };
terminal = "alacritty";
theme = "onedark";
};
xdg.configFile."rofi/nord.rasi".text = ''
* {
nord0: #2e3440;
nord1: #3b4252;
nord2: #434c5e;
nord3: #4c566a;
nord4: #d8dee9;
nord5: #e5e9f0;
nord6: #eceff4;
nord7: #8fbcbb;
nord8: #88c0d0;
nord9: #81a1c1;
nord10: #5e81ac;
nord11: #bf616a;
nord12: #d08770;
nord13: #ebcb8b;
nord14: #a3be8c;
nord15: #b48ead;
background-color: @nord1;
border: 0px;
margin: 0px;
padding: 0px;
spacing: 0px;
text-color: @nord4;
}
#inputbar {
text-color: @nord3;
padding: 6px;
margin: 0px 0px 2px;
children: [ entry ];
}
#entry {
background-color: @nord3;
text-color: @nord4;
padding: 5px;
}
#message {
border: 0px 0px 1px;
border-color: @nord3;
padding: 0px 0px 6px 7px;
}
#listview {
lines: 10;
padding: 2px 0px 0px;
scrollbar: true;
}
#element {
padding: 0px 0px 0px 7px;
margin: 0px 0px 5px 0px;
text-color: @nord4;
}
#element.normal.normal {
text-color: @nord4;
}
#element.normal.urgent {
text-color: @nord11;
}
#element.normal.active {
text-color: @nord10;
}
#element.alternate.normal {
text-color: @nord4;
}
#element.alternate.urgent {
text-color: @nord11;
}
#element.alternate.active {
text-color: @nord10;
}
#element.selected.normal {
background-color: @nord8;
text-color: @nord1;
}
#element.selected.urgent {
background-color: @nord11;
text-color: @nord4;
}
#element.selected.active {
background-color: @nord10;
text-color: @nord4;
}
#scrollbar {
handle-color: @nord3;
handle-width: 0.50em;
}
#button.selected {
background-color: @nord8;
text-color: @nord4;
}
'';
xdg.configFile."rofi/onedark.rasi".text = ''
/*
* ROFI One Dark
*
* Based on OneDark.vim (https://github.com/joshdick/onedark.vim)
*
* Author: Benjamin Stauss
* User: me-benni
*
*/
* {
black: #000000;
red: #eb6e67;
green: #95ee8f;
yellow: #f8c456;
blue: #6eaafb;
mangenta: #d886f3;
cyan: #6cdcf7;
purple: #C678DF;
emphasis: #50536b;
text: #dfdfdf;
text-alt: #b2b2b2;
fg: #abb2bf;
bg: #282c34;
spacing: 0;
background-color: transparent;
font: "Knack Nerd Font 14";
text-color: @text;
}
window {
transparency: "real";
fullscreen: true;
background-color: #282c34dd;
}
mainbox {
padding: 30% 30%;
}
inputbar {
margin: 0px 0px 20px 0px;
children: [prompt, textbox-prompt-colon, entry, case-indicator];
}
prompt {
text-color: @blue;
}
textbox-prompt-colon {
expand: false;
str: ":";
text-color: @text-alt;
}
entry {
margin: 0px 10px;
}
listview {
spacing: 5px;
dynamic: true;
scrollbar: false;
}
element {
padding: 5px;
text-color: @text-alt;
highlight: bold #95ee8f; /* green */
border-radius: 3px;
}
element selected {
background-color: @emphasis;
text-color: @text;
}
element urgent, element selected urgent {
text-color: @red;
}
element active, element selected active {
text-color: @purple;
}
message {
padding: 5px;
border-radius: 3px;
background-color: @emphasis;
border: 1px;
border-color: @cyan;
}
button selected {
padding: 5px;
border-radius: 3px;
background-color: @emphasis;
}
'';
}

View file

@ -0,0 +1,8 @@
{ pkgs, ... }: {
services.screen-locker = {
enable = true;
lockCmd = "${pkgs.lockscreen}/bin/lockscreen";
inactiveInterval = 2; # minutes
xautolock.extraOptions = [ "-secure" "-lockaftersleep" ];
};
}

18
modules/hm/security.nix Normal file
View file

@ -0,0 +1,18 @@
{ pkgs, ... }: {
home.packages = builtins.attrValues {
inherit (pkgs)
nmap# RECOGNITION
# WEB
httpie
# altair
# burpsuite
bintools ghidra-bin radare2# REVERSING
# cutter
# INFRASTRUCTURE
# cocktail-bar-cli
;
};
}

View file

@ -0,0 +1,19 @@
{
home.shellAliases = {
"jc" = "sudo journalctl";
"jcu" = "journalctl --user";
"n" = "nix";
"nb" = "nix build";
"nf" = "find /nix/store/ -maxdepth 1 | grep";
"nr" = "nix repl";
"nR" = "nix run";
"ns" = "nix search nixpkgs";
"nsu" = "nix search unstable";
"nss" = "nix search stable";
"nS" = "nix shell";
"sc" = "sudo systemctl";
"scu" = "systemctl --user";
};
# programs.bash = { inherit shellAliases; };
# programs.zsh = { inherit shellAliases; };
}

10
modules/hm/spotifyd.nix Normal file
View file

@ -0,0 +1,10 @@
{ nixosConfig, ... }: {
services.spotifyd = {
enable = true;
settings.global = {
username = "filippoberto95";
password_cmd = "cat ${nixosConfig.age.secrets.spotify_password.path}";
backend = "pulseaudio";
};
};
}

7
modules/hm/ssh.nix Normal file
View file

@ -0,0 +1,7 @@
{
programs.ssh = {
enable = true;
compression = true;
matchBlocks = { "*" = { identityFile = "~/.ssh/id_ed25519"; }; };
};
}

20
modules/hm/starship.nix Normal file
View file

@ -0,0 +1,20 @@
{
programs.starship = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
settings = {
command_timeout = 1000;
directory.truncation_symbol = "/";
hostname.format = "[$hostname]($style) "; # Disable ssh symbol
# line_break.disabled = true; # Prompt in one line
nix_shell.symbol = " "; # better soacing
python.python_binary = [ "python3" "python2" ];
status = {
disabled = false; # enable module
format = "[$symbol $status]($style) "; # nicer status format
};
username.format = "[$user]($style)@"; # compact username format
};
};
}

105
modules/hm/sxhkd.nix Normal file
View file

@ -0,0 +1,105 @@
{ pkgs, lib, ... }: {
imports = [
./nautilus.nix
# ./thunar.nix
./nemo.nix
./terminator.nix
./alacritty.nix
];
home.packages = builtins.attrValues {
inherit (pkgs)
bc# required by bsp-layout
bsp-layout clipedit lockscreen terminator;
};
services.sxhkd =
let
primaryTerminal = "alacritty";
secondaryTerminal = "terminator";
fileManager = "nemo";
secondaryFileManager = "nautilus";
emojiChooser = "rofimoji --skin-tone light -a copy";
arandr = "${pkgs.arandr}/bin/arandr";
passwordChoser = "rofi-rbw";
notify = "${pkgs.libnotify}/bin/notify-send";
pamixer = "${pkgs.pamixer}/bin/pamixer";
playerctl = "${pkgs.playerctl}/bin/playerctl";
xbacklight = "${pkgs.xorg.xbacklight}/bin/xbacklight";
resetBspwm = pkgs.writeShellScript "resetBspwm" ''
bspc wm -r
for p in {top,bottom,left,right}; do bspc config -m any ''${p}_padding 0; done # Reset padding
systemctl --user restart polybar # Restart polybar
${notify} "BSPWM restarted"
'';
moveAllNodesToPrimary = pkgs.writeShellScript "moveAllNodesToPrimary" ''
comm -23 <(bspc query -N | sort) <(bspc query -m primary -N | sort) | while read n; do bspc node $n -m primary; done
'';
notifyVolume = pkgs.writeShellScript "notifyVolume" ''
PATH=$PATH:"${lib.makeBinPath [ pkgs.coreutils pkgs.pamixer ]}"
sink=`pamixer --get-default-sink | tail -n 1| sed -E 's/.+"(.+)"$/\1/'`
muted=`pamixer --get-mute`
volume=`pamixer --get-volume`
if [[ $muted == "true" ]]; then
${notify} -r 1 -h "int:value:0" "Muted" "$sink"
else
${notify} -r 1 -h "int:value:$volume" "Volume $volume%" "$sink"
fi
'';
notifyBrightness = pkgs.writeShellScript "notifyBrightness" ''
level=`printf "%.0f" $(${xbacklight} -get)`
${notify} -r 2 -h "int:value:$level" "Luminosità $level"
'';
powermenu = pkgs.writeShellScript "powermenu" ''
PATH=$PATH:"${lib.makeBinPath [ pkgs.rofi pkgs.rofi-power-menu ]}"
rofi -show menu -modi "menu:rofi-power-menu --choices=shutdown/reboot/hibernate/logout"
'';
in
{
enable = true;
keybindings = {
"alt + Tab" = "rofi -show window";
"Print" = "${pkgs.gnome.gnome-screenshot}/bin/gnome-screenshot";
"super + alt + {h,j,k,l}" = "bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}";
"super + alt + m" = "lockscreen";
"super + alt + p" = "${arandr}";
"super + alt + o" = "${moveAllNodesToPrimary}";
"super + alt + r" = "${resetBspwm}";
"super + alt + shift + {h,j,k,l}" = "bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}";
"super + bracket{left,right}" = "bspc desktop -f {prev,next}.local";
"super + b" = "${pkgs.update-background}/bin/update-background";
"super + ctrl + {1-9}" = "bspc node -o 0.{1-9}";
"super + ctrl + {h,j,k,l}" = "bspc node -p {west,south,north,east}";
"super + ctrl + {m,x,y,z}" = "bspc node -g {marked,locked,sticky,private}";
"super + ctrl + shift + space" = "bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel";
"super + ctrl + space" = "bspc node -p cancel";
"super + e {_,+shift}" = "{${fileManager},${secondaryFileManager}}";
"super + shift + p" = "clipedit";
"super + Escape" = "pkill -USR1 -x sxhkd";
"super + g" = "bspc node -s biggest";
"super + {grave,Tab}" = "bspc {node,desktop} -f last";
"super + {h,j,k,l}" = "dir={west,south,north,east}; bspc node -f $dir || bspc monitor -f $dir";
"super + {Left,Down,Up,Right}" = "bspc node -v {-20 0,0 20,0 -20,20 0}";
"super + m" = "bspc desktop -l next";
"super + n {_, + shift}" = "bsp-layout {next, previous}";
"super + {o,i}" = "bspc wm -h off;bspc node {older,newer} -f;bspc wm -h on";
"super + {p,b,comma,period}" = "bspc node -f @{parent,brother,first,second}";
"super + {_,shift + }{1-9,0}" = "bspc {desktop -f,node -d} 'focused:^{1-9,10}'";
"super + {_,shift + } c" = "bspc node -f {next,prev}.local";
"super + {_,shift + } space" = "rofi -show {drun,run}";
"super + shift + ctrl + d" = "rofi -show ssh";
"super + alt + e" = emojiChooser;
"super + alt + i" = passwordChoser;
"super + shift + {h,j,k,l}" = ''dir={west,south,north,east}; bspc node -s "$dir.local" --follow || bspc node -m "$dir" --follow'';
"super + {_,shift + } Return" = "{${primaryTerminal} , ${secondaryTerminal}}";
"super + {_,shift + } w" = "bspc node -{c,k}";
"super + {t,shift + t,s,f}" = "bspc node -t {tiled,pseudo_tiled,floating,fullscreen}";
# "super + y" = "bspc node newest.marked.local -n newest.!automatic.local";
"XF86Audio{LowerVolume,Mute,RaiseVolume}" = "${pamixer} {-d 2 -u,-t,-i 2 -u} && ${notifyVolume}";
"XF86Audio{Next,Play,Prev}" = "${playerctl} {next,play-pause,previous}";
"super + alt + {Right,Down,Left}" = "${playerctl} {next,play-pause,previous}";
"XF86MonBrightness{Up,Down}" = "${xbacklight} -{inc,dec} 10 && ${notifyBrightness}";
"XF86PowerOff" = toString powermenu;
"button10" = "rofi -show drun";
"super + shift + {a,d}" = "bspc node @/ -C {forward,backward}";
};
};
}

6
modules/hm/syncthing.nix Normal file
View file

@ -0,0 +1,6 @@
{
services.syncthing = {
enable = true;
extraOptions = [ "--gui-address=http://0.0.0.0:8384" ];
};
}

View file

@ -0,0 +1,7 @@
{
services.syncthing = {
enable = true;
extraOptions = [ "--gui-address=http://0.0.0.0:8385" ];
};
}

84
modules/hm/terminator.nix Normal file
View file

@ -0,0 +1,84 @@
{ pkgs, ... }:
with pkgs.lib.nix-rice;
let
strPalette = palette.toRgbHex {
inherit (pkgs.rice.colorPalette) normal bright dark;
inherit (pkgs.rice.colorPalette.primary) background foreground;
};
opacity = toString pkgs.rice.opacity;
font = pkgs.rice.font.monospace;
colorString = normal: bright:
builtins.concatStringsSep ":" [
normal.black
normal.red
normal.green
normal.yellow
normal.blue
normal.magenta
normal.cyan
normal.white
bright.black
bright.red
bright.green
bright.yellow
bright.blue
bright.magenta
bright.cyan
bright.white
];
in
{
home.packages = [ pkgs.terminator ];
xdg.configFile."terminator/config".text = with strPalette; ''
[global_config]
scroll_tabbar = True
enabled_plugins = ActivityWatch, LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler
suppress_multiple_term_dialog = True
always_split_with_profile = True
[keybindings]
help = None
[profiles]
[[default]]
visible_bell = True
background_color = "${background}"
background_darkness = ${opacity}
background_type = transparent
cursor_color = "${foreground}"
font = ${font.name} weight=450 ${toString font.size}
foreground_color = "${foreground}"
show_titlebar = False
scrollbar_position = hidden
scrollback_lines = 10000
palette = "${colorString normal bright}"
use_system_font = False
[[Light presentation]]
visible_bell = True
background_color = "${foreground}"
cursor_color = "${background}"
font = ${font.name} weight=450 20
foreground_color = "${background}"
show_titlebar = False
palette = "${colorString dark normal}"
use_system_font = False
[[Dark presentation]]
visible_bell = True
background_color = "${background}"
cursor_color = "${foreground}"
font = ${font.name} weight=450 20
foreground_color = "${foreground}"
show_titlebar = False
palette = "${colorString normal bright}"
use_system_font = False
[layouts]
[[default]]
[[[child1]]]
parent = window0
type = Terminal
profile = default
[[[window0]]]
parent = ""
type = Window
[plugins]
'';
}

10
modules/hm/thunar.nix Normal file
View file

@ -0,0 +1,10 @@
{ pkgs, ... }: {
home.packages = with pkgs.xfce; [
thunar
thunar-archive-plugin
thunar-media-tags-plugin
thunar-volman
tumbler
xfconf
];
}

12
modules/hm/tmux.nix Normal file
View file

@ -0,0 +1,12 @@
{ pkgs, ... }: {
programs.tmux = {
enable = true;
clock24 = true;
escapeTime = 25;
terminal = "screen-256color";
plugins = with pkgs.tmuxPlugins; [ nord prefix-highlight ];
extraConfig = ''
set -g mouse on
'';
};
}

28
modules/hm/twmn.nix Normal file
View file

@ -0,0 +1,28 @@
{ pkgs, ... }:
with pkgs.lib.nix-rice;
let
strPalette = palette.toRGBHex pkgs.rice.colorPalette;
font = pkgs.rice.font.normal;
in
{
services.twmn = {
enable = true;
text = {
color = strPalette.primary.foreground;
font = {
inherit (font) package size;
family = font.name;
};
};
window = {
animation.bounce.enable = false;
color = strPalette.primary.background;
height = 32;
opacity = float.round (pkgs.rice.opacity * 100);
offset = {
x = -20;
y = 50;
};
};
};
}

View file

@ -0,0 +1,26 @@
{ pkgs, ... }:
let update_time = "10m";
in {
home.packages = [ pkgs.update-background ];
systemd.user.services."update-background" = {
Unit = {
Description = "Set random desktop background using feh";
After = [ "graphical-session.pre.target" ];
PartOf = [ "graphical-session.target" ];
RequiresMountsFor = [ "/home/bertof/Immagini" ];
};
Install = { WantedBy = [ "graphical-session.target" ]; };
Service = {
Type = "oneshot";
IOSchedulingClass = "idle";
ExecStart = "${pkgs.update-background}/bin/update-background";
};
};
systemd.user.timers."update-background" = {
Unit = { Description = "Set random desktop background using feh"; };
Timer = { OnUnitActiveSec = update_time; };
Install = { WantedBy = [ "timers.target" ]; };
};
}

38
modules/hm/vim.nix Normal file
View file

@ -0,0 +1,38 @@
{ pkgs, ... }: {
programs.neovim = {
enable = true;
plugins = with pkgs.vimPlugins; [
{
plugin = airline;
# config = "let g:airline#extensions#tabline#left_alt_sep = '>'";
}
# {
# plugin = catppuccin-nvim;
# config = "colorscheme catppuccin-mocha";
# }
# {
# plugin = neovim-ayu;
# config = "colorscheme ayu-mirage";
# }
{
plugin = nightfox-nvim;
config = "colorscheme nightfox";
}
{
plugin = vim-airline-themes;
config = "let g:airline_theme='nightfox'";
}
fugitive
surround
];
# settings = { ignorecase = true; };
coc.enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
extraConfig = ''
set mouse=a
'';
};
}

96
modules/hm/webapp.nix Normal file
View file

@ -0,0 +1,96 @@
{ pkgs, lib, ... }:
# Categories: https://specifications.freedesktop.org/menu-spec/latest/apa.html#main-category-registry
let
cmd = link: "${pkgs.google-chrome}/bin/google-chrome-stable --app=${link}";
# cmd = link: "firefox --new-window ${link}";
links = [
{
desktopName = "Microsoft Teams";
link = "https://teams.microsoft.com";
categories = [ "Office" ];
}
{
desktopName = "Chess.com";
link = "https://chess.com";
categories = [ "Game" ];
}
{
desktopName = "Google Calendar";
link = "https://google.com/calendar";
categories = [ "Office" ];
}
{
desktopName = "Google Keep";
link = "https://keep.google.com";
categories = [ "Office" ];
}
{
desktopName = "Google Play Books";
link = "https://play.google.com/books";
categories = [ "Office" "Viewer" ];
}
{
desktopName = "Mendeley";
link =
"https://www.mendeley.com/reference-manager/library/all-references";
categories = [ "Office" ];
}
{
desktopName = "Monkeytype";
link = "https://monkeytype.com/";
categories = [ "Game" ];
}
{
desktopName = "Netflix";
link = "https://www.netflix.com";
categories = [ "AudioVideo" ];
}
{
desktopName = "Notion";
link = "https://notion.so";
categories = [ "Office" ];
}
{
desktopName = "Prime Video";
link = "https://primevideo.com";
categories = [ "AudioVideo" ];
}
{
desktopName = "Protonmail";
link = "https://mail.protonmail.com";
categories = [ "Office" ];
}
{
desktopName = "Twitch";
link = "https://www.twitch.tv";
categories = [ "AudioVideo" ];
}
{
desktopName = "WhatsApp";
link = "https://web.whatsapp.com/";
}
{
desktopName = "YouTube";
link = "https://www.youtube.com";
categories = [ "AudioVideo" ];
}
{
desktopName = "Plex";
link = "https://app.plex.tv";
categories = [ "AudioVideo" ];
}
];
webAppBuilder =
{ desktopName
, name ? builtins.replaceStrings [ " " ] [ "_" ] desktopName
, link
, icon ? lib.toLower name
, comment ? null
, categories ? [ "Network" ]
}:
pkgs.makeDesktopItem {
inherit name icon desktopName comment categories;
exec = cmd link;
};
in
{ home.packages = map webAppBuilder links; }

49
modules/hm/xidlehook.nix Normal file
View file

@ -0,0 +1,49 @@
{ pkgs, lib, ... }:
with lib;
let
xbacklightCmd = "${pkgs.xorg.xbacklight}/bin/xbacklight";
xsetCmd = "${pkgs.xorg.xset}/bin/xset";
lightLevel = 10;
saveLightLevel = pkgs.writeShellScript "saveLightLevel" ''
${xbacklightCmd} -get > /run/user/$UID/xbacklight_v
'';
lowerLight = pkgs.writeShellScript "lower_light" ''
${xbacklightCmd} -set ${toString lightLevel}
'';
resetLight = pkgs.writeShellScript "reset_light" ''
${xbacklightCmd} -set $(</run/user/$UID/xbacklight_v) || ${xbacklightCmd} -set 100
'';
shutDownScreens = pkgs.writeShellScript "shutdown_screens" ''
${xsetCmd} dpms force off
'';
in
{
services.xidlehook = {
enable = true;
package = pkgs.writeScriptBin "xidlehook" ''
${pkgs.xidlehook}/bin/xidlehook --detect-sleep "$@"
'';
# not-when-audio = true;
not-when-fullscreen = true;
timers = [
{
command = "${saveLightLevel} && ${lowerLight}";
canceller = "${resetLight}";
delay = 60;
}
{
command = "${pkgs.lockscreen}/bin/lockscreen";
canceller = "${resetLight}";
delay = 120;
}
{
command = "${shutDownScreens}";
canceller = "${resetLight}";
delay = 300;
}
];
};
}

37
modules/hm/xresources.nix Normal file
View file

@ -0,0 +1,37 @@
{ pkgs, ... }:
let
strPalette = with pkgs.rice;
pkgs.lib.nix-rice.palette.toRgbHex { inherit (colorPalette) normal bright primary; };
in
{
home.file.".Xresources" = {
text = ''
Xcursor.theme: "Quogir"
Xcursor.size: 32
*.foreground: ${strPalette.primary.foreground}
*.background: ${strPalette.primary.background}
*.cursorColor: ${strPalette.normal.white}
*.color0: ${strPalette.normal.black}
*.color1: ${strPalette.normal.red}
*.color2: ${strPalette.normal.green}
*.color3: ${strPalette.normal.yellow}
*.color4: ${strPalette.normal.blue}
*.color5: ${strPalette.normal.magenta}
*.color6: ${strPalette.normal.cyan}
*.color7: ${strPalette.normal.white}
*.color8: ${strPalette.bright.black}
*.color9: ${strPalette.bright.red}
*.color10: ${strPalette.bright.green}
*.color11: ${strPalette.bright.yellow}
*.color12: ${strPalette.bright.blue}
*.color13: ${strPalette.bright.magenta}
*.color14: ${strPalette.bright.cyan}
*.color15: ${strPalette.bright.white}
xterm*faceName: ${pkgs.rice.font.monospace.name}
xterm*faceSize: ${toString pkgs.rice.font.monospace.size}
'';
onChange = "${pkgs.xorg.xrdb}/bin/xrdb -merge ~/.Xresources ";
};
}

22
modules/hm/zathura.nix Normal file
View file

@ -0,0 +1,22 @@
{ pkgs, ... }:
with pkgs.lib.nix-rice;
let strPalette = palette.toRgbHex pkgs.rice.colorPalette;
in {
programs.zathura = {
enable = true;
mappings = { "<C-i>" = "recolor"; };
options = {
completion-bg = strPalette.bright.black;
# default-bg = strPalette.normal.black;
font = "${pkgs.rice.font.normal.name} 10";
inputbar-bg = strPalette.bright.black;
inputbar-fg = strPalette.normal.cyan;
page-padding = 10;
# recolor = true;
recolor-lightcolor = strPalette.primary.background;
recolor-darkcolor = strPalette.primary.foreground;
statusbar-bg = strPalette.bright.black;
selection-clipboard = "clipboard";
};
};
}

35
modules/hm/zellij.nix Normal file
View file

@ -0,0 +1,35 @@
{ pkgs, ... }:
let
strPalette = pkgs.lib.nix-rice.palette.toRgbHex pkgs.rice.colorPalette;
in
{
programs.zellij = { enable = true; package = pkgs.unstable_pkgs.zellij; };
home.shellAliases = {
"ze" = "zellij";
"zec" = "zellij -l compact";
};
xdg.configFile."zellij/config.kdl".text = ''
theme "nix-rice"
pane_frames false
'';
xdg.configFile."zellij/themes/nix-rice.kdl".text = ''
themes {
nix-rice {
bg "${strPalette.primary.dim_foreground}" // Foreground darker
fg "${strPalette.primary.bright_foreground}" // Selection
red "${strPalette.normal.red}"
black "${strPalette.primary.background}" // Background
green "${strPalette.normal.green}"
yellow "${strPalette.normal.yellow}"
blue "${strPalette.normal.blue}"
magenta "${strPalette.normal.magenta}"
cyan "${strPalette.normal.cyan}"
white "${strPalette.primary.foreground}" // Foreground
orange "${strPalette.bright.red}"
}
}
'';
}

7
modules/hm/zoxide.nix Normal file
View file

@ -0,0 +1,7 @@
{
programs.zoxide = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
}

30
modules/hm/zsh.nix Normal file
View file

@ -0,0 +1,30 @@
{ pkgs, ... }: {
home.packages =
builtins.attrValues { inherit (pkgs) nix-zsh-completions zsh-completions; };
programs.zsh = {
enable = true;
autocd = true;
enableSyntaxHighlighting = true;
plugins = [ ];
initExtraBeforeCompInit = ''
zstyle ':completion:*' menu select
setopt CORRECT
setopt AUTO_CD
setopt CHASE_LINKS
setopt PUSHD_TO_HOME
'';
oh-my-zsh = {
enable = true;
plugins =
[ "common-aliases" "cp" "dirhistory" "git-auto-fetch" "git" "sudo" ];
extraConfig = "";
};
# prezto = {
# enable = true;
# };
};
}