diff --git a/homes/julian/aspi.nix b/homes/julian/aspi.nix new file mode 100644 index 0000000..010e161 --- /dev/null +++ b/homes/julian/aspi.nix @@ -0,0 +1,29 @@ +{ + config, + ... +}: +{ + imports = [ + ./global + ./features/fish + ./features/direnv + ./features/topgrade + ./features/neovim + ./features/kitty + ./features/wezterm + ./features/alacritty + ./features/yazi + ./features/emacs + ./features/i3 + ./features/nix-helper + ./features/desktop + + ./features/suites/cli + ./features/suites/desktop + ./features/suites/development + + ]; + + config.terminal = "kitty"; # TODO: only terminal = ??? + +} diff --git a/modules/home-manager/alacritty/alacritty.toml b/homes/julian/features/alacritty/alacritty.toml similarity index 100% rename from modules/home-manager/alacritty/alacritty.toml rename to homes/julian/features/alacritty/alacritty.toml diff --git a/homes/julian/features/alacritty/default.nix b/homes/julian/features/alacritty/default.nix new file mode 100644 index 0000000..fc534ba --- /dev/null +++ b/homes/julian/features/alacritty/default.nix @@ -0,0 +1,18 @@ +{ + lib, + pkgs, + inputs, + config, + ... +}: + +{ + home.packages = with pkgs; [ alacritty ]; + + home.file = { + ".config/alacritty/theme".source = "${inputs.alacritty-theme}"; + ".config/alacritty/alacritty.toml".source = ./alacritty.toml; + }; + + home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "alacritty") "alacritty"; +} diff --git a/modules/home-manager/desktop/default.nix b/homes/julian/features/desktop/default.nix similarity index 59% rename from modules/home-manager/desktop/default.nix rename to homes/julian/features/desktop/default.nix index e969f43..08af982 100644 --- a/modules/home-manager/desktop/default.nix +++ b/homes/julian/features/desktop/default.nix @@ -1,5 +1,4 @@ { - options, config, lib, pkgs, @@ -11,24 +10,16 @@ let 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 ]; + imports = [ inputs.nix-colors.homeManagerModules.default ]; # TODO: what does this do 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}; }; + name = inputs.nix-colors.colorschemes.${config.colorscheme}.slug; + package = gtkThemeFromScheme { scheme = inputs.nix-colors.colorschemes.${config.colorscheme}; }; }; iconTheme = { name = "Papirus-Dark"; diff --git a/modules/home-manager/desktop/wallpapers/32j4hjkl4j4hkl.png b/homes/julian/features/desktop/wallpapers/32j4hjkl4j4hkl.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/32j4hjkl4j4hkl.png rename to homes/julian/features/desktop/wallpapers/32j4hjkl4j4hkl.png diff --git a/modules/home-manager/desktop/wallpapers/Bridge.jpg b/homes/julian/features/desktop/wallpapers/Bridge.jpg similarity index 100% rename from modules/home-manager/desktop/wallpapers/Bridge.jpg rename to homes/julian/features/desktop/wallpapers/Bridge.jpg diff --git a/modules/home-manager/desktop/wallpapers/astronaut.png b/homes/julian/features/desktop/wallpapers/astronaut.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/astronaut.png rename to homes/julian/features/desktop/wallpapers/astronaut.png diff --git a/modules/home-manager/desktop/wallpapers/astronaut_ultra.png b/homes/julian/features/desktop/wallpapers/astronaut_ultra.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/astronaut_ultra.png rename to homes/julian/features/desktop/wallpapers/astronaut_ultra.png diff --git a/modules/home-manager/desktop/wallpapers/babel.png b/homes/julian/features/desktop/wallpapers/babel.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/babel.png rename to homes/julian/features/desktop/wallpapers/babel.png diff --git a/modules/home-manager/desktop/wallpapers/blockwavemoon.png b/homes/julian/features/desktop/wallpapers/blockwavemoon.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/blockwavemoon.png rename to homes/julian/features/desktop/wallpapers/blockwavemoon.png diff --git a/modules/home-manager/desktop/wallpapers/cat_Japanese_Neon.png b/homes/julian/features/desktop/wallpapers/cat_Japanese_Neon.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/cat_Japanese_Neon.png rename to homes/julian/features/desktop/wallpapers/cat_Japanese_Neon.png diff --git a/modules/home-manager/desktop/wallpapers/cat_leaves.png b/homes/julian/features/desktop/wallpapers/cat_leaves.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/cat_leaves.png rename to homes/julian/features/desktop/wallpapers/cat_leaves.png diff --git a/modules/home-manager/desktop/wallpapers/colorful-planets.jpg b/homes/julian/features/desktop/wallpapers/colorful-planets.jpg similarity index 100% rename from modules/home-manager/desktop/wallpapers/colorful-planets.jpg rename to homes/julian/features/desktop/wallpapers/colorful-planets.jpg diff --git a/modules/home-manager/desktop/wallpapers/finalizer.png b/homes/julian/features/desktop/wallpapers/finalizer.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/finalizer.png rename to homes/julian/features/desktop/wallpapers/finalizer.png diff --git a/modules/home-manager/desktop/wallpapers/gruv-material.png b/homes/julian/features/desktop/wallpapers/gruv-material.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/gruv-material.png rename to homes/julian/features/desktop/wallpapers/gruv-material.png diff --git a/modules/home-manager/desktop/wallpapers/ign-0002.png b/homes/julian/features/desktop/wallpapers/ign-0002.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/ign-0002.png rename to homes/julian/features/desktop/wallpapers/ign-0002.png diff --git a/modules/home-manager/desktop/wallpapers/ign-0008.png b/homes/julian/features/desktop/wallpapers/ign-0008.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/ign-0008.png rename to homes/julian/features/desktop/wallpapers/ign-0008.png diff --git a/modules/home-manager/desktop/wallpapers/ign-0011.png b/homes/julian/features/desktop/wallpapers/ign-0011.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/ign-0011.png rename to homes/julian/features/desktop/wallpapers/ign-0011.png diff --git a/modules/home-manager/desktop/wallpapers/ign_car.png b/homes/julian/features/desktop/wallpapers/ign_car.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/ign_car.png rename to homes/julian/features/desktop/wallpapers/ign_car.png diff --git a/modules/home-manager/desktop/wallpapers/ign_city.png b/homes/julian/features/desktop/wallpapers/ign_city.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/ign_city.png rename to homes/julian/features/desktop/wallpapers/ign_city.png diff --git a/modules/home-manager/desktop/wallpapers/ign_cityRainOther.png b/homes/julian/features/desktop/wallpapers/ign_cityRainOther.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/ign_cityRainOther.png rename to homes/julian/features/desktop/wallpapers/ign_cityRainOther.png diff --git a/modules/home-manager/desktop/wallpapers/ign_herakles.png b/homes/julian/features/desktop/wallpapers/ign_herakles.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/ign_herakles.png rename to homes/julian/features/desktop/wallpapers/ign_herakles.png diff --git a/modules/home-manager/desktop/wallpapers/ign_stuff.png b/homes/julian/features/desktop/wallpapers/ign_stuff.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/ign_stuff.png rename to homes/julian/features/desktop/wallpapers/ign_stuff.png diff --git a/modules/home-manager/desktop/wallpapers/ign_unsplash16.png b/homes/julian/features/desktop/wallpapers/ign_unsplash16.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/ign_unsplash16.png rename to homes/julian/features/desktop/wallpapers/ign_unsplash16.png diff --git a/modules/home-manager/desktop/wallpapers/koi2.png b/homes/julian/features/desktop/wallpapers/koi2.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/koi2.png rename to homes/julian/features/desktop/wallpapers/koi2.png diff --git a/modules/home-manager/desktop/wallpapers/nix-wallpaper-nineish-catppuccin-mocha.png b/homes/julian/features/desktop/wallpapers/nix-wallpaper-nineish-catppuccin-mocha.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/nix-wallpaper-nineish-catppuccin-mocha.png rename to homes/julian/features/desktop/wallpapers/nix-wallpaper-nineish-catppuccin-mocha.png diff --git a/modules/home-manager/desktop/wallpapers/nord_buildings.png b/homes/julian/features/desktop/wallpapers/nord_buildings.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/nord_buildings.png rename to homes/julian/features/desktop/wallpapers/nord_buildings.png diff --git a/modules/home-manager/desktop/wallpapers/outer-space.png b/homes/julian/features/desktop/wallpapers/outer-space.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/outer-space.png rename to homes/julian/features/desktop/wallpapers/outer-space.png diff --git a/modules/home-manager/desktop/wallpapers/platform.jpg b/homes/julian/features/desktop/wallpapers/platform.jpg similarity index 100% rename from modules/home-manager/desktop/wallpapers/platform.jpg rename to homes/julian/features/desktop/wallpapers/platform.jpg diff --git a/modules/home-manager/desktop/wallpapers/rolly.png b/homes/julian/features/desktop/wallpapers/rolly.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/rolly.png rename to homes/julian/features/desktop/wallpapers/rolly.png diff --git a/modules/home-manager/desktop/wallpapers/rose_pine_contourline.png b/homes/julian/features/desktop/wallpapers/rose_pine_contourline.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/rose_pine_contourline.png rename to homes/julian/features/desktop/wallpapers/rose_pine_contourline.png diff --git a/modules/home-manager/desktop/wallpapers/rose_pine_shape.png b/homes/julian/features/desktop/wallpapers/rose_pine_shape.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/rose_pine_shape.png rename to homes/julian/features/desktop/wallpapers/rose_pine_shape.png diff --git a/modules/home-manager/desktop/wallpapers/shiny-colors.png b/homes/julian/features/desktop/wallpapers/shiny-colors.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/shiny-colors.png rename to homes/julian/features/desktop/wallpapers/shiny-colors.png diff --git a/modules/home-manager/desktop/wallpapers/skullcat.png b/homes/julian/features/desktop/wallpapers/skullcat.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/skullcat.png rename to homes/julian/features/desktop/wallpapers/skullcat.png diff --git a/modules/home-manager/desktop/wallpapers/space324dhsj.png b/homes/julian/features/desktop/wallpapers/space324dhsj.png similarity index 100% rename from modules/home-manager/desktop/wallpapers/space324dhsj.png rename to homes/julian/features/desktop/wallpapers/space324dhsj.png diff --git a/modules/home-manager/desktop/wallpapers/spiral.jpg b/homes/julian/features/desktop/wallpapers/spiral.jpg similarity index 100% rename from modules/home-manager/desktop/wallpapers/spiral.jpg rename to homes/julian/features/desktop/wallpapers/spiral.jpg diff --git a/modules/home-manager/desktop/wallpapers/spooky_spill.jpg b/homes/julian/features/desktop/wallpapers/spooky_spill.jpg similarity index 100% rename from modules/home-manager/desktop/wallpapers/spooky_spill.jpg rename to homes/julian/features/desktop/wallpapers/spooky_spill.jpg diff --git a/modules/home-manager/desktop/wallpapers/wallpaper.jpg b/homes/julian/features/desktop/wallpapers/wallpaper.jpg similarity index 100% rename from modules/home-manager/desktop/wallpapers/wallpaper.jpg rename to homes/julian/features/desktop/wallpapers/wallpaper.jpg diff --git a/homes/julian/features/direnv/default.nix b/homes/julian/features/direnv/default.nix new file mode 100644 index 0000000..2b51c9d --- /dev/null +++ b/homes/julian/features/direnv/default.nix @@ -0,0 +1,6 @@ +{ + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; +} diff --git a/homes/julian/features/emacs/default.nix b/homes/julian/features/emacs/default.nix new file mode 100644 index 0000000..1fc8a4a --- /dev/null +++ b/homes/julian/features/emacs/default.nix @@ -0,0 +1,75 @@ +{ + lib, + pkgs, + config, + ... +}: + +with lib; + +let + doomRepoUrl = "https://github.com/doomemacs/doomemacs"; + configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config"; +in +{ + 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 + ''; +} diff --git a/homes/julian/features/fish/default.nix b/homes/julian/features/fish/default.nix new file mode 100644 index 0000000..956a262 --- /dev/null +++ b/homes/julian/features/fish/default.nix @@ -0,0 +1,55 @@ +{ + lib, + pkgs, + ... +}: + +with lib; + +{ + 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 + ''; + }; + }; +} diff --git a/modules/home-manager/fish/last-working-dir.fish b/homes/julian/features/fish/last-working-dir.fish similarity index 100% rename from modules/home-manager/fish/last-working-dir.fish rename to homes/julian/features/fish/last-working-dir.fish diff --git a/modules/home-manager/fish/starship.toml b/homes/julian/features/fish/starship.toml similarity index 100% rename from modules/home-manager/fish/starship.toml rename to homes/julian/features/fish/starship.toml diff --git a/homes/julian/features/fonts/default.nix b/homes/julian/features/fonts/default.nix new file mode 100644 index 0000000..c0292a3 --- /dev/null +++ b/homes/julian/features/fonts/default.nix @@ -0,0 +1,24 @@ +{ + lib, + pkgs, + config, + ... +}: + +with lib; + +{ + 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 + ]; +} diff --git a/homes/julian/features/gammastep/default.nix b/homes/julian/features/gammastep/default.nix new file mode 100644 index 0000000..ab92d5d --- /dev/null +++ b/homes/julian/features/gammastep/default.nix @@ -0,0 +1,8 @@ +{ + services.gammastep = { + enable = true; + latitude = 47.92; + longitude = 10.12; + provider = "manual"; + }; +} diff --git a/homes/julian/features/hyprland/default.nix b/homes/julian/features/hyprland/default.nix new file mode 100644 index 0000000..d7604bf --- /dev/null +++ b/homes/julian/features/hyprland/default.nix @@ -0,0 +1,289 @@ +{ + pkgs, + inputs, + config, + ... +}: + +let + inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme}) + palette + ; +in +{ + imports = [ + inputs.hyprland.homeManagerModules.default + + ./waybar + ./wofi + ./mako + ./hyprlock + ./wlogout + ]; + + 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" ]; + }; + }; + }; + }; +} diff --git a/homes/julian/features/hyprland/hyprlock/default.nix b/homes/julian/features/hyprland/hyprlock/default.nix new file mode 100644 index 0000000..62594bc --- /dev/null +++ b/homes/julian/features/hyprland/hyprlock/default.nix @@ -0,0 +1,47 @@ +{ + options, + config, + lib, + pkgs, + inputs, + ... +}: +let + inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme}) + palette + ; +in +{ + 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..."; + } + ]; + }; +} diff --git a/homes/julian/features/hyprland/mako/default.nix b/homes/julian/features/hyprland/mako/default.nix new file mode 100644 index 0000000..1942ca4 --- /dev/null +++ b/homes/julian/features/hyprland/mako/default.nix @@ -0,0 +1,29 @@ +{ + options, + config, + lib, + pkgs, + inputs, + ... +}: +let + inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme}) + palette + ; +in +{ + 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} + ''; + }; +} diff --git a/modules/home-manager/hyprland/waybar/config.json b/homes/julian/features/hyprland/waybar/config.json similarity index 100% rename from modules/home-manager/hyprland/waybar/config.json rename to homes/julian/features/hyprland/waybar/config.json diff --git a/homes/julian/features/hyprland/waybar/default.nix b/homes/julian/features/hyprland/waybar/default.nix new file mode 100644 index 0000000..edf7dd9 --- /dev/null +++ b/homes/julian/features/hyprland/waybar/default.nix @@ -0,0 +1,40 @@ +{ + options, + config, + pkgs, + lib, + inputs, + ... +}: +let + inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme}) + palette + ; +in +{ + 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}; + ''; +} diff --git a/modules/home-manager/hyprland/waybar/style.css b/homes/julian/features/hyprland/waybar/style.css similarity index 100% rename from modules/home-manager/hyprland/waybar/style.css rename to homes/julian/features/hyprland/waybar/style.css diff --git a/homes/julian/features/hyprland/wlogout/default.nix b/homes/julian/features/hyprland/wlogout/default.nix new file mode 100644 index 0000000..3c60e4a --- /dev/null +++ b/homes/julian/features/hyprland/wlogout/default.nix @@ -0,0 +1,40 @@ +{ + options, + config, + lib, + pkgs, + inputs, + ... +}: +let + inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme}) + palette + ; +in +{ + 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; + # } + # ''; +} diff --git a/modules/home-manager/hyprland/wofi/config b/homes/julian/features/hyprland/wofi/config similarity index 100% rename from modules/home-manager/hyprland/wofi/config rename to homes/julian/features/hyprland/wofi/config diff --git a/homes/julian/features/hyprland/wofi/default.nix b/homes/julian/features/hyprland/wofi/default.nix new file mode 100644 index 0000000..c0be24f --- /dev/null +++ b/homes/julian/features/hyprland/wofi/default.nix @@ -0,0 +1,87 @@ +{ + options, + config, + lib, + pkgs, + inputs, + ... +}: +let + inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme}) + palette + ; +in +{ + 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%; + } + ''; +} diff --git a/homes/julian/features/i3/default.nix b/homes/julian/features/i3/default.nix new file mode 100644 index 0000000..7abf45d --- /dev/null +++ b/homes/julian/features/i3/default.nix @@ -0,0 +1,52 @@ +{ + lib, + pkgs, + host, + ... +}: +{ + 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" ]; +} diff --git a/modules/home-manager/i3/i3-scrot.conf b/homes/julian/features/i3/i3-scrot.conf similarity index 100% rename from modules/home-manager/i3/i3-scrot.conf rename to homes/julian/features/i3/i3-scrot.conf diff --git a/modules/home-manager/i3/i3/config b/homes/julian/features/i3/i3/config similarity index 100% rename from modules/home-manager/i3/i3/config rename to homes/julian/features/i3/i3/config diff --git a/modules/home-manager/i3/i3/config-kardorf b/homes/julian/features/i3/i3/config-kardorf similarity index 100% rename from modules/home-manager/i3/i3/config-kardorf rename to homes/julian/features/i3/i3/config-kardorf diff --git a/modules/home-manager/i3/i3/manjaro-default-config b/homes/julian/features/i3/i3/manjaro-default-config similarity index 100% rename from modules/home-manager/i3/i3/manjaro-default-config rename to homes/julian/features/i3/i3/manjaro-default-config diff --git a/modules/home-manager/i3/i3/scripts/display-layoutpicker b/homes/julian/features/i3/i3/scripts/display-layoutpicker similarity index 100% rename from modules/home-manager/i3/i3/scripts/display-layoutpicker rename to homes/julian/features/i3/i3/scripts/display-layoutpicker diff --git a/modules/home-manager/i3/i3/scripts/display-toggle-mirror b/homes/julian/features/i3/i3/scripts/display-toggle-mirror similarity index 100% rename from modules/home-manager/i3/i3/scripts/display-toggle-mirror rename to homes/julian/features/i3/i3/scripts/display-toggle-mirror diff --git a/modules/home-manager/i3/i3/scripts/jupyter-calculator b/homes/julian/features/i3/i3/scripts/jupyter-calculator similarity index 100% rename from modules/home-manager/i3/i3/scripts/jupyter-calculator rename to homes/julian/features/i3/i3/scripts/jupyter-calculator diff --git a/modules/home-manager/i3/i3/scripts/mymatlab.sh b/homes/julian/features/i3/i3/scripts/mymatlab.sh similarity index 100% rename from modules/home-manager/i3/i3/scripts/mymatlab.sh rename to homes/julian/features/i3/i3/scripts/mymatlab.sh diff --git a/modules/home-manager/i3/i3/scripts/open-messaging b/homes/julian/features/i3/i3/scripts/open-messaging similarity index 100% rename from modules/home-manager/i3/i3/scripts/open-messaging rename to homes/julian/features/i3/i3/scripts/open-messaging diff --git a/modules/home-manager/i3/i3/scripts/pulse_popup b/homes/julian/features/i3/i3/scripts/pulse_popup similarity index 100% rename from modules/home-manager/i3/i3/scripts/pulse_popup rename to homes/julian/features/i3/i3/scripts/pulse_popup diff --git a/modules/home-manager/i3/i3/scripts/rofi_calc b/homes/julian/features/i3/i3/scripts/rofi_calc similarity index 100% rename from modules/home-manager/i3/i3/scripts/rofi_calc rename to homes/julian/features/i3/i3/scripts/rofi_calc diff --git a/modules/home-manager/i3/i3/scripts/setupZoom b/homes/julian/features/i3/i3/scripts/setupZoom similarity index 100% rename from modules/home-manager/i3/i3/scripts/setupZoom rename to homes/julian/features/i3/i3/scripts/setupZoom diff --git a/modules/home-manager/i3/i3/workspace-chat-element-tele.json b/homes/julian/features/i3/i3/workspace-chat-element-tele.json similarity index 100% rename from modules/home-manager/i3/i3/workspace-chat-element-tele.json rename to homes/julian/features/i3/i3/workspace-chat-element-tele.json diff --git a/modules/home-manager/i3/i3/workspace-chat-schildi-tele-rocket.json b/homes/julian/features/i3/i3/workspace-chat-schildi-tele-rocket.json similarity index 100% rename from modules/home-manager/i3/i3/workspace-chat-schildi-tele-rocket.json rename to homes/julian/features/i3/i3/workspace-chat-schildi-tele-rocket.json diff --git a/modules/home-manager/i3/i3/workspace-chat-schildi-tele.json b/homes/julian/features/i3/i3/workspace-chat-schildi-tele.json similarity index 100% rename from modules/home-manager/i3/i3/workspace-chat-schildi-tele.json rename to homes/julian/features/i3/i3/workspace-chat-schildi-tele.json diff --git a/modules/home-manager/i3/i3/workspace-zoom.json b/homes/julian/features/i3/i3/workspace-zoom.json similarity index 100% rename from modules/home-manager/i3/i3/workspace-zoom.json rename to homes/julian/features/i3/i3/workspace-zoom.json diff --git a/modules/home-manager/i3/i3status-rust/config.toml b/homes/julian/features/i3/i3status-rust/config.toml similarity index 100% rename from modules/home-manager/i3/i3status-rust/config.toml rename to homes/julian/features/i3/i3status-rust/config.toml diff --git a/homes/julian/features/kitty/default.nix b/homes/julian/features/kitty/default.nix new file mode 100644 index 0000000..1fe8f49 --- /dev/null +++ b/homes/julian/features/kitty/default.nix @@ -0,0 +1,29 @@ +{ + lib, + pkgs, + config, + ... +}: + +{ + 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 (config.terminal == "kitty") "kitty"; +} diff --git a/homes/julian/features/neovim/default.nix b/homes/julian/features/neovim/default.nix new file mode 100644 index 0000000..606cf6b --- /dev/null +++ b/homes/julian/features/neovim/default.nix @@ -0,0 +1,164 @@ +{ + lib, + pkgs, + inputs, + ... +}: + +{ + + imports = [ inputs.nixvim.homeManagerModules.nixvim ]; + + 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 = "Telescope live_grep"; + key = "/"; + } + { + action = "Telescope find_files"; + key = ""; + } + { + action = "Telescope file_browser"; + key = "."; + } + { + action = "Neogit"; + key = "gg"; + } + { + key = ""; + action = "lua require('conform').format()write"; + 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 = { + "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; + "" = "cmp.mapping.select_next_item()"; + "" = "cmp.mapping.select_prev_item()"; + "" = "cmp.mapping.abort()"; + "" = "cmp.mapping.confirm({ select = true })"; + }; + }; + + # Fuzzy finder + telescope = { + enable = true; + settings.defaults.mappings = { + i = { + "".__raw = "require('telescope.actions').move_selection_next"; + "".__raw = "require('telescope.actions').move_selection_previous"; + "".__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; + }; + }; + + }; + + }; +} diff --git a/homes/julian/features/nix-helper/default.nix b/homes/julian/features/nix-helper/default.nix new file mode 100644 index 0000000..2e01416 --- /dev/null +++ b/homes/julian/features/nix-helper/default.nix @@ -0,0 +1,18 @@ +{ + lib, + pkgs, + ... +}: + +{ + home.sessionVariables = { + FLAKE = "/home/julian/.dotfiles"; + }; + + home.shellAliases = { + "os" = "nh os switch"; + "hs" = "nh home switch"; + }; + + home.packages = with pkgs; [ nh ]; +} diff --git a/modules/home-manager/rofi/config.rasi b/homes/julian/features/rofi/config.rasi similarity index 100% rename from modules/home-manager/rofi/config.rasi rename to homes/julian/features/rofi/config.rasi diff --git a/homes/julian/features/rofi/default.nix b/homes/julian/features/rofi/default.nix new file mode 100644 index 0000000..30cc949 --- /dev/null +++ b/homes/julian/features/rofi/default.nix @@ -0,0 +1,16 @@ +{ + lib, + pkgs, + ... +}: + +{ + # 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; + }; +} diff --git a/homes/julian/features/suites/cli/default.nix b/homes/julian/features/suites/cli/default.nix new file mode 100644 index 0000000..245b9b1 --- /dev/null +++ b/homes/julian/features/suites/cli/default.nix @@ -0,0 +1,54 @@ +{ + pkgs, + ... +}: + +{ + 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 + ]; +} diff --git a/homes/julian/features/suites/desktop/default.nix b/homes/julian/features/suites/desktop/default.nix new file mode 100644 index 0000000..460311d --- /dev/null +++ b/homes/julian/features/suites/desktop/default.nix @@ -0,0 +1,72 @@ +{ + lib, + pkgs, + ... +}: + +{ + 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 + ]; +} diff --git a/homes/julian/features/suites/development/default.nix b/homes/julian/features/suites/development/default.nix new file mode 100644 index 0000000..69b7f32 --- /dev/null +++ b/homes/julian/features/suites/development/default.nix @@ -0,0 +1,85 @@ +{ + pkgs, + ... +}: + +{ + + 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 + '') + ]; +} diff --git a/homes/julian/features/topgrade/default.nix b/homes/julian/features/topgrade/default.nix new file mode 100644 index 0000000..c3f9558 --- /dev/null +++ b/homes/julian/features/topgrade/default.nix @@ -0,0 +1,29 @@ +{ + 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/*" + "~/.config/doom" + ]; + }; + }; + }; +} diff --git a/homes/julian/features/wezterm/default.nix b/homes/julian/features/wezterm/default.nix new file mode 100644 index 0000000..3cc621c --- /dev/null +++ b/homes/julian/features/wezterm/default.nix @@ -0,0 +1,36 @@ +{ + lib, + pkgs, + config, + ... +}: + +{ + 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 (config.terminal == "wezterm") "wezterm-start-here"; + + # Otherwise wezterm does not start in directory of parent process + home.packages = [ + (pkgs.writeShellScriptBin "wezterm-start-here" '' + wezterm start --cwd "$PWD" + '') + ]; +} diff --git a/homes/julian/features/yazi/default.nix b/homes/julian/features/yazi/default.nix new file mode 100644 index 0000000..9049bdb --- /dev/null +++ b/homes/julian/features/yazi/default.nix @@ -0,0 +1,91 @@ +{ + pkgs, + inputs, + ... +}: +{ + 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 = [ "" ]; + run = ''shell "$SHELL" --block --confirm''; + desc = "Open shell here"; + } + { + on = [ "" ]; + run = ''shell 'dragon -x -i -T "$1"' --confirm''; + desc = "Dragndrop via dragon"; + } + { + on = [ "" ]; + run = "plugin --sync smart-enter"; + desc = "Enter the child directory, or open the file"; + } + ]; + input.prepend_keymap = [ + { + on = [ "" ]; + 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"; + }; +} diff --git a/homes/julian/features/zsh/default.nix b/homes/julian/features/zsh/default.nix new file mode 100644 index 0000000..93b4d95 --- /dev/null +++ b/homes/julian/features/zsh/default.nix @@ -0,0 +1,45 @@ +{ + lib, + pkgs, + ... +}: +{ + 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 + ]; + }; + }; +} diff --git a/modules/home-manager/zsh/dir-navigation.zsh b/homes/julian/features/zsh/dir-navigation.zsh similarity index 100% rename from modules/home-manager/zsh/dir-navigation.zsh rename to homes/julian/features/zsh/dir-navigation.zsh diff --git a/modules/home-manager/zsh/functions.zsh b/homes/julian/features/zsh/functions.zsh similarity index 100% rename from modules/home-manager/zsh/functions.zsh rename to homes/julian/features/zsh/functions.zsh diff --git a/modules/home-manager/zsh/key-bindings.zsh b/homes/julian/features/zsh/key-bindings.zsh similarity index 100% rename from modules/home-manager/zsh/key-bindings.zsh rename to homes/julian/features/zsh/key-bindings.zsh diff --git a/modules/home-manager/zsh/last-working-dir.zsh b/homes/julian/features/zsh/last-working-dir.zsh similarity index 100% rename from modules/home-manager/zsh/last-working-dir.zsh rename to homes/julian/features/zsh/last-working-dir.zsh diff --git a/modules/home-manager/zsh/starship.toml b/homes/julian/features/zsh/starship.toml similarity index 100% rename from modules/home-manager/zsh/starship.toml rename to homes/julian/features/zsh/starship.toml diff --git a/homes/julian/global/default.nix b/homes/julian/global/default.nix new file mode 100644 index 0000000..ab866b7 --- /dev/null +++ b/homes/julian/global/default.nix @@ -0,0 +1,55 @@ +{ + inputs, + lib, + pkgs, + config, + outputs, + ... +}: +{ + imports = [ + ../features/cli + ../features/helix + ] ++ (builtins.attrValues outputs.homeManagerModules); + + nix = { + package = lib.mkDefault pkgs.nix; + settings = { + experimental-features = [ + "nix-command" + "flakes" + "ca-derivations" + ]; + # warn-dirty = false; # TODO: do I want it? also for systems + }; + }; + + # systemd.user.startServices = "sd-switch"; # TODO: what is this + + programs = { + home-manager.enable = true; + git.enable = true; + }; + + home = { + username = lib.mkDefault "julian"; + homeDirectory = lib.mkDefault "/home/${config.home.username}"; + stateVersion = lib.mkDefault "23.11"; + + sessionPath = [ "$HOME/.local/bin" ]; + sessionVariables = { + FLAKE = "$HOME/Documents/NixConfig"; + }; + }; + + # TODO: colorscheme + # colorscheme.mode = lib.mkOverride 1499 "dark"; + # specialisation = { + # dark.configuration.colorscheme.mode = lib.mkOverride 1498 "dark"; + # light.configuration.colorscheme.mode = lib.mkOverride 1498 "light"; + # }; + # home.file = { + # ".colorscheme.json".text = builtins.toJSON config.colorscheme; + # }; + +} diff --git a/homes/x86_64-linux/julian@aspi/mimeapps.nix b/homes/julian/global/mimeapps.nix similarity index 100% rename from homes/x86_64-linux/julian@aspi/mimeapps.nix rename to homes/julian/global/mimeapps.nix diff --git a/homes/x86_64-linux/julian@kardorf/default.nix b/homes/julian/kardorf.nix similarity index 100% rename from homes/x86_64-linux/julian@kardorf/default.nix rename to homes/julian/kardorf.nix diff --git a/homes/x86_64-linux/julian@pianonix/default.nix b/homes/julian/pianonix.nix similarity index 100% rename from homes/x86_64-linux/julian@pianonix/default.nix rename to homes/julian/pianonix.nix diff --git a/homes/x86_64-linux/julian@v3ms/default.nix b/homes/julian/v3ms/default.nix similarity index 100% rename from homes/x86_64-linux/julian@v3ms/default.nix rename to homes/julian/v3ms/default.nix diff --git a/homes/x86_64-linux/julian@v3ms/fonts.nix b/homes/julian/v3ms/fonts.nix similarity index 100% rename from homes/x86_64-linux/julian@v3ms/fonts.nix rename to homes/julian/v3ms/fonts.nix diff --git a/homes/x86_64-linux/julian@v3ms/packages.nix b/homes/julian/v3ms/packages.nix similarity index 100% rename from homes/x86_64-linux/julian@v3ms/packages.nix rename to homes/julian/v3ms/packages.nix diff --git a/homes/x86_64-linux/julian@aspi/default.nix b/homes/x86_64-linux/julian@aspi/default.nix deleted file mode 100644 index 1664b89..0000000 --- a/homes/x86_64-linux/julian@aspi/default.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - # 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. - home, # The home architecture for this host (eg. `x86_64-linux`). - target, # The Snowfall Lib target for this home (eg. `x86_64-home`). - format, # A normalized name for the home target (eg. `home`). - virtual, # A boolean to determine whether this home is a virtual target using nixos-generators. - host, # The host name for this home. - - # All other arguments come from the home home. - config, - ... -}: -{ - home.username = "julian"; - home.homeDirectory = "/home/julian"; - - modules = { - non-nixos.is-nixos = true; - shell = { - # zsh.enable = true; - fish.enable = true; - direnv.enable = true; - }; - topgrade.enable = true; - neovim.enable = true; - kitty = { - enable = true; - mkDefault = true; - }; - wezterm = { - enable = true; - mkDefault = false; - }; - alacritty = { - enable = true; - mkDefault = false; - }; - yazi.enable = true; - emacs.enable = true; - - i3.enable = true; - - # hyprland.enable = true; - nix-helper.enable = true; - - desktop.enable = true; - fonts.enable = true; - - suites = { - cli.enable = true; - desktop.enable = true; - development.enable = true; - }; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - - # ======================== DO NOT CHANGE THIS ======================== - home.stateVersion = "23.11"; - # ======================== DO NOT CHANGE THIS ======================== -} diff --git a/hosts/aspi/default.nix b/hosts/aspi/default.nix index b7eb407..a77fae7 100644 --- a/hosts/aspi/default.nix +++ b/hosts/aspi/default.nix @@ -1,22 +1,5 @@ { - # 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 system system. - config, ... }: { diff --git a/modules/home-manager/alacritty/default.nix b/modules/home-manager/alacritty/default.nix deleted file mode 100644 index 1b7850b..0000000 --- a/modules/home-manager/alacritty/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - # 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"; - }; -} diff --git a/modules/home-manager/colors.nix b/modules/home-manager/colors.nix new file mode 100644 index 0000000..2436c36 --- /dev/null +++ b/modules/home-manager/colors.nix @@ -0,0 +1,15 @@ +{ + lib, + ... +}: +let + inherit (lib) types mkOption; +in +{ + options.colorscheme = { + name = mkOption { + type = types.str; + default = "catppuccin-mocha"; + }; + }; +} diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix index 6924876..f2c1fb3 100644 --- a/modules/home-manager/default.nix +++ b/modules/home-manager/default.nix @@ -1,8 +1,6 @@ { fonts = import ./fonts.nix; monitors = import ./monitors.nix; - # pass-secret-service = import ./pass-secret-service.nix; - # wallpaper = import ./wallpaper.nix; - # xpo = import ./xpo.nix; - # colors = import ./colors.nix; + terminal = import ./terminal.nix; + colors = import ./colors.nix; } diff --git a/modules/home-manager/direnv/default.nix b/modules/home-manager/direnv/default.nix deleted file mode 100644 index a13f0de..0000000 --- a/modules/home-manager/direnv/default.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - # 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; - }; - }; -} diff --git a/modules/home-manager/emacs/default.nix b/modules/home-manager/emacs/default.nix deleted file mode 100644 index 2d1d70e..0000000 --- a/modules/home-manager/emacs/default.nix +++ /dev/null @@ -1,96 +0,0 @@ -{ - # 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 - ''; - }; -} diff --git a/modules/home-manager/fish/default.nix b/modules/home-manager/fish/default.nix deleted file mode 100644 index 1266cd5..0000000 --- a/modules/home-manager/fish/default.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ - # 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 - ''; - }; - }; - }; -} diff --git a/modules/home-manager/fonts/default.nix b/modules/home-manager/fonts/default.nix deleted file mode 100644 index 7f5de8e..0000000 --- a/modules/home-manager/fonts/default.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - # 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 - ]; - }; -} diff --git a/modules/home-manager/gammastep/default.nix b/modules/home-manager/gammastep/default.nix deleted file mode 100644 index 8c1759d..0000000 --- a/modules/home-manager/gammastep/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - # 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"; - }; - }; -} diff --git a/modules/home-manager/hyprland/default.nix b/modules/home-manager/hyprland/default.nix deleted file mode 100644 index 3a74e60..0000000 --- a/modules/home-manager/hyprland/default.nix +++ /dev/null @@ -1,311 +0,0 @@ -{ - # 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" ]; - }; - }; - }; - }; - }; -} diff --git a/modules/home-manager/hyprland/hyprlock/default.nix b/modules/home-manager/hyprland/hyprlock/default.nix deleted file mode 100644 index 0986013..0000000 --- a/modules/home-manager/hyprland/hyprlock/default.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ - 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..."; - } - ]; - }; - }; -} diff --git a/modules/home-manager/hyprland/mako/default.nix b/modules/home-manager/hyprland/mako/default.nix deleted file mode 100644 index 6ed4bf0..0000000 --- a/modules/home-manager/hyprland/mako/default.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - 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} - ''; - }; - }; -} diff --git a/modules/home-manager/hyprland/waybar/default.nix b/modules/home-manager/hyprland/waybar/default.nix deleted file mode 100644 index 4e14282..0000000 --- a/modules/home-manager/hyprland/waybar/default.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - 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}; - ''; - }; -} diff --git a/modules/home-manager/hyprland/wlogout/default.nix b/modules/home-manager/hyprland/wlogout/default.nix deleted file mode 100644 index a701a8c..0000000 --- a/modules/home-manager/hyprland/wlogout/default.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ - 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; - # } - # ''; - }; -} diff --git a/modules/home-manager/hyprland/wofi/default.nix b/modules/home-manager/hyprland/wofi/default.nix deleted file mode 100644 index e0fe6d4..0000000 --- a/modules/home-manager/hyprland/wofi/default.nix +++ /dev/null @@ -1,97 +0,0 @@ -{ - 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%; - } - ''; - }; -} diff --git a/modules/home-manager/i3/default.nix b/modules/home-manager/i3/default.nix deleted file mode 100644 index 7c59ce0..0000000 --- a/modules/home-manager/i3/default.nix +++ /dev/null @@ -1,79 +0,0 @@ -{ - # 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" ]; - }; -} diff --git a/modules/home-manager/kitty/default.nix b/modules/home-manager/kitty/default.nix deleted file mode 100644 index 48104d5..0000000 --- a/modules/home-manager/kitty/default.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ - # 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"; - }; -} diff --git a/modules/home-manager/neovim/default.nix b/modules/home-manager/neovim/default.nix deleted file mode 100644 index 0eb990a..0000000 --- a/modules/home-manager/neovim/default.nix +++ /dev/null @@ -1,186 +0,0 @@ -{ - # 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 = "Telescope live_grep"; - key = "/"; - } - { - action = "Telescope find_files"; - key = ""; - } - { - action = "Telescope file_browser"; - key = "."; - } - { - action = "Neogit"; - key = "gg"; - } - { - key = ""; - action = "lua require('conform').format()write"; - 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 = { - "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; - "" = "cmp.mapping.select_next_item()"; - "" = "cmp.mapping.select_prev_item()"; - "" = "cmp.mapping.abort()"; - "" = "cmp.mapping.confirm({ select = true })"; - }; - }; - - # Fuzzy finder - telescope = { - enable = true; - settings.defaults.mappings = { - i = { - "".__raw = "require('telescope.actions').move_selection_next"; - "".__raw = "require('telescope.actions').move_selection_previous"; - "".__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; - }; - }; - - }; - - }; - }; -} diff --git a/modules/home-manager/nix-helper/default.nix b/modules/home-manager/nix-helper/default.nix deleted file mode 100644 index 03b2283..0000000 --- a/modules/home-manager/nix-helper/default.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - # 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 ]; - }; -} diff --git a/modules/home-manager/non-nixos/default.nix b/modules/home-manager/non-nixos/default.nix deleted file mode 100644 index a3db1c4..0000000 --- a/modules/home-manager/non-nixos/default.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - # 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 { }; -} diff --git a/modules/home-manager/rofi/default.nix b/modules/home-manager/rofi/default.nix deleted file mode 100644 index 54bcf37..0000000 --- a/modules/home-manager/rofi/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ -# 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; }; - }; -} diff --git a/modules/home-manager/suites/cli/default.nix b/modules/home-manager/suites/cli/default.nix deleted file mode 100644 index b10ec69..0000000 --- a/modules/home-manager/suites/cli/default.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ - # 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 - ]; - }; -} diff --git a/modules/home-manager/suites/desktop/default.nix b/modules/home-manager/suites/desktop/default.nix deleted file mode 100644 index a299e35..0000000 --- a/modules/home-manager/suites/desktop/default.nix +++ /dev/null @@ -1,97 +0,0 @@ -{ - # 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 - ]; - }; -} diff --git a/modules/home-manager/suites/development/default.nix b/modules/home-manager/suites/development/default.nix deleted file mode 100644 index 0e2ba78..0000000 --- a/modules/home-manager/suites/development/default.nix +++ /dev/null @@ -1,110 +0,0 @@ -{ - # 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 - '') - ]; - }; -} diff --git a/modules/home-manager/terminal.nix b/modules/home-manager/terminal.nix new file mode 100644 index 0000000..3ebcb0d --- /dev/null +++ b/modules/home-manager/terminal.nix @@ -0,0 +1,14 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + options.terminal = lib.mkOption { + type = lib.types.str; + example = "alacritty"; + default = "alacritty"; + description = "The default terminal to use."; + }; +} diff --git a/modules/home-manager/topgrade/default.nix b/modules/home-manager/topgrade/default.nix deleted file mode 100644 index 228ebac..0000000 --- a/modules/home-manager/topgrade/default.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - # 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"; - }; - }; - }; - }; -} diff --git a/modules/home-manager/wezterm/default.nix b/modules/home-manager/wezterm/default.nix deleted file mode 100644 index e592c9d..0000000 --- a/modules/home-manager/wezterm/default.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - # 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" - '') - ]; - }; -} diff --git a/modules/home-manager/yazi/default.nix b/modules/home-manager/yazi/default.nix deleted file mode 100644 index f8d7c80..0000000 --- a/modules/home-manager/yazi/default.nix +++ /dev/null @@ -1,116 +0,0 @@ -{ - # 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 = [ "" ]; - run = ''shell "$SHELL" --block --confirm''; - desc = "Open shell here"; - } - { - on = [ "" ]; - run = ''shell 'dragon -x -i -T "$1"' --confirm''; - desc = "Dragndrop via dragon"; - } - { - on = [ "" ]; - run = "plugin --sync smart-enter"; - desc = "Enter the child directory, or open the file"; - } - ]; - input.prepend_keymap = [ - { - on = [ "" ]; - 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"; - }; - }; -} diff --git a/modules/home-manager/zsh/default.nix b/modules/home-manager/zsh/default.nix deleted file mode 100644 index 00de569..0000000 --- a/modules/home-manager/zsh/default.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ -# 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 - ]; - }; - }; - }; -}