diff options
Diffstat (limited to 'home/sadbeast/global')
-rw-r--r-- | home/sadbeast/global/default.nix | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/home/sadbeast/global/default.nix b/home/sadbeast/global/default.nix new file mode 100644 index 0000000..e811b6f --- /dev/null +++ b/home/sadbeast/global/default.nix @@ -0,0 +1,211 @@ +{ + inputs, + outputs, + lib, + config, + pkgs, + ... +}: { + # You can import other home-manager modules here + imports = [ + # If you want to use modules your own flake exports (from modules/home-manager): + # outputs.homeManagerModules.example + + # Or modules exported from other flakes (such as nix-colors): + # inputs.nix-colors.homeManagerModules.default + inputs.impermanence.nixosModules.home-manager.impermanence + + # You can also split up your configuration and import pieces of it here: + ../features/git.nix + ../features/gpg.nix + ../features/pass.nix + ../features/ssh.nix + ../features/vim.nix + ../features/zsh.nix + ]; + + nix = { + package = lib.mkDefault pkgs.nix; + settings = { + experimental-features = [ + "nix-command" + "flakes" + "ca-derivations" + ]; + warn-dirty = false; + }; + }; + + nixpkgs = { + overlays = [ + # Add overlays your own flake exports (from overlays and pkgs dir): + outputs.overlays.additions + # outputs.overlays.modifications + outputs.overlays.stable-packages + + # You can also add overlays exported from other flakes: + # neovim-nightly-overlay.overlays.default + + # Or define it inline, for example: + # (final: prev: { + # hi = final.hello.overrideAttrs (oldAttrs: { + # patches = [ ./change-hello-to-hi.patch ]; + # }); + # }) + ]; + + config = { + allowUnfree = true; + allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "joypixels" + ]; + joypixels.acceptLicense = true; + }; + }; + + home = { + username = "sadbeast"; + homeDirectory = "/home/${config.home.username}"; + }; + + programs = { + # browserpass = { + # enable = true; + # browsers = [ "firefox" ]; + # }; + + btop.enable = true; + fd.enable = true; + firefox = { + package = pkgs.wrapFirefox (pkgs.firefox-unwrapped.override {pipewireSupport = true;}) {}; + enable = true; + }; + gpg.enable = true; + home-manager.enable = true; + qutebrowser.enable = true; + ripgrep.enable = true; + starship.enable = true; + swaylock.enable = true; + + tmux = { + enable = true; + shortcut = "a"; + escapeTime = 0; + + plugins = with pkgs; [ + tmuxPlugins.better-mouse-mode + tmuxPlugins.pain-control + ]; + + extraConfig = '' + # https://old.reddit.com/r/tmux/comments/mesrci/tmux_2_doesnt_seem_to_use_256_colors/ + set -g default-terminal "xterm-256color" + set -ga terminal-overrides ",*256col*:Tc" + set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q' + set-environment -g COLORTERM "truecolor" + + # Mouse works as expected + set-option -g mouse on + # easy-to-remember split pane commands + bind | split-window -h -c "#{pane_current_path}" + bind - split-window -v -c "#{pane_current_path}" + bind c new-window -c "#{pane_current_path}" + ''; + }; + + direnv = { + enable = true; + enableZshIntegration = true; + nix-direnv.enable = true; + }; + + fzf = { + enable = true; + defaultCommand = "fd -H -E .git --type f"; + changeDirWidgetCommand = "fd --type d"; + fileWidgetCommand = "fd --type f"; + historyWidgetOptions = [ + "--sort" + "--exact" + ]; + }; + + keychain = { + enable = true; + enableZshIntegration = true; + keys = ["id_ed25519"]; + extraFlags = ["--quiet"]; + }; + }; + + home = { + packages = with pkgs; [ + httpie + jq + joypixels + sops + unzip + uxn + zig + ]; + + # persistence = { + # "${config.home.homeDirectory}" = { + # directories = [ + # { + # directory = "docs"; + # method = "symlink"; + # } + # { + # directory = "projects"; + # method = "symlink"; + # } + # { + # directory = ".local/share/qutebrowser"; + # method = "symlink"; + # } + # { + # directory = ".local/share/vim-lsp-settings"; + # method = "symlink"; + # } + # ".password-store" + # ".local/share/direnv" + # ".local/share/zsh" + # ".gnupg" + # ".ssh" + # ]; + # allowOther = true; + # }; + # }; + }; + + xdg.userDirs = let + homeDir = config.home.homeDirectory; + in { + enable = true; + createDirectories = false; + + desktop = "${homeDir}"; + documents = "${homeDir}/docs"; + download = "${homeDir}/downloads"; + pictures = "${homeDir}/pics"; + }; + + xdg.mimeApps = { + enable = true; + + defaultApplications = { + "text/html" = "org.qutebrowser.qutebrowser.desktop"; + "x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop"; + "x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop"; + "x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop"; + "x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop"; + }; + }; + + # Nicely reload system units when changing configs + systemd.user.startServices = "sd-switch"; + + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + home.stateVersion = "24.05"; +} |