commit dd089fe75cb60a09d57f3edcb5a8063ef88f9212 Author: Ryan Cao <70191398+ryanccn@users.noreply.github.com> Date: Wed Jul 19 23:36:58 2023 +0800 feat: initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3339148 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.DS_Store + +result* diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..e5c27f1 --- /dev/null +++ b/flake.lock @@ -0,0 +1,315 @@ +{ + "nodes": { + "agenix": { + "inputs": { + "darwin": "darwin", + "home-manager": "home-manager", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1689334118, + "narHash": "sha256-djk5AZv1yU84xlKFaVHqFWvH73U7kIRstXwUAnDJPsk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "0d8c5325fc81daf00532e3e26c6752f7bcde1143", + "type": "github" + }, + "original": { + "owner": "ryantm", + "repo": "agenix", + "type": "github" + } + }, + "attic": { + "inputs": { + "crane": "crane", + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1689457600, + "narHash": "sha256-1XLn2ZZMaqQx+Ys3eel5hQRkgUn3DeHcVb2JT8WYU0A=", + "owner": "zhaofengli", + "repo": "attic", + "rev": "4902d57f5dae8ec660ee9ee14c45c2192f9fe8b1", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "repo": "attic", + "type": "github" + } + }, + "catppuccin": { + "inputs": { + "flake-compat": "flake-compat_2", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1689265071, + "narHash": "sha256-B4N7GV34E2sTKp/vVjYtF1BQOTw/sB5t8lgEPSH7tKc=", + "owner": "Stonks3141", + "repo": "ctp-nix", + "rev": "60a1d9ba22324ad7f563290e454c898b10db954d", + "type": "github" + }, + "original": { + "owner": "Stonks3141", + "repo": "ctp-nix", + "type": "github" + } + }, + "crane": { + "inputs": { + "flake-compat": [ + "attic", + "flake-compat" + ], + "flake-utils": [ + "attic", + "flake-utils" + ], + "nixpkgs": [ + "attic", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1677892403, + "narHash": "sha256-/Wi0L1spSWLFj+UQxN3j0mPYMoc7ZoAujpUF/juFVII=", + "owner": "ipetkov", + "repo": "crane", + "rev": "105e27adb70a9890986b6d543a67761cbc1964a2", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "darwin": { + "inputs": { + "nixpkgs": [ + "agenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1673295039, + "narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "87b9d090ad39b25b2400029c64825fc2a8868943", + "type": "github" + }, + "original": { + "owner": "lnl7", + "ref": "master", + "repo": "nix-darwin", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "agenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1682203081, + "narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1689495092, + "narHash": "sha256-yZu2j5FpLZEPhJQQutMCPTxa1VMigLPabLYvLTq6ASM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "2f84579a70b8c74e5ebb37299a0c3ba279f09382", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1689516967, + "narHash": "sha256-sFAa33wkQHanmij/uhfGduIDK8z4dJAita/rK6u9pvE=", + "owner": "LnL7", + "repo": "nix-darwin", + "rev": "61662a63bfe1726588c1da6b412df86d8ca94d63", + "type": "github" + }, + "original": { + "owner": "LnL7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1685655444, + "narHash": "sha256-6EujQNAeaUkWvpEZZcVF8qSfQrNVWFNNGbUJxv/A5a8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e635192892f5abbc2289eaac3a73cdb249abaefd", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1685004253, + "narHash": "sha256-AbVL1nN/TDicUQ5wXZ8xdLERxz/eJr7+o8lqkIOVuaE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e01645c40b92d29f3ae76344a6d654986a91a91", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1689631193, + "narHash": "sha256-AGSkBZaiTODQc8eT1rZDrQIjtb8JtFwJ0wVPzArlrnM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "57695599bdc4f7bfe5d28cfa23f14b3d8bdf8a5f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "agenix": "agenix", + "attic": "attic", + "catppuccin": "catppuccin", + "home-manager": "home-manager_2", + "nix-darwin": "nix-darwin", + "nixpkgs": "nixpkgs_2" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "attic", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "attic", + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..e7d3e20 --- /dev/null +++ b/flake.nix @@ -0,0 +1,144 @@ +{ + description = "Ryan's MacBook Pro flake"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + nix-darwin.url = "github:LnL7/nix-darwin"; + nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; + + home-manager.url = "github:nix-community/home-manager"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + + attic.url = "github:zhaofengli/attic"; + attic.inputs.nixpkgs.follows = "nixpkgs"; + + agenix.url = "github:ryantm/agenix"; + agenix.inputs.nixpkgs.follows = "nixpkgs"; + + catppuccin.url = "github:Stonks3141/ctp-nix"; + }; + + outputs = { + self, + nix-darwin, + home-manager, + agenix, + attic, + catppuccin, + ... + }: let + configuration = {pkgs, ...}: { + environment.systemPackages = with pkgs; [ + nil + alejandra + attic-client + exa + pkgs."_1password" + age + pkgs.agenix + asciinema + bat + btop + ccache + ccacheWrapper + cloudflared + deno + direnv + doggo + doppler + du-dust + exa + exiftool + fd + ffmpeg + fish + flyctl + fnm + fzf + go + gh + git + git-lfs + gum + helix + hyperfine + jq + just + spicetify-cli + mkcert + nerdfix + opencv + bun + pipx + pscale + pyenv + railway + redis + silicon + starship + tealdeer + tokei + # ttfautohint + vhs + vivid + xh + zoxide + ]; + + services.nix-daemon.enable = true; + nix.package = pkgs.nix; + + nix.settings = { + experimental-features = "nix-command flakes"; + build-users-group = "nixbld"; + trusted-users = ["ryanccn"]; + auto-optimise-store = true; + extra-platforms = ["x86_64-darwin" "aarch64-darwin"]; + extra-sandbox-paths = ["/nix/var/cache/ccache"]; + }; + + nixpkgs = { + overlays = [ + attic.overlays.default + agenix.overlays.default + (import ./overlays/ccache-wrapper.nix) + ]; + + config.allowUnfree = true; + hostPlatform = "aarch64-darwin"; + }; + + programs.zsh.enable = true; + programs.fish.enable = true; + programs.fish.shellInit = '' + for p in /run/current-system/sw/bin + if not contains $p $fish_user_paths + set -g fish_user_paths $p $fish_user_paths + end + end + ''; + + system.stateVersion = 4; + }; + in { + darwinConfigurations.Ryans-MacBook-Pro = nix-darwin.lib.darwinSystem { + modules = [ + configuration + home-manager.darwinModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + nixpkgs.overlays = [attic.overlays.default]; + + users.users.ryanccn.home = "/Users/ryanccn"; + home-manager.users.ryanccn = import ./home.nix { + agenixModule = agenix.homeManagerModules.age; + ctpModule = catppuccin.homeManagerModules.catppuccin; + }; + } + ]; + }; + + darwinPackages = self.darwinConfigurations.Ryans-MacBook-Pro.pkgs; + }; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..39843dd --- /dev/null +++ b/home.nix @@ -0,0 +1,27 @@ +{ + agenixModule, + ctpModule, + ... +}: { + home.stateVersion = "23.05"; + imports = [ + agenixModule + ctpModule + ./programs/zsh.nix + ./programs/fish.nix + ./programs/starship.nix + ./programs/git.nix + ./programs/bat.nix + ./programs/helix.nix + ]; + + programs.home-manager.enable = true; + home.packages = []; + + catppuccin.flavour = "frappe"; + + age.secrets."attic.toml" = { + file = ./secrets/attic.toml.age; + path = "/Users/ryanccn/.config/attic/config.toml"; + }; +} diff --git a/justfile b/justfile new file mode 100644 index 0000000..9a76305 --- /dev/null +++ b/justfile @@ -0,0 +1,2 @@ +switch: + darwin-rebuild switch --flake . diff --git a/overlays/ccache-wrapper.nix b/overlays/ccache-wrapper.nix new file mode 100644 index 0000000..561dec2 --- /dev/null +++ b/overlays/ccache-wrapper.nix @@ -0,0 +1,25 @@ +(self: super: { + ccacheWrapper = super.ccacheWrapper.override { + extraConfig = '' + export CCACHE_COMPRESS=1 + export CCACHE_DIR="/nix/var/cache/ccache" + export CCACHE_UMASK=007 + if [ ! -d "$CCACHE_DIR" ]; then + echo "=====" + echo "Directory '$CCACHE_DIR' does not exist" + echo "Please create it with:" + echo " sudo mkdir -m0770 '$CCACHE_DIR'" + echo " sudo chown root:nixbld '$CCACHE_DIR'" + echo "=====" + exit 1 + fi + if [ ! -w "$CCACHE_DIR" ]; then + echo "=====" + echo "Directory '$CCACHE_DIR' is not accessible for user $(whoami)" + echo "Please verify its access permissions" + echo "=====" + exit 1 + fi + ''; + }; +}) diff --git a/programs/bat.nix b/programs/bat.nix new file mode 100644 index 0000000..ad2bdb2 --- /dev/null +++ b/programs/bat.nix @@ -0,0 +1,9 @@ +{...}: { + programs.bat = { + enable = true; + catppuccin.enable = true; + # config = { + # theme = "Catppuccin-frappe"; + # }; + }; +} diff --git a/programs/fish.nix b/programs/fish.nix new file mode 100644 index 0000000..7ed0644 --- /dev/null +++ b/programs/fish.nix @@ -0,0 +1,27 @@ +{...}: { + programs.fish = { + enable = true; + shellAbbrs = { + "vim" = "hx"; + "ls" = "exa --all --icons"; + "dig" = "doggo"; + + "glol" = "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'"; + "ghrvw" = "gh repo view --web"; + + "opr" = "op run --env-file=.env.1password --"; + "dr" = "doppler run --"; + + "dequarantine" = "xattr -d com.apple.quarantine"; + + "bcpa" = "brew cleanup --prune=all"; + "puil" = "pnpm update --interactive --latest"; + "pip-upgrade-all" = "pip --disable-pip-version-check list --outdated --format=json | python -c \"import json, sys; print('\n'.join([x['name'] for x in json.load(sys.stdin)]))\" | xargs -n1 pip install -U"; + }; + }; + + home.file.".config/fish/conf.d" = { + source = ./fish/conf.d; + recursive = true; + }; +} diff --git a/programs/fish/conf.d/01_basic_env.fish b/programs/fish/conf.d/01_basic_env.fish new file mode 100644 index 0000000..f01131f --- /dev/null +++ b/programs/fish/conf.d/01_basic_env.fish @@ -0,0 +1,6 @@ +# basic environment variables +set -x LANG en_US.UTF-8 +set -x EDITOR "hx" +set -x PAGER "less" +set -x LESS "-R" +set -x LS_COLORS "$(vivid generate catppuccin-frappe)" diff --git a/programs/fish/conf.d/02_tooling.fish b/programs/fish/conf.d/02_tooling.fish new file mode 100644 index 0000000..6d84011 --- /dev/null +++ b/programs/fish/conf.d/02_tooling.fish @@ -0,0 +1,51 @@ +# 1Password SSH +set -x SSH_AUTH_SOCK "$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" + +# Homebrew shell +set -x HOMEBREW_NO_ANALYTICS 1 +set -x HOMEBREW_CASK_OPTS "--require-sha" +set -x HOMEBREW_NO_INSECURE_REDIRECT 1 +set -x HOMEBREW_NO_EMOJI 1 +/opt/homebrew/bin/brew shellenv | source + +# ccache +fish_add_path "$(brew --prefix ccache)/libexec" + +# fnm shell env +fnm env --use-on-cd | source + +# pyenv +set -x PYENV_ROOT "$HOME/.pyenv" +set -x PATH "$PYENV_ROOT/bin:$PATH" +pyenv init - | source +set -x PIPX_DEFAULT_PYTHON "$HOME/.pyenv/shims/python" + +# cargo +fish_add_path "$HOME/.cargo/bin" +# deno +fish_add_path "$HOME/.deno/bin" + +# pnpm +set -x PNPM_HOME "$HOME/Library/pnpm" + +# disable telemetry +set -x NEXT_TELEMETRY_DISABLED 1 # Next.js +set -x CHECKPOINT_DISABLE 1 # Prisma +set -x DISABLE_TELEMETRY YES # diffusers + +# go +set -x GOPATH "$HOME/.go" +fish_add_path "$GOPATH/bin" + +# direnv +set -x DIRENV_LOG_FORMAT "" + +# docker +fish_add_path "$HOME/.docker/bin" +# local bin +fish_add_path "$HOME/.local/bin" +# nish +fish_add_path "$HOME/dev/nish/bin" + +# fish +set fish_greeting diff --git a/programs/fish/conf.d/99_interactive.fish b/programs/fish/conf.d/99_interactive.fish new file mode 100644 index 0000000..584f192 --- /dev/null +++ b/programs/fish/conf.d/99_interactive.fish @@ -0,0 +1,13 @@ +if status is-interactive + # starship + starship init fish | source + # zoxide + zoxide init fish | source + # direnv + direnv hook fish | source + + set -x FZF_DEFAULT_OPTS " \ +--color=bg+:#414559,bg:#303446,spinner:#f2d5cf,hl:#e78284 \ +--color=fg:#c6d0f5,header:#e78284,info:#ca9ee6,pointer:#f2d5cf \ +--color=marker:#f2d5cf,fg+:#c6d0f5,prompt:#ca9ee6,hl+:#e78284" +end diff --git a/programs/git.nix b/programs/git.nix new file mode 100644 index 0000000..1344c0d --- /dev/null +++ b/programs/git.nix @@ -0,0 +1,30 @@ +{pkgs, ...}: { + programs.git = { + enable = true; + package = pkgs.gitAndTools.gitFull; + + diff-so-fancy.enable = true; + ignores = [ + ".DS_Store" + ]; + + userName = "Ryan Cao"; + userEmail = "70191398+ryanccn@users.noreply.github.com"; + + extraConfig = { + user.signingkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM4VfgP5+HdCmM/VpTcW8jLKLyR8s0qqoIDXv7iTnWlR"; + init.defaultBranch = "main"; + + commit.gpgsign = true; + gpg.format = "ssh"; + "gpg \"ssh\"".program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"; + + push.autoSetupRemote = true; + }; + }; + + programs.gh = { + enable = true; + enableGitCredentialHelper = true; + }; +} diff --git a/programs/helix.nix b/programs/helix.nix new file mode 100644 index 0000000..964f416 --- /dev/null +++ b/programs/helix.nix @@ -0,0 +1,6 @@ +{...}: { + programs.helix = { + enable = true; + catppuccin.enable = true; + }; +} diff --git a/programs/starship.nix b/programs/starship.nix new file mode 100644 index 0000000..4f02878 --- /dev/null +++ b/programs/starship.nix @@ -0,0 +1,3 @@ +{...}: { + home.file.".config/starship.toml".source = ./starship/starship.toml; +} diff --git a/programs/starship/starship.toml b/programs/starship/starship.toml new file mode 100644 index 0000000..82ba079 --- /dev/null +++ b/programs/starship/starship.toml @@ -0,0 +1,145 @@ +"$schema" = 'https://starship.rs/config-schema.json' + +[character] +success_symbol = "[➜](bold green)" +error_symbol = "[➜](bold red)" + +[aws] +symbol = " " + +[buf] +symbol = " " + +[c] +symbol = " " + +[conda] +symbol = " " + +[dart] +symbol = " " + +[directory] +read_only = " 󰌾" + +[docker_context] +symbol = " " + +[elixir] +symbol = " " + +[elm] +symbol = " " + +[fossil_branch] +symbol = " " + +[git_branch] +symbol = " " + +[golang] +symbol = " " + +[guix_shell] +symbol = " " + +[haskell] +symbol = " " + +[haxe] +symbol = "⌘ " + +[hg_branch] +symbol = " " + +[hostname] +ssh_symbol = " " + +[java] +symbol = " " + +[julia] +symbol = " " + +[lua] +symbol = " " + +[memory_usage] +symbol = "󰍛 " + +[meson] +symbol = "󰔷 " + +[nim] +symbol = "󰆥 " + +[nix_shell] +symbol = " " + +[nodejs] +symbol = " " + +[os.symbols] +Alpaquita = " " +Alpine = " " +Amazon = " " +Android = " " +Arch = " " +Artix = " " +CentOS = " " +Debian = " " +DragonFly = " " +Emscripten = " " +EndeavourOS = " " +Fedora = " " +FreeBSD = " " +Garuda = "󰛓 " +Gentoo = " " +HardenedBSD = "󰞌 " +Illumos = "󰈸 " +Linux = " " +Mabox = " " +Macos = " " +Manjaro = " " +Mariner = " " +MidnightBSD = " " +Mint = " " +NetBSD = " " +NixOS = " " +OpenBSD = "󰈺 " +openSUSE = " " +OracleLinux = "󰌷 " +Pop = " " +Raspbian = " " +Redhat = " " +RedHatEnterprise = " " +Redox = " " +Solus = "󰠳 " +SUSE = " " +Ubuntu = " " +Unknown = " " +Windows = "󰍲 " + +[package] +symbol = "󰏗 " + +[pijul_channel] +symbol = "🪺 " + +[python] +symbol = " " + +[rlang] +symbol = "󰟔 " + +[ruby] +symbol = " " + +[rust] +symbol = " " + +[scala] +symbol = " " + +[spack] +symbol = "🅢 " diff --git a/programs/zsh.nix b/programs/zsh.nix new file mode 100644 index 0000000..24f7ccc --- /dev/null +++ b/programs/zsh.nix @@ -0,0 +1,40 @@ +{pkgs, ...}: { + programs.zsh = { + enable = true; + enableAutosuggestions = true; + enableCompletion = true; + dotDir = ".config/zsh"; + + syntaxHighlighting.enable = true; + + envExtra = builtins.readFile ./zsh/envExtra.zsh; + initExtraBeforeCompInit = builtins.readFile ./zsh/initExtraBeforeCompInit.zsh; + initExtra = builtins.readFile ./zsh/initExtra.zsh; + + localVariables = { + vivid_theme = "catppuccin-macchiato"; + }; + + plugins = [ + { + name = "ohmyzsh-macos"; + file = "plugins/macos.zsh"; + src = pkgs.fetchFromGitHub { + owner = "ohmyzsh"; + repo = "ohmyzsh"; + rev = "c4392a4da31efee36f29a62d3951d5c0fcd7d4e6"; + sha256 = "sha256-cMJCmhtcCAVDFgp6Ryv/5DteSRtwNcemO97as8ill8I="; + }; + } + { + name = "vivid-zsh"; + src = pkgs.fetchFromGitHub { + owner = "ryanccn"; + repo = "vivid-zsh"; + rev = "a76616c87821e96ae0cbdfb6bf897bffc170a283"; + sha256 = "sha256-E00xQMCmOt6fJ+IO/TrpFvskNa9QnDw/6DKR51T7i+8="; + }; + } + ]; + }; +} diff --git a/programs/zsh/envExtra.zsh b/programs/zsh/envExtra.zsh new file mode 100644 index 0000000..817b4dd --- /dev/null +++ b/programs/zsh/envExtra.zsh @@ -0,0 +1,52 @@ +# 1Password SSH +export SSH_AUTH_SOCK="$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" + +# Homebrew shell +export HOMEBREW_NO_ANALYTICS=1 +export HOMEBREW_CASK_OPTS=--require-sha +export HOMEBREW_NO_INSECURE_REDIRECT=1 +export HOMEBREW_NO_EMOJI=1 +eval "$(/opt/homebrew/bin/brew shellenv)" + +# ccache +export PATH="$(brew --prefix ccache)/libexec:$PATH" + +# fnm shell env +eval "$(fnm env --use-on-cd)" + +# pyenv +export PYENV_ROOT="$HOME/.pyenv" +command -v pyenv > /dev/null || export PATH="$PYENV_ROOT/bin:$PATH" +eval "$(pyenv init -)" +export PIPX_DEFAULT_PYTHON="$HOME/.pyenv/shims/python" + +# cargo +source "$HOME/.cargo/env" + +# deno +export PATH="$HOME/.deno/bin:$PATH" + +# pnpm +export PNPM_HOME="''${HOME}/Library/pnpm" +export PATH="$PNPM_HOME:$PATH" + +# disable telemetry +export NEXT_TELEMETRY_DISABLED=1 # Next.js +export CHECKPOINT_DISABLE=1 # Prisma +export DISABLE_TELEMETRY=YES # diffusers + +# go +export GOPATH="$HOME/.go" +export PATH="$GOPATH/bin:$PATH" + +# direnv +export DIRENV_LOG_FORMAT="" + +# docker +export PATH="$HOME/.docker/bin:$PATH" + +# local bin +export PATH="$HOME/.local/bin:$PATH" + +# nish +export PATH="$HOME/dev/nish/bin:$PATH" diff --git a/programs/zsh/initExtra.zsh b/programs/zsh/initExtra.zsh new file mode 100644 index 0000000..4f011fd --- /dev/null +++ b/programs/zsh/initExtra.zsh @@ -0,0 +1,75 @@ +# environment variables +export LANG=en_US.UTF-8 + +export EDITOR="hx" +export PAGER="less" +export LESS="-R" + +export FZF_DEFAULT_OPTS=" \ +--color=bg+:#414559,bg:#303446,spinner:#f2d5cf,hl:#e78284 \ +--color=fg:#c6d0f5,header:#e78284,info:#ca9ee6,pointer:#f2d5cf \ +--color=marker:#f2d5cf,fg+:#c6d0f5,prompt:#ca9ee6,hl+:#e78284" + +# zsh options +setopt interactivecomments +unsetopt menu_complete +unsetopt flowcontrol +setopt auto_menu +setopt complete_in_word +setopt always_to_end + +[ -f "$HOME/.config/tabtab/zsh/__tabtab.zsh" ] && . "$HOME/.config/tabtab/zsh/__tabtab.zsh" || true + +# configure completion styles +zstyle ':completion:*' menu select +zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" + +zstyle ':completion:*' group-name \'\' + +# aliases +alias vim="hx" +alias ls="exa --all --icons" +alias dig="doggo" + +alias glol="git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'" +alias ghrvw="gh repo view --web" + +alias opr="op run --env-file=.env.1password --" +alias dr="doppler run --" + +alias dequarantine="xattr -d com.apple.quarantine" + +alias bcpa="brew cleanup --prune=all" +alias puil="pnpm update --interactive --latest" +alias pip-upgrade-all="pip --disable-pip-version-check list --outdated --format=json | python -c \"import json, sys; print('\n'.join([x['name'] for x in json.load(sys.stdin)]))\" | xargs -n1 pip install -U" + +function take() { + mkdir "$1" + cd "$1" || return 1 +} + +function clean_vscode_workspace_storage() { + for i in "$HOME/Library/Application Support/Code/User/workspaceStorage/"*; do + if [ -f $i/workspace.json ]; then + older="$(python3 -c "import sys, json; print(json.load(open(sys.argv[1], 'r'))['folder'])" $i/workspace.json 2>/dev/null | sed 's#^file://##;s/+/ /g;s/%\(..\)/\\x\1/g;')"; + if [ -n "$folder" ] && [ ! -d "$folder" ]; then + echo "Removing workspace $(basename $i) for deleted folder $folder of size $(du -sh $i|cut -f1)"; rm -rfv "$i"; + fi + fi + done +} + +# starship +eval "$(starship init zsh)" + +# fzf +# [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh + +# zoxide +eval "$(zoxide init zsh)" + +# direnv +command -v direnv &> /dev/null && eval "$(direnv hook zsh)" + +# iTerm +[ -e "$HOME/.iterm2_shell_integration.zsh" ] && source "$HOME/.iterm2_shell_integration.zsh" diff --git a/programs/zsh/initExtraBeforeCompInit.zsh b/programs/zsh/initExtraBeforeCompInit.zsh new file mode 100644 index 0000000..1e1b5d8 --- /dev/null +++ b/programs/zsh/initExtraBeforeCompInit.zsh @@ -0,0 +1,5 @@ +if command -v brew &>/dev/null +then + FPATH="$(brew --prefix)/share/zsh/site-functions:$FPATH" +fi +FPATH="$HOME/.zfunc:$FPATH" diff --git a/secrets/attic.toml.age b/secrets/attic.toml.age new file mode 100644 index 0000000..76d4196 Binary files /dev/null and b/secrets/attic.toml.age differ diff --git a/secrets/secrets.nix b/secrets/secrets.nix new file mode 100644 index 0000000..50de440 --- /dev/null +++ b/secrets/secrets.nix @@ -0,0 +1,5 @@ +let + main = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFthNLv08xufLf09hObm+COlDdYDL4WuH9f+PZm54M3I"; +in { + "attic.toml.age".publicKeys = [main]; +}