diff --git a/hmModules/shell/default.nix b/hmModules/shell/default.nix index 23fc133..0ebeceb 100644 --- a/hmModules/shell/default.nix +++ b/hmModules/shell/default.nix @@ -15,157 +15,188 @@ nix-direnv.enable = true; }; - programs.exa = { - enable = true; - enableAliases = true; - }; + # programs.exa = { + # enable = false; + # enableAliases = true; + # }; - programs.fzf.enable = true; + # programs.fzf.enable = false; programs.vim.enable = true; - programs.command-not-found.enable = true; - - programs.starship = { + programs.ssh = { enable = true; - settings = { - character = { - success_symbol = "[👌](bold green)"; - error_symbol = "[🤌](bold red)"; - }; - nix_shell = { - symbol = "❄ "; - }; - }; + controlMaster = "auto"; + controlPersist = "10m"; }; + # programs.starship = { + # enable = false; + # settings = { + # character = { + # success_symbol = "[👌](bold green)"; + # error_symbol = "[🤌](bold red)"; + # }; + # nix_shell = { + # symbol = "❄ "; + # }; + # }; + # }; + # Playing with it sometimes - programs.nushell = { - enable = false; - configFile.text = '' - let carapace_completer = {|spans| - carapace $spans.0 nushell $spans | from json - } - let-env config = { - show_banner: false - ls: { - use_ls_colors: true # use the LS_COLORS environment variable to colorize output - clickable_links: true # enable or disable clickable links. Your terminal has to support links. - } - rm: { - always_trash: true # always act as if -t was given. Can be overridden with -p - } - cd: { - abbreviations: true # allows `cd s/o/f` to expand to `cd some/other/folder` - } - table: { - mode: compact # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other - index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column - trim: { - methodology: wrapping # wrapping or truncating - wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology - truncating_suffix: "..." # A suffix used by the 'truncating' methodology - } - } - history: { - max_size: 10000 # Session has to be reloaded for this to take effect - sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file - file_format: "plaintext" # "sqlite" or "plaintext" - } - completions: { - case_sensitive: false # set to true to enable case-sensitive completions - quick: true # set this to false to prevent auto-selecting completions when only one remains - partial: true # set this to false to prevent partial filling of the prompt - algorithm: "fuzzy" # prefix or fuzzy - external: { - enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up my be very slow - max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options - completer: $carapace_completer # check 'carapace_completer' above as an example - } - } - filesize: { - metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard) - format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, zb, zib, auto - } - buffer_editor: "${config.programs.helix.package}/bin/helix" - } - ''; + # programs.nushell = { + # enable = false; + # configFile.text = '' + # let carapace_completer = {|spans| + # carapace $spans.0 nushell $spans | from json + # } + # let-env config = { + # show_banner: false + # ls: { + # use_ls_colors: true # use the LS_COLORS environment variable to colorize output + # clickable_links: true # enable or disable clickable links. Your terminal has to support links. + # } + # rm: { + # always_trash: true # always act as if -t was given. Can be overridden with -p + # } + # cd: { + # abbreviations: true # allows `cd s/o/f` to expand to `cd some/other/folder` + # } + # table: { + # mode: compact # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other + # index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column + # trim: { + # methodology: wrapping # wrapping or truncating + # wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology + # truncating_suffix: "..." # A suffix used by the 'truncating' methodology + # } + # } + # history: { + # max_size: 10000 # Session has to be reloaded for this to take effect + # sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file + # file_format: "plaintext" # "sqlite" or "plaintext" + # } + # completions: { + # case_sensitive: false # set to true to enable case-sensitive completions + # quick: true # set this to false to prevent auto-selecting completions when only one remains + # partial: true # set this to false to prevent partial filling of the prompt + # algorithm: "fuzzy" # prefix or fuzzy + # external: { + # enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up my be very slow + # max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options + # completer: $carapace_completer # check 'carapace_completer' above as an example + # } + # } + # filesize: { + # metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard) + # format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, zb, zib, auto + # } + # buffer_editor: "${config.programs.helix.package}/bin/helix" + # } + # ''; + # }; + + xdg.configFile."dracula-theme" = { + target = "fish/themes/dracula.theme"; + source = let + theme = pkgs.fetchFromGitHub { + owner = "dracula"; + repo = "fish"; + rev = "269cd7d76d5104fdc2721db7b8848f6224bdf554"; + hash = "sha256-Hyq4EfSmWmxwCYhp3O8agr7VWFAflcUe8BUKh50fNfY="; + }; + in "${theme}/themes/Dracula\ Official.theme"; }; - programs.zsh = { + programs.fish = { enable = true; - enableAutosuggestions = true; - enableCompletion = true; - enableSyntaxHighlighting = true; - enableVteIntegration = true; - autocd = true; - oh-my-zsh = { - enable = true; - plugins = [ - "ag" - "cabal" - "colored-man-pages" - "colorize" - "command-not-found" - "fzf" - "git" - "nomad" - "pass" - "python" - "sudo" - "terraform" - "thefuck" - ]; - }; - plugins = [ - { - name = "fzf-tab"; - src = pkgs.fetchFromGitHub { - owner = "Aloxaf"; - repo = "fzf-tab"; - rev = "c2b4aa5ad2532cca91f23908ac7f00efb7ff09c9"; - sha256 = "sha256-gvZp8P3quOtcy1Xtt1LAW1cfZ/zCtnAmnWqcwrKel6w="; - }; - } - { - name = "fzf-tab"; - src = pkgs.fetchFromGitHub { - owner = "Aloxaf"; - repo = "fzf-tab"; - rev = "c2b4aa5ad2532cca91f23908ac7f00efb7ff09c9"; - sha256 = "sha256-gvZp8P3quOtcy1Xtt1LAW1cfZ/zCtnAmnWqcwrKel6w="; - }; - } - { - name = "fast-syntax-highlighting"; - src = pkgs.fetchFromGitHub { - owner = "zdharma-continuum"; - repo = "fast-syntax-highlighting"; - rev = "13d7b4e63468307b6dcb2dadf6150818f242cbff"; - sha256 = "sha256-AmsexwVombgVmRvl4O9Kd/WbnVJHPTXETxBv18PDHz4="; - }; - } - ]; + loginShellInit = '' + if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ] + exec dbus-run-session Hyprland + end + fish_config theme choose "dracula" + export CACHIX_AUTH_TOKEN=$(cat ${age.secrets.cachix-personal-token.path}) + ''; shellAliases = { "cat" = "bat"; "em" = "TERM=wezterm emacsclient -nw"; }; - loginExtra = "[[ -z $DISPLAY && $TTY = /dev/tty1 ]] && exec dbus-run-session Hyprland"; - envExtra = '' - # [ $TERM = "dumb" ] && unsetopt zle && PS1='$ ' # for Emacs TRAMP mode - ''; - initExtra = '' - export CACHIX_AUTH_TOKEN=$(cat ${age.secrets.cachix-personal-token.path}) - - # Don't enable VIM emulation when in Emacs - [[ -z $INSIDE_EMACS ]] && source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh - - # When enabling starship, home-manager add an `initExtra` rule to disable it when in Emacs but not with VTerm, - # since I use also `eat` besides `vterm` the following line is needed - [[ "$INSIDE_EMACS" =~ "eat" ]] && eval "$(${config.home.profileDirectory}/bin/starship init zsh)" - ''; }; + # programs.zsh = { + # enable = false; # Playing xswith fish at the moment + # enableAutosuggestions = true; + # enableCompletion = true; + # enableSyntaxHighlighting = true; + # enableVteIntegration = true; + # autocd = true; + # oh-my-zsh = { + # enable = true; + # plugins = [ + # "ag" + # "cabal" + # "colored-man-pages" + # "colorize" + # "command-not-found" + # "fzf" + # "git" + # "nomad" + # "pass" + # "python" + # "sudo" + # "terraform" + # "thefuck" + # ]; + # }; + # plugins = [ + # { + # name = "fzf-tab"; + # src = pkgs.fetchFromGitHub { + # owner = "Aloxaf"; + # repo = "fzf-tab"; + # rev = "c2b4aa5ad2532cca91f23908ac7f00efb7ff09c9"; + # sha256 = "sha256-gvZp8P3quOtcy1Xtt1LAW1cfZ/zCtnAmnWqcwrKel6w="; + # }; + # } + # { + # name = "fzf-tab"; + # src = pkgs.fetchFromGitHub { + # owner = "Aloxaf"; + # repo = "fzf-tab"; + # rev = "c2b4aa5ad2532cca91f23908ac7f00efb7ff09c9"; + # sha256 = "sha256-gvZp8P3quOtcy1Xtt1LAW1cfZ/zCtnAmnWqcwrKel6w="; + # }; + # } + # { + # name = "fast-syntax-highlighting"; + # src = pkgs.fetchFromGitHub { + # owner = "zdharma-continuum"; + # repo = "fast-syntax-highlighting"; + # rev = "13d7b4e63468307b6dcb2dadf6150818f242cbff"; + # sha256 = "sha256-AmsexwVombgVmRvl4O9Kd/WbnVJHPTXETxBv18PDHz4="; + # }; + # } + # ]; + # shellAliases = { + # "cat" = "bat"; + # "em" = "TERM=wezterm emacsclient -nw"; + # }; + # loginExtra = "[[ -z $DISPLAY && $TTY = /dev/tty1 ]] && exec dbus-run-session Hyprland"; + # envExtra = '' + # # [ $TERM = "dumb" ] && unsetopt zle && PS1='$ ' # for Emacs TRAMP mode + # ''; + # initExtra = '' + # export CACHIX_AUTH_TOKEN=$(cat ${age.secrets.cachix-personal-token.path}) + + # # Don't enable VIM emulation when in Emacs + # [[ -z $INSIDE_EMACS ]] && source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh + + # # When enabling starship, home-manager add an `initExtra` rule to disable it when in Emacs but not with VTerm, + # # since I use also `eat` besides `vterm` the following line is needed + # [[ "$INSIDE_EMACS" =~ "eat" ]] && eval "$(${config.home.profileDirectory}/bin/starship init zsh)" + # ''; + # }; + home.packages = with pkgs; [ thefuck htop-vim diff --git a/modules/ccr/default.nix b/modules/ccr/default.nix index 5a8eae0..cf781f8 100644 --- a/modules/ccr/default.nix +++ b/modules/ccr/default.nix @@ -14,7 +14,7 @@ modules = lib.mkOption { type = with lib.types; listOf str; - default = ["shell" "git" "nix-index"]; + default = []; }; packages = lib.mkOption { @@ -45,6 +45,7 @@ config = lib.mkIf config.ccr.enable { ccr.extraGroups = ["wheel" "fuse" "networkmanager" "dialout"]; + ccr.modules = ["shell" "git" "nix-index"]; users.users.ccr = { uid = 1000; @@ -52,11 +53,11 @@ description = "Andrea Ciceri"; isNormalUser = true; inherit (config.ccr) extraGroups; - shell = pkgs.zsh; + shell = pkgs.fish; openssh.authorizedKeys.keys = config.ccr.authorizedKeys; }; - programs.zsh.enable = true; + programs.fish.enable = true; services.getty.autologinUser = if config.ccr.autologin