Rename modules/home to modules/home-manager
3
modules/home-manager/alacritty/alacritty.toml
Normal file
@ -0,0 +1,3 @@
|
||||
import = [
|
||||
"~/.config/alacritty/theme/themes/smoooooth.toml"
|
||||
]
|
41
modules/home-manager/alacritty/default.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.alacritty;
|
||||
in
|
||||
{
|
||||
options.modules.alacritty = {
|
||||
enable = lib.mkOption { default = false; };
|
||||
mkDefault = lib.mkOption { default = true; };
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ (lib.mkIf config.modules.non-nixos.is-nixos alacritty) ];
|
||||
|
||||
home.file = {
|
||||
".config/alacritty/theme".source = "${inputs.alacritty-theme}";
|
||||
".config/alacritty/alacritty.toml".source = ./alacritty.toml;
|
||||
};
|
||||
|
||||
home.sessionVariables.TERMINAL = lib.mkIf cfg.mkDefault "alacritty";
|
||||
};
|
||||
}
|
39
modules/home-manager/desktop/default.nix
Normal file
@ -0,0 +1,39 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme;
|
||||
cfg = config.modules.desktop;
|
||||
in
|
||||
{
|
||||
options.modules.desktop =
|
||||
with lib.frajul;
|
||||
with lib.types;
|
||||
{
|
||||
colorscheme = mkOpt str "catppuccin-mocha" "Theme to use for the desktop";
|
||||
enable = mkBoolOpt false "Enable desktop";
|
||||
};
|
||||
|
||||
# Do not make conditional, just toggle things on and off
|
||||
imports = [ inputs.nix-colors.homeManagerModules.default ];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
|
||||
gtk = {
|
||||
enable = true;
|
||||
theme = {
|
||||
name = inputs.nix-colors.colorschemes.${cfg.colorscheme}.slug;
|
||||
package = gtkThemeFromScheme { scheme = inputs.nix-colors.colorschemes.${cfg.colorscheme}; };
|
||||
};
|
||||
iconTheme = {
|
||||
name = "Papirus-Dark";
|
||||
package = pkgs.papirus-icon-theme;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
BIN
modules/home-manager/desktop/wallpapers/32j4hjkl4j4hkl.png
Normal file
After Width: | Height: | Size: 182 KiB |
BIN
modules/home-manager/desktop/wallpapers/Bridge.jpg
Normal file
After Width: | Height: | Size: 177 KiB |
BIN
modules/home-manager/desktop/wallpapers/astronaut.png
Normal file
After Width: | Height: | Size: 823 KiB |
BIN
modules/home-manager/desktop/wallpapers/astronaut_ultra.png
Normal file
After Width: | Height: | Size: 759 KiB |
BIN
modules/home-manager/desktop/wallpapers/babel.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
modules/home-manager/desktop/wallpapers/blockwavemoon.png
Normal file
After Width: | Height: | Size: 1024 KiB |
BIN
modules/home-manager/desktop/wallpapers/cat_Japanese_Neon.png
Normal file
After Width: | Height: | Size: 2.8 MiB |
BIN
modules/home-manager/desktop/wallpapers/cat_leaves.png
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
modules/home-manager/desktop/wallpapers/colorful-planets.jpg
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
modules/home-manager/desktop/wallpapers/finalizer.png
Normal file
After Width: | Height: | Size: 499 KiB |
BIN
modules/home-manager/desktop/wallpapers/gruv-material.png
Normal file
After Width: | Height: | Size: 607 KiB |
BIN
modules/home-manager/desktop/wallpapers/ign-0002.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
modules/home-manager/desktop/wallpapers/ign-0008.png
Normal file
After Width: | Height: | Size: 719 KiB |
BIN
modules/home-manager/desktop/wallpapers/ign-0011.png
Normal file
After Width: | Height: | Size: 464 KiB |
BIN
modules/home-manager/desktop/wallpapers/ign_car.png
Normal file
After Width: | Height: | Size: 831 KiB |
BIN
modules/home-manager/desktop/wallpapers/ign_city.png
Normal file
After Width: | Height: | Size: 159 KiB |
BIN
modules/home-manager/desktop/wallpapers/ign_cityRainOther.png
Normal file
After Width: | Height: | Size: 354 KiB |
BIN
modules/home-manager/desktop/wallpapers/ign_herakles.png
Normal file
After Width: | Height: | Size: 861 KiB |
BIN
modules/home-manager/desktop/wallpapers/ign_stuff.png
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
modules/home-manager/desktop/wallpapers/ign_unsplash16.png
Normal file
After Width: | Height: | Size: 1.0 MiB |
BIN
modules/home-manager/desktop/wallpapers/koi2.png
Normal file
After Width: | Height: | Size: 267 KiB |
After Width: | Height: | Size: 239 KiB |
BIN
modules/home-manager/desktop/wallpapers/nord_buildings.png
Normal file
After Width: | Height: | Size: 299 KiB |
BIN
modules/home-manager/desktop/wallpapers/outer-space.png
Normal file
After Width: | Height: | Size: 10 MiB |
BIN
modules/home-manager/desktop/wallpapers/platform.jpg
Normal file
After Width: | Height: | Size: 2.7 MiB |
BIN
modules/home-manager/desktop/wallpapers/rolly.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 4.0 MiB |
BIN
modules/home-manager/desktop/wallpapers/rose_pine_shape.png
Normal file
After Width: | Height: | Size: 261 KiB |
BIN
modules/home-manager/desktop/wallpapers/shiny-colors.png
Normal file
After Width: | Height: | Size: 269 KiB |
BIN
modules/home-manager/desktop/wallpapers/skullcat.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
modules/home-manager/desktop/wallpapers/space324dhsj.png
Normal file
After Width: | Height: | Size: 216 KiB |
BIN
modules/home-manager/desktop/wallpapers/spiral.jpg
Normal file
After Width: | Height: | Size: 342 KiB |
BIN
modules/home-manager/desktop/wallpapers/spooky_spill.jpg
Normal file
After Width: | Height: | Size: 412 KiB |
BIN
modules/home-manager/desktop/wallpapers/wallpaper.jpg
Normal file
After Width: | Height: | Size: 595 KiB |
36
modules/home-manager/direnv/default.nix
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.shell.direnv;
|
||||
in
|
||||
{
|
||||
options.modules.shell.direnv = {
|
||||
enable = lib.mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
96
modules/home-manager/emacs/default.nix
Normal file
@ -0,0 +1,96 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.emacs;
|
||||
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
|
||||
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
|
||||
in
|
||||
{
|
||||
options.modules.emacs = {
|
||||
enable = mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.sessionPath = [ "/home/julian/.config/emacs/bin" ];
|
||||
|
||||
home.packages =
|
||||
with pkgs;
|
||||
[
|
||||
binutils # native-comp needs 'as', provided by this
|
||||
|
||||
## Doom dependencies
|
||||
git
|
||||
(ripgrep.override { withPCRE2 = true; })
|
||||
|
||||
## Optional dependencies
|
||||
fd # faster projectile indexing
|
||||
imagemagick # for image-dired
|
||||
zstd # for undo-fu-session/undo-tree compression
|
||||
|
||||
## Module dependencies
|
||||
(aspellWithDicts (
|
||||
ds: with ds; [
|
||||
en
|
||||
en-computers
|
||||
en-science
|
||||
de
|
||||
]
|
||||
))
|
||||
|
||||
hunspell
|
||||
hunspellDicts.de_DE
|
||||
hunspellDicts.en_US
|
||||
|
||||
sqlite
|
||||
|
||||
# Code formatters for use with doom emacs
|
||||
nixfmt-rfc-style # nix
|
||||
nixd # nix lsp
|
||||
dockfmt # docker
|
||||
google-java-format # java
|
||||
black # python
|
||||
rustfmt # rust
|
||||
shfmt
|
||||
pyright
|
||||
clang-tools # c++ lsp etc
|
||||
ltex-ls # latex languagetool
|
||||
|
||||
graphviz
|
||||
# Lsps for use with doom emacs
|
||||
# neocmakelsp # cmake
|
||||
|
||||
emacs-all-the-icons-fonts
|
||||
]
|
||||
++ lib.optional config.modules.non-nixos.is-nixos emacs;
|
||||
|
||||
home.activation.installDoomEmacs = lib.home-manager.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
if [ ! -d "/home/julian/.config/emacs" ]; then
|
||||
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs"
|
||||
fi
|
||||
if [ ! -d "/home/julian/.config/doom" ]; then
|
||||
$DRY_RUN_CMD ${pkgs.git}/bin/git clone "${configRepoUrl}" "/home/julian/.config/doom"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
}
|
80
modules/home-manager/fish/default.nix
Normal file
@ -0,0 +1,80 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.shell.fish;
|
||||
in
|
||||
{
|
||||
options.modules.shell.fish = {
|
||||
enable = mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
home.file = {
|
||||
".config/starship.toml".source = ./starship.toml;
|
||||
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
starship
|
||||
lazygit
|
||||
];
|
||||
|
||||
home.shellAliases = {
|
||||
g = "lazygit";
|
||||
ls = "ls --color";
|
||||
la = "ls -Alh --color";
|
||||
grep = "grep --color";
|
||||
conf = "edit-config";
|
||||
};
|
||||
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
||||
interactiveShellInit = "set fish_greeting"; # Disable default greeting
|
||||
|
||||
functions = {
|
||||
mkcd = ''
|
||||
mkdir $argv
|
||||
cd $argv
|
||||
'';
|
||||
run = ''
|
||||
nix run nixpkgs#"$argv[1]" -- $argv[2..-1]
|
||||
'';
|
||||
shell = ''
|
||||
set args
|
||||
for arg in $argv
|
||||
set args $args nixpkgs#$arg
|
||||
end
|
||||
nix shell $args
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
7
modules/home-manager/fish/last-working-dir.fish
Normal file
@ -0,0 +1,7 @@
|
||||
function lwd
|
||||
cd $LAST_WORKING_DIR
|
||||
end
|
||||
|
||||
function __onpwd --on-variable PWD
|
||||
set --universal LAST_WORKING_DIR $PWD
|
||||
end
|
14
modules/home-manager/fish/starship.toml
Normal file
@ -0,0 +1,14 @@
|
||||
# newline between shell prompts
|
||||
add_newline = false
|
||||
#format = "$all$directory$character"
|
||||
|
||||
[line_break]
|
||||
disabled = true
|
||||
|
||||
[directory]
|
||||
fish_style_pwd_dir_length = 1
|
||||
|
||||
[status]
|
||||
map_symbol = true
|
||||
format = '[$symbol$status $common_meaning$signal_name$maybe_int]($style) '
|
||||
disabled = false
|
48
modules/home-manager/fonts/default.nix
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
host,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.fonts;
|
||||
in
|
||||
{
|
||||
options.modules.fonts = {
|
||||
enable = mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
||||
home.packages = with pkgs; [
|
||||
(nerdfonts.override { fonts = [ "FiraCode" ]; })
|
||||
font-awesome
|
||||
dejavu_fonts
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
noto-fonts-emoji
|
||||
liberation_ttf
|
||||
fira-code
|
||||
fira-code-symbols
|
||||
source-code-pro
|
||||
];
|
||||
};
|
||||
}
|
41
modules/home-manager/gammastep/default.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
host,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.gammastep;
|
||||
in
|
||||
{
|
||||
options.modules.gammastep = {
|
||||
enable = mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.gammastep = {
|
||||
enable = true;
|
||||
latitude = 47.92;
|
||||
longitude = 10.12;
|
||||
provider = "manual";
|
||||
};
|
||||
};
|
||||
}
|
311
modules/home-manager/hyprland/default.nix
Normal file
@ -0,0 +1,311 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
namespace, # The namespace used for your flake, defaulting to "internal" if not set.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.hyprland;
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
options.modules.hyprland = with lib.frajul; {
|
||||
enable = mkBoolOpt false "Enable or disable the hyprland window manager.";
|
||||
};
|
||||
|
||||
imports = [ inputs.hyprland.homeManagerModules.default ];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
modules.desktop.addons = {
|
||||
waybar.enable = true;
|
||||
wofi.enable = true;
|
||||
mako.enable = true;
|
||||
hyprlock.enable = true;
|
||||
wlogout.enable = true;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# hyprpicker # TODO
|
||||
# hyprcursor # TODO
|
||||
brightnessctl
|
||||
# grimblast
|
||||
frajul.hyprshot-gui
|
||||
];
|
||||
|
||||
# services.hypridle = {
|
||||
# enable = true;
|
||||
# settings = {
|
||||
# general = {
|
||||
# after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
# ignore_dbus_inhibit = false;
|
||||
# lock_cmd = "hyprlock";
|
||||
# };
|
||||
|
||||
# listener = [
|
||||
# {
|
||||
# timeout = 300; # 5min
|
||||
# on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||
# on-resume = "brightnessctl -r"; # monitor backlight restore.
|
||||
# }
|
||||
|
||||
# {
|
||||
# timeout = 360; # 6min
|
||||
# on-timeout = "hyprlock"; # lock screen when timeout has passed
|
||||
# }
|
||||
|
||||
# {
|
||||
# timeout = 600; # 10min
|
||||
# on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
||||
# on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
||||
# }
|
||||
# ];
|
||||
# };
|
||||
# };
|
||||
|
||||
# services.hypridle.enable = true; # can be configured
|
||||
|
||||
services.network-manager-applet.enable = true;
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
# Whether to enable Hyprland wayland compositor
|
||||
enable = true;
|
||||
package = inputs.hyprland.packages."${pkgs.system}".hyprland; # does only work with nixos-unstable
|
||||
|
||||
# The hyprland package to use (simplifies use of plugins)
|
||||
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||
# Whether to enable XWayland
|
||||
xwayland.enable = true;
|
||||
|
||||
# Optional
|
||||
# Whether to enable hyprland-session.target on hyprland startup
|
||||
systemd.enable = true;
|
||||
# Make PATH available to systemd services
|
||||
systemd.variables = [ "--all" ];
|
||||
|
||||
plugins = [
|
||||
inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars # does only work with nixos-unstable
|
||||
# hyprlandPlugins.hyprbars
|
||||
];
|
||||
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
|
||||
# Monitors
|
||||
monitor = ",preferred,auto,auto";
|
||||
|
||||
# Autostart
|
||||
exec-once = [ "firefox" ];
|
||||
|
||||
# Look and Feel
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 5;
|
||||
|
||||
layout = "dwindle";
|
||||
|
||||
"col.active_border" = "0xff${palette.base0C} 0xff${palette.base0D} 270deg";
|
||||
"col.inactive_border" = "0xff${palette.base00}";
|
||||
};
|
||||
|
||||
decoration = {
|
||||
# power saving
|
||||
blur.enabled = false;
|
||||
# power saving
|
||||
drop_shadow = false;
|
||||
};
|
||||
|
||||
# Dwindle layout
|
||||
dwindle = {
|
||||
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true; # You probably want this
|
||||
no_gaps_when_only = 2; # with border
|
||||
};
|
||||
|
||||
# Master layout
|
||||
master = {
|
||||
new_status = "slave";
|
||||
no_gaps_when_only = 2; # with border
|
||||
mfact = 0.5; # Do not make master bigger
|
||||
};
|
||||
|
||||
misc = {
|
||||
# disable auto polling for config file changes
|
||||
disable_autoreload = true;
|
||||
|
||||
force_default_wallpaper = 0;
|
||||
|
||||
# we do, in fact, want direct scanout
|
||||
# no_direct_scanout = false;
|
||||
vfr = true; # power saving
|
||||
};
|
||||
|
||||
# Input
|
||||
input = {
|
||||
kb_layout = "de";
|
||||
natural_scroll = false;
|
||||
follow_mouse = 1;
|
||||
};
|
||||
|
||||
# Window rules
|
||||
windowrulev2 = [
|
||||
"suppressevent maximize, class:.*"
|
||||
"workspace 1, class:firefox"
|
||||
"workspace 9, class:nheko"
|
||||
"workspace 9, class:org.telegram.desktop"
|
||||
"workspace 10, class:thunderbird"
|
||||
"float, class:qalculate-gtk"
|
||||
"tile, class:MATLAB, title:MATLAB"
|
||||
];
|
||||
|
||||
# Workspace rules
|
||||
workspace = [
|
||||
"1, monitor:HDMI-A-1"
|
||||
"2, monitor:HDMI-A-1"
|
||||
"3, monitor:HDMI-A-1"
|
||||
"4, monitor:HDMI-A-1"
|
||||
"5, monitor:HDMI-A-1"
|
||||
"6, monitor:eDP-1"
|
||||
"7, monitor:eDP-1"
|
||||
"8, monitor:eDP-1"
|
||||
"9, monitor:eDP-1"
|
||||
"10, monitor:eDP-1"
|
||||
];
|
||||
|
||||
# Mouse binds
|
||||
bindm = [
|
||||
"$mod, mouse:272, movewindow" # leftclick
|
||||
"$mod, mouse:273, resizewindow" # rightclick
|
||||
];
|
||||
|
||||
# binds
|
||||
bind = [
|
||||
# compositor commands
|
||||
"$mod, Space, focuswindow, floating"
|
||||
"$mod SHIFT, Space, togglefloating,"
|
||||
"$mod, F, fullscreen,"
|
||||
"$mod, X, killactive,"
|
||||
|
||||
"$mod, O, togglesplit," # dwindle
|
||||
|
||||
# opening applications
|
||||
"$mod, D, exec, wofi --show drun,run"
|
||||
"$mod, E, exec, pcmanfm"
|
||||
"$mod, Return, exec, kitty"
|
||||
"$mod, B, exec, firefox"
|
||||
"$mod, C, exec, qalculate-gtk"
|
||||
|
||||
# other commands
|
||||
"$mod SHIFT, E, exec, wlogout -p layer-shell"
|
||||
"$mod, Escape, exec, wlogout -p layer-shell"
|
||||
"$mod, TAB, exec, hyprlock"
|
||||
"$mod SHIFT, R, exec, hyprctl reload"
|
||||
", Print, exec, hyprshot-gui"
|
||||
|
||||
# "$mod SHIFT, E, exec, pkill Hyprland"
|
||||
# "$mod, G, togglegroup,"
|
||||
# "$mod SHIFT, N, changegroupactive, f"
|
||||
# "$mod SHIFT, P, changegroupactive, b"
|
||||
# "$mod ALT, ,resizeactive,"
|
||||
|
||||
# media keys
|
||||
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
||||
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||
", XF86AudioPlay, exec, playerctl play-pause"
|
||||
", XF86AudioPause, exec, playerctl pause"
|
||||
", XF86AudioStop, exec, playerctl stop"
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioPrev, exec, playerctl previous"
|
||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
", XF86MonBrightnessUp, exec, brightnessctl --class backlight set 5%+"
|
||||
", XF86MonBrightnessDown, exec, brightnessctl --class backlight set 5%-"
|
||||
|
||||
# move focus
|
||||
"$mod, left, movefocus, l"
|
||||
"$mod, H, movefocus, l"
|
||||
"$mod, right, movefocus, r"
|
||||
"$mod, L, movefocus, r"
|
||||
"$mod, up, movefocus, u"
|
||||
"$mod, K, movefocus, u"
|
||||
"$mod, down, movefocus, d"
|
||||
"$mod, J, movefocus, d"
|
||||
|
||||
# move window
|
||||
"$mod SHIFT, left, movewindow, l"
|
||||
"$mod SHIFT, H, movewindow, l"
|
||||
"$mod SHIFT, right, movewindow, r"
|
||||
"$mod SHIFT, L, movewindow, r"
|
||||
"$mod SHIFT, up, movewindow, u"
|
||||
"$mod SHIFT, K, movewindow, u"
|
||||
"$mod SHIFT, down, movewindow, d"
|
||||
"$mod SHIFT, J, movewindow, d"
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
"$mod, 1, workspace, 1"
|
||||
"$mod, 2, workspace, 2"
|
||||
"$mod, 3, workspace, 3"
|
||||
"$mod, 4, workspace, 4"
|
||||
"$mod, 5, workspace, 5"
|
||||
"$mod, 6, workspace, 6"
|
||||
"$mod, 7, workspace, 7"
|
||||
"$mod, 8, workspace, 8"
|
||||
"$mod, 9, workspace, 9"
|
||||
"$mod, 0, workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"$mod SHIFT, 1, movetoworkspace, 1"
|
||||
"$mod SHIFT, 2, movetoworkspace, 2"
|
||||
"$mod SHIFT, 3, movetoworkspace, 3"
|
||||
"$mod SHIFT, 4, movetoworkspace, 4"
|
||||
"$mod SHIFT, 5, movetoworkspace, 5"
|
||||
"$mod SHIFT, 6, movetoworkspace, 6"
|
||||
"$mod SHIFT, 7, movetoworkspace, 7"
|
||||
"$mod SHIFT, 8, movetoworkspace, 8"
|
||||
"$mod SHIFT, 9, movetoworkspace, 9"
|
||||
"$mod SHIFT, 0, movetoworkspace, 10"
|
||||
|
||||
# Move active window to a workspace without following with mainMod + CTRL + [0-9]
|
||||
"$mod CTRL, 1, movetoworkspacesilent, 1"
|
||||
"$mod CTRL, 2, movetoworkspacesilent, 2"
|
||||
"$mod CTRL, 3, movetoworkspacesilent, 3"
|
||||
"$mod CTRL, 4, movetoworkspacesilent, 4"
|
||||
"$mod CTRL, 5, movetoworkspacesilent, 5"
|
||||
"$mod CTRL, 6, movetoworkspacesilent, 6"
|
||||
"$mod CTRL, 7, movetoworkspacesilent, 7"
|
||||
"$mod CTRL, 8, movetoworkspacesilent, 8"
|
||||
"$mod CTRL, 9, movetoworkspacesilent, 9"
|
||||
"$mod CTRL, 0, movetoworkspacesilent, 10"
|
||||
];
|
||||
|
||||
plugin = {
|
||||
hyprbars = {
|
||||
bar_text_size = 10;
|
||||
bar_height = 16;
|
||||
bar_text_font = "Ubuntu Nerd Font";
|
||||
bar_precedence_over_border = true;
|
||||
bar_color = "rgb(${palette.base01})";
|
||||
|
||||
hyprbars-button = [ "rgb(${palette.base03}), 14, , hyprctl dispatch killactive" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
57
modules/home-manager/hyprland/hyprlock/default.nix
Normal file
@ -0,0 +1,57 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.modules.desktop.addons.hyprlock;
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.addons.hyprlock =
|
||||
with lib.frajul;
|
||||
with lib.types;
|
||||
{
|
||||
enable = mkBoolOpt false "Enable or disable the hyprlock screen locker.";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.hyprlock.enable = true;
|
||||
programs.hyprlock.settings = {
|
||||
general = {
|
||||
disable_loading_bar = true;
|
||||
hide_cursor = true;
|
||||
ignore_empty_input = true;
|
||||
};
|
||||
|
||||
background = [
|
||||
{
|
||||
color = "#${palette.base00}";
|
||||
# path = "screenshot";
|
||||
# blur_passes = 3;
|
||||
# blur_size = 8;
|
||||
}
|
||||
];
|
||||
|
||||
input-field = [
|
||||
{
|
||||
size = "200, 50";
|
||||
position = "0, -80";
|
||||
monitor = "";
|
||||
dots_center = true;
|
||||
fade_on_empty = false;
|
||||
font_color = "#${palette.base0B}";
|
||||
inner_color = "#${palette.base01}";
|
||||
outer_color = "#${palette.base05}";
|
||||
outline_thickness = 5;
|
||||
placeholder_text = "Password...";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
39
modules/home-manager/hyprland/mako/default.nix
Normal file
@ -0,0 +1,39 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.modules.desktop.addons.mako;
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.addons.mako =
|
||||
with lib.frajul;
|
||||
with lib.types;
|
||||
{
|
||||
enable = mkBoolOpt false "Enable or disable mako";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ libnotify ];
|
||||
|
||||
services.mako = {
|
||||
enable = true;
|
||||
defaultTimeout = 5000; # milliseconds, can be overwritten by notification sender
|
||||
backgroundColor = "#${palette.base00}";
|
||||
textColor = "#${palette.base05}";
|
||||
borderColor = "#${palette.base0D}";
|
||||
progressColor = "over #${palette.base02}";
|
||||
extraConfig = ''
|
||||
[urgency=high]
|
||||
border-color=#${palette.base09}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
96
modules/home-manager/hyprland/waybar/config.json
Normal file
@ -0,0 +1,96 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "bottom",
|
||||
"mode": "dock",
|
||||
"exclusive": true,
|
||||
"passtrough": true,
|
||||
"height": 16,
|
||||
|
||||
"modules-left": [
|
||||
"hyprland/workspaces"
|
||||
],
|
||||
|
||||
"modules-center": [],
|
||||
|
||||
"modules-right": ["idle_inhibitor", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"on-scroll-up": "hyprctl dispatch workspace m+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace m-1",
|
||||
"all-outputs": false,
|
||||
"on-click": "activate",
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"1": "1",
|
||||
"2": "2",
|
||||
"3": "3",
|
||||
"4": "4",
|
||||
"5": "5",
|
||||
"6": "6",
|
||||
"7": "7",
|
||||
"8": "8",
|
||||
"9": "9",
|
||||
"10": "10"
|
||||
}
|
||||
},
|
||||
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
|
||||
"disk": {
|
||||
"interval": 30,
|
||||
"format": "Free: {percentage_free}% ({free})",
|
||||
"path": "/",
|
||||
"unit": "GB"
|
||||
},
|
||||
|
||||
"cpu": {
|
||||
"format": " {usage}%"
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"format": " {}%"
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume}%",
|
||||
"format-muted": "<big></big>",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"scroll-step": 5.0,
|
||||
"max-volume": 200,
|
||||
"on-click": "pulseaudio-popup",
|
||||
"on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
},
|
||||
|
||||
"battery": {
|
||||
"states": {
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon} {capacity}% ({time})",
|
||||
"format-charging": " {capacity}% ({time})",
|
||||
"format-plugged": " {capacity}% ({time})",
|
||||
"format-full": "{icon} ",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"tooltip-format": "{calendar}",
|
||||
"format": "{:%a %d.%m %H:%M:%S}",
|
||||
"interval": 1
|
||||
},
|
||||
|
||||
"tray": {
|
||||
"icon-size": 20,
|
||||
"tooltip": false,
|
||||
"spacing": 10
|
||||
}
|
||||
}
|
49
modules/home-manager/hyprland/waybar/default.nix
Normal file
@ -0,0 +1,49 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.frajul;
|
||||
let
|
||||
cfg = config.modules.desktop.addons.waybar;
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.addons.waybar = with types; {
|
||||
enable = mkBoolOpt false "Enable or disable waybar";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json);
|
||||
};
|
||||
|
||||
xdg.configFile."waybar/style.css".source = ./style.css;
|
||||
xdg.configFile."waybar/theme.css".text = ''
|
||||
/*
|
||||
bg - background
|
||||
fg - foreground
|
||||
*/
|
||||
|
||||
/* Main Colors */
|
||||
@define-color background #${palette.base00};
|
||||
@define-color foreground #${palette.base05};
|
||||
|
||||
/* Workspace Button Colors */
|
||||
@define-color hover-bg #${palette.base01};
|
||||
@define-color hover-fg #${palette.base05};
|
||||
@define-color active-bg #${palette.base02};
|
||||
@define-color active-fg #${palette.base0A};
|
||||
@define-color urgent-bg #${palette.base08};
|
||||
@define-color urgent-fg #${palette.base00};
|
||||
'';
|
||||
};
|
||||
}
|
94
modules/home-manager/hyprland/waybar/style.css
Normal file
@ -0,0 +1,94 @@
|
||||
* {
|
||||
/* `otf-font-awesome` is required to be installed for icons */
|
||||
font-family: JetBrainsMono Nerd Font;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
/* This imports the base16 colors */
|
||||
@import "theme.css";
|
||||
|
||||
/* Main Background */
|
||||
window#waybar { background: @background; }
|
||||
|
||||
/* Tooltip Styling */
|
||||
tooltip {
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
border: solid;
|
||||
border-width: 1.5px;
|
||||
border-radius: 7px;
|
||||
border-color: white;
|
||||
}
|
||||
|
||||
/* Workspace Button */
|
||||
#workspaces button {
|
||||
color: @foreground;
|
||||
border-radius: 5px;
|
||||
box-shadow: none;
|
||||
margin-top: 2px;
|
||||
margin-bottom: 2px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
padding: 0px;
|
||||
padding-right: 2px;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
/* Opened workspaces (also on other screen) */
|
||||
#workspaces button.visible{
|
||||
color: @active-fg;
|
||||
background: @hover-bg;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* Active Workspace Button */
|
||||
#workspaces button.active {
|
||||
color: @active-fg;
|
||||
background: @active-bg;
|
||||
box-shadow: 0px 0px 2px 1px rgba(0, 0, 0, 1);
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
padding-right: 6px;
|
||||
padding-left: 6px;
|
||||
transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
|
||||
}
|
||||
|
||||
/* Hover Effect for Workspace Buttons */
|
||||
#workspaces button.inactive:hover {
|
||||
color: @hover-fg;
|
||||
background: @hover-bg;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* Urgent Workspace Buttons */
|
||||
#workspaces button.urgent {
|
||||
color: @urgent-fg;
|
||||
background: @urgent-bg;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* General Module Styling */
|
||||
#idle_inhibitor,
|
||||
#disk,
|
||||
#cpu,
|
||||
#memory,
|
||||
#pulseaudio,
|
||||
#battery,
|
||||
#clock,
|
||||
#tray {
|
||||
color: @foreground;
|
||||
padding: 0 10px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-right: 2px;
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
/* #battery.warning { */
|
||||
/* color: #${palette.base08}; */
|
||||
/* } */
|
||||
|
||||
/* #pulseaudio.muted { */
|
||||
/* color: #${palette.base08}; */
|
||||
/* padding-right: 16px; */
|
||||
/* } */
|
50
modules/home-manager/hyprland/wlogout/default.nix
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.modules.desktop.addons.wlogout;
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.addons.wlogout =
|
||||
with lib.frajul;
|
||||
with lib.types;
|
||||
{
|
||||
enable = mkBoolOpt false "Enable or disable wlogout.";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ wlogout ];
|
||||
|
||||
# xdg.configFile."wlogout/style.css".text = ''
|
||||
# * {
|
||||
# all: unset;
|
||||
# font-family: JetBrains Mono Nerd Font;
|
||||
# }
|
||||
|
||||
# window {
|
||||
# background-color: #${palette.base00};
|
||||
# }
|
||||
|
||||
# button {
|
||||
# color: #${palette.base01};
|
||||
# font-size: 64px;
|
||||
# background-color: rgba(0,0,0,0);
|
||||
# outline-style: none;
|
||||
# margin: 5px;
|
||||
# }
|
||||
|
||||
# button:focus, button:active, button:hover {
|
||||
# color: #${palette.base0D};
|
||||
# transition: ease 0.4s;
|
||||
# }
|
||||
# '';
|
||||
};
|
||||
}
|
15
modules/home-manager/hyprland/wofi/config
Normal file
@ -0,0 +1,15 @@
|
||||
width=900
|
||||
height=600
|
||||
location=center
|
||||
show=drun,run
|
||||
prompt=Search...
|
||||
filter_rate=100
|
||||
allow_markup=true
|
||||
no_actions=true
|
||||
halign=fill
|
||||
orientation=vertical
|
||||
content_halign=fill
|
||||
insensitive=true
|
||||
allow_images=true
|
||||
image_size=35
|
||||
gtk_dark=true
|
97
modules/home-manager/hyprland/wofi/default.nix
Normal file
@ -0,0 +1,97 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.modules.desktop.addons.wofi;
|
||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme})
|
||||
palette
|
||||
;
|
||||
in
|
||||
{
|
||||
options.modules.desktop.addons.wofi =
|
||||
with lib.frajul;
|
||||
with lib.types;
|
||||
{
|
||||
enable = mkBoolOpt false "Enable or disable the wofi run launcher.";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ wofi ];
|
||||
|
||||
xdg.configFile."wofi/config".source = ./config;
|
||||
xdg.configFile."wofi/style.css".text = ''
|
||||
window {
|
||||
margin: 5px;
|
||||
border: 5px solid #181926;
|
||||
background-color: #${palette.base00};
|
||||
border-radius: 15px;
|
||||
font-family: "JetBrainsMono";
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#input {
|
||||
all: unset;
|
||||
min-height: 36px;
|
||||
padding: 4px 10px;
|
||||
margin: 4px;
|
||||
border: none;
|
||||
color: #${palette.base05};
|
||||
font-weight: bold;
|
||||
background-color: #${palette.base01};
|
||||
outline: none;
|
||||
border-radius: 15px;
|
||||
margin: 10px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
#inner-box {
|
||||
margin: 4px;
|
||||
padding: 10px;
|
||||
font-weight: bold;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
#outer-box {
|
||||
margin: 0px;
|
||||
padding: 3px;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
border: 5px solid #${palette.base01};
|
||||
}
|
||||
|
||||
#scroll {
|
||||
margin-top: 5px;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#text:selected {
|
||||
color: #${palette.base01};
|
||||
margin: 0px 0px;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
#entry {
|
||||
margin: 0px 0px;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
margin: 0px 0px;
|
||||
border: none;
|
||||
border-radius: 15px;
|
||||
background: #${palette.base0D};
|
||||
background-size: 400% 400%;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
79
modules/home-manager/i3/default.nix
Normal file
@ -0,0 +1,79 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
host,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.i3;
|
||||
in
|
||||
{
|
||||
options.modules.i3 = {
|
||||
enable = mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
modules.rofi.enable = true;
|
||||
|
||||
services.dunst.enable = true;
|
||||
|
||||
programs = {
|
||||
i3status-rust = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
nitrogen
|
||||
xfce.xfce4-screenshooter
|
||||
pulseaudio # For pactl commands
|
||||
];
|
||||
xsession.enable = true; # Give gui programs access to sessionVariables
|
||||
# Prevent screen from going blank (check these settings with `xset q`)
|
||||
# And disable bell sound (b)
|
||||
xsession.initExtra = ''
|
||||
${pkgs.xorg.xset}/bin/xset s off
|
||||
${pkgs.xorg.xset}/bin/xset -dpms
|
||||
${pkgs.xorg.xset}/bin/xset b off
|
||||
'';
|
||||
xsession.windowManager.i3 = {
|
||||
enable = true;
|
||||
package = pkgs.i3-gaps;
|
||||
};
|
||||
|
||||
xsession.importedVariables = [ ];
|
||||
|
||||
# Overwrite default home-manager config file
|
||||
xdg.configFile."i3/config".source = lib.mkForce (
|
||||
if host == "kardorf" then ./i3/config-kardorf else ./i3/config
|
||||
);
|
||||
|
||||
home.file = {
|
||||
".config/i3/scripts" = {
|
||||
source = ./i3/scripts;
|
||||
recursive = true;
|
||||
};
|
||||
".config/i3/workspace-messaging.json".source = ./i3/workspace-chat-element-tele.json;
|
||||
".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml;
|
||||
};
|
||||
|
||||
home.sessionPath = [ "/home/julian/.config/i3/scripts" ];
|
||||
};
|
||||
}
|
1
modules/home-manager/i3/i3-scrot.conf
Normal file
@ -0,0 +1 @@
|
||||
scrot_dir=~/Pictures/screenshots
|
314
modules/home-manager/i3/i3/config
Normal file
@ -0,0 +1,314 @@
|
||||
# i3 config file (v4)
|
||||
#
|
||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
||||
|
||||
set $mod Mod4
|
||||
set $scripts /home/julian/.config/i3/scripts
|
||||
set $lock "i3lock --ignore-empty-password --color=000000"
|
||||
|
||||
# Font for window titles
|
||||
font pango:FuraCode Nerd Font 12
|
||||
|
||||
# xss-lock grabs a logind suspend inhibit lock and will use $lock to lock the
|
||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
||||
# exec --no-startup-id xss-lock --transfer-sleep-lock -- $lock --nofork
|
||||
|
||||
# Screen brightness controls
|
||||
bindsym XF86MonBrightnessUp exec "brightnessctl set 5%+"
|
||||
bindsym XF86MonBrightnessDown exec "brightnessctl set 5%-"
|
||||
|
||||
# Use pactl to adjust volume in PulseAudio.
|
||||
# set $refresh_i3status killall -SIGUSR1 i3status
|
||||
set $refresh_i3blocks pkill -RTMIN+1 i3blocks
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3blocks
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3blocks
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3blocks
|
||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3blocks
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec $TERMINAL
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
bindsym $mod+x kill
|
||||
|
||||
# Simulates alt+f4
|
||||
bindsym Mod1+F4 kill
|
||||
|
||||
# start program launcher
|
||||
bindsym $mod+d exec rofi -show run
|
||||
|
||||
# change focus
|
||||
bindsym $mod+h focus left
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+h move left
|
||||
bindsym $mod+Shift+j move down
|
||||
bindsym $mod+Shift+k move up
|
||||
bindsym $mod+Shift+l move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal / vertical orientation
|
||||
bindsym $mod+Shift+v split h
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
# bindsym $mod+Shift+w layout stacking
|
||||
# bindsym $mod+w layout tabbed
|
||||
# bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
#bindsym $mod+d focus child
|
||||
|
||||
# The middle button over a titlebar kills the window
|
||||
bindsym --release button2 kill
|
||||
|
||||
# Define names for default workspaces for which we configure key bindings later on.
|
||||
# We use variables to avoid repeating the names in multiple places.
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace number $ws1
|
||||
bindsym $mod+2 workspace number $ws2
|
||||
bindsym $mod+3 workspace number $ws3
|
||||
bindsym $mod+4 workspace number $ws4
|
||||
bindsym $mod+5 workspace number $ws5
|
||||
bindsym $mod+6 workspace number $ws6
|
||||
bindsym $mod+7 workspace number $ws7
|
||||
bindsym $mod+8 workspace number $ws8
|
||||
bindsym $mod+9 workspace number $ws9
|
||||
bindsym $mod+0 workspace number $ws10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Ctrl+1 move container to workspace number $ws1
|
||||
bindsym $mod+Ctrl+2 move container to workspace number $ws2
|
||||
bindsym $mod+Ctrl+3 move container to workspace number $ws3
|
||||
bindsym $mod+Ctrl+4 move container to workspace number $ws4
|
||||
bindsym $mod+Ctrl+5 move container to workspace number $ws5
|
||||
bindsym $mod+Ctrl+6 move container to workspace number $ws6
|
||||
bindsym $mod+Ctrl+7 move container to workspace number $ws7
|
||||
bindsym $mod+Ctrl+8 move container to workspace number $ws8
|
||||
bindsym $mod+Ctrl+9 move container to workspace number $ws9
|
||||
bindsym $mod+Ctrl+0 move container to workspace number $ws10
|
||||
|
||||
# move focused container to workspace and follow
|
||||
bindsym $mod+Shift+1 move container to workspace number $ws1; workspace $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace number $ws2; workspace $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace number $ws3; workspace $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace number $ws4; workspace $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace number $ws5; workspace $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace number $ws6; workspace $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace number $ws7; workspace $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace number $ws8; workspace $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
|
||||
|
||||
# Monitor config
|
||||
set $monitor_left "HDMI-1"
|
||||
set $monitor_right "eDP-1"
|
||||
|
||||
workspace $ws1 output $monitor_left
|
||||
workspace $ws2 output $monitor_left
|
||||
workspace $ws3 output $monitor_left
|
||||
workspace $ws4 output $monitor_left
|
||||
workspace $ws5 output $monitor_left
|
||||
workspace $ws6 output $monitor_right
|
||||
workspace $ws7 output $monitor_right
|
||||
workspace $ws8 output $monitor_right
|
||||
workspace $ws9 output $monitor_right
|
||||
workspace $ws10 output $monitor_right
|
||||
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym h resize shrink width 10 px or 10 ppt
|
||||
bindsym j resize grow height 10 px or 10 ppt
|
||||
bindsym k resize shrink height 10 px or 10 ppt
|
||||
bindsym l resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape or $mod+r
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
bar {
|
||||
font pango:DejaVu Sans Mono, Font Awesome 15
|
||||
status_command i3status-rs
|
||||
position bottom
|
||||
|
||||
tray_output eDP-1
|
||||
}
|
||||
|
||||
|
||||
set $mode_system System (l) lock, (e) logout, (r) reboot, (s) shutdown
|
||||
mode "$mode_system" {
|
||||
bindsym l exec --no-startup-id $lock, mode "default"
|
||||
# logout
|
||||
bindsym e exec --no-startup-id i3-msg exit, mode "default"
|
||||
bindsym r exec --no-startup-id systemctl reboot, mode "default"
|
||||
bindsym s exec --no-startup-id systemctl poweroff, mode "default"
|
||||
bindsym h exec --no-startup-id $lock && systemctl hibernate, mode "default"
|
||||
bindsym Shift+s exec --no-startup-id $lock && systemctl suspend, mode "default"
|
||||
|
||||
# back to normal: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym $mod+Shift+e mode "$mode_system"
|
||||
|
||||
bindsym $mod+Tab exec --no-startup-id $lock
|
||||
|
||||
bindsym $mod+Print exec --no-startup-id "xfce4-screenshooter"
|
||||
|
||||
bindsym $mod+c exec qalculate-gtk
|
||||
bindsym $mod+Shift+p exec xwacomcalibrate
|
||||
bindsym $mod+e exec pcmanfm
|
||||
bindsym $mod+b exec firefox
|
||||
bindsym $mod+p exec $scripts/display-toggle-mirror
|
||||
|
||||
workspace_auto_back_and_forth yes
|
||||
|
||||
# default_border pixel
|
||||
default_border normal
|
||||
default_floating_border normal
|
||||
hide_edge_borders smart
|
||||
|
||||
show_marks no
|
||||
|
||||
# switch to workspace with urgent window automatically
|
||||
for_window [urgent=latest] focus
|
||||
|
||||
focus_on_window_activation focus
|
||||
|
||||
assign [class="firefox" title="Mozilla Firefox$"] workspace $ws1
|
||||
assign [class="TelegramDesktop"] workspace $ws9
|
||||
assign [class="Signal"] workspace $ws9
|
||||
assign [class="Rocket.Chat"] workspace $ws9
|
||||
assign [class="Element"] workspace $ws9
|
||||
assign [class="SchildiChat"] workspace $ws9
|
||||
assign [class="nheko"] workspace $ws9
|
||||
assign [class="thunderbird"] workspace $ws10
|
||||
# assign [class="zoom"] workspace $ws5
|
||||
assign [class="Zotero"] workspace $ws8
|
||||
|
||||
for_window [class="firefox" urgent="latest"] focus
|
||||
|
||||
for_window [title="Manjaro Settings Manager"] floating enable
|
||||
for_window [class="pamac-manager"] floating enable
|
||||
for_window [class="Pamac-updater"] floating enable
|
||||
for_window [class="Qalculate-gtk"] floating enable
|
||||
for_window [class="Gcolor3"] floating enable
|
||||
#for_window [class="zoom" title="Chat"] floating enable
|
||||
#for_window [class="Thunderbird" instance="Msgcompose"] floating enable
|
||||
#
|
||||
for_window [window_role=floating] floating enable
|
||||
|
||||
for_window [class="Viewnior"] border normal
|
||||
|
||||
########## Autostart applications ##########
|
||||
exec firefox
|
||||
|
||||
# exec --no-startup-id nm-applet
|
||||
# exec --no-startup-id blueman-applet
|
||||
# exec --no-startup-id nextcloud --background
|
||||
# exec --no-startup-id xfce4-screensaver
|
||||
# exec --no-startup-id /usr/bin/emacs --daemon
|
||||
|
||||
# Authentication agent
|
||||
# exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
# exec --no-startup-id /usr/bin/env gnome-keyring-daemon --start
|
||||
|
||||
# Notify about software updates
|
||||
# exec --no-startup-id pamac-tray
|
||||
# exec --no-startup-id clipit
|
||||
# exec --no-startup-id xfce4-clipman
|
||||
|
||||
# Notify about kernel updates
|
||||
# exec --no-startup-id msm_notifier
|
||||
|
||||
# Audio
|
||||
# exec --no-startup-id start-pulseaudio-x11
|
||||
# exec --no-startup-id pa-applet
|
||||
|
||||
# Background
|
||||
exec --no-startup-id nitrogen --restore
|
||||
|
||||
# Adjust display temperature
|
||||
# exec --no-startup-id redshift
|
||||
|
||||
# Notifications
|
||||
# exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd
|
||||
|
||||
# exec --no-startup-id xautolock -time 10 -locker blurlock
|
||||
# exec_always --no-startup-id ff-theme-util
|
||||
# exec_always --no-startup-id fix_xcursor
|
||||
|
||||
exec_always --no-startup-id "$scripts/display-layoutpicker"
|
||||
|
||||
|
||||
#############################
|
||||
### settings for i3-gaps: ###
|
||||
#############################
|
||||
|
||||
# Set inner/outer gaps
|
||||
gaps inner 8
|
||||
gaps outer -2
|
||||
|
||||
# Smart gaps (gaps used if only more than one container on the workspace)
|
||||
smart_gaps on
|
||||
|
||||
# Smart borders (draw borders around container only if it is not the only container on this workspace)
|
||||
smart_borders on
|
314
modules/home-manager/i3/i3/config-kardorf
Normal file
@ -0,0 +1,314 @@
|
||||
# i3 config file (v4)
|
||||
#
|
||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
||||
|
||||
set $mod Mod4
|
||||
set $scripts ~/.config/i3/scripts
|
||||
set $lock "i3lock --ignore-empty-password --color=000000"
|
||||
|
||||
# Font for window titles
|
||||
font pango:FuraCode Nerd Font 12
|
||||
|
||||
# xss-lock grabs a logind suspend inhibit lock and will use $lock to lock the
|
||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- $lock --nofork
|
||||
|
||||
# Screen brightness controls
|
||||
# bindsym XF86MonBrightnessUp exec "xbacklight -inc 10; notify-send 'brightness up'"
|
||||
# bindsym XF86MonBrightnessDown exec "xbacklight -dec 10; notify-send 'brightness down'"
|
||||
|
||||
# Use pactl to adjust volume in PulseAudio.
|
||||
# set $refresh_i3status killall -SIGUSR1 i3status
|
||||
set $refresh_i3blocks pkill -RTMIN+1 i3blocks
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3blocks
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3blocks
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3blocks
|
||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3blocks
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec kitty
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
bindsym $mod+x kill
|
||||
|
||||
# Simulates alt+f4
|
||||
bindsym Mod1+F4 kill
|
||||
|
||||
# start program launcher
|
||||
bindsym $mod+d exec rofi -show run
|
||||
|
||||
# change focus
|
||||
bindsym $mod+h focus left
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+h move left
|
||||
bindsym $mod+Shift+j move down
|
||||
bindsym $mod+Shift+k move up
|
||||
bindsym $mod+Shift+l move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal / vertical orientation
|
||||
bindsym $mod+Shift+v split h
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
# bindsym $mod+Shift+w layout stacking
|
||||
# bindsym $mod+w layout tabbed
|
||||
# bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
#bindsym $mod+d focus child
|
||||
|
||||
# The middle button over a titlebar kills the window
|
||||
bindsym --release button2 kill
|
||||
|
||||
# Define names for default workspaces for which we configure key bindings later on.
|
||||
# We use variables to avoid repeating the names in multiple places.
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace number $ws1
|
||||
bindsym $mod+2 workspace number $ws2
|
||||
bindsym $mod+3 workspace number $ws3
|
||||
bindsym $mod+4 workspace number $ws4
|
||||
bindsym $mod+5 workspace number $ws5
|
||||
bindsym $mod+6 workspace number $ws6
|
||||
bindsym $mod+7 workspace number $ws7
|
||||
bindsym $mod+8 workspace number $ws8
|
||||
bindsym $mod+9 workspace number $ws9
|
||||
bindsym $mod+0 workspace number $ws10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Ctrl+1 move container to workspace number $ws1
|
||||
bindsym $mod+Ctrl+2 move container to workspace number $ws2
|
||||
bindsym $mod+Ctrl+3 move container to workspace number $ws3
|
||||
bindsym $mod+Ctrl+4 move container to workspace number $ws4
|
||||
bindsym $mod+Ctrl+5 move container to workspace number $ws5
|
||||
bindsym $mod+Ctrl+6 move container to workspace number $ws6
|
||||
bindsym $mod+Ctrl+7 move container to workspace number $ws7
|
||||
bindsym $mod+Ctrl+8 move container to workspace number $ws8
|
||||
bindsym $mod+Ctrl+9 move container to workspace number $ws9
|
||||
bindsym $mod+Ctrl+0 move container to workspace number $ws10
|
||||
|
||||
# move focused container to workspace and follow
|
||||
bindsym $mod+Shift+1 move container to workspace number $ws1; workspace $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace number $ws2; workspace $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace number $ws3; workspace $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace number $ws4; workspace $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace number $ws5; workspace $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace number $ws6; workspace $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace number $ws7; workspace $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace number $ws8; workspace $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
|
||||
|
||||
# Monitor config
|
||||
set $monitor_left "DVI-D-0"
|
||||
set $monitor_right "DVI-D-1"
|
||||
|
||||
workspace $ws1 output $monitor_left
|
||||
workspace $ws2 output $monitor_left
|
||||
workspace $ws3 output $monitor_left
|
||||
workspace $ws4 output $monitor_left
|
||||
workspace $ws5 output $monitor_left
|
||||
workspace $ws6 output $monitor_right
|
||||
workspace $ws7 output $monitor_right
|
||||
workspace $ws8 output $monitor_right
|
||||
workspace $ws9 output $monitor_right
|
||||
workspace $ws10 output $monitor_right
|
||||
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym h resize shrink width 10 px or 10 ppt
|
||||
bindsym j resize grow height 10 px or 10 ppt
|
||||
bindsym k resize shrink height 10 px or 10 ppt
|
||||
bindsym l resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape or $mod+r
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
bar {
|
||||
font pango:DejaVu Sans Mono, Font Awesome 15
|
||||
status_command i3status-rs
|
||||
position bottom
|
||||
|
||||
tray_output DVI-D-0
|
||||
}
|
||||
|
||||
|
||||
set $mode_system System (l) lock, (e) logout, (r) reboot, (s) shutdown
|
||||
mode "$mode_system" {
|
||||
bindsym l exec --no-startup-id $lock, mode "default"
|
||||
bindsym e exec --no-startup-id i3-msg exit, mode "default" # logout
|
||||
bindsym r exec --no-startup-id systemctl reboot, mode "default"
|
||||
bindsym s exec --no-startup-id systemctl poweroff, mode "default"
|
||||
bindsym h exec --no-startup-id $lock && systemctl hibernate, mode "default"
|
||||
bindsym Shift+s exec --no-startup-id $lock && systemctl suspend, mode "default"
|
||||
|
||||
# back to normal: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym $mod+Shift+e mode "$mode_system"
|
||||
|
||||
bindsym $mod+Tab exec --no-startup-id $lock
|
||||
|
||||
bindsym $mod+Print exec --no-startup-id "xfce4-screenshooter"
|
||||
|
||||
bindsym $mod+c exec qalculate-gtk
|
||||
bindsym $mod+Shift+p exec xwacomcalibrate
|
||||
bindsym $mod+e exec pcmanfm
|
||||
bindsym $mod+Shift+c exec $scripts/jupyter-calculator
|
||||
bindsym $mod+b exec firefox
|
||||
bindsym $mod+p exec $scripts/display-toggle-mirror
|
||||
|
||||
workspace_auto_back_and_forth yes
|
||||
|
||||
# default_border pixel
|
||||
default_border normal
|
||||
default_floating_border normal
|
||||
hide_edge_borders smart
|
||||
|
||||
show_marks no
|
||||
|
||||
# switch to workspace with urgent window automatically
|
||||
for_window [urgent=latest] focus
|
||||
|
||||
focus_on_window_activation focus
|
||||
|
||||
assign [class="firefox" title="Mozilla Firefox$"] workspace $ws1
|
||||
assign [class="TelegramDesktop"] workspace $ws9
|
||||
assign [class="Signal"] workspace $ws9
|
||||
assign [class="Rocket.Chat"] workspace $ws9
|
||||
assign [class="Element"] workspace $ws9
|
||||
assign [class="SchildiChat"] workspace $ws9
|
||||
assign [class="thunderbird"] workspace $ws10
|
||||
# assign [class="zoom"] workspace $ws5
|
||||
assign [class="Zotero"] workspace $ws8
|
||||
|
||||
for_window [class="firefox" urgent="latest"] focus
|
||||
|
||||
for_window [title="Manjaro Settings Manager"] floating enable
|
||||
for_window [class="pamac-manager"] floating enable
|
||||
for_window [class="Pamac-updater"] floating enable
|
||||
for_window [class="Qalculate-gtk"] floating enable
|
||||
for_window [class="Gcolor3"] floating enable
|
||||
#for_window [class="zoom" title="Chat"] floating enable
|
||||
#for_window [class="Thunderbird" instance="Msgcompose"] floating enable
|
||||
#
|
||||
for_window [window_role=floating] floating enable
|
||||
|
||||
for_window [class="Viewnior"] border normal
|
||||
|
||||
########## Autostart applications ##########
|
||||
exec firefox
|
||||
|
||||
exec --no-startup-id nm-applet
|
||||
exec --no-startup-id blueman-applet
|
||||
exec --no-startup-id xfce4-power-manager
|
||||
exec --no-startup-id nextcloud --background
|
||||
# exec --no-startup-id xfce4-screensaver
|
||||
# exec --no-startup-id /usr/bin/emacs --daemon
|
||||
|
||||
# Authentication agent
|
||||
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec --no-startup-id /usr/bin/env gnome-keyring-daemon --start
|
||||
|
||||
# Notify about software updates
|
||||
exec --no-startup-id pamac-tray
|
||||
exec --no-startup-id clipit
|
||||
# exec --no-startup-id xfce4-clipman
|
||||
|
||||
# Notify about kernel updates
|
||||
exec --no-startup-id msm_notifier
|
||||
|
||||
# Audio
|
||||
exec --no-startup-id start-pulseaudio-x11
|
||||
exec --no-startup-id pa-applet
|
||||
|
||||
# Background
|
||||
exec --no-startup-id nitrogen --restore
|
||||
|
||||
# Adjust display temperature
|
||||
exec --no-startup-id redshift
|
||||
|
||||
# Notifications
|
||||
exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd
|
||||
|
||||
# exec --no-startup-id xautolock -time 10 -locker blurlock
|
||||
exec_always --no-startup-id ff-theme-util
|
||||
exec_always --no-startup-id fix_xcursor
|
||||
|
||||
exec_always --no-startup-id "$scripts/display-layoutpicker"
|
||||
|
||||
|
||||
#############################
|
||||
### settings for i3-gaps: ###
|
||||
#############################
|
||||
|
||||
# Set inner/outer gaps
|
||||
gaps inner 8
|
||||
gaps outer -2
|
||||
|
||||
# Smart gaps (gaps used if only more than one container on the workspace)
|
||||
smart_gaps on
|
||||
|
||||
# Smart borders (draw borders around container only if it is not the only container on this workspace)
|
||||
smart_borders on
|
415
modules/home-manager/i3/i3/manjaro-default-config
Normal file
@ -0,0 +1,415 @@
|
||||
# i3 config file (v4)
|
||||
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
|
||||
|
||||
# Set mod key (Mod1=<Alt>, Mod4=<Super>)
|
||||
set $mod Mod4
|
||||
|
||||
# set default desktop layout (default is tiling)
|
||||
# workspace_layout tabbed <stacking|tabbed>
|
||||
|
||||
# Configure border style <normal|1pixel|pixel xx|none|pixel>
|
||||
default_border pixel 1
|
||||
default_floating_border normal
|
||||
|
||||
# Hide borders
|
||||
hide_edge_borders none
|
||||
|
||||
# change borders
|
||||
bindsym $mod+u border none
|
||||
bindsym $mod+y border pixel 1
|
||||
bindsym $mod+n border normal
|
||||
|
||||
# Font for window titles. Will also be used by the bar unless a different font
|
||||
# is used in the bar {} block below.
|
||||
font xft:URWGothic-Book 11
|
||||
|
||||
# Use Mouse+$mod to drag floating windows
|
||||
floating_modifier $mod
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec terminal
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# start program launcher
|
||||
bindsym $mod+d exec --no-startup-id dmenu_recency
|
||||
|
||||
# launch categorized menu
|
||||
bindsym $mod+z exec --no-startup-id morc_menu
|
||||
|
||||
################################################################################################
|
||||
## sound-section - DO NOT EDIT if you wish to automatically upgrade Alsa -> Pulseaudio later! ##
|
||||
################################################################################################
|
||||
|
||||
#exec --no-startup-id volumeicon
|
||||
#bindsym $mod+Ctrl+m exec terminal -e 'alsamixer'
|
||||
exec --no-startup-id start-pulseaudio-x11
|
||||
exec --no-startup-id pa-applet
|
||||
bindsym $mod+Ctrl+m exec pavucontrol
|
||||
|
||||
################################################################################################
|
||||
|
||||
# Screen brightness controls
|
||||
# bindsym XF86MonBrightnessUp exec "xbacklight -inc 10; notify-send 'brightness up'"
|
||||
# bindsym XF86MonBrightnessDown exec "xbacklight -dec 10; notify-send 'brightness down'"
|
||||
|
||||
# Start Applications
|
||||
bindsym $mod+Ctrl+b exec terminal -e 'bmenu'
|
||||
bindsym $mod+F2 exec palemoon
|
||||
bindsym $mod+F3 exec pcmanfm
|
||||
# bindsym $mod+F3 exec ranger
|
||||
bindsym $mod+Shift+F3 exec pcmanfm_pkexec
|
||||
bindsym $mod+F5 exec terminal -e 'mocp'
|
||||
bindsym $mod+t exec --no-startup-id pkill picom
|
||||
bindsym $mod+Ctrl+t exec --no-startup-id picom -b
|
||||
bindsym $mod+Shift+d --release exec "killall dunst; exec notify-send 'restart dunst'"
|
||||
bindsym Print exec --no-startup-id i3-scrot
|
||||
bindsym $mod+Print --release exec --no-startup-id i3-scrot -w
|
||||
bindsym $mod+Shift+Print --release exec --no-startup-id i3-scrot -s
|
||||
bindsym $mod+Shift+h exec xdg-open /usr/share/doc/manjaro/i3_help.pdf
|
||||
bindsym $mod+Ctrl+x --release exec --no-startup-id xkill
|
||||
|
||||
# focus_follows_mouse no
|
||||
|
||||
# change focus
|
||||
bindsym $mod+j focus left
|
||||
bindsym $mod+k focus down
|
||||
bindsym $mod+l focus up
|
||||
bindsym $mod+semicolon focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+j move left
|
||||
bindsym $mod+Shift+k move down
|
||||
bindsym $mod+Shift+l move up
|
||||
bindsym $mod+Shift+semicolon move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# workspace back and forth (with/without active container)
|
||||
workspace_auto_back_and_forth yes
|
||||
bindsym $mod+b workspace back_and_forth
|
||||
bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth
|
||||
|
||||
# split orientation
|
||||
bindsym $mod+h split h;exec notify-send 'tile horizontally'
|
||||
bindsym $mod+v split v;exec notify-send 'tile vertically'
|
||||
bindsym $mod+q split toggle
|
||||
|
||||
# toggle fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# toggle sticky
|
||||
bindsym $mod+Shift+s sticky toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# move the currently focused window to the scratchpad
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
bindsym $mod+minus scratchpad show
|
||||
|
||||
#navigate workspaces next / previous
|
||||
bindsym $mod+Ctrl+Right workspace next
|
||||
bindsym $mod+Ctrl+Left workspace prev
|
||||
|
||||
# Workspace names
|
||||
# to display names or symbols instead of plain workspace numbers you can use
|
||||
# something like: set $ws1 1:mail
|
||||
# set $ws2 2:
|
||||
set $ws1 1
|
||||
set $ws2 2
|
||||
set $ws3 3
|
||||
set $ws4 4
|
||||
set $ws5 5
|
||||
set $ws6 6
|
||||
set $ws7 7
|
||||
set $ws8 8
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace $ws1
|
||||
bindsym $mod+2 workspace $ws2
|
||||
bindsym $mod+3 workspace $ws3
|
||||
bindsym $mod+4 workspace $ws4
|
||||
bindsym $mod+5 workspace $ws5
|
||||
bindsym $mod+6 workspace $ws6
|
||||
bindsym $mod+7 workspace $ws7
|
||||
bindsym $mod+8 workspace $ws8
|
||||
|
||||
# Move focused container to workspace
|
||||
bindsym $mod+Ctrl+1 move container to workspace $ws1
|
||||
bindsym $mod+Ctrl+2 move container to workspace $ws2
|
||||
bindsym $mod+Ctrl+3 move container to workspace $ws3
|
||||
bindsym $mod+Ctrl+4 move container to workspace $ws4
|
||||
bindsym $mod+Ctrl+5 move container to workspace $ws5
|
||||
bindsym $mod+Ctrl+6 move container to workspace $ws6
|
||||
bindsym $mod+Ctrl+7 move container to workspace $ws7
|
||||
bindsym $mod+Ctrl+8 move container to workspace $ws8
|
||||
|
||||
# Move to workspace with focused container
|
||||
bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8
|
||||
|
||||
# Open applications on specific workspaces
|
||||
# assign [class="Thunderbird"] $ws1
|
||||
# assign [class="Pale moon"] $ws2
|
||||
# assign [class="Pcmanfm"] $ws3
|
||||
# assign [class="Skype"] $ws5
|
||||
|
||||
# Open specific applications in floating mode
|
||||
for_window [title="alsamixer"] floating enable border pixel 1
|
||||
for_window [class="calamares"] floating enable border normal
|
||||
for_window [class="Clipgrab"] floating enable
|
||||
for_window [title="File Transfer*"] floating enable
|
||||
for_window [class="fpakman"] floating enable
|
||||
for_window [class="Galculator"] floating enable border pixel 1
|
||||
for_window [class="GParted"] floating enable border normal
|
||||
for_window [title="i3_help"] floating enable sticky enable border normal
|
||||
for_window [class="Lightdm-settings"] floating enable
|
||||
for_window [class="Lxappearance"] floating enable sticky enable border normal
|
||||
for_window [class="Manjaro-hello"] floating enable
|
||||
for_window [class="Manjaro Settings Manager"] floating enable border normal
|
||||
for_window [title="MuseScore: Play Panel"] floating enable
|
||||
for_window [class="Nitrogen"] floating enable sticky enable border normal
|
||||
for_window [class="Oblogout"] fullscreen enable
|
||||
for_window [class="octopi"] floating enable
|
||||
for_window [title="About Pale Moon"] floating enable
|
||||
for_window [class="Pamac-manager"] floating enable
|
||||
for_window [class="Pavucontrol"] floating enable
|
||||
for_window [class="qt5ct"] floating enable sticky enable border normal
|
||||
for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal
|
||||
for_window [class="Simple-scan"] floating enable border normal
|
||||
for_window [class="(?i)System-config-printer.py"] floating enable border normal
|
||||
for_window [class="Skype"] floating enable border normal
|
||||
for_window [class="Timeset-gui"] floating enable border normal
|
||||
for_window [class="(?i)virtualbox"] floating enable border normal
|
||||
for_window [class="Xfburn"] floating enable
|
||||
|
||||
# switch to workspace with urgent window automatically
|
||||
for_window [urgent=latest] focus
|
||||
|
||||
# reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# Set shut down, restart and locking features
|
||||
bindsym $mod+Shift+e mode "$mode_system"
|
||||
set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown
|
||||
mode "$mode_system" {
|
||||
bindsym l exec --no-startup-id i3exit lock, mode "default"
|
||||
bindsym s exec --no-startup-id i3exit suspend, mode "default"
|
||||
bindsym u exec --no-startup-id i3exit switch_user, mode "default"
|
||||
bindsym e exec --no-startup-id i3exit logout, mode "default"
|
||||
bindsym h exec --no-startup-id i3exit hibernate, mode "default"
|
||||
bindsym r exec --no-startup-id i3exit reboot, mode "default"
|
||||
bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"
|
||||
|
||||
# exit system mode: "Enter" or "Escape"
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
# Resize window (you can also use the mouse for that)
|
||||
bindsym $mod+r mode "resize"
|
||||
mode "resize" {
|
||||
# These bindings trigger as soon as you enter the resize mode
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym j resize shrink width 5 px or 5 ppt
|
||||
bindsym k resize grow height 5 px or 5 ppt
|
||||
bindsym l resize shrink height 5 px or 5 ppt
|
||||
bindsym semicolon resize grow width 5 px or 5 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# exit resize mode: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
# Lock screen
|
||||
bindsym $mod+9 exec --no-startup-id blurlock
|
||||
|
||||
# Autostart applications
|
||||
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec --no-startup-id nitrogen --restore; sleep 1; picom -b
|
||||
exec --no-startup-id manjaro-hello
|
||||
exec --no-startup-id nm-applet
|
||||
exec --no-startup-id xfce4-power-manager
|
||||
exec --no-startup-id pamac-tray
|
||||
exec --no-startup-id clipit
|
||||
exec --no-startup-id blueman-applet
|
||||
# exec_always --no-startup-id sbxkb
|
||||
exec --no-startup-id start_conky_maia
|
||||
# exec --no-startup-id start_conky_green
|
||||
exec --no-startup-id xautolock -time 10 -locker blurlock
|
||||
exec_always --no-startup-id ff-theme-util
|
||||
exec_always --no-startup-id fix_xcursor
|
||||
|
||||
# Color palette used for the terminal ( ~/.Xresources file )
|
||||
# Colors are gathered based on the documentation:
|
||||
# https://i3wm.org/docs/userguide.html#xresources
|
||||
# Change the variable name at the place you want to match the color
|
||||
# of your terminal like this:
|
||||
# [example]
|
||||
# If you want your bar to have the same background color as your
|
||||
# terminal background change the line 362 from:
|
||||
# background #14191D
|
||||
# to:
|
||||
# background $term_background
|
||||
# Same logic applied to everything else.
|
||||
set_from_resource $term_background background
|
||||
set_from_resource $term_foreground foreground
|
||||
set_from_resource $term_color0 color0
|
||||
set_from_resource $term_color1 color1
|
||||
set_from_resource $term_color2 color2
|
||||
set_from_resource $term_color3 color3
|
||||
set_from_resource $term_color4 color4
|
||||
set_from_resource $term_color5 color5
|
||||
set_from_resource $term_color6 color6
|
||||
set_from_resource $term_color7 color7
|
||||
set_from_resource $term_color8 color8
|
||||
set_from_resource $term_color9 color9
|
||||
set_from_resource $term_color10 color10
|
||||
set_from_resource $term_color11 color11
|
||||
set_from_resource $term_color12 color12
|
||||
set_from_resource $term_color13 color13
|
||||
set_from_resource $term_color14 color14
|
||||
set_from_resource $term_color15 color15
|
||||
|
||||
# Start i3bar to display a workspace bar (plus the system information i3status if available)
|
||||
bar {
|
||||
i3bar_command i3bar
|
||||
status_command i3status
|
||||
position bottom
|
||||
|
||||
## please set your primary output first. Example: 'xrandr --output eDP1 --primary'
|
||||
# tray_output primary
|
||||
# tray_output eDP1
|
||||
|
||||
bindsym button4 nop
|
||||
bindsym button5 nop
|
||||
# font xft:URWGothic-Book 11
|
||||
strip_workspace_numbers yes
|
||||
|
||||
colors {
|
||||
background #222D31
|
||||
statusline #F9FAF9
|
||||
separator #454947
|
||||
|
||||
# border backgr. text
|
||||
focused_workspace #F9FAF9 #16a085 #292F34
|
||||
active_workspace #595B5B #353836 #FDF6E3
|
||||
inactive_workspace #595B5B #222D31 #EEE8D5
|
||||
binding_mode #16a085 #2C2C2C #F9FAF9
|
||||
urgent_workspace #16a085 #FDF6E3 #E5201D
|
||||
}
|
||||
}
|
||||
|
||||
# hide/unhide i3status bar
|
||||
bindsym $mod+m bar mode toggle
|
||||
|
||||
# Theme colors
|
||||
# class border backgr. text indic. child_border
|
||||
client.focused #556064 #556064 #80FFF9 #FDF6E3
|
||||
client.focused_inactive #2F3D44 #2F3D44 #1ABC9C #454948
|
||||
client.unfocused #2F3D44 #2F3D44 #1ABC9C #454948
|
||||
client.urgent #CB4B16 #FDF6E3 #1ABC9C #268BD2
|
||||
client.placeholder #000000 #0c0c0c #ffffff #000000
|
||||
|
||||
client.background #2B2C2B
|
||||
|
||||
#############################
|
||||
### settings for i3-gaps: ###
|
||||
#############################
|
||||
|
||||
# Set inner/outer gaps
|
||||
gaps inner 14
|
||||
gaps outer -2
|
||||
|
||||
# Additionally, you can issue commands with the following syntax. This is useful to bind keys to changing the gap size.
|
||||
# gaps inner|outer current|all set|plus|minus <px>
|
||||
# gaps inner all set 10
|
||||
# gaps outer all plus 5
|
||||
|
||||
# Smart gaps (gaps used if only more than one container on the workspace)
|
||||
smart_gaps on
|
||||
|
||||
# Smart borders (draw borders around container only if it is not the only container on this workspace)
|
||||
# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0)
|
||||
smart_borders on
|
||||
|
||||
# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces.
|
||||
set $mode_gaps Gaps: (o) outer, (i) inner
|
||||
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
|
||||
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
|
||||
bindsym $mod+Shift+g mode "$mode_gaps"
|
||||
|
||||
mode "$mode_gaps" {
|
||||
bindsym o mode "$mode_gaps_outer"
|
||||
bindsym i mode "$mode_gaps_inner"
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
mode "$mode_gaps_inner" {
|
||||
bindsym plus gaps inner current plus 5
|
||||
bindsym minus gaps inner current minus 5
|
||||
bindsym 0 gaps inner current set 0
|
||||
|
||||
bindsym Shift+plus gaps inner all plus 5
|
||||
bindsym Shift+minus gaps inner all minus 5
|
||||
bindsym Shift+0 gaps inner all set 0
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
mode "$mode_gaps_outer" {
|
||||
bindsym plus gaps outer current plus 5
|
||||
bindsym minus gaps outer current minus 5
|
||||
bindsym 0 gaps outer current set 0
|
||||
|
||||
bindsym Shift+plus gaps outer all plus 5
|
||||
bindsym Shift+minus gaps outer all minus 5
|
||||
bindsym Shift+0 gaps outer all set 0
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
11
modules/home-manager/i3/i3/scripts/display-layoutpicker
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
xrandr | grep -q "HDMI-1 connected"
|
||||
|
||||
if [ "$?" -eq "0" ]; then
|
||||
echo "Two screens available"
|
||||
~/.screenlayout/twoscreens.sh
|
||||
else
|
||||
echo "Only one screen available"
|
||||
~/.screenlayout/onescreen.sh
|
||||
fi
|
21
modules/home-manager/i3/i3/scripts/display-toggle-mirror
Executable file
@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
xrandr | grep -q "HDMI-1 connected"
|
||||
|
||||
if [ "$?" -eq "0" ]; then
|
||||
echo "Two screens available"
|
||||
|
||||
MIRROR_FILE=~/.screenlayout/mirror-primary
|
||||
if [ -e "$MIRROR_FILE" ]; then
|
||||
echo "Mode set to mirror"
|
||||
rm "$MIRROR_FILE"
|
||||
~/.screenlayout/twoscreens-mirror.sh
|
||||
else
|
||||
echo "Mode set to left-right"
|
||||
touch "$MIRROR_FILE"
|
||||
~/.screenlayout/twoscreens.sh
|
||||
fi
|
||||
else
|
||||
echo "Only one screen available"
|
||||
~/.screenlayout/onescreen.sh
|
||||
fi
|
78
modules/home-manager/i3/i3/scripts/jupyter-calculator
Executable file
@ -0,0 +1,78 @@
|
||||
#!/bin/python3
|
||||
|
||||
import subprocess
|
||||
import time
|
||||
import psutil
|
||||
|
||||
NOTEBOOK_DIR = "~/jupyter-notebooks/"
|
||||
PORT = "8988"
|
||||
|
||||
def isOtherProcessRunning():
|
||||
process_count = 0
|
||||
for proc in psutil.process_iter():
|
||||
try:
|
||||
pinfo = proc.as_dict(attrs=['pid', 'name', 'create_time'])
|
||||
if "jupyter-calc" in pinfo['name'].lower():
|
||||
process_count += 1
|
||||
except (psutil.NoSuchProcess, psutil.AccessDenied , psutil.ZombieProcess) :
|
||||
pass
|
||||
return process_count > 1
|
||||
|
||||
def getNotebookPort(line):
|
||||
url = line.split(" :: ")[0]
|
||||
return url.split("localhost:")[1].split("/")[0]
|
||||
|
||||
def getNotebookToken(line):
|
||||
url = line.split(" :: ")[0]
|
||||
return url.split("token=")[1]
|
||||
|
||||
|
||||
def isNotebookRunning():
|
||||
answer = subprocess.check_output("jupyter notebook list", shell=True)
|
||||
lines = answer.decode("utf-8").split("\n")
|
||||
if lines[0] != "Currently running servers:":
|
||||
raise Exception("Invalid jupyter status message")
|
||||
|
||||
for i in range(1, len(lines) -1):
|
||||
if getNotebookPort(lines[i]) == PORT:
|
||||
return getNotebookToken(lines[i])
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
if not isNotebookRunning():
|
||||
print("No notebook instance running. Starting it...")
|
||||
subprocess.Popen(f"jupyter notebook --notebook-dir={NOTEBOOK_DIR} --port={PORT} --no-browser", shell=True)
|
||||
else:
|
||||
print("Notebook instance already running.")
|
||||
|
||||
max_wait_seconds = 3
|
||||
delta_t_seconds = 0.1
|
||||
|
||||
current_wait_seconds = 0
|
||||
|
||||
token = ""
|
||||
while True:
|
||||
token = isNotebookRunning()
|
||||
if token:
|
||||
break
|
||||
|
||||
time.sleep(delta_t_seconds)
|
||||
current_wait_seconds += delta_t_seconds
|
||||
if current_wait_seconds >= max_wait_seconds:
|
||||
raise Exception(f"Maximum wait time of {max_wait_seconds} exceeded!")
|
||||
|
||||
subprocess.call(f"cp {NOTEBOOK_DIR}calculator_template.ipynb {NOTEBOOK_DIR}calculator.ipynb", shell=True)
|
||||
|
||||
# url = f"http://localhost:{PORT}/notebooks/calculator.ipynb?token={token}"
|
||||
url = f"http://localhost:{PORT}/?token={token}"
|
||||
|
||||
subprocess.call(f"$BROWSER '{url}'", shell=True)
|
||||
|
||||
finally:
|
||||
# TODO: not reliably working
|
||||
if not isOtherProcessRunning():
|
||||
try:
|
||||
subprocess.run(f"jupyter notebook stop {PORT}", shell=True)
|
||||
except Exception:
|
||||
pass
|
3
modules/home-manager/i3/i3/scripts/mymatlab.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
matlab -desktop -sd ~/dev/bachelor-thesis/simulation
|
27
modules/home-manager/i3/i3/scripts/open-messaging
Executable file
@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
start_if_not_running()
|
||||
{
|
||||
program=$1
|
||||
pidof -sq $program
|
||||
if [ "$?" -eq "1" ]; then
|
||||
start_program $1
|
||||
else
|
||||
echo "$program is already running"
|
||||
fi
|
||||
}
|
||||
|
||||
start_program()
|
||||
{
|
||||
program=$1
|
||||
echo "Starting $program..."
|
||||
$program & > /dev/null
|
||||
}
|
||||
|
||||
i3-msg 'workspace 9; append_layout ~/.config/i3/workspace-messaging.json'
|
||||
start_program nheko
|
||||
sleep 0.1
|
||||
start_program telegram-desktop
|
||||
sleep 0.1
|
||||
start_program thunderbird
|
||||
sleep 0.1
|
20
modules/home-manager/i3/i3/scripts/pulse_popup
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
HDMI_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink"
|
||||
LAPTOP_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink"
|
||||
|
||||
HDMI_ICON=$(pactl info | grep -q $HDMI_SINK && echo "checkbox")
|
||||
LAPTOP_ICON=$(pactl info | grep -q $LAPTOP_SINK && echo "checkbox")
|
||||
|
||||
HDMI_VOLUME=$(pactl get-sink-volume $HDMI_SINK | head -n 1 | awk '{print $5}')
|
||||
LAPTOP_VOLUME=$(pactl get-sink-volume $LAPTOP_SINK | head -n 1 | awk '{print $5}')
|
||||
|
||||
read -r -d '' CONF <<EOF
|
||||
Open Pavucontrol,pavucontrol,pavucontrol
|
||||
|
||||
^sep()
|
||||
HDMI - $HDMI_VOLUME,pactl set-default-sink $HDMI_SINK,$HDMI_ICON
|
||||
Laptop - $LAPTOP_VOLUME,pactl set-default-sink $LAPTOP_SINK,$LAPTOP_ICON
|
||||
EOF
|
||||
|
||||
echo "$CONF" | jgmenu --simple
|
4
modules/home-manager/i3/i3/scripts/rofi_calc
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
LC_NUMERIC=en_US.utf8
|
||||
rofi -show calc -modi calc -no-show-match -no-sort -terse -calc-command "echo -n '{result}' | xclip"
|
6
modules/home-manager/i3/i3/scripts/setupZoom
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
zoom &
|
||||
|
||||
#i3-msg "workspace --no-auto-back-and-forth 5; exec mousepad ~/Nextcloud/studium/zoom.txt"
|
||||
i3-msg "workspace --no-auto-back-and-forth 5; append_layout ~/.config/i3/workspace-zoom.json"
|
45
modules/home-manager/i3/i3/workspace-chat-element-tele.json
Normal file
@ -0,0 +1,45 @@
|
||||
// vim:ts=4:sw=4:et
|
||||
{
|
||||
"border": "normal",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 996,
|
||||
"width": 937,
|
||||
"x": 1934,
|
||||
"y": 40
|
||||
},
|
||||
"marks": [],
|
||||
"name": "nheko",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^nheko$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
|
||||
{
|
||||
"border": "none",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 1026,
|
||||
"width": 941,
|
||||
"x": 2887,
|
||||
"y": 12
|
||||
},
|
||||
"marks": [],
|
||||
"name": "Telegram",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^TelegramDesktop$"
|
||||
// "instance": "^telegram\\-desktop$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^Telegram\\ \\(71\\)$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
// vim:ts=4:sw=4:et
|
||||
{
|
||||
"border": "normal",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 996,
|
||||
"width": 937,
|
||||
"x": 1934,
|
||||
"y": 40
|
||||
},
|
||||
"marks": [],
|
||||
"name": "SchildiChat",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^SchildiChat$"
|
||||
// "instance": "^schildichat$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^SchildiChat\\ \\*\\ \\|\\ Familie$",
|
||||
// "window_role": "^browser\\-window$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
|
||||
{
|
||||
// splitv split container with 2 children
|
||||
"border": "normal",
|
||||
"floating": "auto_off",
|
||||
"layout": "splitv",
|
||||
"marks": [],
|
||||
"percent": 0.5,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
// splith split container with 1 children
|
||||
"border": "normal",
|
||||
"floating": "auto_off",
|
||||
"layout": "splith",
|
||||
"marks": [],
|
||||
"percent": 0.5,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
"border": "none",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 1026,
|
||||
"width": 941,
|
||||
"x": 2887,
|
||||
"y": 12
|
||||
},
|
||||
"marks": [],
|
||||
"name": "Telegram",
|
||||
"percent": 1,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^TelegramDesktop$"
|
||||
// "instance": "^telegram\\-desktop$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^Telegram$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"border": "normal",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 485,
|
||||
"width": 1904,
|
||||
"x": 1928,
|
||||
"y": 557
|
||||
},
|
||||
"marks": [],
|
||||
"name": "RocketChat",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^Rocket\\.Chat$"
|
||||
// "instance": "^rocket\\.chat$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^ifiChat$",
|
||||
// "window_role": "^browser\\-window$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
49
modules/home-manager/i3/i3/workspace-chat-schildi-tele.json
Normal file
@ -0,0 +1,49 @@
|
||||
// vim:ts=4:sw=4:et
|
||||
{
|
||||
"border": "normal",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 996,
|
||||
"width": 937,
|
||||
"x": 1934,
|
||||
"y": 40
|
||||
},
|
||||
"marks": [],
|
||||
"name": "SchildiChat",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^SchildiChat$"
|
||||
// "instance": "^schildichat$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^SchildiChat$",
|
||||
// "window_role": "^browser\\-window$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
|
||||
{
|
||||
"border": "none",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 1026,
|
||||
"width": 941,
|
||||
"x": 2887,
|
||||
"y": 12
|
||||
},
|
||||
"marks": [],
|
||||
"name": "Telegram",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^TelegramDesktop$"
|
||||
// "instance": "^telegram\\-desktop$",
|
||||
// "machine": "^julian\\-aspi$",
|
||||
// "title": "^Telegram\\ \\(71\\)$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
86
modules/home-manager/i3/i3/workspace-zoom.json
Normal file
@ -0,0 +1,86 @@
|
||||
// vim:ts=4:sw=4:et
|
||||
{
|
||||
"border": "pixel",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 800,
|
||||
"width": 1188,
|
||||
"x": 246,
|
||||
"y": 125
|
||||
},
|
||||
"name": "Zoom Meeting",
|
||||
"percent": 0.8,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^zoom$",
|
||||
"instance": "^zoom$",
|
||||
"title": "^Zoom\\ Meeting$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
|
||||
{
|
||||
// splitv split container with 2 children
|
||||
"border": "pixel",
|
||||
"floating": "auto_off",
|
||||
"layout": "splitv",
|
||||
"percent": 0.2,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
// splith split container with 1 children
|
||||
"border": "pixel",
|
||||
"floating": "auto_off",
|
||||
"layout": "splith",
|
||||
"percent": 0.5,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
"border": "pixel",
|
||||
"current_border_width": 2,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 1002,
|
||||
"width": 220,
|
||||
"x": 1458,
|
||||
"y": 46
|
||||
},
|
||||
"name": "Participants",
|
||||
"percent": 1,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^zoom$",
|
||||
"instance": "^zoom$",
|
||||
"title": "^Participants"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"border": "pixel",
|
||||
"current_border_width": 2,
|
||||
"floating": "user_off",
|
||||
"geometry": {
|
||||
"height": 350,
|
||||
"width": 355,
|
||||
"x": 662,
|
||||
"y": 350
|
||||
},
|
||||
"name": "Chat",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^zoom$",
|
||||
"instance": "^zoom$",
|
||||
"title": "^Chat$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
47
modules/home-manager/i3/i3status-rust/config.toml
Normal file
@ -0,0 +1,47 @@
|
||||
[theme]
|
||||
theme = "dracula"
|
||||
|
||||
[icons]
|
||||
icons = "awesome4"
|
||||
|
||||
[[block]]
|
||||
block = "disk_space"
|
||||
path = "~"
|
||||
format = " $icon $available ($percentage) frei "
|
||||
info_type = "available"
|
||||
alert_unit = "GB"
|
||||
interval = 20
|
||||
warning = 20.0
|
||||
alert = 10.0
|
||||
|
||||
[[block]]
|
||||
block = "memory"
|
||||
format = " $icon $mem_used_percents "
|
||||
|
||||
[[block]]
|
||||
block = "cpu"
|
||||
interval = 1
|
||||
|
||||
[[block]]
|
||||
block = "net"
|
||||
# device = "enp1s0"
|
||||
#format = " $icon $speed_down;K*b $speed_up;K*b"
|
||||
interval = 5
|
||||
|
||||
[[block]]
|
||||
block = "sound"
|
||||
[[block.click]]
|
||||
button = "left"
|
||||
cmd = "pulseaudio-popup"
|
||||
|
||||
[[block]]
|
||||
block = "battery"
|
||||
interval = 10
|
||||
format = " $icon $percentage ($time) "
|
||||
not_charging_format = " $icon $percentage "
|
||||
if_command = "test -e /sys/class/power_supply/BAT1"
|
||||
|
||||
[[block]]
|
||||
block = "time"
|
||||
interval = 1
|
||||
format = " $icon $timestamp.datetime(f:'%a %d.%m %H:%M:%S') "
|
53
modules/home-manager/kitty/default.nix
Normal file
@ -0,0 +1,53 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.kitty;
|
||||
in
|
||||
{
|
||||
options.modules.kitty = {
|
||||
enable = lib.mkOption { default = false; };
|
||||
mkDefault = lib.mkOption { default = true; };
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
shellIntegration.enableFishIntegration = true;
|
||||
themeFile = "gruvbox-dark";
|
||||
settings = {
|
||||
enable_audio_bell = false;
|
||||
confirm_os_window_close = 0; # no ask on quit
|
||||
};
|
||||
font = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Sans";
|
||||
size = 12;
|
||||
};
|
||||
};
|
||||
|
||||
# home.shellAliases = {
|
||||
# ssh = "kitten ssh"; # Copy kitten terminfo to remote
|
||||
# };
|
||||
|
||||
home.sessionVariables.TERMINAL = lib.mkIf cfg.mkDefault "kitty";
|
||||
};
|
||||
}
|
186
modules/home-manager/neovim/default.nix
Normal file
@ -0,0 +1,186 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.neovim;
|
||||
in
|
||||
{
|
||||
options.modules.neovim = {
|
||||
enable = lib.mkOption { default = false; };
|
||||
};
|
||||
|
||||
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
VISUAL = "nvim";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
git
|
||||
gnumake
|
||||
gcc
|
||||
ripgrep
|
||||
fd
|
||||
stylua
|
||||
black
|
||||
nixfmt-rfc-style # nixfmt
|
||||
];
|
||||
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
settings.flavour = "mocha";
|
||||
};
|
||||
|
||||
globals.mapleader = " ";
|
||||
opts = {
|
||||
number = false;
|
||||
relativenumber = false;
|
||||
|
||||
};
|
||||
clipboard.register = "unnamedplus"; # Use system clipboard
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
action = "<cmd>Telescope live_grep<cr>";
|
||||
key = "<leader>/";
|
||||
}
|
||||
{
|
||||
action = "<cmd>Telescope find_files<cr>";
|
||||
key = "<leader><space>";
|
||||
}
|
||||
{
|
||||
action = "<cmd>Telescope file_browser<cr>";
|
||||
key = "<leader>.";
|
||||
}
|
||||
{
|
||||
action = "<cmd>Neogit<cr>";
|
||||
key = "<leader>gg";
|
||||
}
|
||||
{
|
||||
key = "<C-s>";
|
||||
action = "<esc><cmd>lua require('conform').format()<cr><cmd>write<cr>";
|
||||
mode = [
|
||||
"i"
|
||||
"x"
|
||||
"n"
|
||||
"s"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
plugins = {
|
||||
lualine.enable = true;
|
||||
commentary.enable = true;
|
||||
which-key.enable = true;
|
||||
treesitter.enable = true; # enables all grammar packages
|
||||
neogit.enable = true; # like magit
|
||||
trouble.enable = true;
|
||||
web-devicons.enable = true;
|
||||
|
||||
# Shows file trees
|
||||
oil = {
|
||||
enable = true;
|
||||
settings = {
|
||||
view_options.show_hidden = true;
|
||||
};
|
||||
};
|
||||
|
||||
# Code formatting
|
||||
conform-nvim = {
|
||||
enable = true;
|
||||
settings.formatters_by_ft = with pkgs; {
|
||||
lua = [ "stylua" ];
|
||||
python = [ "black" ];
|
||||
nix = [ "nixfmt" ];
|
||||
};
|
||||
# extraOptions = {
|
||||
# default_format_opts.lsp_format = "fallback";
|
||||
# };
|
||||
};
|
||||
|
||||
# autocomplete
|
||||
cmp = {
|
||||
enable = true;
|
||||
autoEnableSources = true;
|
||||
settings.sources = [
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "path"; }
|
||||
{ name = "buffer"; }
|
||||
];
|
||||
settings.mapping = {
|
||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
||||
"<C-j>" = "cmp.mapping.select_next_item()";
|
||||
"<C-k>" = "cmp.mapping.select_prev_item()";
|
||||
"<C-e>" = "cmp.mapping.abort()";
|
||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||
};
|
||||
};
|
||||
|
||||
# Fuzzy finder
|
||||
telescope = {
|
||||
enable = true;
|
||||
settings.defaults.mappings = {
|
||||
i = {
|
||||
"<C-j>".__raw = "require('telescope.actions').move_selection_next";
|
||||
"<C-k>".__raw = "require('telescope.actions').move_selection_previous";
|
||||
"<tab>".__raw = "require('telescope.actions').select_default";
|
||||
};
|
||||
};
|
||||
extensions = {
|
||||
fzf-native.enable = true;
|
||||
file-browser = {
|
||||
enable = true;
|
||||
settings = {
|
||||
hidden = true; # show hidden files
|
||||
follow_symlinks = true;
|
||||
no_ignore = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
lsp = {
|
||||
enable = true;
|
||||
servers = {
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
};
|
||||
nixd.enable = true;
|
||||
pyright.enable = true;
|
||||
dockerls.enable = true;
|
||||
lua_ls.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
42
modules/home-manager/nix-helper/default.nix
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.nix-helper;
|
||||
in
|
||||
{
|
||||
options.modules.nix-helper = {
|
||||
enable = lib.mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.sessionVariables = {
|
||||
FLAKE = "/home/julian/.dotfiles";
|
||||
};
|
||||
|
||||
home.shellAliases = {
|
||||
"os" = "nh os switch";
|
||||
"hs" = "nh home switch";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [ nh ];
|
||||
};
|
||||
}
|
33
modules/home-manager/non-nixos/default.nix
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.non-nixos;
|
||||
in
|
||||
{
|
||||
options.modules.non-nixos = {
|
||||
is-nixos = mkOption { default = true; };
|
||||
};
|
||||
|
||||
config = mkIf cfg.is-nixos { };
|
||||
}
|
276
modules/home-manager/rofi/config.rasi
Normal file
@ -0,0 +1,276 @@
|
||||
configuration {
|
||||
modi: "run,drun";
|
||||
/* width: 50;*/
|
||||
lines: 10;
|
||||
/* columns: 1;*/
|
||||
/* font: "mono 12";*/
|
||||
/* bw: 1;*/
|
||||
/* location: 0;*/
|
||||
/* padding: 5;*/
|
||||
/* yoffset: 0;*/
|
||||
/* xoffset: 0;*/
|
||||
/* fixed-num-lines: true;*/
|
||||
show-icons: true;
|
||||
terminal: "alacritty";
|
||||
/* ssh-client: "ssh";*/
|
||||
/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/
|
||||
/* run-command: "{cmd}";*/
|
||||
/* run-list-command: "";*/
|
||||
/* run-shell-command: "{terminal} -e {cmd}";*/
|
||||
/* window-command: "wmctrl -i -R {window}";*/
|
||||
/* window-match-fields: "all";*/
|
||||
/* icon-theme: ;*/
|
||||
/* drun-match-fields: "name,generic,exec,categories,keywords";*/
|
||||
/* drun-categories: ;*/
|
||||
/* drun-show-actions: false;*/
|
||||
/* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
|
||||
/* drun-url-launcher: "xdg-open";*/
|
||||
/* disable-history: false;*/
|
||||
/* ignored-prefixes: "";*/
|
||||
/* sort: false;*/
|
||||
/* sorting-method: "normal";*/
|
||||
/* case-sensitive: false;*/
|
||||
/* cycle: true;*/
|
||||
/* sidebar-mode: false;*/
|
||||
/* eh: 1;*/
|
||||
/* auto-select: false;*/
|
||||
/* parse-hosts: false;*/
|
||||
/* parse-known-hosts: true;*/
|
||||
/* combi-modi: "window,run";*/
|
||||
/* matching: "normal";*/
|
||||
/* tokenize: true;*/
|
||||
/* m: "-5";*/
|
||||
/* line-margin: 2;*/
|
||||
/* line-padding: 1;*/
|
||||
/* filter: ;*/
|
||||
/* separator-style: "dash";*/
|
||||
/* hide-scrollbar: false;*/
|
||||
/* fullscreen: false;*/
|
||||
/* fake-transparency: false;*/
|
||||
/* dpi: -1;*/
|
||||
/* threads: 0;*/
|
||||
/* scrollbar-width: 8;*/
|
||||
/* scroll-method: 0;*/
|
||||
/* fake-background: "screenshot";*/
|
||||
/* window-format: "{w} {c} {t}";*/
|
||||
/* click-to-exit: true;*/
|
||||
/* show-match: true;*/
|
||||
/* theme: ;*/
|
||||
/* color-normal: ;*/
|
||||
/* color-urgent: ;*/
|
||||
/* color-active: ;*/
|
||||
/* color-window: ;*/
|
||||
/* max-history-size: 25;*/
|
||||
/* combi-hide-mode-prefix: false;*/
|
||||
/* matching-negate-char: '-' /* unsupported */;*/
|
||||
/* cache-dir: ;*/
|
||||
/* window-thumbnail: false;*/
|
||||
/* drun-use-desktop-cache: false;*/
|
||||
/* drun-reload-desktop-cache: false;*/
|
||||
/* normalize-match: false;*/
|
||||
/* pid: "/run/user/1000/rofi.pid";*/
|
||||
/* display-window: ;*/
|
||||
/* display-windowcd: ;*/
|
||||
/* display-run: ;*/
|
||||
/* display-ssh: ;*/
|
||||
/* display-drun: ;*/
|
||||
/* display-combi: ;*/
|
||||
/* display-keys: ;*/
|
||||
/* display-file-browser: ;*/
|
||||
/* display-calc: ;*/
|
||||
/* kb-primary-paste: "Control+V,Shift+Insert";*/
|
||||
/* kb-secondary-paste: "Control+v,Insert";*/
|
||||
/* kb-clear-line: "Control+w";*/
|
||||
/* kb-move-front: "Control+a";*/
|
||||
/* kb-move-end: "Control+e";*/
|
||||
/* kb-move-word-back: "Alt+b,Control+Left";*/
|
||||
/* kb-move-word-forward: "Alt+f,Control+Right";*/
|
||||
/* kb-move-char-back: "Left,Control+b";*/
|
||||
/* kb-move-char-forward: "Right,Control+f";*/
|
||||
/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
|
||||
/* kb-remove-word-forward: "Control+Alt+d";*/
|
||||
/* kb-remove-char-forward: "Delete,Control+d";*/
|
||||
/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
|
||||
/* kb-remove-to-eol: "Control+k";*/
|
||||
/* kb-remove-to-sol: "Control+u";*/
|
||||
/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
|
||||
kb-accept-custom: "Control+Return";
|
||||
/* kb-accept-alt: "Shift+Return";*/
|
||||
/* kb-delete-entry: "Shift+Delete";*/
|
||||
/* kb-mode-next: "Shift+Right,Control+Tab";*/
|
||||
/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
|
||||
/* kb-row-left: "Control+Page_Up";*/
|
||||
/* kb-row-right: "Control+Page_Down";*/
|
||||
/* kb-row-up: "Up,Control+p,ISO_Left_Tab";*/
|
||||
/* kb-row-down: "Down,Control+n";*/
|
||||
/* kb-row-tab: "Tab";*/
|
||||
/* kb-page-prev: "Page_Up";*/
|
||||
/* kb-page-next: "Page_Down";*/
|
||||
/* kb-row-first: "Home,KP_Home";*/
|
||||
/* kb-row-last: "End,KP_End";*/
|
||||
/* kb-row-select: "Control+space";*/
|
||||
/* kb-screenshot: "Alt+S";*/
|
||||
/* kb-ellipsize: "Alt+period";*/
|
||||
/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
|
||||
/* kb-toggle-sort: "Alt+grave";*/
|
||||
/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
|
||||
/* kb-custom-1: "Alt+1";*/
|
||||
/* kb-custom-2: "Alt+2";*/
|
||||
/* kb-custom-3: "Alt+3";*/
|
||||
/* kb-custom-4: "Alt+4";*/
|
||||
/* kb-custom-5: "Alt+5";*/
|
||||
/* kb-custom-6: "Alt+6";*/
|
||||
/* kb-custom-7: "Alt+7";*/
|
||||
/* kb-custom-8: "Alt+8";*/
|
||||
/* kb-custom-9: "Alt+9";*/
|
||||
/* kb-custom-10: "Alt+0";*/
|
||||
/* kb-custom-11: "Alt+exclam";*/
|
||||
/* kb-custom-12: "Alt+at";*/
|
||||
/* kb-custom-13: "Alt+numbersign";*/
|
||||
/* kb-custom-14: "Alt+dollar";*/
|
||||
/* kb-custom-15: "Alt+percent";*/
|
||||
/* kb-custom-16: "Alt+dead_circumflex";*/
|
||||
/* kb-custom-17: "Alt+ampersand";*/
|
||||
/* kb-custom-18: "Alt+asterisk";*/
|
||||
/* kb-custom-19: "Alt+parenleft";*/
|
||||
/* kb-select-1: "Super+1";*/
|
||||
/* kb-select-2: "Super+2";*/
|
||||
/* kb-select-3: "Super+3";*/
|
||||
/* kb-select-4: "Super+4";*/
|
||||
/* kb-select-5: "Super+5";*/
|
||||
/* kb-select-6: "Super+6";*/
|
||||
/* kb-select-7: "Super+7";*/
|
||||
/* kb-select-8: "Super+8";*/
|
||||
/* kb-select-9: "Super+9";*/
|
||||
/* kb-select-10: "Super+0";*/
|
||||
/* ml-row-left: "ScrollLeft";*/
|
||||
/* ml-row-right: "ScrollRight";*/
|
||||
/* ml-row-up: "ScrollUp";*/
|
||||
/* ml-row-down: "ScrollDown";*/
|
||||
/* me-select-entry: "MousePrimary";*/
|
||||
/* me-accept-entry: "MouseDPrimary";*/
|
||||
/* me-accept-custom: "Control+MouseDPrimary";*/
|
||||
}
|
||||
|
||||
/*Dracula theme based on the Purple official rofi theme*/
|
||||
|
||||
* {
|
||||
font: "Jetbrains Mono 14";
|
||||
foreground: #f8f8f2;
|
||||
background: #282a36;
|
||||
active-background: #6272a4;
|
||||
urgent-background: #ff5555;
|
||||
selected-background: @active-background;
|
||||
selected-urgent-background: @urgent-background;
|
||||
selected-active-background: @active-background;
|
||||
separatorcolor: @active-background;
|
||||
bordercolor: @active-background;
|
||||
}
|
||||
|
||||
#window {
|
||||
background-color: @background;
|
||||
border: 1;
|
||||
border-radius: 6;
|
||||
border-color: @bordercolor;
|
||||
padding: 5;
|
||||
}
|
||||
#mainbox {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#message {
|
||||
border: 1px dash 0px 0px ;
|
||||
border-color: @separatorcolor;
|
||||
padding: 1px ;
|
||||
}
|
||||
#textbox {
|
||||
text-color: @foreground;
|
||||
}
|
||||
#listview {
|
||||
fixed-height: 0;
|
||||
border: 2px dash 0px 0px ;
|
||||
border-color: @bordercolor;
|
||||
spacing: 2px ;
|
||||
scrollbar: false;
|
||||
padding: 2px 0px 0px ;
|
||||
}
|
||||
#element {
|
||||
border: 0;
|
||||
padding: 1px ;
|
||||
}
|
||||
#element.normal.normal {
|
||||
background-color: @background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#element.normal.urgent {
|
||||
background-color: @urgent-background;
|
||||
text-color: @urgent-foreground;
|
||||
}
|
||||
#element.normal.active {
|
||||
background-color: @active-background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#element.selected.normal {
|
||||
background-color: @selected-background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#element.selected.urgent {
|
||||
background-color: @selected-urgent-background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#element.selected.active {
|
||||
background-color: @selected-active-background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#element.alternate.normal {
|
||||
background-color: @background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#element.alternate.urgent {
|
||||
background-color: @urgent-background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#element.alternate.active {
|
||||
background-color: @active-background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#scrollbar {
|
||||
width: 2px ;
|
||||
border: 0;
|
||||
handle-width: 8px ;
|
||||
padding: 0;
|
||||
}
|
||||
#sidebar {
|
||||
border: 2px dash 0px 0px ;
|
||||
border-color: @separatorcolor;
|
||||
}
|
||||
#button.selected {
|
||||
background-color: @selected-background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#inputbar {
|
||||
spacing: 0;
|
||||
text-color: @foreground;
|
||||
padding: 1px ;
|
||||
}
|
||||
#case-indicator {
|
||||
spacing: 0;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#entry {
|
||||
spacing: 0;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#prompt {
|
||||
spacing: 0;
|
||||
text-color: @foreground;
|
||||
}
|
||||
#inputbar {
|
||||
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
||||
}
|
||||
#textbox-prompt-colon {
|
||||
expand: false;
|
||||
str: ":";
|
||||
margin: 0px 0.3em 0em 0em ;
|
||||
text-color: @foreground;
|
||||
}
|
35
modules/home-manager/rofi/default.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual
|
||||
, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let cfg = config.modules.rofi;
|
||||
in {
|
||||
options.modules.rofi = { enable = mkOption { default = false; }; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
# this would need you to config rofi using home-manager
|
||||
# programs.rofi = { enable = true; };
|
||||
|
||||
home.packages = with pkgs; [ rofi ];
|
||||
|
||||
home.file = { ".config/rofi/config.rasi".source = ./config.rasi; };
|
||||
};
|
||||
}
|
80
modules/home-manager/suites/cli/default.nix
Normal file
@ -0,0 +1,80 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
host,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.suites.cli;
|
||||
in
|
||||
{
|
||||
options.modules.suites.cli = {
|
||||
enable = lib.mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
bat
|
||||
du-dust # Like du tree but better
|
||||
fd # better find
|
||||
fdupes # find and delete duplicate files
|
||||
ffmpeg
|
||||
findutils # locate
|
||||
fzf # Fuzzy finder
|
||||
ghostscript # needed for imagemagick with pdfs
|
||||
imagemagick
|
||||
git
|
||||
gnupg
|
||||
htop
|
||||
jq # Command line JSON processor
|
||||
killall
|
||||
languagetool # Grammar checker
|
||||
lazygit # Git client
|
||||
links2 # Tui web-browser
|
||||
lnav # log analyzing tool
|
||||
mc # Tui file browser
|
||||
# nix-index
|
||||
nmap
|
||||
p7zip # unzip 7zip archives
|
||||
parted
|
||||
pciutils # lspci
|
||||
poppler_utils # Pdf utils including pdfimages
|
||||
libqalculate # Nice tui calculator (qalc)
|
||||
ripgrep # better grep
|
||||
rnr # renaming tool
|
||||
sage # Maths notebooks
|
||||
tealdeer # tldr
|
||||
topgrade # System update
|
||||
tree
|
||||
unetbootin # TODO
|
||||
unixtools.procps # TODO
|
||||
unzip
|
||||
usbutils # lsusb
|
||||
wget
|
||||
wireguard-tools # wg-quick
|
||||
xorg.xkill
|
||||
zip
|
||||
|
||||
## My scripts
|
||||
frajul.edit-config
|
||||
frajul.lntocp
|
||||
frajul.sos
|
||||
];
|
||||
};
|
||||
}
|
97
modules/home-manager/suites/desktop/default.nix
Normal file
@ -0,0 +1,97 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
host,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.suites.desktop;
|
||||
in
|
||||
{
|
||||
options.modules.suites.desktop = {
|
||||
enable = lib.mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.blueman-applet.enable = true;
|
||||
services.nextcloud-client.enable = true;
|
||||
services.nextcloud-client.startInBackground = true;
|
||||
services.network-manager-applet.enable = true;
|
||||
|
||||
services.syncthing.tray.enable = true;
|
||||
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
|
||||
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
# Tampermonkey
|
||||
{ id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; }
|
||||
];
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
arandr
|
||||
calibre # ebook manager and viewer
|
||||
digikam
|
||||
discord
|
||||
# dvdisaster
|
||||
# element-desktop
|
||||
# rocketchat-desktop
|
||||
thunderbird
|
||||
tdesktop # telegram
|
||||
# schildichat-desktop # not updated regularly
|
||||
nheko
|
||||
evince # Simple pdf reader, good for focusing on document content
|
||||
firefox
|
||||
# geogebra
|
||||
cheese
|
||||
handbrake
|
||||
kitty # Terminal
|
||||
libnotify
|
||||
libreoffice
|
||||
mate.engrampa
|
||||
nomacs # Image viewer
|
||||
okular # Pdf reader with many features, good for commenting documents
|
||||
pavucontrol
|
||||
pdfsam-basic # Split, merge, etc for pdfs
|
||||
qalculate-gtk # Nice gui calculator
|
||||
qpdfview
|
||||
# qutebrowser
|
||||
# realvnc-vnc-viewer
|
||||
rpi-imager # make isos
|
||||
# rustdesk
|
||||
tor-browser
|
||||
unstable.path-of-building # Path of Building
|
||||
# frajul.pob-dev-version # Path of Building
|
||||
vlc
|
||||
wineWowPackages.stable # 32-bit and 64-bit wine
|
||||
winetricks
|
||||
xclip # x11 clipboard access from terminal
|
||||
xfce.mousepad # simple text editor
|
||||
xournalpp # Edit pdf files
|
||||
zoom-us # Video conferencing
|
||||
zotero # Manage papers and other sources
|
||||
pdfpc # Present slides in pdf form
|
||||
|
||||
## My scripts
|
||||
frajul.open-messaging
|
||||
frajul.xwacomcalibrate
|
||||
];
|
||||
};
|
||||
}
|
110
modules/home-manager/suites/development/default.nix
Normal file
@ -0,0 +1,110 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
host,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.suites.development;
|
||||
in
|
||||
{
|
||||
options.modules.suites.development = {
|
||||
enable = lib.mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
watchexec # Run command when any file in current dir changes
|
||||
android-tools # adb
|
||||
# shellcheck # Check bash scripts for common errors
|
||||
sqlite
|
||||
scrcpy # Mirror android screen to pc
|
||||
cargo
|
||||
clippy
|
||||
cntr # nix debugger
|
||||
conda
|
||||
micromamba # a better, faster conda
|
||||
devcontainer # development container
|
||||
devenv # devbox alternative
|
||||
dbeaver-bin
|
||||
devbox # dev environments using nix
|
||||
distrobox # run commands inside docker containers
|
||||
gcc
|
||||
gradle
|
||||
hexedit
|
||||
unstable.zed-editor
|
||||
jdk
|
||||
julia-bin
|
||||
(texlive.combine {
|
||||
# for rendering latex in inkscape
|
||||
inherit (texlive)
|
||||
scheme-medium
|
||||
standalone
|
||||
amsmath
|
||||
preview
|
||||
;
|
||||
})
|
||||
matlab # Using nix-matlab overlay defined in flake
|
||||
maven
|
||||
nodejs
|
||||
pkg-config # Often needed to build something
|
||||
pwndbg # improved gdb (debugger)
|
||||
python3
|
||||
rust-analyzer
|
||||
rustc
|
||||
rustfmt
|
||||
# (pkgs.inkscape-with-extensions.override {
|
||||
# inkscapeExtensions = [ pkgs.inkscape-extensions.textext ];
|
||||
# })
|
||||
# inkscape-with-extensions
|
||||
# inkscape-extensions.textext
|
||||
inkscape
|
||||
gcolor3 # Color picker
|
||||
gimp
|
||||
drawio
|
||||
audacity
|
||||
|
||||
deploy-rs
|
||||
sops
|
||||
pandoc # markdown preview
|
||||
docker-compose
|
||||
|
||||
## My scripts
|
||||
frajul.deploy-to-pianopi
|
||||
|
||||
(pkgs.writeShellScriptBin "matlab-rsp" ''
|
||||
matlab -desktop -sd "/home/julian/git/uwa-channel-model" -softwareopengl
|
||||
'')
|
||||
|
||||
(pkgs.writeShellScriptBin "matlab-paper" ''
|
||||
matlab -desktop -sd "/home/julian/dev/phdthesis/Phase B/mainSimulation" -softwareopengl
|
||||
'')
|
||||
(pkgs.writeShellScriptBin "matlab-robotik" ''
|
||||
matlab -desktop -sd "/home/julian/nas-sync/Studium/Vorlesungen-Master/ss24/Robotik2" -softwareopengl
|
||||
'')
|
||||
(pkgs.writeShellScriptBin "matlab-gram" ''
|
||||
export GTK_PATH=/usr/lib/gtk-3.0
|
||||
nix shell nixpkgs#gcc11 --command matlab -desktop -sd "/home/julian/dev/matlab-gram" -softwareopengl
|
||||
'')
|
||||
(pkgs.writeShellScriptBin "expenses-tracker" ''
|
||||
java -jar /home/julian/dev/expensestracker/app/build/libs/app.jar
|
||||
'')
|
||||
];
|
||||
};
|
||||
}
|
60
modules/home-manager/topgrade/default.nix
Normal file
@ -0,0 +1,60 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.topgrade;
|
||||
in
|
||||
{
|
||||
options.modules.topgrade = {
|
||||
enable = mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.topgrade = {
|
||||
enable = true;
|
||||
settings = {
|
||||
misc.no_self_update = true;
|
||||
misc.pre_sudo = true; # Cache sudo password for 5 more minutes
|
||||
misc.assume_yes = true;
|
||||
misc.no_retry = true;
|
||||
|
||||
pre_commands."Update flake" =
|
||||
"git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
|
||||
|
||||
linux.nix_arguments = "--flake /home/julian/.dotfiles";
|
||||
linux.home_manager_arguments = [
|
||||
"--flake"
|
||||
"/home/julian/.dotfiles"
|
||||
];
|
||||
|
||||
git = {
|
||||
# Additional git repositories to pull
|
||||
repos = [
|
||||
"~/.dotfiles"
|
||||
"~/dev/*"
|
||||
] ++ lib.optional config.modules.emacs.enable "~/.config/doom";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
60
modules/home-manager/wezterm/default.nix
Normal file
@ -0,0 +1,60 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.wezterm;
|
||||
in
|
||||
{
|
||||
options.modules.wezterm = {
|
||||
enable = lib.mkOption { default = false; };
|
||||
mkDefault = lib.mkOption { default = true; };
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.wezterm = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
local wezterm = require 'wezterm'
|
||||
local config = {}
|
||||
|
||||
config.color_scheme = 'Catppuccin Mocha'
|
||||
-- config.font = wezterm.font 'JetBrains Mono'
|
||||
-- config.font_size = 12.0
|
||||
config.hide_tab_bar_if_only_one_tab = true
|
||||
config.audible_bell = 'Disabled'
|
||||
config.enable_wayland = false -- Somehow only works for wayland if this is set to false
|
||||
|
||||
config.window_close_confirmation = 'NeverPrompt'
|
||||
|
||||
return config
|
||||
'';
|
||||
};
|
||||
|
||||
home.sessionVariables.TERMINAL = lib.mkIf cfg.mkDefault "wezterm-start-here";
|
||||
|
||||
# Otherwise wezterm does not start in directory of parent process
|
||||
home.packages = [
|
||||
(pkgs.writeShellScriptBin "wezterm-start-here" ''
|
||||
wezterm start --cwd "$PWD"
|
||||
'')
|
||||
];
|
||||
};
|
||||
}
|
116
modules/home-manager/yazi/default.nix
Normal file
@ -0,0 +1,116 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.yazi;
|
||||
in
|
||||
{
|
||||
options.modules.yazi = {
|
||||
enable = lib.mkOption { default = false; };
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.zoxide.enable = true;
|
||||
programs.zoxide.enableFishIntegration = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
exiftool
|
||||
unar # extract archives
|
||||
xdragon # dragndrop
|
||||
poppler_utils # pdf preview
|
||||
fd
|
||||
ripgrep
|
||||
fzf
|
||||
jq # json preview
|
||||
ffmpegthumbnailer
|
||||
xclip
|
||||
];
|
||||
|
||||
home.shellAliases = {
|
||||
y = "yy"; # Yazi shell wrapper (cd on quit)
|
||||
};
|
||||
|
||||
programs.yazi.enable = true;
|
||||
programs.yazi.enableFishIntegration = true;
|
||||
programs.yazi.settings.manager = {
|
||||
sort_by = "modified";
|
||||
sort_reverse = true;
|
||||
show_hidden = true;
|
||||
};
|
||||
|
||||
programs.yazi.keymap = {
|
||||
manager.prepend_keymap = [
|
||||
# Override defaults
|
||||
{
|
||||
on = [ "e" ];
|
||||
run = ''shell --orphan --confirm "pcmanfm &"'';
|
||||
desc = "Open gui file manager";
|
||||
}
|
||||
{
|
||||
on = [ "<C-o>" ];
|
||||
run = ''shell "$SHELL" --block --confirm'';
|
||||
desc = "Open shell here";
|
||||
}
|
||||
{
|
||||
on = [ "<C-n>" ];
|
||||
run = ''shell 'dragon -x -i -T "$1"' --confirm'';
|
||||
desc = "Dragndrop via dragon";
|
||||
}
|
||||
{
|
||||
on = [ "<Enter>" ];
|
||||
run = "plugin --sync smart-enter";
|
||||
desc = "Enter the child directory, or open the file";
|
||||
}
|
||||
];
|
||||
input.prepend_keymap = [
|
||||
{
|
||||
on = [ "<Esc>" ];
|
||||
run = "close";
|
||||
desc = "Cancel input";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
programs.yazi.settings.opener = {
|
||||
play = [
|
||||
{
|
||||
run = ''vlc "$1"'';
|
||||
orphan = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
xdg.configFile."yazi/flavors" = {
|
||||
source = "${inputs.yazi-flavors}";
|
||||
};
|
||||
xdg.configFile."yazi/plugins/smart-enter.yazi/init.lua".text = ''
|
||||
return {
|
||||
entry = function()
|
||||
local h = cx.active.current.hovered
|
||||
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true })
|
||||
end,
|
||||
}
|
||||
'';
|
||||
programs.yazi.theme = {
|
||||
flavor.use = "catppuccin-mocha";
|
||||
};
|
||||
};
|
||||
}
|
65
modules/home-manager/zsh/default.nix
Normal file
@ -0,0 +1,65 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format, # A normalized name for the system target (eg. `iso`).
|
||||
virtual
|
||||
, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let cfg = config.modules.shell.zsh;
|
||||
in {
|
||||
options.modules.shell.zsh = { enable = mkOption { default = false; }; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
home.file = { ".config/starship.toml".source = ./starship.toml; };
|
||||
|
||||
home.packages = with pkgs; [ starship ];
|
||||
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
|
||||
initExtra = builtins.readFile ./key-bindings.zsh
|
||||
+ builtins.readFile ./functions.zsh
|
||||
+ builtins.readFile ./last-working-dir.zsh
|
||||
+ builtins.readFile ./dir-navigation.zsh;
|
||||
|
||||
zplug = {
|
||||
enable = true;
|
||||
plugins = [
|
||||
# list of plugins: https://github.com/unixorn/awesome-zsh-plugins
|
||||
{ name = "agkozak/zsh-z"; }
|
||||
{
|
||||
name = "zsh-users/zsh-completions";
|
||||
}
|
||||
|
||||
# make it behave like fish
|
||||
{ name = "zsh-users/zsh-autosuggestions"; }
|
||||
{ name = "zsh-users/zsh-history-substring-search"; }
|
||||
{
|
||||
name = "zsh-users/zsh-syntax-highlighting";
|
||||
} # must be last sourced plugin
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
17
modules/home-manager/zsh/dir-navigation.zsh
Normal file
@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env zsh
|
||||
# Use Alt+Up to go one directory upwards
|
||||
|
||||
function go_dir_up() {
|
||||
cd .. || return 1
|
||||
}
|
||||
|
||||
function zle_go_dir_up() {
|
||||
zle .kill-buffer
|
||||
go_dir_up
|
||||
zle .accept-line
|
||||
}
|
||||
|
||||
zle -N zle_go_dir_up
|
||||
|
||||
# Alt+Up
|
||||
bindkey "^[[1;3A" zle_go_dir_up
|
16
modules/home-manager/zsh/functions.zsh
Normal file
@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env zsh
|
||||
# My custom zsh functions
|
||||
|
||||
fzf-z() {
|
||||
dir=$(z | fzf --tiebreak=index --tac | sed -E 's/^[0-9]+[[:space:]]+//')
|
||||
cd $dir
|
||||
}
|
||||
|
||||
mkcd ()
|
||||
{
|
||||
mkdir -p -- "$1" && cd -P -- "$1"
|
||||
}
|
||||
|
||||
run() {
|
||||
nix run nixpkgs#"$1" -- ${@:2}
|
||||
}
|
131
modules/home-manager/zsh/key-bindings.zsh
Normal file
@ -0,0 +1,131 @@
|
||||
#!/usr/bin/env zsh
|
||||
# Based on the oh-my-zsh default keybinding config: https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/key-bindings.zsh
|
||||
|
||||
# Make sure that the terminal is in application mode when zle is active, since
|
||||
# only then values from $terminfo are valid
|
||||
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
|
||||
function zle-line-init() {
|
||||
echoti smkx
|
||||
}
|
||||
function zle-line-finish() {
|
||||
echoti rmkx
|
||||
}
|
||||
zle -N zle-line-init
|
||||
zle -N zle-line-finish
|
||||
fi
|
||||
|
||||
# Use emacs key bindings
|
||||
bindkey -e
|
||||
|
||||
# [PageUp] - Up a line of history
|
||||
if [[ -n "${terminfo[kpp]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kpp]}" up-line-or-history
|
||||
bindkey -M viins "${terminfo[kpp]}" up-line-or-history
|
||||
bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history
|
||||
fi
|
||||
# [PageDown] - Down a line of history
|
||||
if [[ -n "${terminfo[knp]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[knp]}" down-line-or-history
|
||||
bindkey -M viins "${terminfo[knp]}" down-line-or-history
|
||||
bindkey -M vicmd "${terminfo[knp]}" down-line-or-history
|
||||
fi
|
||||
|
||||
# Start typing + [Up-Arrow] - fuzzy find history forward
|
||||
if [[ -n "${terminfo[kcuu1]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kcuu1]}" history-substring-search-up
|
||||
bindkey -M viins "${terminfo[kcuu1]}" history-substring-search-up
|
||||
bindkey -M vicmd "${terminfo[kcuu1]}" history-substring-search-up
|
||||
fi
|
||||
# Start typing + [Down-Arrow] - fuzzy find history backward
|
||||
if [[ -n "${terminfo[kcud1]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kcud1]}" history-substring-search-down
|
||||
bindkey -M viins "${terminfo[kcud1]}" history-substring-search-down
|
||||
bindkey -M vicmd "${terminfo[kcud1]}" history-substring-search-down
|
||||
fi
|
||||
|
||||
# [Home] - Go to beginning of line
|
||||
if [[ -n "${terminfo[khome]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[khome]}" beginning-of-line
|
||||
bindkey -M viins "${terminfo[khome]}" beginning-of-line
|
||||
bindkey -M vicmd "${terminfo[khome]}" beginning-of-line
|
||||
fi
|
||||
# [End] - Go to end of line
|
||||
if [[ -n "${terminfo[kend]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kend]}" end-of-line
|
||||
bindkey -M viins "${terminfo[kend]}" end-of-line
|
||||
bindkey -M vicmd "${terminfo[kend]}" end-of-line
|
||||
fi
|
||||
|
||||
# [Shift-Tab] - move through the completion menu backwards
|
||||
if [[ -n "${terminfo[kcbt]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete
|
||||
bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete
|
||||
bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete
|
||||
fi
|
||||
|
||||
# [Backspace] - delete backward
|
||||
bindkey -M emacs '^?' backward-delete-char
|
||||
bindkey -M viins '^?' backward-delete-char
|
||||
bindkey -M vicmd '^?' backward-delete-char
|
||||
# [Delete] - delete forward
|
||||
if [[ -n "${terminfo[kdch1]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kdch1]}" delete-char
|
||||
bindkey -M viins "${terminfo[kdch1]}" delete-char
|
||||
bindkey -M vicmd "${terminfo[kdch1]}" delete-char
|
||||
else
|
||||
bindkey -M emacs "^[[3~" delete-char
|
||||
bindkey -M viins "^[[3~" delete-char
|
||||
bindkey -M vicmd "^[[3~" delete-char
|
||||
|
||||
bindkey -M emacs "^[3;5~" delete-char
|
||||
bindkey -M viins "^[3;5~" delete-char
|
||||
bindkey -M vicmd "^[3;5~" delete-char
|
||||
fi
|
||||
|
||||
# [Ctrl-Delete] - delete whole forward-word
|
||||
bindkey -M emacs '^[[3;5~' kill-word
|
||||
bindkey -M viins '^[[3;5~' kill-word
|
||||
bindkey -M vicmd '^[[3;5~' kill-word
|
||||
|
||||
# [Ctrl-RightArrow] - move forward one word
|
||||
bindkey -M emacs '^[[1;5C' forward-word
|
||||
bindkey -M viins '^[[1;5C' forward-word
|
||||
bindkey -M vicmd '^[[1;5C' forward-word
|
||||
# [Ctrl-LeftArrow] - move backward one word
|
||||
bindkey -M emacs '^[[1;5D' backward-word
|
||||
bindkey -M viins '^[[1;5D' backward-word
|
||||
bindkey -M vicmd '^[[1;5D' backward-word
|
||||
|
||||
|
||||
bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
|
||||
bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
|
||||
bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
|
||||
bindkey ' ' magic-space # [Space] - don't do history expansion
|
||||
|
||||
|
||||
# Edit the current command line in $EDITOR
|
||||
autoload -U edit-command-line
|
||||
zle -N edit-command-line
|
||||
bindkey '\C-x\C-e' edit-command-line
|
||||
|
||||
# file rename magick
|
||||
bindkey "^[m" copy-prev-shell-word
|
||||
|
||||
# consider emacs keybindings:
|
||||
|
||||
#bindkey -e ## emacs key bindings
|
||||
#
|
||||
#bindkey '^[[A' up-line-or-search
|
||||
#bindkey '^[[B' down-line-or-search
|
||||
#bindkey '^[^[[C' emacs-forward-word
|
||||
#bindkey '^[^[[D' emacs-backward-word
|
||||
#
|
||||
#bindkey -s '^X^Z' '%-^M'
|
||||
#bindkey '^[e' expand-cmd-path
|
||||
#bindkey '^[^I' reverse-menu-complete
|
||||
#bindkey '^X^N' accept-and-infer-next-history
|
||||
#bindkey '^W' kill-region
|
||||
#bindkey '^I' complete-word
|
||||
## Fix weird sequence that rxvt produces
|
||||
#bindkey -s '^[[Z' '\t'
|
||||
#
|
20
modules/home-manager/zsh/last-working-dir.zsh
Normal file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/zsh
|
||||
# My version of the last-working-dir plugin (https://github.com/ohmyzsh/ohmyzsh/blob/master/plugins/last-working-dir/last-working-dir.plugin.zsh)
|
||||
|
||||
# Updates the last directory once directory is changed
|
||||
autoload -U add-zsh-hook
|
||||
add-zsh-hook chpwd chpwd_last_working_dir
|
||||
chpwd_last_working_dir() {
|
||||
# Don't run in subshells
|
||||
[[ "$ZSH_SUBSHELL" -eq 0 ]] || return 0
|
||||
pwd > ~/.last-working-dir
|
||||
}
|
||||
|
||||
# Changes directory to the last working directory
|
||||
lwd() {
|
||||
if [[ -r ~/.last-working-dir ]]; then
|
||||
lwd=$(cat ~/.last-working-dir)
|
||||
cd $lwd
|
||||
echo $lwd
|
||||
fi
|
||||
}
|
14
modules/home-manager/zsh/starship.toml
Normal file
@ -0,0 +1,14 @@
|
||||
# newline between shell prompts
|
||||
add_newline = false
|
||||
#format = "$all$directory$character"
|
||||
|
||||
[line_break]
|
||||
disabled = true
|
||||
|
||||
[directory]
|
||||
fish_style_pwd_dir_length = 1
|
||||
|
||||
[status]
|
||||
map_symbol = true
|
||||
format = '[$symbol$status $common_meaning$signal_name$maybe_int]($style) '
|
||||
disabled = false
|