My nixos configuration

Compare changes

Choose any two refs to compare.

Changed files
+4118 -6355
.github
checks
home
nixos
npins
packages
parts
secrets
+47 -46
.github/workflows/flake-update.yml
··· 7 8 jobs: 9 generate_matrix: 10 - runs-on: ubuntu-20.04 11 outputs: 12 packages: ${{ steps.gen_packages.outputs.packages }} 13 checks: ${{ steps.gen_checks.outputs.checks }} 14 steps: 15 - name: Clone repository 16 - uses: actions/checkout@v3 17 with: 18 - token: "${{ secrets.GITHUB_TOKEN }}" 19 - name: Install nix 20 - uses: cachix/install-nix-action@v20 21 with: 22 extra_nix_config: | 23 auto-optimise-store = true 24 - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} 25 experimental-features = nix-command flakes 26 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 27 trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= 28 - install_url: https://releases.nixos.org/nix/nix-2.12.0/install 29 - name: Generate flake.json 30 run: | 31 nix flake show --json > flake.json ··· 39 printf "::set-output name=checks::%s" "$checks" 40 41 update_flake: 42 - runs-on: ubuntu-20.04 43 steps: 44 - name: Clone repository 45 - uses: actions/checkout@v3 46 with: 47 - token: "${{ secrets.GITHUB_TOKEN }}" 48 - name: Install nix 49 - uses: cachix/install-nix-action@v20 50 with: 51 extra_nix_config: | 52 auto-optimise-store = true 53 - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} 54 experimental-features = nix-command flakes 55 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 56 trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= 57 - install_url: https://releases.nixos.org/nix/nix-2.12.0/install 58 - name: Set up git 59 run: | 60 git config user.email gitbot@nobbz.dev ··· 62 - name: Update the flake 63 run: nix flake update 64 - name: Store flake.lock 65 - uses: actions/upload-artifact@v3 66 with: 67 name: flake_lock 68 path: flake.lock 69 70 build_flake: 71 - runs-on: ubuntu-20.04 72 needs: [generate_matrix, update_flake] 73 strategy: 74 fail-fast: false ··· 78 steps: 79 # - name: Prepare store folder 80 # run: sudo mkdir -p /nix 81 - # - name: Free diskspace 82 - # uses: easimon/maximize-build-space@master 83 - # with: 84 - # build-mount-path: /nix 85 - # remove-dotnet: true 86 - # remove-android: true 87 - # remove-haskell: true 88 - name: Clone repository 89 - uses: actions/checkout@v3 90 with: 91 - token: "${{ secrets.GITHUB_TOKEN }}" 92 - name: Install nix 93 - uses: cachix/install-nix-action@v20 94 with: 95 extra_nix_config: | 96 auto-optimise-store = true 97 - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} 98 experimental-features = nix-command flakes 99 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 100 trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= 101 - install_url: https://releases.nixos.org/nix/nix-2.12.0/install 102 - name: Set up cachix 103 uses: cachix/cachix-action@master # pathsToPush, please update once we have v11! 104 with: ··· 106 signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}" 107 pathsToPush: result 108 - name: Restore flake.lock 109 - uses: actions/download-artifact@v3 110 with: 111 name: flake_lock 112 - name: Build everything 113 run: nix build .#${{ matrix.package }} 114 115 build_checks: 116 - runs-on: ubuntu-20.04 117 needs: [generate_matrix, update_flake] 118 strategy: 119 fail-fast: false ··· 122 check: ${{fromJson(needs.generate_matrix.outputs.checks)}} 123 steps: 124 - name: Clone repository 125 - uses: actions/checkout@v3 126 with: 127 - token: "${{ secrets.GITHUB_TOKEN }}" 128 - name: Install nix 129 - uses: cachix/install-nix-action@v20 130 with: 131 extra_nix_config: | 132 auto-optimise-store = true 133 - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} 134 experimental-features = nix-command flakes 135 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 136 trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= 137 - install_url: https://releases.nixos.org/nix/nix-2.12.0/install 138 - name: Set up cachix 139 uses: cachix/cachix-action@master # pathsToPush, please update once we have v11! 140 with: ··· 142 signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}" 143 skipPush: true 144 - name: Restore flake.lock 145 - uses: actions/download-artifact@v3 146 with: 147 name: flake_lock 148 - name: Build everything 149 run: nix build .#checks.x86_64-linux.${{ matrix.check }} --no-link 150 151 check_flake: 152 - runs-on: ubuntu-20.04 153 needs: [update_flake] 154 continue-on-error: true 155 steps: 156 - name: Clone repository 157 - uses: actions/checkout@v3 158 with: 159 - token: "${{ secrets.GITHUB_TOKEN }}" 160 - name: Install nix 161 - uses: cachix/install-nix-action@v20 162 with: 163 extra_nix_config: | 164 auto-optimise-store = true 165 - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} 166 experimental-features = nix-command flakes 167 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 168 trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= 169 - install_url: https://releases.nixos.org/nix/nix-2.12.0/install 170 - name: Restore flake.lock 171 - uses: actions/download-artifact@v3 172 with: 173 name: flake_lock 174 - name: Build everything ··· 176 nix flake check --keep-going 177 178 push_update: 179 - runs-on: ubuntu-20.04 180 permissions: write-all 181 needs: [update_flake, build_flake, build_checks, check_flake] 182 steps: 183 - name: Clone repository 184 - uses: actions/checkout@v3 185 with: 186 - token: "${{ secrets.GITHUB_TOKEN }}" 187 - name: Restore flake.lock 188 - uses: actions/download-artifact@v3 189 with: 190 name: flake_lock 191 - name: Set up git ··· 206 --title "Auto update $(date -I)") 207 gh pr merge $PR --merge --delete-branch 208 env: 209 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
··· 7 8 jobs: 9 generate_matrix: 10 + runs-on: ubuntu-24.04 11 outputs: 12 packages: ${{ steps.gen_packages.outputs.packages }} 13 checks: ${{ steps.gen_checks.outputs.checks }} 14 steps: 15 - name: Clone repository 16 + uses: actions/checkout@v4 17 with: 18 + token: "${{ secrets.TEST_TOKEN }}" 19 - name: Install nix 20 + uses: cachix/install-nix-action@v31 21 with: 22 extra_nix_config: | 23 auto-optimise-store = true 24 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 25 experimental-features = nix-command flakes 26 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 27 trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= 28 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 29 - name: Generate flake.json 30 run: | 31 nix flake show --json > flake.json ··· 39 printf "::set-output name=checks::%s" "$checks" 40 41 update_flake: 42 + runs-on: ubuntu-24.04 43 steps: 44 - name: Clone repository 45 + uses: actions/checkout@v4 46 with: 47 + token: "${{ secrets.TEST_TOKEN }}" 48 - name: Install nix 49 + uses: cachix/install-nix-action@v31 50 with: 51 extra_nix_config: | 52 auto-optimise-store = true 53 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 54 experimental-features = nix-command flakes 55 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 56 trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= 57 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 58 - name: Set up git 59 run: | 60 git config user.email gitbot@nobbz.dev ··· 62 - name: Update the flake 63 run: nix flake update 64 - name: Store flake.lock 65 + uses: actions/upload-artifact@v4 66 with: 67 name: flake_lock 68 path: flake.lock 69 70 build_flake: 71 + runs-on: ubuntu-24.04 72 needs: [generate_matrix, update_flake] 73 strategy: 74 fail-fast: false ··· 78 steps: 79 # - name: Prepare store folder 80 # run: sudo mkdir -p /nix 81 + - name: Free diskspace 82 + uses: easimon/maximize-build-space@master 83 + with: 84 + build-mount-path: /nix 85 + root-reserve-mb: 5120 86 + remove-dotnet: true 87 + remove-android: true 88 + remove-haskell: true 89 - name: Clone repository 90 + uses: actions/checkout@v4 91 with: 92 + token: "${{ secrets.TEST_TOKEN }}" 93 - name: Install nix 94 + uses: cachix/install-nix-action@v31 95 with: 96 extra_nix_config: | 97 auto-optimise-store = true 98 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 99 experimental-features = nix-command flakes 100 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 101 trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= 102 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 103 - name: Set up cachix 104 uses: cachix/cachix-action@master # pathsToPush, please update once we have v11! 105 with: ··· 107 signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}" 108 pathsToPush: result 109 - name: Restore flake.lock 110 + uses: actions/download-artifact@v4 111 with: 112 name: flake_lock 113 - name: Build everything 114 run: nix build .#${{ matrix.package }} 115 116 build_checks: 117 + runs-on: ubuntu-24.04 118 needs: [generate_matrix, update_flake] 119 strategy: 120 fail-fast: false ··· 123 check: ${{fromJson(needs.generate_matrix.outputs.checks)}} 124 steps: 125 - name: Clone repository 126 + uses: actions/checkout@v4 127 with: 128 + token: "${{ secrets.TEST_TOKEN }}" 129 - name: Install nix 130 + uses: cachix/install-nix-action@v31 131 with: 132 extra_nix_config: | 133 auto-optimise-store = true 134 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 135 experimental-features = nix-command flakes 136 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 137 trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= 138 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 139 - name: Set up cachix 140 uses: cachix/cachix-action@master # pathsToPush, please update once we have v11! 141 with: ··· 143 signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}" 144 skipPush: true 145 - name: Restore flake.lock 146 + uses: actions/download-artifact@v4 147 with: 148 name: flake_lock 149 - name: Build everything 150 run: nix build .#checks.x86_64-linux.${{ matrix.check }} --no-link 151 152 check_flake: 153 + runs-on: ubuntu-24.04 154 needs: [update_flake] 155 continue-on-error: true 156 steps: 157 - name: Clone repository 158 + uses: actions/checkout@v4 159 with: 160 + token: "${{ secrets.TEST_TOKEN }}" 161 - name: Install nix 162 + uses: cachix/install-nix-action@v31 163 with: 164 extra_nix_config: | 165 auto-optimise-store = true 166 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 167 experimental-features = nix-command flakes 168 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 169 trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= 170 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 171 - name: Restore flake.lock 172 + uses: actions/download-artifact@v4 173 with: 174 name: flake_lock 175 - name: Build everything ··· 177 nix flake check --keep-going 178 179 push_update: 180 + runs-on: ubuntu-24.04 181 permissions: write-all 182 needs: [update_flake, build_flake, build_checks, check_flake] 183 steps: 184 - name: Clone repository 185 + uses: actions/checkout@v4 186 with: 187 + token: "${{ secrets.TEST_TOKEN }}" 188 - name: Restore flake.lock 189 + uses: actions/download-artifact@v4 190 with: 191 name: flake_lock 192 - name: Set up git ··· 207 --title "Auto update $(date -I)") 208 gh pr merge $PR --merge --delete-branch 209 env: 210 + GITHUB_TOKEN: ${{ secrets.TEST_TOKEN }}
+119
.github/workflows/pull-check.yml
···
··· 1 + name: PullRequest checker 2 + 3 + on: 4 + pull_request: 5 + 6 + jobs: 7 + generate_matrix: 8 + runs-on: ubuntu-24.04 9 + outputs: 10 + packages: ${{ steps.gen_packages.outputs.packages }} 11 + checks: ${{ steps.gen_checks.outputs.checks }} 12 + steps: 13 + - name: Clone repository 14 + uses: actions/checkout@v4 15 + with: 16 + token: "${{ secrets.TEST_TOKEN }}" 17 + - name: Install nix 18 + uses: cachix/install-nix-action@v31 19 + with: 20 + extra_nix_config: | 21 + auto-optimise-store = true 22 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 23 + experimental-features = nix-command flakes 24 + substituters = https://cache.nixos.org/ https://nix-community.cachix.org https://nobbz.cachix.org 25 + trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= nobbz.cachix.org-1:fODxpqE4ni+pFDSuj2ybYZbMUjmxNTjA7rtUNHW61Ok= 26 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 27 + - name: Generate flake.json 28 + run: | 29 + nix flake show --json > flake.json 30 + - id: gen_packages 31 + run: | 32 + packages=$(jq -c '.packages."x86_64-linux" | keys' < flake.json) 33 + printf "packages=%s" "$packages" >> $GITHUB_OUTPUT 34 + - id: gen_checks 35 + run: | 36 + checks=$(jq -c '.checks."x86_64-linux" | keys' < flake.json) 37 + printf "checks=%s" "$checks" >> $GITHUB_OUTPUT 38 + 39 + build_flake: 40 + runs-on: ubuntu-24.04 41 + needs: [generate_matrix] 42 + strategy: 43 + fail-fast: false 44 + max-parallel: 5 45 + matrix: 46 + package: ${{fromJson(needs.generate_matrix.outputs.packages)}} 47 + steps: 48 + - name: Free diskspace 49 + uses: easimon/maximize-build-space@master 50 + with: 51 + build-mount-path: /nix 52 + root-reserve-mb: 5120 53 + remove-dotnet: true 54 + remove-android: true 55 + remove-haskell: true 56 + - name: Clone repository 57 + uses: actions/checkout@v4 58 + with: 59 + token: "${{ secrets.TEST_TOKEN }}" 60 + - name: Install nix 61 + uses: cachix/install-nix-action@v31 62 + with: 63 + extra_nix_config: | 64 + auto-optimise-store = true 65 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 66 + experimental-features = nix-command flakes 67 + substituters = https://cache.nixos.org/ https://nix-community.cachix.org https://nobbz.cachix.org 68 + trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= nobbz.cachix.org-1:fODxpqE4ni+pFDSuj2ybYZbMUjmxNTjA7rtUNHW61Ok= 69 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 70 + - name: Build everything 71 + run: nix build .#${{ matrix.package }} 72 + 73 + build_checks: 74 + runs-on: ubuntu-24.04 75 + needs: [generate_matrix] 76 + strategy: 77 + fail-fast: false 78 + max-parallel: 5 79 + matrix: 80 + check: ${{fromJson(needs.generate_matrix.outputs.checks)}} 81 + steps: 82 + - name: Clone repository 83 + uses: actions/checkout@v4 84 + with: 85 + token: "${{ secrets.TEST_TOKEN }}" 86 + - name: Install nix 87 + uses: cachix/install-nix-action@v31 88 + with: 89 + extra_nix_config: | 90 + auto-optimise-store = true 91 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 92 + experimental-features = nix-command flakes 93 + substituters = https://cache.nixos.org/ https://nix-community.cachix.org https://nobbz.cachix.org 94 + trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= nobbz.cachix.org-1:fODxpqE4ni+pFDSuj2ybYZbMUjmxNTjA7rtUNHW61Ok= 95 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 96 + - name: Build everything 97 + run: nix build .#checks.x86_64-linux.${{ matrix.check }} --no-link 98 + 99 + check_flake: 100 + runs-on: ubuntu-24.04 101 + continue-on-error: true 102 + steps: 103 + - name: Clone repository 104 + uses: actions/checkout@v4 105 + with: 106 + token: "${{ secrets.TEST_TOKEN }}" 107 + - name: Install nix 108 + uses: cachix/install-nix-action@v31 109 + with: 110 + extra_nix_config: | 111 + auto-optimise-store = true 112 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 113 + experimental-features = nix-command flakes 114 + substituters = https://cache.nixos.org/ https://nix-community.cachix.org https://nobbz.cachix.org 115 + trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= nobbz.cachix.org-1:fODxpqE4ni+pFDSuj2ybYZbMUjmxNTjA7rtUNHW61Ok= 116 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 117 + - name: run the checks 118 + run: | 119 + nix flake check --keep-going
+12
.sops.yaml
··· 2 - &admin_nobbz age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 3 - &host_mimas age10jl78vwyqk622dpn2890l9jl4et3p7lsr8wh8vusem3j8jdxle8qg000qa 4 - &user_nmelzer_mimas age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6 5 creation_rules: 6 - path_regex: secrets/[^/]+\.yaml$ 7 key_groups: ··· 18 - age: 19 - *admin_nobbz 20 - *user_nmelzer_mimas
··· 2 - &admin_nobbz age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 3 - &host_mimas age10jl78vwyqk622dpn2890l9jl4et3p7lsr8wh8vusem3j8jdxle8qg000qa 4 - &user_nmelzer_mimas age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6 5 + - &user_nmelzer_phoebe age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna 6 creation_rules: 7 - path_regex: secrets/[^/]+\.yaml$ 8 key_groups: ··· 19 - age: 20 - *admin_nobbz 21 - *user_nmelzer_mimas 22 + - path_regex: secrets/phoebe/nmelzer/[^/]+ 23 + key_groups: 24 + - age: 25 + - *admin_nobbz 26 + - *user_nmelzer_phoebe 27 + - path_regex: secrets/users/nmelzer/[^/]+$ 28 + key_groups: 29 + - age: 30 + - *admin_nobbz 31 + - *user_nmelzer_mimas 32 + - *user_nmelzer_phoebe
+25
README.md
···
··· 1 + Hosts 2 + ===== 3 + 4 + > [!CAUTION] 5 + > This hosts system and home configurations are public for your own learning and 6 + > research. They are not meant to be used with any hardware other than mine. 7 + > Trying to build and deploy them to other systems without appropriate changes 8 + > can render your machines unbootable and damage data. 9 + 10 + > [!NOTE] 11 + > I do not provide copy/pastable commands that would build/switch/install any 12 + > of these configurations because I mean what I wrote in the block before! 13 + 14 + A list of all hosts currently in use by me. this covers all the 15 + devices i can name on my behalf. Not all devices in this list are 16 + managed through nix or even run it. 17 + 18 + * `mimas`: My currently used main host. 19 + * ~~`enceladeus`~~: A secondary laptop, rarely used but still updated. 20 + * ~~`thetys`~~: A nixos VM solely used in the office for work related things, discontinued 21 + * ~~`dione`~~: company provided android phone, discontinued 22 + * `rhea`: self owned phone 23 + * ~~`titan`~~: MacOS VM to play and experiment with, discontinued 24 + * ~~`hyperion`~~: Linux-Aarch64 VM to play and experiment with, discontinued 25 + * `phoebe`: TuxedoOS (Ubuntu derivative) laptop, HM only.
-13
README.org
··· 1 - * Hosts 2 - 3 - A list of all hosts currently in use by me. this covers all the 4 - devices i can name on my behalf. Not all devices in this list are 5 - managed through nix or even run it. 6 - 7 - + =mimas= :: My currently used main host. 8 - + =enceladeus= :: A secondary laptop, rarely used but still updated. 9 - + =thetys= :: A nixos VM solely used in the office for work related things, discontinued 10 - + =dione= :: company provided android phone, discontinued 11 - + =rhea= :: self owned phone 12 - + =titan= :: MacOS VM to play and experiment with 13 - + =hyperion= :: Linux-Aarch64 VM to play and experiment with
···
+2 -3
checks/default.nix
··· 1 inputs: let 2 - pkgs = inputs.unstable.legacyPackages.x86_64-linux; 3 - apkgs = inputs.alejandra.packages.x86_64-linux; 4 5 - callPackage = pkgs.lib.callPackageWith (pkgs // apkgs // {inherit (inputs) self;}); 6 in { 7 alejandra = callPackage ./alejandra.nix {}; 8 statix = callPackage ./statix.nix {};
··· 1 inputs: let 2 + pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux; 3 4 + callPackage = pkgs.lib.callPackageWith (pkgs // {inherit (inputs) self;}); 5 in { 6 alejandra = callPackage ./alejandra.nix {}; 7 statix = callPackage ./statix.nix {};
+329 -500
flake.lock
··· 1 { 2 "nodes": { 3 - "alejandra": { 4 - "inputs": { 5 - "fenix": "fenix", 6 - "flakeCompat": "flakeCompat", 7 - "nixpkgs": "nixpkgs" 8 - }, 9 - "locked": { 10 - "lastModified": 1660510326, 11 - "narHash": "sha256-xFumnivtVwu5fFBOrTxrv6fv3geHKF04RGP23EsDVaI=", 12 - "owner": "kamadorueda", 13 - "repo": "alejandra", 14 - "rev": "ef03f7ef74ec97fd91a016a51c9c9667fb315652", 15 - "type": "github" 16 - }, 17 - "original": { 18 - "owner": "kamadorueda", 19 - "ref": "3.0.0", 20 - "repo": "alejandra", 21 - "type": "github" 22 - } 23 - }, 24 - "alejandra_2": { 25 "inputs": { 26 - "fenix": "fenix_2", 27 - "flakeCompat": "flakeCompat_2", 28 "nixpkgs": [ 29 "switcher", 30 - "dream2nix", 31 - "nixpkgs" 32 - ] 33 - }, 34 - "locked": { 35 - "lastModified": 1658427149, 36 - "narHash": "sha256-ToD/1z/q5VHsLMrS2h96vjJoLho59eNRtknOUd19ey8=", 37 - "owner": "kamadorueda", 38 - "repo": "alejandra", 39 - "rev": "f5a22afd2adfb249b4e68e0b33aa1f0fb73fb1be", 40 - "type": "github" 41 - }, 42 - "original": { 43 - "owner": "kamadorueda", 44 - "repo": "alejandra", 45 - "type": "github" 46 - } 47 - }, 48 - "crane": { 49 - "flake": false, 50 - "locked": { 51 - "lastModified": 1670900067, 52 - "narHash": "sha256-VXVa+KBfukhmWizaiGiHRVX/fuk66P8dgSFfkVN4/MY=", 53 - "owner": "ipetkov", 54 - "repo": "crane", 55 - "rev": "59b31b41a589c0a65e4a1f86b0e5eac68081468b", 56 - "type": "github" 57 - }, 58 - "original": { 59 - "owner": "ipetkov", 60 - "repo": "crane", 61 - "type": "github" 62 - } 63 - }, 64 - "devshell": { 65 - "flake": false, 66 - "locked": { 67 - "lastModified": 1663445644, 68 - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", 69 - "owner": "numtide", 70 - "repo": "devshell", 71 - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", 72 - "type": "github" 73 - }, 74 - "original": { 75 - "owner": "numtide", 76 - "repo": "devshell", 77 - "type": "github" 78 - } 79 - }, 80 - "dream2nix": { 81 - "inputs": { 82 - "alejandra": "alejandra_2", 83 - "all-cabal-json": [ 84 - "switcher", 85 "nixpkgs" 86 ], 87 - "crane": "crane", 88 - "devshell": "devshell", 89 - "flake-parts": [ 90 - "switcher", 91 - "flake-parts" 92 - ], 93 - "flake-utils-pre-commit": "flake-utils-pre-commit", 94 - "ghc-utils": "ghc-utils", 95 - "gomod2nix": "gomod2nix", 96 - "mach-nix": "mach-nix", 97 - "nix-pypi-fetcher": "nix-pypi-fetcher", 98 - "nixpkgs": [ 99 "switcher", 100 - "nixpkgs" 101 - ], 102 - "poetry2nix": "poetry2nix", 103 - "pre-commit-hooks": "pre-commit-hooks", 104 - "pruned-racket-catalog": "pruned-racket-catalog" 105 }, 106 "locked": { 107 - "lastModified": 1677289985, 108 - "narHash": "sha256-lUp06cTTlWubeBGMZqPl9jODM99LpWMcwxRiscFAUJg=", 109 - "owner": "nix-community", 110 - "repo": "dream2nix", 111 - "rev": "28b973a8d4c30cc1cbb3377ea2023a76bc3fb889", 112 "type": "github" 113 }, 114 "original": { 115 - "owner": "nix-community", 116 - "repo": "dream2nix", 117 "type": "github" 118 } 119 }, 120 "emacs": { 121 "inputs": { 122 - "flake-utils": "flake-utils", 123 "nixpkgs": [ 124 - "master" 125 ] 126 }, 127 "locked": { 128 - "lastModified": 1678296165, 129 - "narHash": "sha256-nEU+1PKIvYfD+oQ53KO13J2LwMPzUgWc89tFzrES9K4=", 130 "owner": "nix-community", 131 "repo": "emacs-overlay", 132 - "rev": "5b3d95676be5c6963c4d16f21ecf82beb14c6c05", 133 "type": "github" 134 }, 135 "original": { ··· 138 "type": "github" 139 } 140 }, 141 - "fenix": { 142 - "inputs": { 143 - "nixpkgs": [ 144 - "alejandra", 145 - "nixpkgs" 146 - ], 147 - "rust-analyzer-src": "rust-analyzer-src" 148 - }, 149 "locked": { 150 - "lastModified": 1657607339, 151 - "narHash": "sha256-HaqoAwlbVVZH2n4P3jN2FFPMpVuhxDy1poNOR7kzODc=", 152 - "owner": "nix-community", 153 - "repo": "fenix", 154 - "rev": "b814c83d9e6aa5a28d0cf356ecfdafb2505ad37d", 155 "type": "github" 156 }, 157 "original": { 158 - "owner": "nix-community", 159 - "repo": "fenix", 160 "type": "github" 161 } 162 }, 163 - "fenix_2": { 164 - "inputs": { 165 - "nixpkgs": [ 166 - "switcher", 167 - "dream2nix", 168 - "alejandra", 169 - "nixpkgs" 170 - ], 171 - "rust-analyzer-src": "rust-analyzer-src_2" 172 - }, 173 "locked": { 174 - "lastModified": 1657607339, 175 - "narHash": "sha256-HaqoAwlbVVZH2n4P3jN2FFPMpVuhxDy1poNOR7kzODc=", 176 - "owner": "nix-community", 177 - "repo": "fenix", 178 - "rev": "b814c83d9e6aa5a28d0cf356ecfdafb2505ad37d", 179 "type": "github" 180 }, 181 "original": { 182 - "owner": "nix-community", 183 - "repo": "fenix", 184 "type": "github" 185 } 186 }, 187 - "flake-utils": { 188 "locked": { 189 - "lastModified": 1667395993, 190 - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", 191 - "owner": "numtide", 192 - "repo": "flake-utils", 193 - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", 194 "type": "github" 195 }, 196 "original": { 197 - "owner": "numtide", 198 - "repo": "flake-utils", 199 "type": "github" 200 } 201 }, 202 - "flake-utils-pre-commit": { 203 "locked": { 204 - "lastModified": 1644229661, 205 - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", 206 "owner": "numtide", 207 "repo": "flake-utils", 208 - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", 209 "type": "github" 210 }, 211 "original": { ··· 215 } 216 }, 217 "flake-utils_2": { 218 "locked": { 219 - "lastModified": 1676283394, 220 - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", 221 "owner": "numtide", 222 "repo": "flake-utils", 223 - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", 224 "type": "github" 225 }, 226 "original": { ··· 230 } 231 }, 232 "flake-utils_3": { 233 "locked": { 234 - "lastModified": 1676283394, 235 - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", 236 "owner": "numtide", 237 "repo": "flake-utils", 238 - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", 239 "type": "github" 240 }, 241 "original": { ··· 244 "type": "github" 245 } 246 }, 247 - "flakeCompat": { 248 - "flake": false, 249 "locked": { 250 - "lastModified": 1650374568, 251 - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", 252 - "owner": "edolstra", 253 - "repo": "flake-compat", 254 - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", 255 "type": "github" 256 }, 257 "original": { 258 - "owner": "edolstra", 259 - "repo": "flake-compat", 260 "type": "github" 261 } 262 }, 263 - "flakeCompat_2": { 264 - "flake": false, 265 "locked": { 266 - "lastModified": 1650374568, 267 - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", 268 - "owner": "edolstra", 269 - "repo": "flake-compat", 270 - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", 271 "type": "github" 272 }, 273 "original": { 274 - "owner": "edolstra", 275 - "repo": "flake-compat", 276 "type": "github" 277 } 278 }, 279 - "ghc-utils": { 280 - "flake": false, 281 "locked": { 282 - "lastModified": 1662774800, 283 - "narHash": "sha256-1Rd2eohGUw/s1tfvkepeYpg8kCEXiIot0RijapUjAkE=", 284 - "ref": "refs/heads/master", 285 - "rev": "bb3a2d3dc52ff0253fb9c2812bd7aa2da03e0fea", 286 - "revCount": 1072, 287 - "type": "git", 288 - "url": "https://gitlab.haskell.org/bgamari/ghc-utils" 289 }, 290 "original": { 291 - "type": "git", 292 - "url": "https://gitlab.haskell.org/bgamari/ghc-utils" 293 } 294 }, 295 - "gomod2nix": { 296 - "flake": false, 297 "locked": { 298 - "lastModified": 1627572165, 299 - "narHash": "sha256-MFpwnkvQpauj799b4QTBJQFEddbD02+Ln5k92QyHOSk=", 300 - "owner": "tweag", 301 - "repo": "gomod2nix", 302 - "rev": "67f22dd738d092c6ba88e420350ada0ed4992ae8", 303 "type": "github" 304 }, 305 "original": { 306 - "owner": "tweag", 307 - "repo": "gomod2nix", 308 "type": "github" 309 } 310 }, 311 "home-manager": { 312 "inputs": { 313 "nixpkgs": [ 314 - "unstable" 315 - ], 316 - "utils": "utils" 317 }, 318 "locked": { 319 - "lastModified": 1678271387, 320 - "narHash": "sha256-H2dv/i1LRlunRtrESirELzfPWdlG/6ElDB1ksO529H4=", 321 "owner": "nix-community", 322 "repo": "home-manager", 323 - "rev": "36999b8d19eb6eebb41983ef017d7e0095316af2", 324 "type": "github" 325 }, 326 "original": { ··· 329 "type": "github" 330 } 331 }, 332 - "lowdown-src": { 333 "flake": false, 334 "locked": { 335 - "lastModified": 1633514407, 336 - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", 337 - "owner": "kristapsdz", 338 - "repo": "lowdown", 339 - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", 340 "type": "github" 341 }, 342 "original": { 343 - "owner": "kristapsdz", 344 - "repo": "lowdown", 345 - "type": "github" 346 - } 347 - }, 348 - "mach-nix": { 349 - "flake": false, 350 - "locked": { 351 - "lastModified": 1634711045, 352 - "narHash": "sha256-m5A2Ty88NChLyFhXucECj6+AuiMZPHXNbw+9Kcs7F6Y=", 353 - "owner": "DavHau", 354 - "repo": "mach-nix", 355 - "rev": "4433f74a97b94b596fa6cd9b9c0402104aceef5d", 356 - "type": "github" 357 - }, 358 - "original": { 359 - "id": "mach-nix", 360 - "type": "indirect" 361 - } 362 - }, 363 - "master": { 364 - "locked": { 365 - "lastModified": 1678328039, 366 - "narHash": "sha256-Nh+WyRqcXK6YY+X7HvGZHiOAVzduNwvqTqf+L4CuIjg=", 367 - "owner": "nixos", 368 - "repo": "nixpkgs", 369 - "rev": "78ac44af766f967a2c9dfb88d13688729fba4595", 370 - "type": "github" 371 - }, 372 - "original": { 373 - "owner": "nixos", 374 - "ref": "master", 375 - "repo": "nixpkgs", 376 - "type": "github" 377 - } 378 - }, 379 - "nil": { 380 - "inputs": { 381 - "flake-utils": "flake-utils_3", 382 - "nixpkgs": "nixpkgs_2", 383 - "rust-overlay": "rust-overlay" 384 - }, 385 - "locked": { 386 - "lastModified": 1678313833, 387 - "narHash": "sha256-HUkOzLVYDTYzxH4zMeR2JIrh1zY/n3LIs8rtNnKeOTA=", 388 - "owner": "oxalica", 389 - "repo": "nil", 390 - "rev": "d1017418841c612552f73d1f670d87f57dc5e090", 391 - "type": "github" 392 - }, 393 - "original": { 394 - "owner": "oxalica", 395 - "repo": "nil", 396 "type": "github" 397 } 398 }, 399 "nix": { 400 "inputs": { 401 - "lowdown-src": "lowdown-src", 402 - "nixpkgs": "nixpkgs_3", 403 "nixpkgs-regression": "nixpkgs-regression" 404 }, 405 "locked": { 406 - "lastModified": 1678307130, 407 - "narHash": "sha256-r+qhW2BBxqqVKam2lFJDU5l2AiUWIr9fzOsD+VIjJKc=", 408 "owner": "nixos", 409 "repo": "nix", 410 - "rev": "d25322e7c0dd4b196d04af4d6bc66e2b3e3b7d4c", 411 "type": "github" 412 }, 413 "original": { ··· 416 "type": "github" 417 } 418 }, 419 - "nix-pypi-fetcher": { 420 - "flake": false, 421 "locked": { 422 - "lastModified": 1669065297, 423 - "narHash": "sha256-UStjXjNIuIm7SzMOWvuYWIHBkPUKQ8Id63BMJjnIDoA=", 424 - "owner": "DavHau", 425 - "repo": "nix-pypi-fetcher", 426 - "rev": "a9885ac6a091576b5195d547ac743d45a2a615ac", 427 "type": "github" 428 }, 429 "original": { 430 - "owner": "DavHau", 431 - "repo": "nix-pypi-fetcher", 432 "type": "github" 433 } 434 }, 435 "nixos-vscode-server": { 436 "inputs": { 437 - "nixpkgs": "nixpkgs_4" 438 }, 439 "locked": { 440 - "lastModified": 1676501444, 441 - "narHash": "sha256-H+uQetkzd5GIga56HmCDwl5eihdQgeN2jVdNrkXzDyo=", 442 "owner": "msteen", 443 "repo": "nixos-vscode-server", 444 - "rev": "57f1716bc625d2892579294cc207956679e3d94c", 445 "type": "github" 446 }, 447 "original": { ··· 452 }, 453 "nixpkgs": { 454 "locked": { 455 - "lastModified": 1657425264, 456 - "narHash": "sha256-3aHvoI2e8vJKw3hvnHECaBpSsL5mxVsVtaLCnTdNcH8=", 457 - "owner": "nixos", 458 "repo": "nixpkgs", 459 - "rev": "de5b3dd17034e6106e75746e81618e5bd408de8a", 460 "type": "github" 461 }, 462 "original": { 463 - "owner": "nixos", 464 - "ref": "nixos-unstable-small", 465 "repo": "nixpkgs", 466 "type": "github" 467 } 468 }, 469 - "nixpkgs-2211": { 470 "locked": { 471 - "lastModified": 1678230755, 472 - "narHash": "sha256-SFAXgNjNTXzcAideXcP0takfUGVft/VR5CACmYHg+Fc=", 473 - "owner": "nixos", 474 "repo": "nixpkgs", 475 - "rev": "a7cc81913bb3cd1ef05ed0ece048b773e1839e51", 476 "type": "github" 477 }, 478 "original": { 479 - "owner": "nixos", 480 - "ref": "nixos-22.11", 481 "repo": "nixpkgs", 482 "type": "github" 483 } 484 }, 485 - "nixpkgs-insync-v3": { 486 "locked": { 487 - "lastModified": 1674552486, 488 - "narHash": "sha256-FK9Y4P5Q7lzq9hjXIflr9oW+Cxw+5gxP/dN9+R/bHnA=", 489 - "owner": "nixos", 490 "repo": "nixpkgs", 491 - "rev": "32fdc268e921994e3f38088486ddfe765d11df93", 492 "type": "github" 493 }, 494 "original": { 495 - "owner": "nixos", 496 - "ref": "32fdc268e921994e3f38088486ddfe765d11df93", 497 "repo": "nixpkgs", 498 "type": "github" 499 } 500 }, 501 - "nixpkgs-lib": { 502 "locked": { 503 - "dir": "lib", 504 - "lastModified": 1677407201, 505 - "narHash": "sha256-3blwdI9o1BAprkvlByHvtEm5HAIRn/XPjtcfiunpY7s=", 506 - "owner": "NixOS", 507 "repo": "nixpkgs", 508 - "rev": "7f5639fa3b68054ca0b062866dc62b22c3f11505", 509 "type": "github" 510 }, 511 "original": { 512 - "dir": "lib", 513 - "owner": "NixOS", 514 - "ref": "nixos-unstable", 515 "repo": "nixpkgs", 516 "type": "github" 517 } ··· 534 }, 535 "nixpkgs-stable": { 536 "locked": { 537 - "lastModified": 1677948530, 538 - "narHash": "sha256-BkQjq8AGHD55RJe4PUnrWRZZ8jS64p/k0bGDck5wKwY=", 539 "owner": "NixOS", 540 "repo": "nixpkgs", 541 - "rev": "d51554151a91cd4543a7620843cc378e3cbc767e", 542 "type": "github" 543 }, 544 "original": { 545 "owner": "NixOS", 546 - "ref": "release-22.11", 547 - "repo": "nixpkgs", 548 - "type": "github" 549 - } 550 - }, 551 - "nixpkgs-unstable": { 552 - "locked": { 553 - "lastModified": 1678293141, 554 - "narHash": "sha256-lLlQHaR0y+q6nd6kfpydPTGHhl1rS9nU9OQmztzKOYs=", 555 - "owner": "nixos", 556 - "repo": "nixpkgs", 557 - "rev": "c90c4025bb6e0c4eaf438128a3b2640314b1c58d", 558 - "type": "github" 559 - }, 560 - "original": { 561 - "owner": "nixos", 562 - "ref": "nixos-unstable", 563 "repo": "nixpkgs", 564 "type": "github" 565 } 566 }, 567 "nixpkgs_2": { 568 "locked": { 569 - "lastModified": 1677622273, 570 - "narHash": "sha256-LUqCVhzxr7EVY+SzW1uTXaMoVRUR2OP4Fr/tmJV7lHE=", 571 "owner": "nixos", 572 "repo": "nixpkgs", 573 - "rev": "995edc972ad3a1e291ac22d74b9610821357175f", 574 "type": "github" 575 }, 576 "original": { 577 "owner": "nixos", 578 - "ref": "nixpkgs-unstable", 579 "repo": "nixpkgs", 580 "type": "github" 581 } 582 }, 583 "nixpkgs_3": { 584 "locked": { 585 - "lastModified": 1670461440, 586 - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", 587 "owner": "NixOS", 588 "repo": "nixpkgs", 589 - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", 590 "type": "github" 591 }, 592 "original": { 593 "owner": "NixOS", 594 - "ref": "nixos-22.11-small", 595 "repo": "nixpkgs", 596 "type": "github" 597 } 598 }, 599 "nixpkgs_4": { 600 "locked": { 601 - "lastModified": 1672441588, 602 - "narHash": "sha256-jx5kxOyeObnVD44HRebKYL3cjWrcKhhcDmEYm0/naDY=", 603 "owner": "NixOS", 604 "repo": "nixpkgs", 605 - "rev": "6a0d2701705c3cf6f42c15aa92b7885f1f8a477f", 606 - "type": "github" 607 - }, 608 - "original": { 609 - "id": "nixpkgs", 610 - "type": "indirect" 611 - } 612 - }, 613 - "nixpkgs_5": { 614 - "locked": { 615 - "lastModified": 1677852945, 616 - "narHash": "sha256-liiVJjkBTuBTAkRW3hrI8MbPD2ImYzwUpa7kvteiKhM=", 617 - "owner": "NixOS", 618 - "repo": "nixpkgs", 619 - "rev": "f5ffd5787786dde3a8bf648c7a1b5f78c4e01abb", 620 "type": "github" 621 }, 622 "original": { ··· 626 "type": "github" 627 } 628 }, 629 - "parts": { 630 "inputs": { 631 - "nixpkgs-lib": "nixpkgs-lib" 632 }, 633 "locked": { 634 - "lastModified": 1677714448, 635 - "narHash": "sha256-Hq8qLs8xFu28aDjytfxjdC96bZ6pds21Yy09mSC156I=", 636 - "owner": "hercules-ci", 637 - "repo": "flake-parts", 638 - "rev": "dc531e3a9ce757041e1afaff8ee932725ca60002", 639 "type": "github" 640 }, 641 "original": { 642 - "owner": "hercules-ci", 643 - "repo": "flake-parts", 644 - "type": "github" 645 - } 646 - }, 647 - "poetry2nix": { 648 - "flake": false, 649 - "locked": { 650 - "lastModified": 1666918719, 651 - "narHash": "sha256-BkK42fjAku+2WgCOv2/1NrPa754eQPV7gPBmoKQBWlc=", 652 - "owner": "nix-community", 653 - "repo": "poetry2nix", 654 - "rev": "289efb187123656a116b915206e66852f038720e", 655 - "type": "github" 656 - }, 657 - "original": { 658 - "owner": "nix-community", 659 - "ref": "1.36.0", 660 - "repo": "poetry2nix", 661 "type": "github" 662 } 663 }, 664 - "pre-commit-hooks": { 665 "inputs": { 666 - "flake-utils": [ 667 - "switcher", 668 - "dream2nix", 669 - "flake-utils-pre-commit" 670 - ], 671 - "nixpkgs": [ 672 - "switcher", 673 - "dream2nix", 674 "nixpkgs" 675 ] 676 }, 677 "locked": { 678 - "lastModified": 1646153636, 679 - "narHash": "sha256-AlWHMzK+xJ1mG267FdT8dCq/HvLCA6jwmx2ZUy5O8tY=", 680 - "owner": "cachix", 681 - "repo": "pre-commit-hooks.nix", 682 - "rev": "b6bc0b21e1617e2b07d8205e7fae7224036dfa4b", 683 "type": "github" 684 }, 685 "original": { 686 - "owner": "cachix", 687 - "repo": "pre-commit-hooks.nix", 688 "type": "github" 689 } 690 }, 691 "programsdb": { 692 "inputs": { 693 "nixpkgs": [ 694 - "unstable" 695 ], 696 - "utils": "utils_2" 697 }, 698 "locked": { 699 - "lastModified": 1678326146, 700 - "narHash": "sha256-jk3vDfte2xoPr3hHc7N5QvYfp1RFtFKkqdwDrQsUFJM=", 701 "owner": "wamserma", 702 "repo": "flake-programs-sqlite", 703 - "rev": "57d1c51b36aac659d0b8eb6638de9485bd56199a", 704 "type": "github" 705 }, 706 "original": { ··· 709 "type": "github" 710 } 711 }, 712 - "pruned-racket-catalog": { 713 - "flake": false, 714 - "locked": { 715 - "lastModified": 1672537287, 716 - "narHash": "sha256-SuOvXVcLfakw18oJB/PuRMyvGyGG1+CQD3R+TGHIv44=", 717 - "owner": "nix-community", 718 - "repo": "pruned-racket-catalog", 719 - "rev": "c8b89557fb53b36efa2ee48a769c7364df0f6262", 720 - "type": "github" 721 - }, 722 - "original": { 723 - "owner": "nix-community", 724 - "ref": "catalog", 725 - "repo": "pruned-racket-catalog", 726 - "type": "github" 727 - } 728 - }, 729 "root": { 730 "inputs": { 731 - "alejandra": "alejandra", 732 "emacs": "emacs", 733 - "flake-utils": "flake-utils_2", 734 "home-manager": "home-manager", 735 - "master": "master", 736 - "nil": "nil", 737 "nix": "nix", 738 "nixos-vscode-server": "nixos-vscode-server", 739 - "nixpkgs": [ 740 - "nixpkgs-unstable" 741 ], 742 - "nixpkgs-2211": "nixpkgs-2211", 743 - "nixpkgs-insync-v3": "nixpkgs-insync-v3", 744 - "nixpkgs-unstable": "nixpkgs-unstable", 745 "parts": "parts", 746 "programsdb": "programsdb", 747 "sops-nix": "sops-nix", 748 - "stable": [ 749 - "nixpkgs-2211" 750 - ], 751 - "switcher": "switcher", 752 - "unstable": [ 753 - "nixpkgs-unstable" 754 - ] 755 - } 756 - }, 757 - "rust-analyzer-src": { 758 - "flake": false, 759 - "locked": { 760 - "lastModified": 1657557289, 761 - "narHash": "sha256-PRW+nUwuqNTRAEa83SfX+7g+g8nQ+2MMbasQ9nt6+UM=", 762 - "owner": "rust-lang", 763 - "repo": "rust-analyzer", 764 - "rev": "caf23f29144b371035b864a1017dbc32573ad56d", 765 - "type": "github" 766 - }, 767 - "original": { 768 - "owner": "rust-lang", 769 - "ref": "nightly", 770 - "repo": "rust-analyzer", 771 - "type": "github" 772 - } 773 - }, 774 - "rust-analyzer-src_2": { 775 - "flake": false, 776 - "locked": { 777 - "lastModified": 1657557289, 778 - "narHash": "sha256-PRW+nUwuqNTRAEa83SfX+7g+g8nQ+2MMbasQ9nt6+UM=", 779 - "owner": "rust-lang", 780 - "repo": "rust-analyzer", 781 - "rev": "caf23f29144b371035b864a1017dbc32573ad56d", 782 - "type": "github" 783 - }, 784 - "original": { 785 - "owner": "rust-lang", 786 - "ref": "nightly", 787 - "repo": "rust-analyzer", 788 - "type": "github" 789 } 790 }, 791 "rust-overlay": { 792 "inputs": { 793 - "flake-utils": [ 794 - "nil", 795 - "flake-utils" 796 - ], 797 - "nixpkgs": [ 798 - "nil", 799 - "nixpkgs" 800 - ] 801 }, 802 "locked": { 803 - "lastModified": 1677638104, 804 - "narHash": "sha256-vbdOoDYnQ1QYSchMb3fYGCLYeta3XwmGvMrlXchST5s=", 805 "owner": "oxalica", 806 "repo": "rust-overlay", 807 - "rev": "f388187efb41ce4195b2f4de0b6bb463d3cd0a76", 808 "type": "github" 809 }, 810 "original": { ··· 815 }, 816 "sops-nix": { 817 "inputs": { 818 - "nixpkgs": "nixpkgs_5", 819 - "nixpkgs-stable": "nixpkgs-stable" 820 }, 821 "locked": { 822 - "lastModified": 1678264398, 823 - "narHash": "sha256-COgbuQH/oAQZUBFTTQgSifabzZ5/GRCCbBIqZJjR3s0=", 824 "owner": "Mic92", 825 "repo": "sops-nix", 826 - "rev": "00e9e9cd46600d68dd98a392025d4894c3711b58", 827 "type": "github" 828 }, 829 "original": { ··· 834 }, 835 "switcher": { 836 "inputs": { 837 - "dream2nix": "dream2nix", 838 "flake-parts": [ 839 "parts" 840 ], 841 "nixpkgs": [ 842 - "unstable" 843 - ] 844 }, 845 "locked": { 846 - "lastModified": 1677480135, 847 - "narHash": "sha256-3YkdL1xNKMyhK6FooB4+NIT4+zqxrNh3nANTuOvzywE=", 848 "owner": "nobbz", 849 "repo": "nix-switcher", 850 - "rev": "77a09a74f8c94d7394def1988b786f150638b62a", 851 "type": "github" 852 }, 853 "original": { ··· 857 "type": "github" 858 } 859 }, 860 "utils": { 861 "locked": { 862 - "lastModified": 1676283394, 863 - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", 864 "owner": "numtide", 865 "repo": "flake-utils", 866 - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", 867 "type": "github" 868 }, 869 "original": { ··· 872 "type": "github" 873 } 874 }, 875 - "utils_2": { 876 "locked": { 877 - "lastModified": 1667395993, 878 - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", 879 - "owner": "numtide", 880 - "repo": "flake-utils", 881 - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", 882 "type": "github" 883 }, 884 "original": { 885 - "owner": "numtide", 886 - "repo": "flake-utils", 887 "type": "github" 888 } 889 }
··· 1 { 2 "nodes": { 3 + "cargo2nix": { 4 "inputs": { 5 + "flake-compat": "flake-compat_3", 6 + "flake-utils": "flake-utils_3", 7 "nixpkgs": [ 8 "switcher", 9 "nixpkgs" 10 ], 11 + "rust-overlay": [ 12 "switcher", 13 + "rust-overlay" 14 + ] 15 }, 16 "locked": { 17 + "lastModified": 1705129117, 18 + "narHash": "sha256-LgdDHibvimzYhxBK3kxCk2gAL7k4Hyigl5KI0X9cijA=", 19 + "owner": "cargo2nix", 20 + "repo": "cargo2nix", 21 + "rev": "ae19a9e1f8f0880c088ea155ab66cee1fa001f59", 22 "type": "github" 23 }, 24 "original": { 25 + "owner": "cargo2nix", 26 + "repo": "cargo2nix", 27 "type": "github" 28 } 29 }, 30 "emacs": { 31 "inputs": { 32 "nixpkgs": [ 33 + "nixpkgs" 34 + ], 35 + "nixpkgs-stable": [ 36 + "nixpkgs" 37 ] 38 }, 39 "locked": { 40 + "lastModified": 1749090069, 41 + "narHash": "sha256-uN3Mp+o7IfVT9H/OuwEtJ17NktCaF4t9Ond3TKt+BE4=", 42 "owner": "nix-community", 43 "repo": "emacs-overlay", 44 + "rev": "c17506666090e412a50b01c57944386ab81d2aa8", 45 "type": "github" 46 }, 47 "original": { ··· 50 "type": "github" 51 } 52 }, 53 + "flake-compat": { 54 + "flake": false, 55 "locked": { 56 + "lastModified": 1733328505, 57 + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", 58 + "owner": "edolstra", 59 + "repo": "flake-compat", 60 + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", 61 "type": "github" 62 }, 63 "original": { 64 + "owner": "edolstra", 65 + "repo": "flake-compat", 66 "type": "github" 67 } 68 }, 69 + "flake-compat_2": { 70 + "flake": false, 71 "locked": { 72 + "lastModified": 1696426674, 73 + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", 74 + "owner": "edolstra", 75 + "repo": "flake-compat", 76 + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", 77 "type": "github" 78 }, 79 "original": { 80 + "owner": "edolstra", 81 + "repo": "flake-compat", 82 "type": "github" 83 } 84 }, 85 + "flake-compat_3": { 86 + "flake": false, 87 "locked": { 88 + "lastModified": 1696426674, 89 + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", 90 + "owner": "edolstra", 91 + "repo": "flake-compat", 92 + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", 93 "type": "github" 94 }, 95 "original": { 96 + "owner": "edolstra", 97 + "repo": "flake-compat", 98 "type": "github" 99 } 100 }, 101 + "flake-utils": { 102 "locked": { 103 + "lastModified": 1659877975, 104 + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", 105 "owner": "numtide", 106 "repo": "flake-utils", 107 + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", 108 "type": "github" 109 }, 110 "original": { ··· 114 } 115 }, 116 "flake-utils_2": { 117 + "inputs": { 118 + "systems": "systems" 119 + }, 120 "locked": { 121 + "lastModified": 1681202837, 122 + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", 123 "owner": "numtide", 124 "repo": "flake-utils", 125 + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", 126 "type": "github" 127 }, 128 "original": { ··· 132 } 133 }, 134 "flake-utils_3": { 135 + "inputs": { 136 + "systems": "systems_2" 137 + }, 138 "locked": { 139 + "lastModified": 1694529238, 140 + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", 141 "owner": "numtide", 142 "repo": "flake-utils", 143 + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", 144 "type": "github" 145 }, 146 "original": { ··· 149 "type": "github" 150 } 151 }, 152 + "gen-luarc": { 153 + "inputs": { 154 + "flake-parts": [ 155 + "nvim", 156 + "parts" 157 + ], 158 + "git-hooks": "git-hooks", 159 + "luvit-meta": "luvit-meta", 160 + "nixpkgs": [ 161 + "nvim", 162 + "nixpkgs" 163 + ] 164 + }, 165 "locked": { 166 + "lastModified": 1724097937, 167 + "narHash": "sha256-Q4tgm8ZHAQUdvsNft86MqIbHQAm7OF7RT/wwYWXqSdY=", 168 + "owner": "mrcjkb", 169 + "repo": "nix-gen-luarc-json", 170 + "rev": "b36b69c4ded9f31b079523bc452e23458734cf00", 171 "type": "github" 172 }, 173 "original": { 174 + "owner": "mrcjkb", 175 + "repo": "nix-gen-luarc-json", 176 "type": "github" 177 } 178 }, 179 + "git-hooks": { 180 + "inputs": { 181 + "flake-compat": "flake-compat_2", 182 + "gitignore": "gitignore", 183 + "nixpkgs": [ 184 + "nvim", 185 + "gen-luarc", 186 + "nixpkgs" 187 + ], 188 + "nixpkgs-stable": "nixpkgs-stable" 189 + }, 190 "locked": { 191 + "lastModified": 1723803910, 192 + "narHash": "sha256-yezvUuFiEnCFbGuwj/bQcqg7RykIEqudOy/RBrId0pc=", 193 + "owner": "cachix", 194 + "repo": "git-hooks.nix", 195 + "rev": "bfef0ada09e2c8ac55bbcd0831bd0c9d42e651ba", 196 "type": "github" 197 }, 198 "original": { 199 + "owner": "cachix", 200 + "repo": "git-hooks.nix", 201 "type": "github" 202 } 203 }, 204 + "git-hooks-nix": { 205 + "inputs": { 206 + "flake-compat": [ 207 + "nix" 208 + ], 209 + "gitignore": [ 210 + "nix" 211 + ], 212 + "nixpkgs": [ 213 + "nix", 214 + "nixpkgs" 215 + ], 216 + "nixpkgs-stable": [ 217 + "nix", 218 + "nixpkgs" 219 + ] 220 + }, 221 "locked": { 222 + "lastModified": 1734279981, 223 + "narHash": "sha256-NdaCraHPp8iYMWzdXAt5Nv6sA3MUzlCiGiR586TCwo0=", 224 + "owner": "cachix", 225 + "repo": "git-hooks.nix", 226 + "rev": "aa9f40c906904ebd83da78e7f328cd8aeaeae785", 227 + "type": "github" 228 }, 229 "original": { 230 + "owner": "cachix", 231 + "repo": "git-hooks.nix", 232 + "type": "github" 233 } 234 }, 235 + "gitignore": { 236 + "inputs": { 237 + "nixpkgs": [ 238 + "nvim", 239 + "gen-luarc", 240 + "git-hooks", 241 + "nixpkgs" 242 + ] 243 + }, 244 "locked": { 245 + "lastModified": 1709087332, 246 + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", 247 + "owner": "hercules-ci", 248 + "repo": "gitignore.nix", 249 + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", 250 "type": "github" 251 }, 252 "original": { 253 + "owner": "hercules-ci", 254 + "repo": "gitignore.nix", 255 "type": "github" 256 } 257 }, 258 "home-manager": { 259 "inputs": { 260 "nixpkgs": [ 261 + "nixpkgs" 262 + ] 263 }, 264 "locked": { 265 + "lastModified": 1749062139, 266 + "narHash": "sha256-gGGLujmeWU+ZjFzfMvFMI0hp9xONsSbm88187wJr82Q=", 267 "owner": "nix-community", 268 "repo": "home-manager", 269 + "rev": "86b95fc1ed2b9b04a451a08ccf13d78fb421859c", 270 "type": "github" 271 }, 272 "original": { ··· 275 "type": "github" 276 } 277 }, 278 + "luvit-meta": { 279 "flake": false, 280 "locked": { 281 + "lastModified": 1705776742, 282 + "narHash": "sha256-zAAptV/oLuLAAsa2zSB/6fxlElk4+jNZd/cPr9oxFig=", 283 + "owner": "Bilal2453", 284 + "repo": "luvit-meta", 285 + "rev": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60", 286 "type": "github" 287 }, 288 "original": { 289 + "owner": "Bilal2453", 290 + "repo": "luvit-meta", 291 "type": "github" 292 } 293 }, 294 "nix": { 295 "inputs": { 296 + "flake-compat": "flake-compat", 297 + "flake-parts": [ 298 + "parts" 299 + ], 300 + "git-hooks-nix": "git-hooks-nix", 301 + "nixpkgs": "nixpkgs", 302 + "nixpkgs-23-11": "nixpkgs-23-11", 303 "nixpkgs-regression": "nixpkgs-regression" 304 }, 305 "locked": { 306 + "lastModified": 1749012568, 307 + "narHash": "sha256-7IltFTct/oe6pGkwB6f/1WhWA65hFnsBY6XaGjodf3k=", 308 "owner": "nixos", 309 "repo": "nix", 310 + "rev": "4751cbef6303d10479f3db1b13db69197d9c3446", 311 "type": "github" 312 }, 313 "original": { ··· 316 "type": "github" 317 } 318 }, 319 + "nix-gl": { 320 + "inputs": { 321 + "flake-utils": "flake-utils", 322 + "nixpkgs": [ 323 + "nixpkgs" 324 + ] 325 + }, 326 "locked": { 327 + "lastModified": 1713543440, 328 + "narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=", 329 + "owner": "nix-community", 330 + "repo": "nixgl", 331 + "rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a", 332 "type": "github" 333 }, 334 "original": { 335 + "owner": "nix-community", 336 + "repo": "nixgl", 337 "type": "github" 338 } 339 }, 340 "nixos-vscode-server": { 341 "inputs": { 342 + "flake-utils": "flake-utils_2", 343 + "nixpkgs": [ 344 + "nixpkgs" 345 + ] 346 }, 347 "locked": { 348 + "lastModified": 1729422940, 349 + "narHash": "sha256-DlvJv33ml5UTKgu4b0HauOfFIoDx6QXtbqUF3vWeRCY=", 350 "owner": "msteen", 351 "repo": "nixos-vscode-server", 352 + "rev": "8b6db451de46ecf9b4ab3d01ef76e59957ff549f", 353 "type": "github" 354 }, 355 "original": { ··· 360 }, 361 "nixpkgs": { 362 "locked": { 363 + "lastModified": 1747179050, 364 + "narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=", 365 + "owner": "NixOS", 366 "repo": "nixpkgs", 367 + "rev": "adaa24fbf46737f3f1b5497bf64bae750f82942e", 368 "type": "github" 369 }, 370 "original": { 371 + "owner": "NixOS", 372 + "ref": "nixos-unstable", 373 "repo": "nixpkgs", 374 "type": "github" 375 } 376 }, 377 + "nixpkgs-23-11": { 378 "locked": { 379 + "lastModified": 1717159533, 380 + "narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=", 381 + "owner": "NixOS", 382 "repo": "nixpkgs", 383 + "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", 384 "type": "github" 385 }, 386 "original": { 387 + "owner": "NixOS", 388 "repo": "nixpkgs", 389 + "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", 390 "type": "github" 391 } 392 }, 393 + "nixpkgs-emmy": { 394 "locked": { 395 + "lastModified": 1719675406, 396 + "narHash": "sha256-bZgaUZikDI7ZS1EY0jjZnbcO4vNeSRhIekb17FyUMf0=", 397 + "owner": "NixOS", 398 "repo": "nixpkgs", 399 + "rev": "2feb215c297f2c9ae272336f55d54a962d71a9ff", 400 "type": "github" 401 }, 402 "original": { 403 + "owner": "NixOS", 404 + "ref": "pull/323401/head", 405 "repo": "nixpkgs", 406 "type": "github" 407 } 408 }, 409 + "nixpkgs-pre-rust": { 410 "locked": { 411 + "lastModified": 1723634395, 412 + "narHash": "sha256-K1ohl/M/HWXqieqNtsF39FbWqtaNX/mUgulrqcOO1KU=", 413 + "owner": "nixos", 414 "repo": "nixpkgs", 415 + "rev": "57d0d4a8f3025e2b902d2b4403bcece26ad1ea74", 416 "type": "github" 417 }, 418 "original": { 419 + "owner": "nixos", 420 + "ref": "57d0d4a8f302", 421 "repo": "nixpkgs", 422 "type": "github" 423 } ··· 440 }, 441 "nixpkgs-stable": { 442 "locked": { 443 + "lastModified": 1720386169, 444 + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", 445 "owner": "NixOS", 446 "repo": "nixpkgs", 447 + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", 448 "type": "github" 449 }, 450 "original": { 451 "owner": "NixOS", 452 + "ref": "nixos-24.05", 453 "repo": "nixpkgs", 454 "type": "github" 455 } 456 }, 457 "nixpkgs_2": { 458 "locked": { 459 + "lastModified": 1748929857, 460 + "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", 461 "owner": "nixos", 462 "repo": "nixpkgs", 463 + "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", 464 "type": "github" 465 }, 466 "original": { 467 "owner": "nixos", 468 + "ref": "nixos-unstable", 469 "repo": "nixpkgs", 470 "type": "github" 471 } 472 }, 473 "nixpkgs_3": { 474 "locked": { 475 + "lastModified": 1744868846, 476 + "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", 477 "owner": "NixOS", 478 "repo": "nixpkgs", 479 + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", 480 "type": "github" 481 }, 482 "original": { 483 "owner": "NixOS", 484 + "ref": "nixpkgs-unstable", 485 "repo": "nixpkgs", 486 "type": "github" 487 } 488 }, 489 "nixpkgs_4": { 490 "locked": { 491 + "lastModified": 1728538411, 492 + "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", 493 "owner": "NixOS", 494 "repo": "nixpkgs", 495 + "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", 496 "type": "github" 497 }, 498 "original": { ··· 502 "type": "github" 503 } 504 }, 505 + "nvim": { 506 "inputs": { 507 + "gen-luarc": "gen-luarc", 508 + "nixpkgs": [ 509 + "nixpkgs" 510 + ], 511 + "nixpkgs-emmy": "nixpkgs-emmy", 512 + "parts": [ 513 + "parts" 514 + ], 515 + "wrapper-manager": "wrapper-manager" 516 }, 517 "locked": { 518 + "lastModified": 1748686149, 519 + "narHash": "sha256-RdLAPiha8lr1wQiL158p4DTFhLcWcjRv6ioCTd3athQ=", 520 + "owner": "nobbz", 521 + "repo": "nobbz-vim", 522 + "rev": "a22303075cac32d83edfd79ef79c0386a38b02ce", 523 "type": "github" 524 }, 525 "original": { 526 + "owner": "nobbz", 527 + "repo": "nobbz-vim", 528 "type": "github" 529 } 530 }, 531 + "parts": { 532 "inputs": { 533 + "nixpkgs-lib": [ 534 "nixpkgs" 535 ] 536 }, 537 "locked": { 538 + "lastModified": 1748821116, 539 + "narHash": "sha256-F82+gS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE=", 540 + "owner": "hercules-ci", 541 + "repo": "flake-parts", 542 + "rev": "49f0870db23e8c1ca0b5259734a02cd9e1e371a1", 543 "type": "github" 544 }, 545 "original": { 546 + "owner": "hercules-ci", 547 + "repo": "flake-parts", 548 "type": "github" 549 } 550 }, 551 "programsdb": { 552 "inputs": { 553 "nixpkgs": [ 554 + "nixpkgs" 555 ], 556 + "utils": "utils" 557 }, 558 "locked": { 559 + "lastModified": 1749055058, 560 + "narHash": "sha256-OgCTSX0WXPpEi/ukjbBRrElSo+TR2/pzCCcY5yfou58=", 561 "owner": "wamserma", 562 "repo": "flake-programs-sqlite", 563 + "rev": "78d23d728abddce902528922f93967f0630f1cfe", 564 "type": "github" 565 }, 566 "original": { ··· 569 "type": "github" 570 } 571 }, 572 "root": { 573 "inputs": { 574 "emacs": "emacs", 575 "home-manager": "home-manager", 576 "nix": "nix", 577 + "nix-gl": "nix-gl", 578 "nixos-vscode-server": "nixos-vscode-server", 579 + "nixpkgs": "nixpkgs_2", 580 + "nixpkgs-insync-v3": [ 581 + "nixpkgs" 582 ], 583 + "nixpkgs-pre-rust": "nixpkgs-pre-rust", 584 + "nvim": "nvim", 585 "parts": "parts", 586 "programsdb": "programsdb", 587 "sops-nix": "sops-nix", 588 + "switcher": "switcher" 589 } 590 }, 591 "rust-overlay": { 592 "inputs": { 593 + "nixpkgs": "nixpkgs_4" 594 }, 595 "locked": { 596 + "lastModified": 1734402816, 597 + "narHash": "sha256-cgQ8mjUJz7J3fp97lnvl0dSJ6vLt8yzUSmw3B7QKw94=", 598 "owner": "oxalica", 599 "repo": "rust-overlay", 600 + "rev": "e38fbd6e56e8cd1d61c65a21bbb7785e966707b4", 601 "type": "github" 602 }, 603 "original": { ··· 608 }, 609 "sops-nix": { 610 "inputs": { 611 + "nixpkgs": "nixpkgs_3" 612 }, 613 "locked": { 614 + "lastModified": 1747603214, 615 + "narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", 616 "owner": "Mic92", 617 "repo": "sops-nix", 618 + "rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", 619 "type": "github" 620 }, 621 "original": { ··· 626 }, 627 "switcher": { 628 "inputs": { 629 + "cargo2nix": "cargo2nix", 630 "flake-parts": [ 631 "parts" 632 ], 633 "nixpkgs": [ 634 + "nixpkgs" 635 + ], 636 + "rust-overlay": "rust-overlay" 637 }, 638 "locked": { 639 + "lastModified": 1734435961, 640 + "narHash": "sha256-HIw4Naoc0Gcl9VOT4JkagzKDvAdBwyzlq2majy5pSks=", 641 "owner": "nobbz", 642 "repo": "nix-switcher", 643 + "rev": "6f12e77ff6b46d53a5e58567803f94708e15660e", 644 "type": "github" 645 }, 646 "original": { ··· 650 "type": "github" 651 } 652 }, 653 + "systems": { 654 + "locked": { 655 + "lastModified": 1681028828, 656 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 657 + "owner": "nix-systems", 658 + "repo": "default", 659 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 660 + "type": "github" 661 + }, 662 + "original": { 663 + "owner": "nix-systems", 664 + "repo": "default", 665 + "type": "github" 666 + } 667 + }, 668 + "systems_2": { 669 + "locked": { 670 + "lastModified": 1681028828, 671 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 672 + "owner": "nix-systems", 673 + "repo": "default", 674 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 675 + "type": "github" 676 + }, 677 + "original": { 678 + "owner": "nix-systems", 679 + "repo": "default", 680 + "type": "github" 681 + } 682 + }, 683 "utils": { 684 "locked": { 685 + "lastModified": 1678901627, 686 + "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", 687 "owner": "numtide", 688 "repo": "flake-utils", 689 + "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", 690 "type": "github" 691 }, 692 "original": { ··· 695 "type": "github" 696 } 697 }, 698 + "wrapper-manager": { 699 + "inputs": { 700 + "nixpkgs": [ 701 + "nvim", 702 + "nixpkgs" 703 + ] 704 + }, 705 "locked": { 706 + "lastModified": 1747562021, 707 + "narHash": "sha256-XfF+5zjoWbAcAiGNb++og6yDGJRwWYpADr9P6WuieQA=", 708 + "owner": "viperml", 709 + "repo": "wrapper-manager", 710 + "rev": "f2b0bec5140403cf24cae96f6764d97b5d59b0e2", 711 "type": "github" 712 }, 713 "original": { 714 + "owner": "viperml", 715 + "repo": "wrapper-manager", 716 "type": "github" 717 } 718 }
+50 -50
flake.nix
··· 1 { 2 inputs = { 3 - nixpkgs-2211.url = "github:nixos/nixpkgs/nixos-22.11"; 4 - nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; 5 - master.url = "github:nixos/nixpkgs/master"; 6 - nixpkgs-insync-v3.url = "github:nixos/nixpkgs?ref=32fdc268e921994e3f38088486ddfe765d11df93"; 7 8 switcher.url = "github:nobbz/nix-switcher?ref=main"; 9 - switcher.inputs.nixpkgs.follows = "unstable"; 10 switcher.inputs.flake-parts.follows = "parts"; 11 12 parts.url = "github:hercules-ci/flake-parts"; 13 14 programsdb.url = "github:wamserma/flake-programs-sqlite"; 15 - programsdb.inputs.nixpkgs.follows = "unstable"; 16 - 17 - # The following is required to make flake-parts work. 18 - nixpkgs.follows = "nixpkgs-unstable"; 19 - unstable.follows = "nixpkgs-unstable"; 20 - stable.follows = "nixpkgs-2211"; 21 22 nix.url = "github:nixos/nix"; 23 24 - nil.url = "github:oxalica/nil"; 25 26 home-manager.url = "github:nix-community/home-manager"; 27 - home-manager.inputs.nixpkgs.follows = "unstable"; 28 - 29 - flake-utils.url = "github:numtide/flake-utils"; 30 31 emacs.url = "github:nix-community/emacs-overlay"; 32 - emacs.inputs.nixpkgs.follows = "master"; 33 34 nixos-vscode-server.url = "github:msteen/nixos-vscode-server"; 35 36 sops-nix.url = "github:Mic92/sops-nix"; 37 - 38 - alejandra.url = "github:kamadorueda/alejandra/3.0.0"; 39 }; 40 - 41 - outputs = { 42 - self, 43 - parts, 44 - ... 45 - } @ inputs: 46 - parts.lib.mkFlake {inherit inputs;} { 47 - systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin"]; 48 - 49 - imports = [ 50 - ./parts/auxiliary.nix 51 - ./parts/home_configs.nix 52 - ./parts/system_configs.nix 53 - 54 - ./nixos/configurations 55 - ./home/configurations 56 - ]; 57 - 58 - flake = { 59 - nixosModules = import ./nixos/modules inputs; 60 - 61 - homeModules = import ./home/modules inputs; 62 - 63 - mixedModules = import ./mixed inputs; 64 - 65 - packages.x86_64-linux = import ./packages inputs "x86_64-linux"; 66 - packages.aarch64-linux = import ./packages inputs "aarch64-linux"; 67 - packages.aarch64-darwin = import ./packages inputs "aarch64-darwin"; 68 - 69 - checks.x86_64-linux = import ./checks inputs; 70 - }; 71 - }; 72 }
··· 1 { 2 + outputs = {parts, ...} @ inputs: 3 + parts.lib.mkFlake {inherit inputs;} { 4 + systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin"]; 5 + 6 + _module.args.npins = import ./npins; 7 + 8 + imports = [ 9 + ./parts/auxiliary.nix 10 + ./parts/home_configs.nix 11 + ./parts/home_modules.nix 12 + ./parts/nixos_modules.nix 13 + ./parts/system_configs.nix 14 + 15 + ./nixos/configurations 16 + ./home/configurations 17 + 18 + ./home/modules 19 + ./nixos/modules 20 + 21 + ./packages 22 + ]; 23 + 24 + flake = { 25 + mixedModules = import ./mixed inputs; 26 + 27 + checks.x86_64-linux = import ./checks inputs; 28 + }; 29 + }; 30 + 31 inputs = { 32 + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; 33 + # nixpkgs-insync-v3.url = "github:nixos/nixpkgs?ref=32fdc268e921994e3f38088486ddfe765d11df93"; 34 + nixpkgs-insync-v3.follows = "nixpkgs"; 35 + nixpkgs-pre-rust.url = "github:nixos/nixpkgs?ref=57d0d4a8f302"; 36 + 37 + nvim.url = "github:nobbz/nobbz-vim"; 38 + nvim.inputs.parts.follows = "parts"; 39 + nvim.inputs.nixpkgs.follows = "nixpkgs"; 40 41 switcher.url = "github:nobbz/nix-switcher?ref=main"; 42 + switcher.inputs.nixpkgs.follows = "nixpkgs"; 43 switcher.inputs.flake-parts.follows = "parts"; 44 45 parts.url = "github:hercules-ci/flake-parts"; 46 + parts.inputs.nixpkgs-lib.follows = "nixpkgs"; 47 48 programsdb.url = "github:wamserma/flake-programs-sqlite"; 49 + programsdb.inputs.nixpkgs.follows = "nixpkgs"; 50 51 nix.url = "github:nixos/nix"; 52 + nix.inputs.flake-parts.follows = "parts"; 53 + # a libgit2 in the current version fails to build with the nix provided patches. 54 + # therefore using upstreams pin for now. 55 + # nix.inputs.nixpkgs.follows = "nixpkgs"; 56 57 + nix-gl.url = "github:nix-community/nixgl"; 58 + nix-gl.inputs.nixpkgs.follows = "nixpkgs"; 59 60 home-manager.url = "github:nix-community/home-manager"; 61 + home-manager.inputs.nixpkgs.follows = "nixpkgs"; 62 63 emacs.url = "github:nix-community/emacs-overlay"; 64 + emacs.inputs.nixpkgs.follows = "nixpkgs"; 65 + emacs.inputs.nixpkgs-stable.follows = "nixpkgs"; 66 67 nixos-vscode-server.url = "github:msteen/nixos-vscode-server"; 68 + nixos-vscode-server.inputs.nixpkgs.follows = "nixpkgs"; 69 70 sops-nix.url = "github:Mic92/sops-nix"; 71 }; 72 }
+1 -7
home/configurations/default.nix
··· 1 _: { 2 nobbz.homeConfigurations."nmelzer@mimas".system = "x86_64-linux"; 3 - nobbz.homeConfigurations."nmelzer@enceladeus".system = "x86_64-linux"; 4 - nobbz.homeConfigurations."nmelzer@hyperion".system = "aarch64-linux"; 5 - 6 - nobbz.homeConfigurations."nmelzer@Titan.local" = { 7 - system = "aarch64-darwin"; 8 - hostname = "titan"; 9 - }; 10 }
··· 1 _: { 2 nobbz.homeConfigurations."nmelzer@mimas".system = "x86_64-linux"; 3 + nobbz.homeConfigurations."nmelzer@phoebe".system = "x86_64-linux"; 4 }
-37
home/configurations/nmelzer@enceladeus.nix
··· 1 - {self, ...}: { 2 - config, 3 - pkgs, 4 - lib, 5 - ... 6 - }: { 7 - config = { 8 - nixpkgs.allowedUnfree = ["google-chrome" "vscode"]; 9 - 10 - nixpkgs.config.contentAddressedByDefault = false; 11 - 12 - activeProfiles = ["browsing" "development"]; 13 - 14 - xsession.windowManager.awesome.autostart = [ 15 - "${pkgs.blueman}/bin/blueman-applet" 16 - "${pkgs.networkmanagerapplet}/bin/nm-applet" 17 - ]; 18 - 19 - programs.emacs.enable = lib.mkForce false; 20 - 21 - services.rustic = { 22 - enable = true; 23 - globs = let 24 - mkHome = e: "${config.home.homeDirectory}/${e}"; 25 - mkIgnore = e: "!${e}"; 26 - 27 - home = map mkHome [".cache" ".cabal" ".cargo" ".emacs.d/eln-cache" ".emacs.d/.cache" ".gem" ".gradle" ".hex" ".kube" ".local" ".m2" ".minikube" ".minishift" ".mix" ".mozilla" "npm" ".opam" ".rancher" ".vscode-oss" "go/pkg"]; 28 - patterns = ["_build" "deps" "result" "target" ".elixir_ls" "ccls-cache" ".direnv"]; 29 - in 30 - map mkIgnore (home ++ patterns); 31 - oneFileSystem = true; 32 - repo = "rest:https://restic.mimas.internal.nobbz.dev/nobbz"; 33 - }; 34 - 35 - home.packages = [pkgs.vscode]; 36 - }; 37 - }
···
-42
home/configurations/nmelzer@hyperion.nix
··· 1 - { 2 - unstable, 3 - self, 4 - ... 5 - }: { 6 - config, 7 - pkgs, 8 - lib, 9 - ... 10 - }: { 11 - config = { 12 - nixpkgs.allowedUnfree = ["vscode"]; 13 - # nixpkgs.config.allowBroken = true; 14 - 15 - activeProfiles = ["development"]; 16 - 17 - dconf.enable = true; 18 - 19 - enabledLanguages = []; 20 - 21 - xsession.enable = lib.mkForce false; 22 - xsession.windowManager.awesome.enable = lib.mkForce false; 23 - xsession.numlock.enable = lib.mkForce false; 24 - 25 - programs.emacs.splashScreen = false; 26 - 27 - home.packages = builtins.attrValues { 28 - inherit (pkgs) vscode keepassxc nix-output-monitor; 29 - inherit (pkgs.gnome) gnome-tweaks; 30 - inherit (self.packages.aarch64-linux) gnucash-de; 31 - }; 32 - 33 - programs.htop = { 34 - settings = { 35 - detailed_cpu_time = true; 36 - }; 37 - }; 38 - }; 39 - # environment.pathsToLink = [ "/share/zsh" ]; 40 - } 41 - # /nix/store/7skqa8vxfydq7w3cix55ffvkmjb3b5da-python-2.7.18 42 -
···
-93
home/configurations/nmelzer@mimas.nix
··· 1 - { 2 - unstable, 3 - self, 4 - ... 5 - }: { 6 - config, 7 - pkgs, 8 - ... 9 - }: { 10 - config = { 11 - nixpkgs.allowedUnfree = ["google-chrome" "vscode" "discord"]; 12 - nixpkgs.config.allowBroken = true; 13 - 14 - activeProfiles = ["browsing" "development"]; 15 - 16 - sops.age.sshKeyPaths = ["${config.home.homeDirectory}/.ssh/id_ed25519"]; 17 - sops.defaultSopsFile = "${self}/secrets/mimas/nmelzer/default.yaml"; 18 - 19 - sops.secrets.rustic.path = "${config.xdg.configHome}/rustic/password"; 20 - sops.secrets.gh_hosts.path = "${config.xdg.configHome}/gh/hosts.yml"; 21 - 22 - dconf.enable = true; 23 - 24 - enabledLanguages = ["nix"]; 25 - 26 - programs.emacs.splashScreen = false; 27 - 28 - home.packages = builtins.attrValues { 29 - inherit (pkgs) keybase-gui freerdp vscode keepassxc nix-output-monitor discord; 30 - inherit (pkgs.gnome) gnome-tweaks; 31 - inherit (self.packages.x86_64-linux) gnucash-de; 32 - }; 33 - 34 - programs.obs-studio.enable = true; 35 - programs.htop = { 36 - settings = { 37 - detailed_cpu_time = true; 38 - }; 39 - # meters.right = [ 40 - # { kind = "Battery"; mode = 1; } 41 - # "Tasks" 42 - # "LoadAverage" 43 - # "Uptime" 44 - # ]; 45 - }; 46 - 47 - xsession.windowManager.awesome.autostart = [ 48 - "${pkgs.blueman}/bin/blueman-applet" 49 - "${pkgs.networkmanagerapplet}/bin/nm-applet" 50 - ]; 51 - 52 - services = { 53 - keybase.enable = true; 54 - kbfs.enable = true; 55 - insync.enable = true; 56 - playerctld.enable = true; 57 - 58 - rustic = { 59 - enable = true; 60 - passwordFile = config.sops.secrets.rustic.path; 61 - globs = let 62 - mkHome = e: "${config.home.homeDirectory}/${e}"; 63 - mkIgnore = e: "!${e}"; 64 - 65 - home = map mkHome [".cache" ".cabal" ".cargo" ".emacs.d/eln-cache" ".emacs.d/.cache" ".gem" ".gradle" ".hex" ".kube" ".local" ".m2" ".minikube" ".minishift" ".mix" ".mozilla" "npm" ".opam" ".rancher" ".vscode-oss" "go/pkg" "timmelzer@gmail.com/restic_repos"]; 66 - patterns = ["_build" "Cache" "deps" "result" "target" ".elixir_ls" "ccls-cache" ".direnv" "direnv" "node_modules"]; 67 - in 68 - map mkIgnore (home ++ patterns); 69 - oneFileSystem = true; 70 - repo = "rest:https://restic.mimas.internal.nobbz.dev/nobbz"; 71 - }; 72 - }; 73 - 74 - systemd.user.services = { 75 - rustic.Unit.After = ["sops-nix.service"]; 76 - keybase-gui = { 77 - Unit = { 78 - Description = "Keybase GUI"; 79 - Requires = ["keybase.service" "kbfs.service"]; 80 - After = ["keybase.service" "kbfs.service"]; 81 - }; 82 - Service = { 83 - ExecStart = "${pkgs.keybase-gui}/share/keybase/Keybase"; 84 - PrivateTmp = true; 85 - # Slice = "keybase.slice"; 86 - }; 87 - }; 88 - }; 89 - }; 90 - # environment.pathsToLink = [ "/share/zsh" ]; 91 - } 92 - # /nix/store/7skqa8vxfydq7w3cix55ffvkmjb3b5da-python-2.7.18 93 -
···
-20
home/configurations/nmelzer@titan.nix
··· 1 - {self, ...}: { 2 - pkgs, 3 - lib, 4 - ... 5 - }: { 6 - nixpkgs.allowedUnfree = []; 7 - 8 - activeProfiles = ["base" "development"]; 9 - enabledLanguages = []; 10 - 11 - xsession.enable = lib.mkForce false; 12 - xsession.windowManager.awesome.enable = lib.mkForce false; 13 - xsession.numlock.enable = lib.mkForce false; 14 - 15 - gtk.theme.package = lib.mkForce null; 16 - 17 - home.packages = builtins.attrValues { 18 - inherit (pkgs) neovim; 19 - }; 20 - }
···
+130
home/configurations/nmelzer_at_mimas.nix
···
··· 1 + {self, ...}: { 2 + config, 3 + pkgs, 4 + lib, 5 + ... 6 + }: { 7 + nixpkgs.allowedUnfree = ["google-chrome" "vscode" "discord" "obsidian"]; 8 + 9 + activeProfiles = ["browsing" "development"]; 10 + 11 + sops.age.sshKeyPaths = ["${config.home.homeDirectory}/.ssh/id_ed25519"]; 12 + sops.defaultSopsFile = "${self}/secrets/mimas/nmelzer/default.yaml"; 13 + 14 + sops.secrets.rustic.path = "${config.xdg.configHome}/rustic/password"; 15 + 16 + dconf.enable = true; 17 + 18 + home.packages = builtins.attrValues { 19 + inherit (pkgs) keybase-gui freerdp keepassxc nix-output-monitor discord; 20 + inherit (pkgs) obsidian; 21 + inherit (pkgs) gnome-tweaks; 22 + inherit (pkgs) vscode wezterm; 23 + }; 24 + 25 + programs.obs-studio.enable = true; 26 + programs.obs-studio.plugins = builtins.attrValues { 27 + inherit (pkgs.obs-studio-plugins) obs-backgroundremoval; 28 + }; 29 + programs.htop = { 30 + settings = { 31 + detailed_cpu_time = true; 32 + }; 33 + # meters.right = [ 34 + # { kind = "Battery"; mode = 1; } 35 + # "Tasks" 36 + # "LoadAverage" 37 + # "Uptime" 38 + # ]; 39 + }; 40 + 41 + programs.yazi.enable = true; 42 + 43 + xsession.windowManager.awesome.autostart = [ 44 + "${pkgs.blueman}/bin/blueman-applet" 45 + "${pkgs.networkmanagerapplet}/bin/nm-applet" 46 + ]; 47 + 48 + systemd.user.tmpfiles.rules = [ 49 + "d ${config.home.homeDirectory}/tmp 700 ${config.home.username} users 14d" 50 + ]; 51 + 52 + services = { 53 + keybase.enable = true; 54 + kbfs.enable = true; 55 + insync.enable = true; 56 + playerctld.enable = true; 57 + flameshot.enable = true; 58 + 59 + rustic = { 60 + enable = true; 61 + passwordFile = config.sops.secrets.rustic.path; 62 + globs = let 63 + mkHome = e: "${config.home.homeDirectory}/${e}"; 64 + mkIgnore = e: "!${e}"; 65 + 66 + home = map mkHome ["Downloads" ".cache" ".cabal" ".cargo" ".emacs.d/eln-cache" ".emacs.d/.cache" ".gem" ".gradle" ".hex" ".kube" ".local" ".m2" ".minikube" ".minishift" ".mix" ".mozilla" "npm" ".opam" ".rancher" ".vscode-oss" "go/pkg" "timmelzer@gmail.com/restic_repos" ".local/share/libvirt" ".bitmonero"]; 67 + patterns = ["_build" "Cache" "deps" "result" "target" ".elixir_ls" "ccls-cache" ".direnv" "direnv" "node_modules"]; 68 + in 69 + map mkIgnore (home ++ patterns); 70 + oneFileSystem = true; 71 + repo = "rest:https://restic.mimas.internal.nobbz.dev/nobbz"; 72 + }; 73 + }; 74 + 75 + systemd.user.services = { 76 + rustic.Unit.After = ["sops-nix.service"]; 77 + keybase-gui = { 78 + Unit = { 79 + Description = "Keybase GUI"; 80 + Requires = ["keybase.service" "kbfs.service"]; 81 + After = ["keybase.service" "kbfs.service"]; 82 + }; 83 + Service = { 84 + ExecStart = "${pkgs.keybase-gui}/share/keybase/Keybase"; 85 + PrivateTmp = true; 86 + # Slice = "keybase.slice"; 87 + }; 88 + }; 89 + }; 90 + 91 + xdg.configFile = { 92 + "rustic/mimas-hetzner.toml".text = 93 + # toml 94 + '' 95 + [repository] 96 + repository = "rclone:hetzner-restic:mimas" 97 + password-file = "${config.sops.secrets.rustic.path}" 98 + ''; 99 + "rustic/mimas.toml".text = 100 + # toml 101 + '' 102 + [repository] 103 + repository = "rest:https://restic.mimas.internal.nobbz.dev/mimas" 104 + password-file = "${config.sops.secrets.rustic.path}" 105 + 106 + [copy] 107 + targets = ["mimas-hetzner"] 108 + ''; 109 + 110 + "rustic/nobbz-hetzner.toml".text = 111 + # toml 112 + '' 113 + [repository] 114 + repository = "rclone:hetzner-restic:nobbz" 115 + password-file = "${config.sops.secrets.rustic.path}" 116 + ''; 117 + "rustic/nobbz.toml".text = 118 + # toml 119 + '' 120 + [repository] 121 + repository = "rest:https://restic.mimas.internal.nobbz.dev/nobbz" 122 + password-file = "${config.sops.secrets.rustic.path}" 123 + 124 + [copy] 125 + targets = ["nobbz-hetzner"] 126 + ''; 127 + }; 128 + 129 + home.stateVersion = "20.09"; 130 + }
+93
home/configurations/nmelzer_at_phoebe.nix
···
··· 1 + { 2 + self, 3 + nix, 4 + ... 5 + }: { 6 + config, 7 + pkgs, 8 + lib, 9 + ... 10 + }: let 11 + sshConfigPath = "${config.home.homeDirectory}/.ssh"; 12 + inherit (lib.hm) dag; 13 + spkgs = self.packages.${pkgs.system}; 14 + in { 15 + nixpkgs.allowedUnfree = ["google-chrome" "vscode" "discord" "obsidian" "slack"]; 16 + nixpkgs.config.permittedInsecurePackages = ["electron-25.9.0"]; 17 + profiles.base.needsGL = true; 18 + 19 + nix.checkConfig = false; 20 + nix.settings.extra-experimental-features = ["flakes" "nix-command"]; 21 + nix.extraOptions = "!include ${config.sops.secrets."access-tokens".path}"; 22 + nix.package = nix.packages.${pkgs.system}.nix-cli; 23 + 24 + activeProfiles = ["development"]; 25 + 26 + sops.age.sshKeyPaths = ["${sshConfigPath}/id_ed25519"]; 27 + sops.defaultSopsFile = "${self}/secrets/phoebe/nmelzer/default.yaml"; 28 + 29 + sops.secrets.ssh.path = "${sshConfigPath}/nightwing_config"; 30 + 31 + sops.secrets."access-tokens" = { 32 + path = "${config.home.homeDirectory}/.config/nix/access-tokens.conf"; 33 + mode = "0400"; 34 + sopsFile = "${self}/secrets/users/nmelzer/default.yaml"; 35 + }; 36 + 37 + sops.secrets."github" = { 38 + path = "${sshConfigPath}/github"; 39 + mode = "0400"; 40 + sopsFile = "${self}/secrets/users/nmelzer/github"; 41 + format = "binary"; 42 + }; 43 + 44 + sops.secrets."gitlab" = { 45 + path = "${sshConfigPath}/gitlab"; 46 + mode = "0400"; 47 + sopsFile = "${self}/secrets/users/nmelzer/gitlab"; 48 + format = "binary"; 49 + }; 50 + 51 + sops.secrets."nobbz_dev" = { 52 + path = "${sshConfigPath}/nobbz_dev"; 53 + mode = "0400"; 54 + sopsFile = "${self}/secrets/users/nmelzer/nobbz_dev"; 55 + format = "binary"; 56 + }; 57 + 58 + dconf.enable = true; 59 + 60 + home.packages = builtins.attrValues { 61 + inherit (pkgs) keepassxc nix-output-monitor discord obsidian vscode slack; 62 + inherit (config.nix) package; 63 + inherit (spkgs) switcher; 64 + }; 65 + 66 + xsession.windowManager.awesome.enable = lib.mkForce false; 67 + xsession.enable = lib.mkForce false; 68 + 69 + services.playerctld.enable = true; 70 + 71 + gtk.gtk2.force = true; 72 + 73 + programs.ssh.includes = [ 74 + config.sops.secrets.ssh.path 75 + ]; 76 + 77 + programs.ssh.matchBlocks = { 78 + # TODO: properly use seperate key 79 + "gitlab.com-bravo" = dag.entryAfter ["gitlab.com"] { 80 + hostname = "gitlab.com"; 81 + addressFamily = "inet"; 82 + identityFile = "~/.ssh/id_ed25519"; 83 + }; 84 + 85 + # TODO: Make the actual hosts identity file configurable by other means. Actually moving all the logic over to `home/modules/profiles/base/default.nix`. 86 + "*.internal.nobbz.dev" = lib.mkForce (dag.entryAfter ["delly-nixos.adoring_suess.zerotier" "tux-nixos.adoring_suess.zerotier" "nixos.adoring_suess.zerotier"] { 87 + identityFile = "~/.ssh/id_ed25519"; 88 + user = "nmelzer"; 89 + }); 90 + }; 91 + 92 + home.stateVersion = "20.09"; 93 + }
+19 -26
home/modules/default.nix
··· 1 - inputs: { 2 - "profiles" = import ./profiles inputs; 3 - "profiles/base" = import ./profiles/base inputs; 4 - "profiles/browsing" = import ./profiles/browsing inputs; 5 - "profiles/development" = import ./profiles/development inputs; 6 7 - "languages" = import ./languages inputs; 8 - "languages/nix" = import ./languages/nix inputs; 9 10 - "programs/advcp" = import ./programs/advcp inputs; 11 - "programs/openshift" = import ./programs/openshift inputs; 12 - "programs/nixpkgs" = import ./programs/nixpkgs inputs; 13 - "programs/exa" = import ./programs/exa inputs; 14 - "programs/emacs" = import ./programs/emacs inputs; 15 - "programs/emacs/beacon" = import ./programs/emacs/beacon.nix inputs; 16 - "programs/emacs/company" = import ./programs/emacs/company.nix inputs; 17 - "programs/emacs/helm" = import ./programs/emacs/helm.nix inputs; 18 - "programs/emacs/lsp" = import ./programs/emacs/lsp.nix inputs; 19 - "programs/emacs/projectile" = import ./programs/emacs/projectile.nix inputs; 20 - "programs/emacs/telephoneline" = import ./programs/emacs/telephoneline.nix inputs; 21 - "programs/emacs/lib" = import ./programs/emacs/lib.nix inputs; 22 - "programs/emacs/whichkey" = import ./programs/emacs/whichkey inputs; 23 24 - "services/insync" = import ./services/insync inputs; 25 - "services/restic" = import ./services/restic inputs; 26 - "services/rustic" = import ./services/rustic inputs; 27 - 28 - "misc/awesome" = import ./misc/awesome inputs; 29 - "misc/home" = import ./misc/home inputs; 30 }
··· 1 + { 2 + nobbz.homeManagerModules = { 3 + "profiles" = ./profiles; 4 + "profiles/base" = ./profiles/base; 5 + "profiles/browsing" = ./profiles/browsing; 6 + "profiles/development" = ./profiles/development; 7 8 + "programs/advcp" = ./programs/advcp; 9 + "programs/eza" = ./programs/eza; 10 + "programs/ghostty" = ./programs/ghostty; 11 + "programs/nixpkgs" = ./programs/nixpkgs; 12 + "programs/p10k" = ./programs/p10k; 13 + "programs/rbw" = ./programs/rbw; 14 + "programs/wezterm" = ./programs/wezterm; 15 16 + "services/insync" = ./services/insync; 17 + "services/rustic" = ./services/rustic; 18 19 + "misc/awesome" = ./misc/awesome; 20 + "misc/home" = ./misc/home; 21 + "misc/rofi" = ./misc/rofi; 22 + }; 23 }
-17
home/modules/languages/default.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - langsEnabler = let 7 - reducer = l: r: {"${r}".enable = true;} // l; 8 - in 9 - builtins.foldl' reducer {} config.enabledLanguages; 10 - in { 11 - options.enabledLanguages = lib.mkOption { 12 - default = []; 13 - type = lib.types.listOf lib.types.str; 14 - }; 15 - 16 - config = {languages = langsEnabler;}; 17 - }
···
-37
home/modules/languages/nix/default.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - pkgs, 5 - ... 6 - }: let 7 - cfg = config.languages.nix; 8 - 9 - # rnixLsp = rnix-lsp.defaultPackage.x86_64-linux; 10 - rnixLsp = pkgs.rnix-lsp; 11 - in { 12 - options.languages.nix = { 13 - enable = lib.mkEnableOption "Enable support for the nix language"; 14 - }; 15 - 16 - config = lib.mkIf cfg.enable { 17 - programs.emacs.extraPackages = ep: [ep.lsp-mode ep.nix-mode ep.flycheck]; 18 - 19 - programs.emacs.extraInit = '' 20 - (require 'lsp-mode) 21 - 22 - ;; make lsp-mode aware of nix 23 - (add-to-list 'lsp-language-id-configuration '(nix-mode . "nix")) 24 - (lsp-register-client 25 - (make-lsp-client :new-connection (lsp-stdio-connection '("${rnixLsp}/bin/rnix-lsp")) 26 - :major-modes '(nix-mode) 27 - :server-id 'nix)) 28 - 29 - (add-hook 'nix-mode-hook 30 - (lambda () 31 - (lsp) 32 - (subword-mode) 33 - (company-mode) 34 - (flycheck-mode))) 35 - ''; 36 - }; 37 - }
···
+39 -11
home/modules/misc/awesome/default.nix
··· 6 }: let 7 cfg = config.xsession.windowManager.awesome; 8 9 - rofi = pkgs.rofi.override { 10 - plugins = [pkgs.rofi-emoji]; 11 - }; 12 13 - self' = self.packages.x86_64-linux; 14 15 mediaKeys = let 16 keyMap = let ··· 74 options.xsession.windowManager.awesome = { 75 terminalEmulator = lib.mkOption { 76 type = lib.types.str; 77 - default = "${pkgs.konsole}/bin/konsole"; 78 }; 79 80 launcher = lib.mkOption { 81 type = lib.types.str; 82 - default = "${rofi}/bin/rofi -modi drun#run#window#ssh#emoji#unicode:${self'."rofi/unicode"}/bin/rofiunicode.sh -show drun -show-icons"; 83 }; 84 85 autostart = lib.mkOption { ··· 173 -- Create a launcher widget and a main menu 174 myawesomemenu = { 175 { "launcher", '${cfg.launcher}' }, 176 { "hotkeys", function() return false, hotkeys_popup.show_help end}, 177 { "manual", terminal .. " -e man awesome" }, 178 { "edit config", editor_cmd .. " " .. awesome.conffile }, 179 - { "lock session", '${pkgs.i3lock}/bin/i3lock' }, 180 { "restart", awesome.restart }, 181 { "quit", function() awesome.quit() end} 182 } ··· 346 end, 347 {description = "focus previous by index", group = "client"} 348 ), 349 - awful.key({ modkey, }, "w", function () mymainmenu:show() end, 350 - {description = "show main menu", group = "awesome"}), 351 352 -- Layout manipulation 353 awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end, ··· 409 awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() end, 410 {description = "run prompt", group = "launcher"}), 411 412 - awful.key({ modkey }, "d", function () awful.util.spawn('${cfg.launcher}') end), 413 - awful.key({ modkey }, "y", function () awful.util.spawn('${pkgs.i3lock}/bin/i3lock') end), 414 415 awful.key({ modkey }, "x", 416 function ()
··· 6 }: let 7 cfg = config.xsession.windowManager.awesome; 8 9 + flameshot = lib.getExe pkgs.flameshot; 10 11 + bls = lib.getExe (pkgs.betterlockscreen.override {withDunst = false;}); 12 + scrot = lib.getExe pkgs.scrot; 13 + 14 + locker = pkgs.writeShellScript "betterlockscreen-with-screenshot" '' 15 + tmpf="$(mktemp -d)" 16 + file="$tmpf/screenshot.png" 17 + ${scrot} -z $file 18 + ${bls} -u $file --display 1 --span --fx blur --blur 1.0 19 + rm -rf $tmpf 20 + ${bls} -l blur --display 1 --span --off 30 21 + ''; 22 23 mediaKeys = let 24 keyMap = let ··· 82 options.xsession.windowManager.awesome = { 83 terminalEmulator = lib.mkOption { 84 type = lib.types.str; 85 + default = "${lib.getExe pkgs.wezterm}"; 86 + }; 87 + 88 + lockCommand = lib.mkOption { 89 + type = lib.types.str; 90 + # default = "${lib.getExe pkgs.i3lock}"; 91 + default = "${locker}"; 92 }; 93 94 launcher = lib.mkOption { 95 type = lib.types.str; 96 + default = "${pkgs.rofi}/bin/rofi -modi drun -show drun -show-icons"; 97 + }; 98 + 99 + windowSwitcher = lib.mkOption { 100 + type = lib.types.str; 101 + default = "${pkgs.rofi}/bin/rofi -modi window -show window -show-icons"; 102 + }; 103 + 104 + emojiPicker = lib.mkOption { 105 + type = lib.types.str; 106 + default = "${pkgs.rofi}/bin/rofi -modi drun -show drun -show-icons"; 107 }; 108 109 autostart = lib.mkOption { ··· 197 -- Create a launcher widget and a main menu 198 myawesomemenu = { 199 { "launcher", '${cfg.launcher}' }, 200 + { "windows", '${cfg.windowSwitcher}' }, 201 + { "emoji", '${cfg.emojiPicker}' }, 202 { "hotkeys", function() return false, hotkeys_popup.show_help end}, 203 { "manual", terminal .. " -e man awesome" }, 204 { "edit config", editor_cmd .. " " .. awesome.conffile }, 205 + { "lock session", '${cfg.lockCommand}' }, 206 { "restart", awesome.restart }, 207 { "quit", function() awesome.quit() end} 208 } ··· 372 end, 373 {description = "focus previous by index", group = "client"} 374 ), 375 376 -- Layout manipulation 377 awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end, ··· 433 awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() end, 434 {description = "run prompt", group = "launcher"}), 435 436 + awful.key({ modkey }, "d", function () awful.util.spawn('${cfg.launcher}') end, {description = "open launcher", group = "launcher"}), 437 + awful.key({ modkey }, "w", function () awful.util.spawn('${cfg.windowSwitcher}') end, {description = "open window selecter", group = "launcher"}), 438 + awful.key({ modkey, "Shift" }, "e", function () awful.util.spawn('${cfg.emojiPicker}') end, {description = "open emoji picker", group = "launcher"}), 439 + 440 + awful.key({ modkey }, "y", function () awful.util.spawn('${cfg.lockCommand}') end, {description = "lock screen", group = "client" }), 441 + awful.key({ modkey }, "b", function () awful.util.spawn('${flameshot} gui') end, {description = "create screenshot", group = "client" }), 442 443 awful.key({ modkey }, "x", 444 function ()
+5 -12
home/modules/misc/home/default.nix
··· 1 - { 2 - nixpkgs-2211, 3 - unstable, 4 - self, 5 - ... 6 - }: { 7 config, 8 pkgs, 9 lib, ··· 25 26 packages = let 27 p = pkgs; 28 - s = self'; 29 in [ 30 p.cachix 31 - p.element-desktop 32 p.exercism 33 - p.nixpkgs-review 34 p.tmate 35 - s."dracula/konsole" 36 37 p.fira-code 38 p.cascadia-code ··· 44 exec ${p.timewarrior}/bin/timew "$@" 45 '') 46 ]; 47 - 48 - stateVersion = "20.09"; 49 }; 50 }
··· 1 + {self, ...}: { 2 config, 3 pkgs, 4 lib, ··· 20 21 packages = let 22 p = pkgs; 23 in [ 24 p.cachix 25 p.exercism 26 p.tmate 27 + 28 + # There is a conflict with the ZSH completion plugin, installed by default 29 + # therefore we need to override here 30 + (lib.setPrio 0 p.nixpkgs-review) 31 32 p.fira-code 33 p.cascadia-code ··· 39 exec ${p.timewarrior}/bin/timew "$@" 40 '') 41 ]; 42 }; 43 }
+22
home/modules/misc/rofi/common.rasi
···
··· 1 + configuration { 2 + font: "Departure Mono 22"; 3 + terminal: "@TERMINAL@"; 4 + fixed-num-lines: false; 5 + show-icons: true; 6 + drun-show-actions: false; 7 + sidebar-mode: true; 8 + window-format: "{w}\t| {c}\t| {t}"; 9 + 10 + location: 2; 11 + width: 75; 12 + yoffset: 0; 13 + 14 + timeout { 15 + action: "kb-cancel"; 16 + delay: 0; 17 + } 18 + filebrowser { 19 + directories-first: true; 20 + sorting-method: "name"; 21 + } 22 + }
+63
home/modules/misc/rofi/default.nix
···
··· 1 + {self, ...}: { 2 + pkgs, 3 + lib, 4 + npins, 5 + ... 6 + }: let 7 + self' = self.packages.x86_64-linux; 8 + 9 + common_rasi = pkgs.runCommandNoCC "common.rasi" {preferLocalBuild = true;} '' 10 + substitute ${./common.rasi} $out \ 11 + --subst-var-by TERMINAL ${lib.getExe pkgs.wezterm} 12 + ''; 13 + 14 + catppuccin = pkgs.runCommandNoCC "catppuccin.rasi" {preferLocalBuild = true;} '' 15 + substitute ${npins.catppuccin-rofi}/catppuccin-default.rasi $out \ 16 + --replace-fail '"catppuccin-mocha"' '"${npins.catppuccin-rofi}/themes/catppuccin-mocha.rasi"' 17 + ''; 18 + 19 + writeConfig = name: body: 20 + pkgs.writeText name 21 + # rasi 22 + '' 23 + configuration { 24 + ${body} 25 + } 26 + @theme "${catppuccin}" 27 + @import "${common_rasi}" 28 + ''; 29 + 30 + windowSwitcherConfig = writeConfig "window-switcher-config" ''modes: "window";''; 31 + emojiConfig = writeConfig "emoji-config" ''modes: "emoji#unicode:${self'."rofi/unicode"}/bin/rofiunicode.sh";''; 32 + launcherConfig = writeConfig "launcher-config" '' 33 + modes: "drun#run#ssh"; 34 + ssh-command: "{terminal} ssh {host}"; 35 + ''; 36 + 37 + wrapper = rofi: config: 38 + pkgs.callPackage ({ 39 + rofi, 40 + runCommandNoCC, 41 + makeWrapper, 42 + }: 43 + runCommandNoCC "rofi" { 44 + nativeBuildInputs = [makeWrapper]; 45 + inherit (rofi) meta; 46 + } '' 47 + mkdir -p $out/bin 48 + makeWrapper ${lib.getExe rofi} $out/bin/rofi \ 49 + --add-flags "-config ${config}" 50 + '') {inherit rofi;}; 51 + 52 + launcherPkg = pkgs.rofi; 53 + windowSwitcherPkg = pkgs.rofi; 54 + emojiPkg = pkgs.rofi.override {plugins = [pkgs.rofi-emoji];}; 55 + 56 + launcher = wrapper launcherPkg launcherConfig; 57 + windowSwitcher = wrapper windowSwitcherPkg windowSwitcherConfig; 58 + emoji = wrapper emojiPkg emojiConfig; 59 + in { 60 + xsession.windowManager.awesome.launcher = "${lib.getExe launcher} -show drun"; 61 + xsession.windowManager.awesome.windowSwitcher = "${lib.getExe windowSwitcher} -show window"; 62 + xsession.windowManager.awesome.emojiPicker = "${lib.getExe emoji} -show emoji"; 63 + }
+11
home/modules/profiles/base/colums-fix.patch
···
··· 1 + --- a/fzf-tab.zsh 2 + +++ b/fzf-tab.zsh 3 + @@ -102,7 +102,7 @@ builtin unalias -m '[^+]*' 4 + 5 + # must run with user options; don't move `emulate -L zsh` above this line 6 + (( $+builtins[fzf-tab-compcap-generate] )) && fzf-tab-compcap-generate -i 7 + - COLUMNS=500 _ftb__main_complete "$@" || ret=$? 8 + + _ftb__main_complete "$@" || ret=$? 9 + (( $+builtins[fzf-tab-compcap-generate] )) && fzf-tab-compcap-generate -o 10 + 11 + emulate -L zsh -o extended_glob
+124 -86
home/modules/profiles/base/default.nix
··· 1 - {self, ...}: { 2 config, 3 lib, 4 pkgs, 5 ... 6 }: let 7 cfg = config.profiles.base; 8 9 - npins = import ../../../../npins; 10 - 11 - inherit (self.packages.${pkgs.system}) emacs; 12 inherit (lib.hm) dag; 13 14 # TODO: make these a bit more nice, so that repeating the hosts and individual config isn't necessary. ··· 27 cp $src $out/_nix 28 ''; 29 }; 30 in { 31 options.profiles.base = { 32 enable = lib.mkEnableOption "The base profile, should be always enabled"; 33 }; 34 35 config = lib.mkIf cfg.enable { 36 manual.manpages.enable = false; 37 38 services.vscode-server.enable = lib.mkDefault pkgs.stdenv.isLinux; 39 40 - home.sessionVariables = rec { 41 - EDITOR = "emacs -nw"; 42 - VISUAL = "emacs"; 43 - GIT_EDITOR = EDITOR; 44 }; 45 46 gtk.enable = true; 47 - gtk.theme.package = pkgs.gnome.gnome-themes-extra; 48 gtk.theme.name = "Adwaita-dark"; 49 50 home.keyboard.layout = "de"; 51 - home.packages = [pkgs.hydra-check] ++ lib.optionals pkgs.stdenv.isLinux [pkgs.dconf]; 52 53 # dconf.enable = lib.mkMerge [ 54 # (lib.mkIf pkgs.stdenv.isLinux true) ··· 65 66 programs = { 67 advancedCopy.enable = true; 68 - bat.enable = true; 69 direnv.enable = true; 70 direnv.nix-direnv.enable = true; 71 - exa.enable = true; 72 home-manager.enable = true; 73 htop.enable = true; 74 jq.enable = true; 75 - openshift.enable = true; 76 77 ssh = { 78 enable = true; 79 compression = true; 80 81 matchBlocks = { 82 "*.internal.nobbz.dev" = dag.entryAfter zerotierHosts { ··· 84 user = "nmelzer"; 85 }; 86 87 "ryzen-ubuntu.adoring_suess.zerotier" = { 88 hostname = "172.24.237.73"; 89 }; ··· 110 "github.com" = { 111 identityFile = "~/.ssh/github"; 112 }; 113 - 114 - "*.actum.internal" = { 115 - user = "norbert.melzer"; 116 - identityFile = "~/.ssh/actum-gitlab"; 117 - }; 118 - 119 - "*.vcp.internal" = { 120 - user = "cloudseeds"; 121 - identityFile = "~/.ssh/vogel"; 122 - }; 123 - 124 - "deploy-vogel.custpoc.cloudseeds.de" = 125 - dag.entryBefore [ 126 - "*.custpoc.cloudseeds.de" 127 - "*.cloudseeds.de" 128 - ] 129 - { 130 - user = "cloudseeds"; 131 - identityFile = "~/.ssh/vogel"; 132 - }; 133 - 134 - "repo.cloudseeds.de" = dag.entryBefore ["*.cloudseeds.de"] { 135 - identityFile = "~/.ssh/id_rsa"; 136 - }; 137 - 138 - "*.custpoc.cloudseeds.de" = dag.entryBefore ["*.cloudseeds.de"] { 139 - user = "norbert.melzer"; 140 - identityFile = "~/.ssh/actum-gitlab"; 141 - }; 142 - 143 - "com01.internal.cloudseeds.de" = dag.entryBefore ["*.cloudseeds.de"] { 144 - hostname = "192.168.123.22"; 145 - user = "root"; 146 - }; 147 - 148 - "ironic.internal.cloudseeds.de" = dag.entryBefore ["*.cloudseeds.de"] { 149 - hostname = "192.168.123.31"; 150 - user = "root"; 151 - }; 152 - 153 - "*.cloudseeds.de" = { 154 - user = "norbert.melzer"; 155 - identityFile = "~/.ssh/cloudseeds"; 156 - }; 157 - 158 - "ironic" = { 159 - hostname = "192.168.123.31"; 160 - user = "root"; 161 - identityFile = "~/.ssh/cloudseeds"; 162 - }; 163 }; 164 }; 165 166 - emacs = { 167 - enable = true; 168 - package = emacs; 169 - }; 170 - 171 tmux = { 172 enable = true; 173 174 clock24 = true; 175 historyLimit = 10000; 176 - terminal = "screen-256color"; 177 }; 178 179 zsh = { 180 enable = true; 181 182 enableCompletion = true; 183 - enableAutosuggestions = true; 184 185 autocd = true; 186 ··· 189 defaultKeymap = "emacs"; 190 191 plugins = [ 192 { 193 name = "nix-zsh-complete.zsh"; 194 src = zsh-complete; 195 file = "_nix"; 196 } 197 { 198 - name = "powerlevel10k"; 199 - src = pkgs.zsh-powerlevel10k; 200 - file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; 201 - } 202 - { 203 - name = "powerlevel10k-config"; 204 - src = ./p10k-config; 205 - file = "p10k.zsh"; 206 - } 207 - { 208 name = "zsh-syntax-highlighting"; 209 src = npins.zsh-syntax-highlighting; 210 } 211 ]; 212 213 - initExtra = '' 214 bindkey "^[[1;5D" backward-word 215 bindkey "^[[1;5C" forward-word 216 ··· 218 ''; 219 220 sessionVariables = { 221 - # NIX_PATH = builtins.concatStringsSep ":" [ 222 - # "nixpkgs=${inputs.nixpkgs}" 223 - # "nixos-config=/etc/nixos/configuration.nix" 224 - # "/nix/var/nix/profiles/per-user/root/channels" 225 - # ]; 226 }; 227 228 shellAliases.fixstore = "sudo nix-store --verify --check-contents --repair"; 229 }; 230 }; 231 };
··· 1 + { 2 + self, 3 + nix, 4 + nvim, 5 + nix-gl, 6 + ... 7 + }: { 8 config, 9 lib, 10 pkgs, 11 + npins, 12 ... 13 }: let 14 cfg = config.profiles.base; 15 16 inherit (lib.hm) dag; 17 18 # TODO: make these a bit more nice, so that repeating the hosts and individual config isn't necessary. ··· 31 cp $src $out/_nix 32 ''; 33 }; 34 + 35 + fzf-tab = pkgs.stdenv.mkDerivation { 36 + pname = "fzf-tab"; 37 + version = "0-unstable-${npins.fzf-tab.revision}"; 38 + 39 + src = npins.fzf-tab; 40 + 41 + # we need this patch due to a bug between fzf-tab and p10k: 42 + # https://github.com/Aloxaf/fzf-tab/issues/176 43 + patches = [./colums-fix.patch]; 44 + 45 + installPhase = '' 46 + mkdir -p $out 47 + cp -rv . $out 48 + ''; 49 + }; 50 in { 51 options.profiles.base = { 52 enable = lib.mkEnableOption "The base profile, should be always enabled"; 53 + 54 + needsGL = lib.mkEnableOption "nix-gl wrappers"; 55 }; 56 57 config = lib.mkIf cfg.enable { 58 + sops.secrets.nix-community = { 59 + path = "${config.home.homeDirectory}/.ssh/nix-community"; 60 + mode = "0400"; 61 + sopsFile = "${self}/secrets/users/nmelzer/nix-community"; 62 + format = "binary"; 63 + }; 64 + 65 + programs.rbw.enable = true; 66 + 67 manual.manpages.enable = false; 68 69 services.vscode-server.enable = lib.mkDefault pkgs.stdenv.isLinux; 70 71 + home.sessionVariables = { 72 + EDITOR = "nvim"; 73 }; 74 75 gtk.enable = true; 76 + gtk.theme.package = pkgs.gnome-themes-extra; 77 gtk.theme.name = "Adwaita-dark"; 78 79 + services.pueue.enable = true; 80 + 81 home.keyboard.layout = "de"; 82 + home.packages = let 83 + optisave = 84 + pkgs.resholve.writeScriptBin "optisave" { 85 + inputs = builtins.attrValues {inherit (pkgs) fd pv gawk coreutils gnused;}; 86 + interpreter = "${pkgs.bash}/bin/bash"; 87 + execer = [ 88 + # TODO: Make this `might` or `can` in the long run 89 + "cannot:${pkgs.fd}/bin/fd" 90 + ]; 91 + } '' 92 + count=$(fd . /nix/store/.links/ | pv -l | wc -l) 93 + 94 + # TODO: make resholve understant the call to `stat` 95 + saved=$(fd . /nix/store/.links/ -X ${pkgs.coreutils}/bin/stat --format='%h %s' {} \ 96 + | pv -altrpe -s $count \ 97 + | awk '{sum += ($1 - 2) * $2} END {print sum}') 98 + 99 + printf "Currently hardlinking saves %sB (%s B)\n" \ 100 + "$(numfmt --to=iec-i --format='%.2f' ''${saved} \ 101 + | sed -E 's/([0-9])([A-Za-z])/\1 \2/')" \ 102 + "$(numfmt --to=none --format="%'f" ''${saved})" 103 + ''; 104 + neovide = 105 + if cfg.needsGL 106 + then 107 + pkgs.writeShellScriptBin nvim.packages.x86_64-linux.neovide.meta.mainProgram '' 108 + exec ${lib.getExe nix-gl.packages.x86_64-linux.nixGLIntel} ${lib.getExe nvim.packages.x86_64-linux.neovide} "$@" 109 + '' 110 + else nvim.packages.x86_64-linux.neovide; 111 + in 112 + lib.mkMerge [ 113 + [optisave pkgs.departure-mono pkgs.hydra-check nvim.packages.x86_64-linux.neovim neovide] 114 + (lib.mkIf pkgs.stdenv.isLinux [pkgs.dconf]) 115 + ]; 116 117 # dconf.enable = lib.mkMerge [ 118 # (lib.mkIf pkgs.stdenv.isLinux true) ··· 129 130 programs = { 131 advancedCopy.enable = true; 132 direnv.enable = true; 133 direnv.nix-direnv.enable = true; 134 + direnv.nix-direnv.package = pkgs.nix-direnv.override {nix = nix.packages.${pkgs.system}.default;}; 135 + eza.enable = true; 136 + fzf.enable = true; 137 home-manager.enable = true; 138 htop.enable = true; 139 jq.enable = true; 140 + p10k.enable = true; 141 + zoxide.enable = true; 142 + 143 + bat = { 144 + enable = true; 145 + 146 + config.theme = "mocha"; 147 + 148 + themes.mocha = { 149 + src = npins.catppuccin-bat; 150 + file = "themes/Catppuccin Mocha.tmTheme"; 151 + }; 152 + }; 153 154 ssh = { 155 enable = true; 156 compression = true; 157 + controlMaster = "auto"; 158 159 matchBlocks = { 160 "*.internal.nobbz.dev" = dag.entryAfter zerotierHosts { ··· 162 user = "nmelzer"; 163 }; 164 165 + "build-box.nix-community.org" = { 166 + identityFile = config.sops.secrets.nix-community.path; 167 + user = "nobbz"; 168 + }; 169 + 170 + "aarch64-build-box.nix-community.org" = { 171 + identityFile = config.sops.secrets.nix-community.path; 172 + user = "nobbz"; 173 + }; 174 + 175 "ryzen-ubuntu.adoring_suess.zerotier" = { 176 hostname = "172.24.237.73"; 177 }; ··· 198 "github.com" = { 199 identityFile = "~/.ssh/github"; 200 }; 201 }; 202 }; 203 204 tmux = { 205 enable = true; 206 207 clock24 = true; 208 historyLimit = 10000; 209 + terminal = "tmux-256color"; 210 + 211 + plugins = [ 212 + { 213 + plugin = pkgs.tmuxPlugins.catppuccin; 214 + extraConfig = '' 215 + set -g @catppuccin_flavor "mocha" 216 + set -g @catppuccin_window_status_style "rounded" 217 + ''; 218 + } 219 + ]; 220 + 221 + extraConfig = '' 222 + set -ag terminal-overrides ",xterm-256color:RGB" 223 + ''; 224 }; 225 226 zsh = { 227 enable = true; 228 229 enableCompletion = true; 230 + autosuggestion.enable = true; 231 232 autocd = true; 233 ··· 236 defaultKeymap = "emacs"; 237 238 plugins = [ 239 + { 240 + name = "fzf-tab"; 241 + src = fzf-tab; 242 + } 243 { 244 name = "nix-zsh-complete.zsh"; 245 src = zsh-complete; 246 file = "_nix"; 247 } 248 { 249 name = "zsh-syntax-highlighting"; 250 src = npins.zsh-syntax-highlighting; 251 } 252 ]; 253 254 + initContent = '' 255 bindkey "^[[1;5D" backward-word 256 bindkey "^[[1;5C" forward-word 257 ··· 259 ''; 260 261 sessionVariables = { 262 + PROMPT_EOL_MARK = "%F{243}ยถ%f"; 263 }; 264 265 shellAliases.fixstore = "sudo nix-store --verify --check-contents --repair"; 266 + shellAliases.pq = "pueue"; 267 }; 268 }; 269 };
-1469
home/modules/profiles/base/p10k-config/p10k.zsh
··· 1 - # Generated by Powerlevel10k configuration wizard on 2020-02-27 at 13:48 UTC. 2 - # Based on romkatv/powerlevel10k/config/p10k-classic.zsh. 3 - # Wizard options: powerline, classic, darkest, time, angled separators, sharp heads, 4 - # flat tails, 2 lines, solid, full frame, compact, concise, transient_prompt, 5 - # instant_prompt=off. 6 - # Type `p10k configure` to generate another config. 7 - # 8 - # Config for Powerlevel10k with classic powerline prompt style. Type `p10k configure` to generate 9 - # your own config based on it. 10 - # 11 - # Tip: Looking for a nice color? Here's a one-liner to print colormap. 12 - # 13 - # for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%8)):#7}:+$'\n'}; done 14 - 15 - # Temporarily change options. 16 - 'builtin' 'local' '-a' 'p10k_config_opts' 17 - [[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') 18 - [[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') 19 - [[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') 20 - 'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' 21 - 22 - () { 23 - emulate -L zsh 24 - setopt no_unset extended_glob 25 - 26 - # Unset all configuration options. This allows you to apply configiguration changes without 27 - # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`. 28 - unset -m 'POWERLEVEL9K_*' 29 - 30 - autoload -Uz is-at-least && is-at-least 5.1 || return 31 - 32 - zmodload zsh/langinfo 33 - if [[ ${langinfo[CODESET]:-} != (utf|UTF)(-|)8 ]]; then 34 - local LC_ALL=${${(@M)$(locale -a):#*.(utf|UTF)(-|)8}[1]:-en_US.UTF-8} 35 - fi 36 - 37 - # The list of segments shown on the left. Fill it with the most important segments. 38 - typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( 39 - # =========================[ Line #1 ]========================= 40 - # os_icon # os identifier 41 - dir # current directory 42 - vcs # git status 43 - # =========================[ Line #2 ]========================= 44 - newline # \n 45 - # prompt_char # prompt symbol 46 - ) 47 - 48 - # The list of segments shown on the right. Fill it with less important segments. 49 - # Right prompt on the last prompt line (where you are typing your commands) gets 50 - # automatically hidden when the input line reaches it. Right prompt above the 51 - # last prompt line gets hidden if it would overlap with left prompt. 52 - typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( 53 - # =========================[ Line #1 ]========================= 54 - status # exit code of the last command 55 - command_execution_time # duration of the last command 56 - background_jobs # presence of background jobs 57 - direnv # direnv status (https://direnv.net/) 58 - asdf # asdf version manager (https://github.com/asdf-vm/asdf) 59 - virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html) 60 - anaconda # conda environment (https://conda.io/) 61 - pyenv # python environment (https://github.com/pyenv/pyenv) 62 - goenv # go environment (https://github.com/syndbg/goenv) 63 - nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) 64 - nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) 65 - nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) 66 - # node_version # node.js version 67 - # go_version # go version (https://golang.org) 68 - # rust_version # rustc version (https://www.rust-lang.org) 69 - # dotnet_version # .NET version (https://dotnet.microsoft.com) 70 - # php_version # php version (https://www.php.net/) 71 - # laravel_version # laravel php framework version (https://laravel.com/) 72 - rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) 73 - rvm # ruby version from rvm (https://rvm.io) 74 - fvm # flutter version management (https://github.com/leoafarias/fvm) 75 - luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) 76 - jenv # java version from jenv (https://github.com/jenv/jenv) 77 - plenv # perl version from plenv (https://github.com/tokuhirom/plenv) 78 - phpenv # php version from phpenv (https://github.com/phpenv/phpenv) 79 - kubecontext # current kubernetes context (https://kubernetes.io/) 80 - terraform # terraform workspace (https://www.terraform.io) 81 - aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) 82 - aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) 83 - azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) 84 - gcloud # google cloud cli account and project (https://cloud.google.com/) 85 - google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) 86 - context # user@hostname 87 - nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) 88 - ranger # ranger shell (https://github.com/ranger/ranger) 89 - nnn # nnn shell (https://github.com/jarun/nnn) 90 - vim_shell # vim shell indicator (:sh) 91 - midnight_commander # midnight commander shell (https://midnight-commander.org/) 92 - nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) 93 - vi_mode # vi mode (you don't need this if you've enabled prompt_char) 94 - # vpn_ip # virtual private network indicator 95 - # load # CPU load 96 - # disk_usage # disk usage 97 - # ram # free RAM 98 - # swap # used swap 99 - todo # todo items (https://github.com/todotxt/todo.txt-cli) 100 - timewarrior # timewarrior tracking status (https://timewarrior.net/) 101 - taskwarrior # taskwarrior task count (https://taskwarrior.org/) 102 - time # current time 103 - # =========================[ Line #2 ]========================= 104 - newline # \n 105 - # ip # ip address and bandwidth usage for a specified network interface 106 - # public_ip # public IP address 107 - # proxy # system-wide http/https/ftp proxy 108 - # battery # internal battery 109 - # wifi # wifi speed 110 - # example # example user-defined segment (see prompt_example function below) 111 - ) 112 - 113 - # To enable default icons for all segments, don't define POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION 114 - # or set it to '${P9K_VISUAL_IDENTIFIER}'. 115 - # 116 - # To remove trailing space from all default icons, set POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION 117 - # to '${P9K_VISUAL_IDENTIFIER% }'. 118 - # 119 - # To enable default icons for one segment (e.g., dir), set 120 - # POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}'. 121 - # 122 - # To assign a specific icon to one segment (e.g., dir), set 123 - # POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='โญ'. 124 - # 125 - # To assign a specific icon to a segment in a given state (e.g., dir in state NOT_WRITABLE), 126 - # set POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='โญ'. 127 - # 128 - # Note: You can use $'\u2B50' instead of 'โญ'. It's especially convenient when specifying 129 - # icons that your text editor cannot render. Don't forget to put $ and use single quotes when 130 - # defining icons via Unicode codepoints. 131 - # 132 - # Note: Many default icons cannot be displayed with system fonts. You'll need to install a 133 - # capable font to use them. See POWERLEVEL9K_MODE below. 134 - typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}' 135 - 136 - # This option makes a difference only when default icons are enabled for all or some prompt 137 - # segments (see POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION above). LOCK_ICON can be printed as 138 - # $'\uE0A2', $'\uE138' or $'\uF023' depending on POWERLEVEL9K_MODE. The correct value of this 139 - # parameter depends on the provider of the font your terminal is using. 140 - # 141 - # Font Provider | POWERLEVEL9K_MODE 142 - # ---------------------------------+------------------- 143 - # Powerline | powerline 144 - # Font Awesome | awesome-fontconfig 145 - # Adobe Source Code Pro | awesome-fontconfig 146 - # Source Code Pro | awesome-fontconfig 147 - # Awesome-Terminal Fonts (regular) | awesome-fontconfig 148 - # Awesome-Terminal Fonts (patched) | awesome-patched 149 - # Nerd Fonts | nerdfont-complete 150 - # Other | compatible 151 - # 152 - # If this looks overwhelming, either stick with a preinstalled system font and set 153 - # POWERLEVEL9K_MODE=compatible, or install the recommended Powerlevel10k font from 154 - # https://github.com/romkatv/powerlevel10k/#recommended-meslo-nerd-font-patched-for-powerlevel10k 155 - # and set POWERLEVEL9K_MODE=nerdfont-complete. 156 - typeset -g POWERLEVEL9K_MODE=powerline 157 - 158 - # When set to true, icons appear before content on both sides of the prompt. When set 159 - # to false, icons go after content. If empty or not set, icons go before content in the left 160 - # prompt and after content in the right prompt. 161 - # 162 - # You can also override it for a specific segment: 163 - # 164 - # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false 165 - # 166 - # Or for a specific segment in specific state: 167 - # 168 - # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false 169 - typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT= 170 - 171 - # Add an empty line before each prompt. 172 - typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false 173 - 174 - # Connect left prompt lines with these symbols. You'll probably want to use the same color 175 - # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below. 176 - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%238Fโ•ญโ”€' 177 - typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%238Fโ”œโ”€' 178 - typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%238Fโ•ฐโ”€' 179 - # Connect right prompt lines with these symbols. 180 - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%238Fโ”€โ•ฎ' 181 - typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%238Fโ”€โ”ค' 182 - typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%238Fโ”€โ•ฏ' 183 - 184 - # Filler between left and right prompt on the first prompt line. You can set it to ' ', 'ยท' or 185 - # 'โ”€'. The last two make it easier to see the alignment between left and right prompt and to 186 - # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false 187 - # for more compact prompt if using using this option. 188 - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR='โ”€' 189 - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND= 190 - if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then 191 - # The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE 192 - # ornaments defined above. 193 - typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=238 194 - # Start filler from the edge of the screen if there are no left segments on the first line. 195 - typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}' 196 - # End filler on the edge of the screen if there are no right segments on the first line. 197 - typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}' 198 - fi 199 - 200 - # Default background color. 201 - typeset -g POWERLEVEL9K_BACKGROUND=234 202 - 203 - # Separator between same-color segments on the left. 204 - typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='%242F\uE0B1' 205 - # Separator between same-color segments on the right. 206 - typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='%242F\uE0B3' 207 - # Separator between different-color segments on the left. 208 - typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0' 209 - # Separator between different-color segments on the right. 210 - typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2' 211 - # The right end of left prompt. 212 - typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0' 213 - # The left end of right prompt. 214 - typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2' 215 - # The left end of left prompt. 216 - typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='' 217 - # The right end of right prompt. 218 - typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL='' 219 - # Left prompt terminator for lines without any segments. 220 - typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= 221 - 222 - #################################[ os_icon: os identifier ]################################## 223 - # OS identifier color. 224 - typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=255 225 - # Make the icon bold. 226 - typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='%B${P9K_CONTENT}' 227 - 228 - ################################[ prompt_char: prompt symbol ]################################ 229 - # Transparent background. 230 - typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND= 231 - # Green prompt symbol if the last command succeeded. 232 - typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 233 - # Red prompt symbol if the last command failed. 234 - typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 235 - # Default prompt symbol. 236 - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='โฏ' 237 - # Prompt symbol in command vi mode. 238 - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='โฎ' 239 - # Prompt symbol in visual vi mode. 240 - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='โ…ค' 241 - # Prompt symbol in overwrite vi mode. 242 - typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='โ–ถ' 243 - typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true 244 - # No line terminator if prompt_char is the last segment. 245 - typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= 246 - # No line introducer if prompt_char is the first segment. 247 - typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= 248 - # No surrounding whitespace. 249 - typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE= 250 - 251 - ##################################[ dir: current directory ]################################## 252 - # Default current directory color. 253 - typeset -g POWERLEVEL9K_DIR_FOREGROUND=31 254 - # If directory is too long, shorten some of its segments to the shortest possible unique 255 - # prefix. The shortened directory can be tab-completed to the original. 256 - typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique 257 - # Replace removed segment suffixes with this symbol. 258 - typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= 259 - # Color of the shortened directory segments. 260 - typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103 261 - # Color of the anchor directory segments. Anchor segments are never shortened. The first 262 - # segment is always an anchor. 263 - typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39 264 - # Display anchor directory segments in bold. 265 - typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true 266 - # Don't shorten directories that contain any of these files. They are anchors. 267 - local anchor_files=( 268 - .bzr 269 - .citc 270 - .git 271 - .hg 272 - .node-version 273 - .python-version 274 - .go-version 275 - .ruby-version 276 - .lua-version 277 - .java-version 278 - .perl-version 279 - .php-version 280 - .tool-version 281 - .shorten_folder_marker 282 - .svn 283 - .terraform 284 - CVS 285 - Cargo.toml 286 - composer.json 287 - go.mod 288 - package.json 289 - ) 290 - typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" 291 - # If set to true, remove everything before the last (deepest) subdirectory that contains files 292 - # matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is 293 - # /foo/bar/git_repo/baz, prompt will display git_repo/baz. This assumes that /foo/bar/git_repo 294 - # contains a marker (.git) and other directories don't. 295 - typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false 296 - # Don't shorten this many last directory segments. They are anchors. 297 - typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 298 - # Shorten directory if it's longer than this even if there is space for it. The value can 299 - # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty, 300 - # directory will be shortened only when prompt doesn't fit or when other parameters demand it 301 - # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below). 302 - # If set to `0`, directory will always be shortened to its minimum length. 303 - typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 304 - # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this 305 - # many columns for typing commands. 306 - typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 307 - # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least 308 - # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands. 309 - typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 310 - # If set to true, embed a hyperlink into the directory. Useful for quickly 311 - # opening a directory in the file manager simply by clicking the link. 312 - # Can also be handy when the directory is shortened, as it allows you to see 313 - # the full directory that was used in previous commands. 314 - typeset -g POWERLEVEL9K_DIR_HYPERLINK=false 315 - 316 - # Enable special styling for non-writable directories. 317 - typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=true 318 - # Show this icon when the current directory is not writable. POWERLEVEL9K_DIR_SHOW_WRITABLE 319 - # above must be set to true for this parameter to have effect. 320 - typeset -g POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='โˆ…' 321 - 322 - # Custom prefix. 323 - # typeset -g POWERLEVEL9K_DIR_PREFIX='%244Fin ' 324 - 325 - # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons for different directories. 326 - # It must be an array with 3 * N elements. Each triplet consists of: 327 - # 328 - # 1. A pattern against which the current directory is matched. Matching is done with 329 - # extended_glob option enabled. 330 - # 2. Directory class for the purpose of styling. 331 - # 3. Icon. 332 - # 333 - # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. If there 334 - # are no matches, the directory will have no icon. 335 - # 336 - # Example: 337 - # 338 - # typeset -g POWERLEVEL9K_DIR_CLASSES=( 339 - # '~/work(|/*)' WORK '(โ•ฏยฐโ–กยฐ๏ผ‰โ•ฏ๏ธต โ”ปโ”โ”ป' 340 - # '~(|/*)' HOME 'โŒ‚' 341 - # '*' DEFAULT '') 342 - # 343 - # With these settings, the current directory in the prompt may look like this: 344 - # 345 - # (โ•ฏยฐโ–กยฐ๏ผ‰โ•ฏ๏ธต โ”ปโ”โ”ป ~/work/projects/important/urgent 346 - # 347 - # Or like this: 348 - # 349 - # โŒ‚ ~/best/powerlevel10k 350 - # 351 - # You can also set different colors for directories of different classes. Remember to override 352 - # FOREGROUND, SHORTENED_FOREGROUND and ANCHOR_FOREGROUND for every directory class that you wish 353 - # to have its own color. 354 - # 355 - # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31 356 - # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103 357 - # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39 358 - # 359 - typeset -g POWERLEVEL9K_DIR_CLASSES=() 360 - 361 - #####################################[ vcs: git status ]###################################### 362 - # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon. 363 - typeset -g POWERLEVEL9K_VCS_BRANCH_ICON= 364 - POWERLEVEL9K_VCS_BRANCH_ICON=${(g::)POWERLEVEL9K_VCS_BRANCH_ICON} 365 - 366 - # Untracked files icon. It's really a question mark, your font isn't broken. 367 - # Change the value of this parameter to show a different icon. 368 - typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?' 369 - POWERLEVEL9K_VCS_UNTRACKED_ICON=${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON} 370 - 371 - # Formatter for Git status. 372 - # 373 - # Example output: master โ‡ฃ42โ‡ก42 *42 merge ~42 +42 !42 ?42. 374 - # 375 - # You can edit the function to customize how Git status looks. 376 - # 377 - # VCS_STATUS_* parameters are set by gitstatus plugin. See reference: 378 - # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. 379 - function my_git_formatter() { 380 - emulate -L zsh 381 - 382 - if [[ -n $P9K_CONTENT ]]; then 383 - # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from 384 - # gitstatus plugin). VCS_STATUS_* parameters are not available in this case. 385 - typeset -g my_git_format=$P9K_CONTENT 386 - return 387 - fi 388 - 389 - if (( $1 )); then 390 - # Styling for up-to-date Git status. 391 - local meta='%244F' # grey foreground 392 - local clean='%76F' # green foreground 393 - local modified='%178F' # yellow foreground 394 - local untracked='%39F' # blue foreground 395 - local conflicted='%196F' # red foreground 396 - else 397 - # Styling for incomplete and stale Git status. 398 - local meta='%244F' # grey foreground 399 - local clean='%244F' # grey foreground 400 - local modified='%244F' # grey foreground 401 - local untracked='%244F' # grey foreground 402 - local conflicted='%244F' # grey foreground 403 - fi 404 - 405 - local res 406 - local where # branch or tag 407 - if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then 408 - res+="${clean}${POWERLEVEL9K_VCS_BRANCH_ICON}" 409 - where=${(V)VCS_STATUS_LOCAL_BRANCH} 410 - elif [[ -n $VCS_STATUS_TAG ]]; then 411 - res+="${meta}#" 412 - where=${(V)VCS_STATUS_TAG} 413 - fi 414 - 415 - # If local branch name or tag is at most 32 characters long, show it in full. 416 - # Otherwise show the first 12 โ€ฆ the last 12. 417 - (( $#where > 32 )) && where[13,-13]="โ€ฆ" 418 - res+="${clean}${where//\%/%%}" # escape % 419 - 420 - # Display the current Git commit if there is no branch or tag. 421 - # Tip: To always display the current Git commit, remove `[[ -z $where ]] &&` from the next line. 422 - [[ -z $where ]] && res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" 423 - 424 - # Show tracking branch name if it differs from local branch. 425 - if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then 426 - res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" # escape % 427 - fi 428 - 429 - # โ‡ฃ42 if behind the remote. 430 - (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}โ‡ฃ${VCS_STATUS_COMMITS_BEHIND}" 431 - # โ‡ก42 if ahead of the remote; no leading space if also behind the remote: โ‡ฃ42โ‡ก42. 432 - (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " 433 - (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}โ‡ก${VCS_STATUS_COMMITS_AHEAD}" 434 - # โ‡ 42 if behind the push remote. 435 - (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}โ‡ ${VCS_STATUS_PUSH_COMMITS_BEHIND}" 436 - (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " 437 - # โ‡ข42 if ahead of the push remote; no leading space if also behind: โ‡ 42โ‡ข42. 438 - (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}โ‡ข${VCS_STATUS_PUSH_COMMITS_AHEAD}" 439 - # *42 if have stashes. 440 - (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" 441 - # 'merge' if the repo is in an unusual state. 442 - [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}" 443 - # ~42 if have merge conflicts. 444 - (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}" 445 - # +42 if have staged changes. 446 - (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}" 447 - # !42 if have unstaged changes. 448 - (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}" 449 - # ?42 if have untracked files. It's really a question mark, your font isn't broken. 450 - # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. 451 - # Remove the next line if you don't want to see untracked files at all. 452 - (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" 453 - # "โ”€" if the number of unstaged files is unknown. This can happen due to 454 - # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower 455 - # than the number of files in the Git index, or due to bash.showDirtyState being set to false 456 - # in the repository config. The number of staged and untracked files may also be unknown 457 - # in this case. 458 - (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}โ”€" 459 - 460 - typeset -g my_git_format=$res 461 - } 462 - functions -M my_git_formatter 2>/dev/null 463 - 464 - # Don't count the number of unstaged, untracked and conflicted files in Git repositories with 465 - # more than this many files in the index. Negative value means infinity. 466 - # 467 - # If you are working in Git repositories with tens of millions of files and seeing performance 468 - # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output 469 - # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's 470 - # config: `git config bash.showDirtyState false`. 471 - typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1 472 - 473 - # Don't show Git status in prompt for repositories whose workdir matches this pattern. 474 - # For example, if set to '~', the Git repository at $HOME/.git will be ignored. 475 - # Multiple patterns can be combined with '|': '~|~/some/dir'. 476 - typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~' 477 - 478 - # Disable the default Git status formatting. 479 - typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true 480 - # Install our own Git status formatter. 481 - typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}' 482 - typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}' 483 - # Enable counters for staged, unstaged, etc. 484 - typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 485 - 486 - # Icon color. 487 - typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76 488 - typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244 489 - # Custom icon. 490 - typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION= 491 - # Custom prefix. 492 - # typeset -g POWERLEVEL9K_VCS_PREFIX='%244Fon ' 493 - 494 - # Show status of repositories of these types. You can add svn and/or hg if you are 495 - # using them. If you do, your prompt may become slow even when your current directory 496 - # isn't in an svn or hg reposotiry. 497 - typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) 498 - 499 - # These settings are used for respositories other than Git or when gitstatusd fails and 500 - # Powerlevel10k has to fall back to using vcs_info. 501 - typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76 502 - typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76 503 - typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178 504 - 505 - ##########################[ status: exit code of the last command ]########################### 506 - # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and 507 - # style them independently from the regular OK and ERROR state. 508 - typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true 509 - 510 - # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as 511 - # it will signify success by turning green. 512 - typeset -g POWERLEVEL9K_STATUS_OK=true 513 - typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70 514 - typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='โœ”' 515 - 516 - # Status when some part of a pipe command fails but the overall exit status is zero. It may look 517 - # like this: 1|0. 518 - typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true 519 - typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70 520 - typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='โœ”' 521 - 522 - # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as 523 - # it will signify error by turning red. 524 - typeset -g POWERLEVEL9K_STATUS_ERROR=true 525 - typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160 526 - typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='โœ˜' 527 - 528 - # Status when the last command was terminated by a signal. 529 - typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true 530 - typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160 531 - # Use terse signal names: "INT" instead of "SIGINT(2)". 532 - typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false 533 - typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='โœ˜' 534 - 535 - # Status when some part of a pipe command fails and the overall exit status is also non-zero. 536 - # It may look like this: 1|0. 537 - typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true 538 - typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160 539 - typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='โœ˜' 540 - 541 - ###################[ command_execution_time: duration of the last command ]################### 542 - # Show duration of the last command if takes longer than this many seconds. 543 - typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 544 - # Show this many fractional digits. Zero means round to seconds. 545 - typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 546 - # Execution time color. 547 - typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=248 548 - # Duration format: 1d 2h 3m 4s. 549 - typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' 550 - # Custom icon. 551 - typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION= 552 - # Custom prefix. 553 - # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%244Ftook ' 554 - 555 - #######################[ background_jobs: presence of background jobs ]####################### 556 - # Don't show the number of background jobs. 557 - typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false 558 - # Background jobs color. 559 - typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=37 560 - # Custom icon. 561 - typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='โ‰ก' 562 - 563 - #######################[ direnv: direnv status (https://direnv.net/) ]######################## 564 - # Direnv color. 565 - typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178 566 - # Custom icon. 567 - # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 568 - 569 - ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]############### 570 - # Default asdf color. Only used to display tools for which there is no color override (see below). 571 - typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66 572 - 573 - # There are four parameters that can be used to hide asdf tools. Each parameter describes 574 - # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at 575 - # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to 576 - # hide a tool, it gets shown. 577 - # 578 - # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and 579 - # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands: 580 - # 581 - # asdf local python 3.8.1 582 - # asdf global python 3.8.1 583 - # 584 - # After running both commands the current python version is 3.8.1 and its source is "local" as 585 - # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false, 586 - # it'll hide python version in this case because 3.8.1 is the same as the global version. 587 - # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't 588 - # contain "local". 589 - 590 - # Hide tool versions that don't come from one of these sources. 591 - # 592 - # Available sources: 593 - # 594 - # - shell `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable" 595 - # - local `asdf current` says "set by /some/not/home/directory/file" 596 - # - global `asdf current` says "set by /home/username/file" 597 - # 598 - # Note: If this parameter is set to (shell local global), it won't hide tools. 599 - # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES. 600 - typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global) 601 - 602 - # If set to false, hide tool versions that are the same as global. 603 - # 604 - # Note: The name of this parameter doesn't reflect its meaning at all. 605 - # Note: If this parameter is set to true, it won't hide tools. 606 - # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW. 607 - typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false 608 - 609 - # If set to false, hide tool versions that are equal to "system". 610 - # 611 - # Note: If this parameter is set to true, it won't hide tools. 612 - # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM. 613 - typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true 614 - 615 - # If set to non-empty value, hide tools unless there is a file matching the specified file pattern 616 - # in the current directory, or its parent diretory, or its grandparent directory, and so on. 617 - # 618 - # Note: If this parameter is set to empty value, it won't hide tools. 619 - # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments. 620 - # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB. 621 - # 622 - # Example: Hide nodejs version when there is no package.json and no *.js files in the current 623 - # directory, in `..`, in `../..` and so on. 624 - # 625 - # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json' 626 - typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB= 627 - 628 - # Ruby version from asdf. 629 - typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=168 630 - # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='โญ' 631 - # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar' 632 - 633 - # Python version from asdf. 634 - typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=37 635 - # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='โญ' 636 - # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar' 637 - 638 - # Go version from asdf. 639 - typeset -g POWERLEVEL9K_ASDF_GO_FOREGROUND=37 640 - # typeset -g POWERLEVEL9K_ASDF_GO_VISUAL_IDENTIFIER_EXPANSION='โญ' 641 - # typeset -g POWERLEVEL9K_ASDF_GO_SHOW_ON_UPGLOB='*.foo|*.bar' 642 - 643 - # Node.js version from asdf. 644 - typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=70 645 - # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='โญ' 646 - # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar' 647 - 648 - # Rust version from asdf. 649 - typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=37 650 - # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='โญ' 651 - # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar' 652 - 653 - # .NET Core version from asdf. 654 - typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=134 655 - # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='โญ' 656 - # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_SHOW_ON_UPGLOB='*.foo|*.bar' 657 - 658 - # Flutter version from asdf. 659 - typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=38 660 - # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='โญ' 661 - # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar' 662 - 663 - # Lua version from asdf. 664 - typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=32 665 - # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='โญ' 666 - # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar' 667 - 668 - # Java version from asdf. 669 - typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=32 670 - # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='โญ' 671 - # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar' 672 - 673 - # Perl version from asdf. 674 - typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=67 675 - # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='โญ' 676 - # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar' 677 - 678 - # Erlang version from asdf. 679 - typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=125 680 - # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='โญ' 681 - # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar' 682 - 683 - # Elixir version from asdf. 684 - typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=129 685 - # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='โญ' 686 - # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar' 687 - 688 - # Postgres version from asdf. 689 - typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=31 690 - # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='โญ' 691 - # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar' 692 - 693 - # PHP version from asdf. 694 - typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=99 695 - # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='โญ' 696 - # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar' 697 - 698 - ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]########### 699 - # NordVPN connection indicator color. 700 - typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39 701 - # Hide NordVPN connection indicator when not connected. 702 - typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= 703 - typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= 704 - # Custom icon. 705 - # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='โญ' 706 - 707 - #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## 708 - # Ranger shell color. 709 - typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178 710 - # Custom icon. 711 - typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='โ–ฒ' 712 - 713 - ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### 714 - # Nnn shell color. 715 - typeset -g POWERLEVEL9K_NNN_FOREGROUND=72 716 - # Custom icon. 717 - # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='โญ' 718 - 719 - ###########################[ vim_shell: vim shell indicator (:sh) ]########################### 720 - # Vim shell indicator color. 721 - typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34 722 - # Custom icon. 723 - # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='โญ' 724 - 725 - ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]###### 726 - # Midnight Commander shell color. 727 - typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=178 728 - # Custom icon. 729 - # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='โญ' 730 - 731 - #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]## 732 - # Nix shell color. 733 - typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74 734 - 735 - # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line. 736 - # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION= 737 - 738 - # Custom icon. 739 - # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='โญ' 740 - 741 - ##################################[ disk_usgae: disk usage ]################################## 742 - # Colors for different levels of disk usage. 743 - typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35 744 - typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=220 745 - typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=160 746 - # Thresholds for different levels of disk usage (percentage points). 747 - typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90 748 - typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95 749 - # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent. 750 - typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false 751 - # Custom icon. 752 - # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='โญ' 753 - 754 - ###########[ vi_mode: vi mode (you don't need this if you've enabled prompt_char) ]########### 755 - # Text and color for normal (a.k.a. command) vi mode. 756 - typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=NORMAL 757 - typeset -g POWERLEVEL9K_VI_MODE_NORMAL_FOREGROUND=106 758 - # Text and color for visual vi mode. 759 - typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=VISUAL 760 - typeset -g POWERLEVEL9K_VI_MODE_VISUAL_FOREGROUND=68 761 - # Text and color for overtype (a.k.a. overwrite and replace) vi mode. 762 - typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=OVERTYPE 763 - typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_FOREGROUND=172 764 - # Text and color for insert vi mode. 765 - typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING= 766 - typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=66 767 - 768 - # Custom icon. 769 - typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='โ–ฒ' 770 - 771 - ######################################[ ram: free RAM ]####################################### 772 - # RAM color. 773 - typeset -g POWERLEVEL9K_RAM_FOREGROUND=66 774 - # Custom icon. 775 - # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='โญ' 776 - 777 - #####################################[ swap: used swap ]###################################### 778 - # Swap color. 779 - typeset -g POWERLEVEL9K_SWAP_FOREGROUND=96 780 - # Custom icon. 781 - # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='โญ' 782 - 783 - ######################################[ load: CPU load ]###################################### 784 - # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15. 785 - typeset -g POWERLEVEL9K_LOAD_WHICH=5 786 - # Load color when load is under 50%. 787 - typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66 788 - # Load color when load is between 50% and 70%. 789 - typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178 790 - # Load color when load is over 70%. 791 - typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166 792 - # Custom icon. 793 - # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='โญ' 794 - 795 - ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################ 796 - # Todo color. 797 - typeset -g POWERLEVEL9K_TODO_FOREGROUND=110 798 - # Hide todo when the total number of tasks is zero. 799 - typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true 800 - # Hide todo when the number of tasks after filtering is zero. 801 - typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false 802 - 803 - # Todo format. The following parameters are available within the expansion. 804 - # 805 - # - P9K_TODO_TOTAL_TASK_COUNT The total number of tasks. 806 - # - P9K_TODO_FILTERED_TASK_COUNT The number of tasks after filtering. 807 - # 808 - # These variables correspond to the last line of the output of `todo.sh -p ls`: 809 - # 810 - # TODO: 24 of 42 tasks shown 811 - # 812 - # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT. 813 - # 814 - # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT' 815 - 816 - # Custom icon. 817 - # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='โญ' 818 - 819 - ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############ 820 - # Timewarrior color. 821 - typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=110 822 - # If the tracked task is longer than 24 characters, truncate and append "โ€ฆ". 823 - # Tip: To always display tasks without truncation, delete the following parameter. 824 - # Tip: To hide task names and display just the icon when time tracking is enabled, set the 825 - # value of the following parameter to "". 826 - typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+โ€ฆ}' 827 - 828 - # Custom icon. 829 - # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='โญ' 830 - 831 - ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]############## 832 - # Taskwarrior color. 833 - typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74 834 - 835 - # Taskwarrior segment format. The following parameters are available within the expansion. 836 - # 837 - # - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`. 838 - # - P9K_TASKWARRIOR_OVERDUE_COUNT The number of overdue tasks: `task +OVERDUE count`. 839 - # 840 - # Zero values are represented as empty parameters. 841 - # 842 - # The default format: 843 - # 844 - # '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT' 845 - # 846 - # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT' 847 - 848 - # Custom icon. 849 - # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='โญ' 850 - 851 - ##################################[ context: user@hostname ]################################## 852 - # Context color when running with privileges. 853 - typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178 854 - # Context color in SSH without privileges. 855 - typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=180 856 - # Default context color (no privileges, no SSH). 857 - typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=180 858 - 859 - # Context format when running with privileges: bold user@hostname. 860 - typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m' 861 - # Context format when in SSH without privileges: user@hostname. 862 - typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m' 863 - # Default context format (no privileges, no SSH): user@hostname. 864 - typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m' 865 - 866 - # Don't show context unless running with privileges or in SSH. 867 - # Tip: Remove the next line to always show context. 868 - typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION= 869 - 870 - # Custom icon. 871 - # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='โญ' 872 - # Custom prefix. 873 - # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%244Fwith ' 874 - 875 - ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]### 876 - # Python virtual environment color. 877 - typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37 878 - # Don't show Python version next to the virtual environment name. 879 - typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false 880 - # Separate environment name from Python version only with a space. 881 - typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= 882 - # Custom icon. 883 - # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 884 - 885 - #####################[ anaconda: conda environment (https://conda.io/) ]###################### 886 - # Anaconda environment color. 887 - typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37 888 - # Don't show Python version next to the anaconda environment name. 889 - typeset -g POWERLEVEL9K_ANACONDA_SHOW_PYTHON_VERSION=false 890 - # Separate environment name from Python version only with a space. 891 - typeset -g POWERLEVEL9K_ANACONDA_{LEFT,RIGHT}_DELIMITER= 892 - # Custom icon. 893 - # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='โญ' 894 - 895 - ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################ 896 - # Pyenv color. 897 - typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37 898 - # Hide python version if it doesn't come from one of these sources. 899 - typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global) 900 - # If set to false, hide python version if it's the same as global: 901 - # $(pyenv version-name) == $(pyenv global). 902 - typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false 903 - # Custom icon. 904 - # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 905 - 906 - ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################ 907 - # Goenv color. 908 - typeset -g POWERLEVEL9K_GOENV_FOREGROUND=37 909 - # Hide go version if it doesn't come from one of these sources. 910 - typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global) 911 - # If set to false, hide go version if it's the same as global: 912 - # $(goenv version-name) == $(goenv global). 913 - typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false 914 - # Custom icon. 915 - # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 916 - 917 - ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]########## 918 - # Nodenv color. 919 - typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70 920 - # Don't show node version if it's the same as global: $(nodenv version-name) == $(nodenv global). 921 - typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false 922 - # Custom icon. 923 - # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 924 - 925 - ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]############### 926 - # Nvm color. 927 - typeset -g POWERLEVEL9K_NVM_FOREGROUND=70 928 - # Custom icon. 929 - # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='โญ' 930 - 931 - ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############ 932 - # Nodeenv color. 933 - typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70 934 - # Don't show Node version next to the environment name. 935 - typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false 936 - # Separate environment name from Node version only with a space. 937 - typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER= 938 - # Custom icon. 939 - # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 940 - 941 - ##############################[ node_version: node.js version ]############################### 942 - # Node version color. 943 - typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70 944 - # Show node version only when in a directory tree containing package.json. 945 - typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true 946 - # Custom icon. 947 - # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 948 - 949 - #######################[ go_version: go version (https://golang.org) ]######################## 950 - # Go version color. 951 - typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37 952 - # Show go version only when in a go project subdirectory. 953 - typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true 954 - # Custom icon. 955 - # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 956 - 957 - #################[ rust_version: rustc version (https://www.rust-lang.org) ]################## 958 - # Rust version color. 959 - typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37 960 - # Show rust version only when in a rust project subdirectory. 961 - typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true 962 - # Custom icon. 963 - # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 964 - 965 - ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################ 966 - # .NET version color. 967 - typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134 968 - # Show .NET version only when in a .NET project subdirectory. 969 - typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true 970 - # Custom icon. 971 - # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 972 - 973 - #####################[ php_version: php version (https://www.php.net/) ]###################### 974 - # PHP version color. 975 - typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=99 976 - # Show PHP version only when in a PHP project subdirectory. 977 - typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true 978 - # Custom icon. 979 - # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 980 - 981 - ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]########### 982 - # Laravel version color. 983 - typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=161 984 - # Custom icon. 985 - # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 986 - 987 - #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]############## 988 - # Rbenv color. 989 - typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168 990 - # Hide ruby version if it doesn't come from one of these sources. 991 - typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global) 992 - # If set to false, hide ruby version if it's the same as global: 993 - # $(rbenv version-name) == $(rbenv global). 994 - typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false 995 - # Custom icon. 996 - # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 997 - 998 - #######################[ rvm: ruby version from rvm (https://rvm.io) ]######################## 999 - # Rvm color. 1000 - typeset -g POWERLEVEL9K_RVM_FOREGROUND=168 1001 - # Don't show @gemset at the end. 1002 - typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false 1003 - # Don't show ruby- at the front. 1004 - typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false 1005 - # Custom icon. 1006 - # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='โญ' 1007 - 1008 - ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############ 1009 - # Fvm color. 1010 - typeset -g POWERLEVEL9K_FVM_FOREGROUND=38 1011 - # Custom icon. 1012 - # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='โญ' 1013 - 1014 - ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]########### 1015 - # Lua color. 1016 - typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=32 1017 - # Hide lua version if it doesn't come from one of these sources. 1018 - typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global) 1019 - # If set to false, hide lua version if it's the same as global: 1020 - # $(luaenv version-name) == $(luaenv global). 1021 - typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false 1022 - # Custom icon. 1023 - # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1024 - 1025 - ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################ 1026 - # Java color. 1027 - typeset -g POWERLEVEL9K_JENV_FOREGROUND=32 1028 - # Hide java version if it doesn't come from one of these sources. 1029 - typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global) 1030 - # If set to false, hide java version if it's the same as global: 1031 - # $(jenv version-name) == $(jenv global). 1032 - typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false 1033 - # Custom icon. 1034 - # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1035 - 1036 - ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############ 1037 - # Perl color. 1038 - typeset -g POWERLEVEL9K_PLENV_FOREGROUND=67 1039 - # Hide perl version if it doesn't come from one of these sources. 1040 - typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global) 1041 - # If set to false, hide perl version if it's the same as global: 1042 - # $(plenv version-name) == $(plenv global). 1043 - typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false 1044 - # Custom icon. 1045 - # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1046 - 1047 - ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############ 1048 - # PHP color. 1049 - typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99 1050 - # Hide php version if it doesn't come from one of these sources. 1051 - typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global) 1052 - # If set to false, hide php version if it's the same as global: 1053 - # $(phpenv version-name) == $(phpenv global). 1054 - typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false 1055 - # Custom icon. 1056 - # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1057 - 1058 - ################[ terraform: terraform workspace (https://www.terraform.io) ]################# 1059 - # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element 1060 - # in each pair defines a pattern against which the current terraform workspace gets matched. 1061 - # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) 1062 - # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters, 1063 - # you'll see this value in your prompt. The second element of each pair in 1064 - # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The 1065 - # first match wins. 1066 - # 1067 - # For example, given these settings: 1068 - # 1069 - # typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( 1070 - # '*prod*' PROD 1071 - # '*test*' TEST 1072 - # '*' DEFAULT) 1073 - # 1074 - # If your current terraform workspace is "project_test", its class is TEST because "project_test" 1075 - # doesn't match the pattern '*prod*' but does match '*test*'. 1076 - # 1077 - # You can define different colors, icons and content expansions for different classes: 1078 - # 1079 - # typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=28 1080 - # typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='โญ' 1081 - # typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' 1082 - typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( 1083 - # '*prod*' PROD # These values are examples that are unlikely 1084 - # '*test*' TEST # to match your needs. Customize them as needed. 1085 - '*' DEFAULT) 1086 - typeset -g POWERLEVEL9K_TERRAFORM_DEFAULT_FOREGROUND=38 1087 - # typeset -g POWERLEVEL9K_TERRAFORM_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='โญ' 1088 - 1089 - #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]############# 1090 - # Show kubecontext only when the the command you are typing invokes one of these tools. 1091 - # Tip: Remove the next line to always show kubecontext. 1092 - typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc' 1093 - 1094 - # Kubernetes context classes for the purpose of using different colors, icons and expansions with 1095 - # different contexts. 1096 - # 1097 - # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element 1098 - # in each pair defines a pattern against which the current kubernetes context gets matched. 1099 - # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) 1100 - # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters, 1101 - # you'll see this value in your prompt. The second element of each pair in 1102 - # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The 1103 - # first match wins. 1104 - # 1105 - # For example, given these settings: 1106 - # 1107 - # typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( 1108 - # '*prod*' PROD 1109 - # '*test*' TEST 1110 - # '*' DEFAULT) 1111 - # 1112 - # If your current kubernetes context is "deathray-testing/default", its class is TEST 1113 - # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'. 1114 - # 1115 - # You can define different colors, icons and content expansions for different classes: 1116 - # 1117 - # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28 1118 - # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='โญ' 1119 - # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' 1120 - typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( 1121 - # '*prod*' PROD # These values are examples that are unlikely 1122 - # '*test*' TEST # to match your needs. Customize them as needed. 1123 - '*' DEFAULT) 1124 - typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134 1125 - typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='โ—‹' 1126 - 1127 - # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext 1128 - # segment. Parameter expansions are very flexible and fast, too. See reference: 1129 - # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. 1130 - # 1131 - # Within the expansion the following parameters are always available: 1132 - # 1133 - # - P9K_CONTENT The content that would've been displayed if there was no content 1134 - # expansion defined. 1135 - # - P9K_KUBECONTEXT_NAME The current context's name. Corresponds to column NAME in the 1136 - # output of `kubectl config get-contexts`. 1137 - # - P9K_KUBECONTEXT_CLUSTER The current context's cluster. Corresponds to column CLUSTER in the 1138 - # output of `kubectl config get-contexts`. 1139 - # - P9K_KUBECONTEXT_NAMESPACE The current context's namespace. Corresponds to column NAMESPACE 1140 - # in the output of `kubectl config get-contexts`. If there is no 1141 - # namespace, the parameter is set to "default". 1142 - # - P9K_KUBECONTEXT_USER The current context's user. Corresponds to column AUTHINFO in the 1143 - # output of `kubectl config get-contexts`. 1144 - # 1145 - # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS), 1146 - # the following extra parameters are available: 1147 - # 1148 - # - P9K_KUBECONTEXT_CLOUD_NAME Either "gke" or "eks". 1149 - # - P9K_KUBECONTEXT_CLOUD_ACCOUNT Account/project ID. 1150 - # - P9K_KUBECONTEXT_CLOUD_ZONE Availability zone. 1151 - # - P9K_KUBECONTEXT_CLOUD_CLUSTER Cluster. 1152 - # 1153 - # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example, 1154 - # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01": 1155 - # 1156 - # - P9K_KUBECONTEXT_CLOUD_NAME=gke 1157 - # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account 1158 - # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a 1159 - # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 1160 - # 1161 - # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01": 1162 - # 1163 - # - P9K_KUBECONTEXT_CLOUD_NAME=eks 1164 - # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012 1165 - # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1 1166 - # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 1167 - typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION= 1168 - # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME. 1169 - POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}' 1170 - # Append the current context's namespace if it's not "default". 1171 - POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}' 1172 - 1173 - # Custom prefix. 1174 - # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%244Fat ' 1175 - 1176 - #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]# 1177 - # Show aws only when the the command you are typing invokes one of these tools. 1178 - # Tip: Remove the next line to always show aws. 1179 - typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|terraform|pulumi' 1180 - 1181 - # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element 1182 - # in each pair defines a pattern against which the current AWS profile gets matched. 1183 - # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) 1184 - # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters, 1185 - # you'll see this value in your prompt. The second element of each pair in 1186 - # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The 1187 - # first match wins. 1188 - # 1189 - # For example, given these settings: 1190 - # 1191 - # typeset -g POWERLEVEL9K_AWS_CLASSES=( 1192 - # '*prod*' PROD 1193 - # '*test*' TEST 1194 - # '*' DEFAULT) 1195 - # 1196 - # If your current AWS profile is "company_test", its class is TEST 1197 - # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'. 1198 - # 1199 - # You can define different colors, icons and content expansions for different classes: 1200 - # 1201 - # typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28 1202 - # typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='โญ' 1203 - # typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' 1204 - typeset -g POWERLEVEL9K_AWS_CLASSES=( 1205 - # '*prod*' PROD # These values are examples that are unlikely 1206 - # '*test*' TEST # to match your needs. Customize them as needed. 1207 - '*' DEFAULT) 1208 - typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208 1209 - # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='โญ' 1210 - 1211 - #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]# 1212 - # AWS Elastic Beanstalk environment color. 1213 - typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70 1214 - # Custom icon. 1215 - typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='eb' 1216 - 1217 - ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## 1218 - # Show azure only when the the command you are typing invokes one of these tools. 1219 - # Tip: Remove the next line to always show azure. 1220 - typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi' 1221 - # Azure account name color. 1222 - typeset -g POWERLEVEL9K_AZURE_FOREGROUND=32 1223 - # Custom icon. 1224 - typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='az' 1225 - 1226 - ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]########### 1227 - # Show gcloud only when the the command you are typing invokes one of these tools. 1228 - # Tip: Remove the next line to always show gcloud. 1229 - typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs' 1230 - # Google cloud color. 1231 - typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32 1232 - 1233 - # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_CONTENT_EXPANSION if the default 1234 - # is too verbose or not informative enough. 1235 - # 1236 - # P9K_GCLOUD_ACCOUNT: the output of `gcloud config get-value account` 1237 - # P9K_GCLOUD_PROJECT: the output of `gcloud config get-value project` 1238 - # ${VARIABLE//\%/%%}: ${VARIABLE} with all occurences of '%' replaced with '%%'. 1239 - # 1240 - typeset -g POWERLEVEL9K_GCLOUD_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT//\%/%%}' 1241 - 1242 - # Custom icon. 1243 - # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='โญ' 1244 - 1245 - #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]# 1246 - # Show google_app_cred only when the the command you are typing invokes one of these tools. 1247 - # Tip: Remove the next line to always show google_app_cred. 1248 - typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi' 1249 - 1250 - # Google application credentials classes for the purpose of using different colors, icons and 1251 - # expansions with different credentials. 1252 - # 1253 - # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first 1254 - # element in each pair defines a pattern against which the current kubernetes context gets 1255 - # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion 1256 - # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION 1257 - # parameters, you'll see this value in your prompt. The second element of each pair in 1258 - # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order. 1259 - # The first match wins. 1260 - # 1261 - # For example, given these settings: 1262 - # 1263 - # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( 1264 - # '*:*prod*:*' PROD 1265 - # '*:*test*:*' TEST 1266 - # '*' DEFAULT) 1267 - # 1268 - # If your current Google application credentials is "service_account deathray-testing x@y.com", 1269 - # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'. 1270 - # 1271 - # You can define different colors, icons and content expansions for different classes: 1272 - # 1273 - # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28 1274 - # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='โญ' 1275 - # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID' 1276 - typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( 1277 - # '*:*prod*:*' PROD # These values are examples that are unlikely 1278 - # '*:*test*:*' TEST # to match your needs. Customize them as needed. 1279 - '*' DEFAULT) 1280 - typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=32 1281 - # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='โญ' 1282 - 1283 - # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by 1284 - # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference: 1285 - # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. 1286 - # 1287 - # You can use the following parameters in the expansion. Each of them corresponds to one of the 1288 - # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS. 1289 - # 1290 - # Parameter | JSON key file field 1291 - # ---------------------------------+--------------- 1292 - # P9K_GOOGLE_APP_CRED_TYPE | type 1293 - # P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id 1294 - # P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email 1295 - # 1296 - # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurences of '%' replaced by '%%'. 1297 - typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}' 1298 - 1299 - ###############################[ public_ip: public IP address ]############################### 1300 - # Public IP color. 1301 - typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94 1302 - # Custom icon. 1303 - # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='โญ' 1304 - 1305 - ########################[ vpn_ip: virtual private network indicator ]######################### 1306 - # VPN IP color. 1307 - typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81 1308 - # When on VPN, show just an icon without the IP address. 1309 - # Tip: To display the private IP address when on VPN, remove the next line. 1310 - typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION= 1311 - # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN 1312 - # to see the name of the interface. 1313 - typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(wg|(.*tun))[0-9]*' 1314 - # If set to true, show one segment per matching network interface. If set to false, show only 1315 - # one segment corresponding to the first matching network interface. 1316 - # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION. 1317 - typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false 1318 - # Custom icon. 1319 - # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='โญ' 1320 - 1321 - ###########[ ip: ip address and bandwidth usage for a specified network interface ]########### 1322 - # IP color. 1323 - typeset -g POWERLEVEL9K_IP_FOREGROUND=38 1324 - # The following parameters are accessible within the expansion: 1325 - # 1326 - # Parameter | Meaning 1327 - # ----------------------+--------------- 1328 - # P9K_IP_IP | IP address 1329 - # P9K_IP_INTERFACE | network interface 1330 - # P9K_IP_RX_BYTES | total number of bytes received 1331 - # P9K_IP_TX_BYTES | total number of bytes sent 1332 - # P9K_IP_RX_RATE | receive rate (since last prompt) 1333 - # P9K_IP_TX_RATE | send rate (since last prompt) 1334 - typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+%70Fโ‡ฃ$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+%215Fโ‡ก$P9K_IP_TX_RATE }%38F$P9K_IP_IP' 1335 - # Show information for the first network interface whose name matches this regular expression. 1336 - # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces. 1337 - typeset -g POWERLEVEL9K_IP_INTERFACE='e.*' 1338 - # Custom icon. 1339 - # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='โญ' 1340 - 1341 - #########################[ proxy: system-wide http/https/ftp proxy ]########################## 1342 - # Proxy color. 1343 - typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68 1344 - # Custom icon. 1345 - # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='โญ' 1346 - 1347 - ################################[ battery: internal battery ]################################# 1348 - # Show battery in red when it's below this level and not connected to power supply. 1349 - typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20 1350 - typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160 1351 - # Show battery in green when it's charging or fully charged. 1352 - typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70 1353 - # Show battery in yellow when it's discharging. 1354 - typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178 1355 - # Battery pictograms going from low to high level of charge. 1356 - typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}โ–' '%K{232}โ–‚' '%K{232}โ–ƒ' '%K{232}โ–„' '%K{232}โ–…' '%K{232}โ–†' '%K{232}โ–‡' '%K{232}โ–ˆ') 1357 - # Don't show the remaining time to charge/discharge. 1358 - typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false 1359 - 1360 - #####################################[ wifi: wifi speed ]##################################### 1361 - # WiFi color. 1362 - typeset -g POWERLEVEL9K_WIFI_FOREGROUND=68 1363 - # Custom icon. 1364 - # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='โญ' 1365 - 1366 - # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS). 1367 - # 1368 - # # Wifi colors and icons for different signal strength levels (low to high). 1369 - # typeset -g my_wifi_fg=(68 68 68 68 68) # <-- change these values 1370 - # typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi') # <-- change these values 1371 - # 1372 - # typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps' 1373 - # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}' 1374 - # 1375 - # The following parameters are accessible within the expansions: 1376 - # 1377 - # Parameter | Meaning 1378 - # ----------------------+--------------- 1379 - # P9K_WIFI_SSID | service set identifier, a.k.a. network name 1380 - # P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none" 1381 - # P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second 1382 - # P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0 1383 - # P9K_WIFI_NOISE | noise in dBm, from -120 to 0 1384 - # P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE) 1385 - # 1386 - # All parameters except P9K_WIFI_BARS are extracted from the output of the following command: 1387 - # 1388 - # /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I 1389 - 1390 - ####################################[ time: current time ]#################################### 1391 - # Current time color. 1392 - typeset -g POWERLEVEL9K_TIME_FOREGROUND=66 1393 - # Format for the current time: 09:51:02. See `man 3 strftime`. 1394 - typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}' 1395 - # If set to true, time will update when you hit enter. This way prompts for the past 1396 - # commands will contain the start times of their commands as opposed to the default 1397 - # behavior where they contain the end times of their preceding commands. 1398 - typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false 1399 - # Custom icon. 1400 - typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION= 1401 - # Custom prefix. 1402 - # typeset -g POWERLEVEL9K_TIME_PREFIX='%244Fat ' 1403 - 1404 - # Example of a user-defined prompt segment. Function prompt_example will be called on every 1405 - # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or 1406 - # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and orange text greeting the user. 1407 - # 1408 - # Type `p10k help segment` for documentation and a more sophisticated example. 1409 - function prompt_example() { 1410 - p10k segment -f 208 -i 'โญ' -t 'hello, %n' 1411 - } 1412 - 1413 - # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job 1414 - # is to generate the prompt segment for display in instant prompt. See 1415 - # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. 1416 - # 1417 - # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function 1418 - # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k 1419 - # will replay these calls without actually calling instant_prompt_*. It is imperative that 1420 - # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this 1421 - # rule is not observed, the content of instant prompt will be incorrect. 1422 - # 1423 - # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If 1424 - # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt. 1425 - function instant_prompt_example() { 1426 - # Since prompt_example always makes the same `p10k segment` calls, we can call it from 1427 - # instant_prompt_example. This will give us the same `example` prompt segment in the instant 1428 - # and regular prompts. 1429 - prompt_example 1430 - } 1431 - 1432 - # User-defined prompt segments can be customized the same way as built-in segments. 1433 - # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208 1434 - # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='โญ' 1435 - 1436 - # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt 1437 - # when accepting a command line. Supported values: 1438 - # 1439 - # - off: Don't change prompt when accepting a command line. 1440 - # - always: Trim down prompt when accepting a command line. 1441 - # - same-dir: Trim down prompt when accepting a command line unless this is the first command 1442 - # typed after changing current working directory. 1443 - typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always 1444 - 1445 - # Instant prompt mode. 1446 - # 1447 - # - off: Disable instant prompt. Choose this if you've tried instant prompt and found 1448 - # it incompatible with your zsh configuration files. 1449 - # - quiet: Enable instant prompt and don't print warnings when detecting console output 1450 - # during zsh initialization. Choose this if you've read and understood 1451 - # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. 1452 - # - verbose: Enable instant prompt and print a warning when detecting console output during 1453 - # zsh initialization. Choose this if you've never tried instant prompt, haven't 1454 - # seen the warning, or if you are unsure what this all means. 1455 - typeset -g POWERLEVEL9K_INSTANT_PROMPT=off 1456 - 1457 - # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized. 1458 - # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload 1459 - # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you 1460 - # really need it. 1461 - typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true 1462 - 1463 - # If p10k is already loaded, reload configuration. 1464 - # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true. 1465 - (( ! $+functions[p10k] )) || p10k reload 1466 - } 1467 - 1468 - (( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} 1469 - 'builtin' 'unset' 'p10k_config_opts'
···
+4 -1
home/modules/profiles/default.nix
··· 8 in 9 builtins.foldl' reducer {} config.activeProfiles; 10 in { 11 - options.activeProfiles = lib.mkOption {type = lib.types.listOf lib.types.str;}; 12 13 config.profiles = profileEnabler; 14 }
··· 8 in 9 builtins.foldl' reducer {} config.activeProfiles; 10 in { 11 + options.activeProfiles = lib.mkOption { 12 + type = lib.types.listOf lib.types.str; 13 + default = []; 14 + }; 15 16 config.profiles = profileEnabler; 17 }
+98 -12
home/modules/profiles/development/default.nix
··· 13 }; 14 15 config = lib.mkIf cfg.enable { 16 - programs.emacs = { 17 - extraPackages = ep: [ep.magit]; 18 - extraInit = '' 19 - ;; prepare magit use from shell 20 - (require 'magit) 21 - (global-git-commit-mode) 22 23 - ;; let magit autorefresh on file save within emacs 24 - (add-hook 'after-save-hook 'magit-after-save-refresh-status t) 25 - ''; 26 }; 27 28 programs.gh.enable = true; ··· 38 inputs = builtins.attrValues {inherit (pkgs) git fzf ripgrep;}; 39 interpreter = "${pkgs.bash}/bin/bash"; 40 execer = ["cannot:${pkgs.git}/bin/git" "cannot:${pkgs.fzf}/bin/fzf"]; 41 - } '' 42 git log --graph --color=always --format="%C(auto)%h%d %s0x09%C(white)%C(bold)%cr" "$@" | 43 fzf --ansi --no-sort --reverse --tiebreak=index \ 44 --bind=ctrl-s:toggle-sort \ ··· 46 {} 47 FZF-EOF" 48 ''; 49 in { 50 br = "branch"; 51 co = "checkout"; 52 graph = "log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold cyan)%h%C(reset) - %C(green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all"; 53 pl = "pull"; 54 ps = "push"; 55 root = "rev-parse --show-toplevel"; 56 st = "status"; 57 - sw = "switch"; 58 swag = ''!f() { if [ -z "$1" ]; then tag=$(git describe --abbrev=0 --tag); else tag=$(git describe --abbrev=0 --tag "$1"); fi; git switch --detach "''${tag}"; }; f''; 59 hopbase = ''!f() { set -o nounset; tag=$(git describe --abbrev=0 --tag "$1") && git rebase -i "''${tag}"; }; f''; 60 comfix = "!${mkFixupAlias "fixup"}"; 61 comreb = "!${mkFixupAlias "rebase"}"; 62 }; 63 64 extraConfig = { 65 init.defaultBranch = "main"; 66 pull.rebase = false; 67 }; 68 69 ignores = [ ··· 97 user.email = "norbert.melzer@cloudseeds.de"; 98 }; 99 } 100 ]; 101 }; 102 103 - home.packages = [pkgs.ripgrep]; 104 }; 105 }
··· 13 }; 14 15 config = lib.mkIf cfg.enable { 16 + programs.jujutsu = { 17 + enable = true; 18 + settings = { 19 + user = { 20 + name = config.programs.git.userName; 21 + email = config.programs.git.userEmail; 22 + }; 23 24 + ui.diff.tool = [config.programs.git.extraConfig.diff.external "$left" "$right"]; 25 + }; 26 }; 27 28 programs.gh.enable = true; ··· 38 inputs = builtins.attrValues {inherit (pkgs) git fzf ripgrep;}; 39 interpreter = "${pkgs.bash}/bin/bash"; 40 execer = ["cannot:${pkgs.git}/bin/git" "cannot:${pkgs.fzf}/bin/fzf"]; 41 + } 42 + # bash 43 + '' 44 git log --graph --color=always --format="%C(auto)%h%d %s0x09%C(white)%C(bold)%cr" "$@" | 45 fzf --ansi --no-sort --reverse --tiebreak=index \ 46 --bind=ctrl-s:toggle-sort \ ··· 48 {} 49 FZF-EOF" 50 ''; 51 + gitSwitchFzf = 52 + pkgs.resholve.writeScript "git-switch-fzf" { 53 + inputs = builtins.attrValues {inherit (pkgs) git fzf coreutils gawk;}; 54 + interpreter = "${pkgs.bash}/bin/bash"; 55 + execer = ["cannot:${pkgs.git}/bin/git" "cannot:${pkgs.fzf}/bin/fzf"]; 56 + } 57 + # bash 58 + '' 59 + # Function to determine the ref type 60 + function get_ref_type() { 61 + local ref="$1" 62 + if git show-ref --verify --quiet refs/heads/"$ref"; then 63 + echo "branch" 64 + elif git show-ref --verify --quiet refs/tags/"$ref"; then 65 + echo "tag" 66 + elif git rev-parse --verify --quiet "$ref" >/dev/null; then 67 + echo "commit" 68 + else 69 + echo "unknown" 70 + fi 71 + } 72 + 73 + # Function to select a ref using fzf 74 + function select_ref_with_fzf() { 75 + cat <(git branch --format='%(refname:short) [branch]') \ 76 + <(git tag --format='%(refname:short) [tag]') \ 77 + <(git log --pretty=format:'%h %s [commit]') \ 78 + | fzf 79 + } 80 + 81 + # If the first argument is -c or -C, forward the arguments as-is to git switch 82 + if [ "$#" -ge 2 ] && ([[ "$1" == "-c" ]] || [[ "$1" == "-C" ]]); then 83 + git switch "$@" 84 + else 85 + # If an argument is provided and it's not -c or -C, switch to the specified ref 86 + if [ "$#" -eq 1 ]; then 87 + ref_name="$1" 88 + ref_type=$(get_ref_type "$ref_name") 89 + 90 + if [ "$ref_type" == "unknown" ]; then 91 + echo "Invalid ref: $ref_name" >&2 92 + exit 1 93 + fi 94 + else 95 + # If no argument or only -c/-C is provided, use the fzf selection interface to select a ref 96 + selected_ref=$(select_ref_with_fzf) 97 + 98 + # Extract the ref name and type from the selected_ref string 99 + ref_name=$(echo "$selected_ref" | awk '{print $1}') 100 + ref_type=$(echo "$selected_ref" | awk '{print $NF}' | tr -d '[]') 101 + fi 102 + 103 + # Based on the ref type, issue the appropriate git switch command 104 + case "$ref_type" in 105 + branch) 106 + git switch "$ref_name" 107 + ;; 108 + tag) 109 + git switch --detach "$ref_name" 110 + ;; 111 + commit) 112 + git switch --detach "$ref_name" 113 + ;; 114 + *) 115 + # If an invalid ref type is encountered, print an error message and exit 116 + echo "Invalid ref type: $ref_type" >&2 117 + exit 1 118 + ;; 119 + esac 120 + fi 121 + ''; 122 in { 123 br = "branch"; 124 co = "checkout"; 125 + vommit = "commit"; 126 + vomit = "commit"; 127 graph = "log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold cyan)%h%C(reset) - %C(green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all"; 128 pl = "pull"; 129 ps = "push"; 130 + psf = "push --force-with-lease"; 131 root = "rev-parse --show-toplevel"; 132 st = "status"; 133 + sw = "!${gitSwitchFzf}"; 134 swag = ''!f() { if [ -z "$1" ]; then tag=$(git describe --abbrev=0 --tag); else tag=$(git describe --abbrev=0 --tag "$1"); fi; git switch --detach "''${tag}"; }; f''; 135 hopbase = ''!f() { set -o nounset; tag=$(git describe --abbrev=0 --tag "$1") && git rebase -i "''${tag}"; }; f''; 136 comfix = "!${mkFixupAlias "fixup"}"; 137 comreb = "!${mkFixupAlias "rebase"}"; 138 + show = "show --ext-diff"; 139 + lp = "log -p --ext-diff"; 140 }; 141 142 extraConfig = { 143 init.defaultBranch = "main"; 144 + diff.external = lib.getExe pkgs.difftastic; 145 pull.rebase = false; 146 + rerere.enabled = true; 147 }; 148 149 ignores = [ ··· 177 user.email = "norbert.melzer@cloudseeds.de"; 178 }; 179 } 180 + { 181 + condition = "gitdir:~/Projects/BravoBike/**"; 182 + contents = { 183 + user.email = "norbert.melzer@bravobike.de"; 184 + }; 185 + } 186 ]; 187 }; 188 189 + home.packages = [pkgs.ripgrep pkgs.difftastic]; 190 }; 191 }
-31
home/modules/programs/emacs/beacon.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - cfg = config.programs.emacs.packages.beacon; 7 - in { 8 - options.programs.emacs.packages.beacon = { 9 - enable = lib.mkOption { 10 - type = lib.types.bool; 11 - default = true; 12 - description = '' 13 - Enable `beacon' for emacs. 14 - ''; 15 - }; 16 - }; 17 - 18 - config = lib.mkIf cfg.enable { 19 - programs.emacs.localPackages."init-beacon" = { 20 - tag = "Setup beacon"; 21 - comments = []; 22 - requires = []; 23 - code = '' 24 - ;; enable the beacon minor mode globally. 25 - (beacon-mode 1) 26 - ''; 27 - }; 28 - 29 - programs.emacs.extraPackages = ep: [ep.beacon]; 30 - }; 31 - }
···
-38
home/modules/programs/emacs/company.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - # emacs = config.programs.emacs; 7 - inherit (config.programs) emacs; 8 - in { 9 - config = lib.mkIf emacs.enable { 10 - programs.emacs.extraPackages = ep: [ep.company]; 11 - 12 - programs.emacs.localPackages."init-company" = { 13 - tag = "Setup and initialise company"; 14 - comments = []; 15 - requires = []; 16 - code = '' 17 - ;; company 18 - (setq tab-always-indent 'complete) 19 - (add-to-list 'completion-styles 'initials t) 20 - 21 - ;; (eval-when-compile (require 'company)) 22 - 23 - (add-hook 'after-init-hook 'global-company-mode) 24 - (with-eval-after-load 'company 25 - 26 - ;; (diminish 'company-mode "CMP") 27 - (define-key company-mode-map (kbd "M-+") '("complete" . 'company-complete)) 28 - (define-key company-active-map (kbd "M-+") '("change backend" . 'company-other-backend)) 29 - (define-key company-active-map (kbd "C-n") '("next" . 'company-select-next)) 30 - (define-key company-active-map (kbd "C-p") '("previous" . 'company-select-previous)) 31 - (setq-default company-dabbrev-other-buffers 'all 32 - company-tooltip-align-annotations t 33 - company-minimum-prefix-length 1 34 - company-idle-delay 0.05)) 35 - ''; 36 - }; 37 - }; 38 - }
···
-179
home/modules/programs/emacs/default.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - pkgs, 5 - ... 6 - }: let 7 - emacsEnabled = config.programs.emacs.enable; 8 - cfg = config.programs.emacs; 9 - 10 - bool2Lisp = b: 11 - if b 12 - then "t" 13 - else "nil"; 14 - 15 - confPackages = let 16 - fileContent = 17 - lib.attrsets.mapAttrs' 18 - (k: v: { 19 - name = "${k}"; 20 - value = { 21 - ep = v.packageRequires; 22 - src = 23 - config.lib.emacs.generatePackage k v.tag v.comments v.requires 24 - v.code; 25 - }; 26 - }) 27 - cfg.localPackages; 28 - derivations = 29 - lib.attrsets.mapAttrs 30 - (k: v: { 31 - # ep = v.ep; 32 - inherit (v) ep; 33 - src = pkgs.writeText "${k}.el" v.src; 34 - }) 35 - fileContent; 36 - in 37 - derivations; 38 - 39 - lispRequires = let 40 - names = lib.attrsets.mapAttrsToList (n: _: n) cfg.localPackages; 41 - sorted = builtins.sort (l: r: l < r) names; 42 - required = builtins.map (r: "(require '${r})") sorted; 43 - in 44 - builtins.concatStringsSep "\n" required; 45 - in { 46 - options.programs.emacs = { 47 - splashScreen = lib.mkOption { 48 - type = lib.types.bool; 49 - default = true; 50 - example = false; 51 - description = '' 52 - Enable the startup screen. 53 - ''; 54 - }; 55 - 56 - localPackages = lib.mkOption { 57 - type = lib.types.attrsOf (lib.types.submodule (_: { 58 - options = { 59 - tag = lib.mkOption {type = lib.types.str;}; 60 - comments = lib.mkOption {type = lib.types.listOf lib.types.str;}; 61 - requires = lib.mkOption {type = lib.types.listOf lib.types.str;}; 62 - code = lib.mkOption {type = lib.types.str;}; 63 - packageRequires = lib.mkOption { 64 - type = lib.types.unspecified; 65 - default = _: []; 66 - }; 67 - }; 68 - })); 69 - }; 70 - 71 - extraInit = lib.mkOption { 72 - type = lib.types.lines; 73 - default = ""; 74 - description = '' 75 - Extra preferences to add to <filename>init.el</filename>. 76 - ''; 77 - }; 78 - 79 - module = lib.mkOption { 80 - description = "Attribute set of modules to link into emacs configuration"; 81 - default = {}; 82 - }; 83 - }; 84 - 85 - config = lib.mkIf emacsEnabled { 86 - programs.emacs.extraInit = '' 87 - ;; adjust the load-path to find further down required files 88 - (add-to-list 'load-path 89 - (expand-file-name "lisp" user-emacs-directory)) 90 - 91 - (fset 'yes-or-no-p 'y-or-n-p) 92 - 93 - ;; Move backups and autosaves out of the way 94 - (setq backup-directory-alist 95 - `((".*" . ,temporary-file-directory))) 96 - (setq auto-save-file-name-transforms 97 - `((".*" ,temporary-file-directory))) 98 - 99 - ;; use a dark theme 100 - (load-theme 'dracula t) 101 - 102 - ;; Set a font 103 - (add-to-list 'default-frame-alist 104 - '(font . "Cascadia Code PL-10")) 105 - 106 - ;; require all those local packages 107 - ${lispRequires} 108 - (require 'pest-mode) 109 - (add-to-list #'auto-mode-alist '("\\.pest\\'" . pest-mode)) 110 - 111 - (global-auto-revert-mode) 112 - (global-whitespace-mode) 113 - (global-linum-mode) 114 - 115 - (setq-default indent-tabs-mode nil) 116 - (setq-default tab-width 2) 117 - (setq-default whitespace-style 118 - '(face 119 - tabs 120 - spaces 121 - trailing 122 - lines-tail 123 - newline 124 - missing-newline-at-eof 125 - space-before-tab 126 - indentation 127 - empty 128 - space-after-tab 129 - space-mark 130 - tab-mark 131 - newline-mark)) 132 - 133 - ;; set splash screen 134 - (setq inhibit-startup-screen ${bool2Lisp (!cfg.splashScreen)}) 135 - ''; 136 - 137 - programs.emacs.extraPackages = ep: 138 - [ 139 - ep.company-go 140 - ep.dracula-theme 141 - ep.docker-compose-mode 142 - ep.dockerfile-mode 143 - ep.go-mode 144 - ep.markdown-mode 145 - ep.yaml-mode 146 - ep.adoc-mode 147 - ep.k8s-mode 148 - ep.buttercup 149 - ep.adoc-mode 150 - ep.hledger-mode 151 - ep.typescript-mode 152 - ep.earthfile-mode 153 - ep.ledger-mode 154 - ep.pest-mode 155 - 156 - # ep.bazel-mode 157 - 158 - # (ep.trivialBuild { pname = "configuration"; src = confPackages; }) 159 - ] 160 - ++ lib.attrsets.mapAttrsToList 161 - (pname: v: 162 - ep.trivialBuild { 163 - inherit pname; 164 - inherit (v) src; 165 - # src = v.src; 166 - packageRequires = v.ep ep; 167 - }) 168 - confPackages; 169 - 170 - home.file = { 171 - ".emacs.d/init.el" = { 172 - text = 173 - config.lib.emacs.generatePackage "init" 174 - "Initialises emacs configuration" [] [] 175 - cfg.extraInit; 176 - }; 177 - }; 178 - }; 179 - }
···
-33
home/modules/programs/emacs/helm.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - emacsCfg = config.programs.emacs; 7 - in { 8 - config = lib.mkIf emacsCfg.enable { 9 - programs.emacs = { 10 - localPackages."init-helm" = { 11 - tag = "Setup helm"; 12 - comments = []; 13 - requires = ["helm"]; 14 - packageRequires = ep: [ep.helm ep.helm-rg]; 15 - code = '' 16 - ;; enable and configure auto resize 17 - (helm-autoresize-mode t) 18 - (setq-default 19 - helm-autoresize-max-height 20 ; take at most 20% of the screen 20 - helm-autoresize-min-height 1) ; get as small as necessary 21 - 22 - ;; set up key bindings 23 - (global-set-key (kbd "M-x") 'helm-M-x) 24 - (global-set-key (kbd "C-x C-f") 'helm-find-files) 25 - (global-set-key (kbd "C-x C-b") 'helm-buffers-list) 26 - 27 - ;; enable helm 28 - (helm-mode t) 29 - ''; 30 - }; 31 - }; 32 - }; 33 - }
···
-60
home/modules/programs/emacs/lib.nix
··· 1 - _: let 2 - generatePackage = { 3 - name, 4 - tagLine, 5 - commentLines, 6 - requireList, 7 - code, 8 - }: let 9 - prelude = generatePrelude {inherit name tagLine commentLines;}; 10 - requires = generateRequires requireList; 11 - postlude = generatePostlude name; 12 - in '' 13 - ${prelude} 14 - 15 - ${requires} 16 - 17 - ${code} 18 - 19 - ${postlude} 20 - ''; 21 - 22 - generatePrelude = { 23 - name, 24 - tagLine, 25 - commentLines, 26 - }: let 27 - generated = "This file is generated! DO NOT CHANGE!"; 28 - comments = 29 - builtins.concatStringsSep "\n" 30 - (builtins.map (l: 31 - if l == "" 32 - then "" 33 - else ";; ${l}") 34 - ([generated] ++ commentLines)); 35 - in '' 36 - ;;; ${name} --- ${tagLine} 37 - 38 - ;;; Commentary: 39 - 40 - ${comments} 41 - 42 - ;;; Code: 43 - ''; 44 - 45 - generatePostlude = name: '' 46 - (provide '${name}) 47 - ;;; ${name}.el ends here 48 - ''; 49 - 50 - generateRequires = list: let 51 - sorted = builtins.sort (l: r: l < r) list; 52 - required = builtins.map (r: "(require '${r})") sorted; 53 - in 54 - builtins.concatStringsSep "\n" required; 55 - in { 56 - config.lib.emacs.generatePackage = name: tagLine: commentLines: requireList: code: 57 - generatePackage { 58 - inherit name code tagLine commentLines requireList; 59 - }; 60 - }
···
-65
home/modules/programs/emacs/lsp.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - cfg = config.programs.emacs.lsp-mode; 7 - 8 - mode-hooks = with lib; let 9 - sorted = builtins.sort (l: r: l < r) cfg.languages; 10 - uni = unique sorted; 11 - hooks = builtins.map (l: "'${l}-mode-hook") uni; 12 - add-hooks = builtins.map (h: "(add-hook ${h} #'lsp)") hooks; 13 - in 14 - builtins.concatStringsSep "\n" add-hooks; 15 - in { 16 - options.programs.emacs.lsp-mode = { 17 - enable = lib.mkEnableOption "Enables and installs lsp-mode"; 18 - 19 - languages = lib.mkOption { 20 - type = lib.types.listOf lib.types.str; 21 - default = []; 22 - description = '' 23 - The prefixes of the prog-mode that shall be handled through lsp-mode. 24 - ''; 25 - example = ["erlang"]; 26 - }; 27 - }; 28 - 29 - config = lib.mkIf cfg.enable { 30 - programs.emacs = { 31 - localPackages."init-lsp" = { 32 - tag = "Setup and prepare the LSP mode"; 33 - comments = []; 34 - requires = ["lsp-mode"]; 35 - packageRequires = ep: [ 36 - # ep.company-lsp 37 - ep.helm-lsp 38 - ep.lsp-mode 39 - ep.lsp-origami 40 - ep.lsp-ui 41 - ep.yasnippet 42 - ]; 43 - code = '' 44 - (yas-global-mode t) 45 - 46 - (setq lsp-log-io t) 47 - (setq lsp-ui-sideline-enable t) 48 - (setq lsp-ui-doc-enable t) 49 - (setq lsp-ui-doc-position 'bottom) 50 - 51 - (eval-after-load 'company 52 - '(push 'company-lsp company-backend)) 53 - 54 - (dolist (match 55 - '("[/\\\\].direnv$" 56 - "[/\\\\]node_modules$" 57 - "/nix/store")) 58 - (add-to-list 'lsp-file-watch-ignored match)) 59 - 60 - ${mode-hooks} 61 - ''; 62 - }; 63 - }; 64 - }; 65 - }
···
-34
home/modules/programs/emacs/polymode/default.nix
··· 1 - { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - inherit (config.programs) emacs; 7 - in { 8 - config = lib.mkIf emacs.enable { 9 - programs.emacs.extraPackages = ep: [ep.polymode]; 10 - 11 - programs.emacs.localPackages."init-polymode" = { 12 - tag = "Setup and initialise polymode"; 13 - comments = []; 14 - requires = []; 15 - code = '' 16 - ;; polymode 17 - (add-to-list 'auto-mode-alist '("\\.nix$" . poly-nix-mode)) 18 - 19 - (define-hostmode poly-nix-hostmode :mode 'nix-mode) 20 - 21 - (define-innermode poly-elisp-expr-nix-innermode 22 - :mode 'emacs-lisp-mode 23 - :head-matcher (cons "'''\n\\( *;;.*\n\\)" 1) 24 - :tail-matcher " *''';$" 25 - :head-mode 'body 26 - :tail-mode 'host) 27 - 28 - (define-polymode poly-nix-mode 29 - :hostmode 'poly-nix-hostmode 30 - :innermodes '(poly-elisp-expr-nix-innermode)) 31 - ''; 32 - }; 33 - }; 34 - }
···
-25
home/modules/programs/emacs/projectile.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - emacsCfg = config.programs.emacs; 7 - in { 8 - config = lib.mkIf emacsCfg.enable { 9 - programs.emacs = { 10 - localPackages."init-projectile" = { 11 - tag = "Setup projectile"; 12 - comments = []; 13 - requires = ["projectile" "helm-projectile" "tramp"]; 14 - packageRequires = ep: [ep.projectile ep.helm-projectile]; 15 - code = '' 16 - ;; enable projectile 17 - (projectile-mode t) 18 - (helm-projectile-on) 19 - 20 - (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map) 21 - ''; 22 - }; 23 - }; 24 - }; 25 - }
···
-31
home/modules/programs/emacs/telephoneline.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - ecfg = config.programs.emacs; 7 - in { 8 - config = lib.mkIf ecfg.enable { 9 - programs.emacs.localPackages."init-telephoneline" = { 10 - tag = "Setup telephone line"; 11 - comments = []; 12 - requires = []; 13 - code = '' 14 - ;; set up telephone line 15 - (setq-default 16 - telephone-line-lhs '((accent . (telephone-line-vc-segment 17 - telephone-line-erc-modified-channels-segment 18 - telephone-line-process-segment)) 19 - (nil . (telephone-line-minor-mode-segment 20 - telephone-line-buffer-segment))) 21 - telephone-line-rhs '((nil . (telephone-line-misc-info-segment)) 22 - (accent . (telephone-line-major-mode-segment)) 23 - (accent . (telephone-line-airline-position-segment)))) 24 - 25 - (telephone-line-mode t) 26 - ''; 27 - }; 28 - 29 - programs.emacs.extraPackages = ep: [ep.telephone-line]; 30 - }; 31 - }
···
-72
home/modules/programs/emacs/whichkey/default.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: 6 - with lib; let 7 - cfg = config.programs.emacs.whichkey; 8 - enabled = config.programs.emacs.enable; 9 - 10 - keyReplacementType = types.listOf (types.submodule (_: { 11 - options = { 12 - keys = lib.mkOption { 13 - type = types.str; 14 - description = '' 15 - Keys that shall get a description. 16 - ''; 17 - }; 18 - replace = lib.mkOption { 19 - type = types.str; 20 - description = '' 21 - Human readable description for the keycombination 22 - ''; 23 - }; 24 - }; 25 - })); 26 - 27 - replacements = 28 - lib.concatStringsSep "\n " 29 - (builtins.map ({ 30 - keys, 31 - replace, 32 - ... 33 - }: ''"${keys}" "${replace}"'') 34 - cfg.replacement); 35 - in { 36 - options.programs.emacs.whichkey = { 37 - replacement = lib.mkOption {type = keyReplacementType;}; 38 - }; 39 - 40 - config = lib.mkIf enabled { 41 - programs.emacs = { 42 - whichkey.replacement = [ 43 - { 44 - keys = "C-x C-f"; 45 - replace = "find file"; 46 - } 47 - { 48 - keys = "C-x C-s"; 49 - replace = "write file"; 50 - } 51 - { 52 - keys = "C-x C-c"; 53 - replace = "leave emacs"; 54 - } 55 - ]; 56 - extraPackages = ep: [ep.which-key]; 57 - localPackages."init-whichkey" = { 58 - tag = "Setup and initialise whichkey"; 59 - comments = []; 60 - requires = []; 61 - code = '' 62 - ;; which-key 63 - (which-key-mode t) 64 - (setq-default which-key-idle-delay 0.1) 65 - 66 - (which-key-add-key-based-replacements 67 - ${replacements}) 68 - ''; 69 - }; 70 - }; 71 - }; 72 - }
···
-16
home/modules/programs/exa/default.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - pkgs, 5 - ... 6 - }: let 7 - cfg = config.programs.exa; 8 - in { 9 - config = lib.mkIf cfg.enable { 10 - home.packages = [pkgs.exa]; 11 - 12 - programs.zsh.shellAliases = { 13 - ll = "exa --header --git --classify --long --binary --group --time-style=long-iso --links --all --all --group-directories-first --sort=name"; 14 - }; 15 - }; 16 - }
···
+16
home/modules/programs/eza/default.nix
···
··· 1 + _: { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 6 + }: let 7 + cfg = config.programs.eza; 8 + in { 9 + config = lib.mkIf cfg.enable { 10 + programs.eza.package = pkgs.eza; 11 + programs.zsh.shellAliases = { 12 + ll = "eza --header --git --classify --long --binary --group --time-style=long-iso --links --all --all --group-directories-first --sort=name"; 13 + tree = "eza --tree"; 14 + }; 15 + }; 16 + }
+15
home/modules/programs/ghostty/default.nix
···
··· 1 + _: {pkgs, ...}: { 2 + xdg.configFile."ghostty/config".text = 3 + # toml 4 + '' 5 + font-family = "Departure Mono" 6 + 7 + ## uncomment once keybindings have been set to something I am familiar 8 + ## with. The bar contains the menu, which I need for splits for nowโ€ฆ 9 + # gtk-titlebar = false 10 + 11 + theme = "catppuccin-mocha" 12 + ''; 13 + 14 + home.packages = [pkgs.ghostty]; 15 + }
+1 -1
home/modules/programs/nixpkgs/default.nix
··· 6 allowed = config.nixpkgs.allowedUnfree; 7 in { 8 options.nixpkgs.allowedUnfree = lib.mkOption { 9 - type = lib.types.listOf lib.types.string; 10 default = []; 11 description = '' 12 Allows for unfree packages by their name.
··· 6 allowed = config.nixpkgs.allowedUnfree; 7 in { 8 options.nixpkgs.allowedUnfree = lib.mkOption { 9 + type = lib.types.listOf lib.types.str; 10 default = []; 11 description = '' 12 Allows for unfree packages by their name.
-23
home/modules/programs/openshift/default.nix
··· 1 - _: { 2 - pkgs, 3 - lib, 4 - config, 5 - ... 6 - }: let 7 - cfg = config.programs.openshift; 8 - in { 9 - options.programs.openshift = { 10 - enable = lib.mkEnableOption "Tools to manage openshift instances"; 11 - }; 12 - 13 - config = lib.mkIf cfg.enable { 14 - home.packages = [pkgs.sops pkgs.openshift (lib.setPrio 0 pkgs.kubectl) pkgs.kubernetes-helm]; 15 - 16 - programs.zsh.initExtra = '' 17 - # Enable autocomplete for oc, kubectl and helm 18 - eval "$(${pkgs.openshift}/bin/oc completion zsh)" 19 - eval "$(${pkgs.kubectl}/bin/kubectl completion zsh)" 20 - eval "$(${pkgs.kubernetes-helm}/bin/helm completion zsh)" 21 - ''; 22 - }; 23 - }
···
+28
home/modules/programs/p10k/default.nix
···
··· 1 + _: { 2 + pkgs, 3 + lib, 4 + config, 5 + ... 6 + }: let 7 + cfg = config.programs.p10k; 8 + zsh = config.programs.zsh.enable; 9 + in { 10 + options = { 11 + programs.p10k.enable = lib.mkEnableOption "p10k"; 12 + }; 13 + 14 + config = lib.mkIf (cfg.enable && zsh) { 15 + programs.zsh.plugins = [ 16 + { 17 + name = "powerlevel10k"; 18 + src = pkgs.zsh-powerlevel10k; 19 + file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; 20 + } 21 + { 22 + name = "powerlevel10k-config"; 23 + src = ./p10k-config; 24 + file = "p10k.zsh"; 25 + } 26 + ]; 27 + }; 28 + }
+1671
home/modules/programs/p10k/p10k-config/p10k.zsh
···
··· 1 + # Generated by Powerlevel10k configuration wizard on 2023-03-14 at 22:38 CET. 2 + # Based on romkatv/powerlevel10k/config/p10k-classic.zsh. 3 + # Wizard options: powerline, classic, unicode, darkest, 24h time, angled separators, 4 + # blurred heads, flat tails, 2 lines, solid, full frame, compact, concise, 5 + # transient_prompt, instant_prompt=verbose. 6 + # Type `p10k configure` to generate another config. 7 + # 8 + # Config for Powerlevel10k with classic powerline prompt style. Type `p10k configure` to generate 9 + # your own config based on it. 10 + # 11 + # Tip: Looking for a nice color? Here's a one-liner to print colormap. 12 + # 13 + # for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done 14 + 15 + # Temporarily change options. 16 + 'builtin' 'local' '-a' 'p10k_config_opts' 17 + [[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') 18 + [[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') 19 + [[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') 20 + 'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' 21 + 22 + () { 23 + emulate -L zsh -o extended_glob 24 + 25 + # Unset all configuration options. This allows you to apply configuration changes without 26 + # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`. 27 + unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' 28 + 29 + # Zsh >= 5.1 is required. 30 + [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return 31 + 32 + # The list of segments shown on the left. Fill it with the most important segments. 33 + typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( 34 + # =========================[ Line #1 ]========================= 35 + # os_icon # os identifier 36 + dir # current directory 37 + vcs # git status 38 + # =========================[ Line #2 ]========================= 39 + newline # \n 40 + # prompt_char # prompt symbol 41 + ) 42 + 43 + # The list of segments shown on the right. Fill it with less important segments. 44 + # Right prompt on the last prompt line (where you are typing your commands) gets 45 + # automatically hidden when the input line reaches it. Right prompt above the 46 + # last prompt line gets hidden if it would overlap with left prompt. 47 + typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( 48 + # =========================[ Line #1 ]========================= 49 + status # exit code of the last command 50 + command_execution_time # duration of the last command 51 + background_jobs # presence of background jobs 52 + direnv # direnv status (https://direnv.net/) 53 + asdf # asdf version manager (https://github.com/asdf-vm/asdf) 54 + virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html) 55 + anaconda # conda environment (https://conda.io/) 56 + pyenv # python environment (https://github.com/pyenv/pyenv) 57 + goenv # go environment (https://github.com/syndbg/goenv) 58 + nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) 59 + nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) 60 + nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) 61 + # node_version # node.js version 62 + # go_version # go version (https://golang.org) 63 + # rust_version # rustc version (https://www.rust-lang.org) 64 + # dotnet_version # .NET version (https://dotnet.microsoft.com) 65 + # php_version # php version (https://www.php.net/) 66 + # laravel_version # laravel php framework version (https://laravel.com/) 67 + # java_version # java version (https://www.java.com/) 68 + # package # name@version from package.json (https://docs.npmjs.com/files/package.json) 69 + rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) 70 + rvm # ruby version from rvm (https://rvm.io) 71 + fvm # flutter version management (https://github.com/leoafarias/fvm) 72 + luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) 73 + jenv # java version from jenv (https://github.com/jenv/jenv) 74 + plenv # perl version from plenv (https://github.com/tokuhirom/plenv) 75 + perlbrew # perl version from perlbrew (https://github.com/gugod/App-perlbrew) 76 + phpenv # php version from phpenv (https://github.com/phpenv/phpenv) 77 + scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) 78 + haskell_stack # haskell version from stack (https://haskellstack.org/) 79 + kubecontext # current kubernetes context (https://kubernetes.io/) 80 + terraform # terraform workspace (https://www.terraform.io) 81 + # terraform_version # terraform version (https://www.terraform.io) 82 + aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) 83 + aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) 84 + azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) 85 + gcloud # google cloud cli account and project (https://cloud.google.com/) 86 + google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) 87 + toolbox # toolbox name (https://github.com/containers/toolbox) 88 + context # user@hostname 89 + nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) 90 + ranger # ranger shell (https://github.com/ranger/ranger) 91 + nnn # nnn shell (https://github.com/jarun/nnn) 92 + lf # lf shell (https://github.com/gokcehan/lf) 93 + xplr # xplr shell (https://github.com/sayanarijit/xplr) 94 + vim_shell # vim shell indicator (:sh) 95 + midnight_commander # midnight commander shell (https://midnight-commander.org/) 96 + nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) 97 + vi_mode # vi mode (you don't need this if you've enabled prompt_char) 98 + # vpn_ip # virtual private network indicator 99 + # load # CPU load 100 + # disk_usage # disk usage 101 + # ram # free RAM 102 + # swap # used swap 103 + todo # todo items (https://github.com/todotxt/todo.txt-cli) 104 + timewarrior # timewarrior tracking status (https://timewarrior.net/) 105 + taskwarrior # taskwarrior task count (https://taskwarrior.org/) 106 + # cpu_arch # CPU architecture 107 + time # current time 108 + # =========================[ Line #2 ]========================= 109 + newline # \n 110 + # ip # ip address and bandwidth usage for a specified network interface 111 + # public_ip # public IP address 112 + # proxy # system-wide http/https/ftp proxy 113 + # battery # internal battery 114 + # wifi # wifi speed 115 + # example # example user-defined segment (see prompt_example function below) 116 + ) 117 + 118 + # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. 119 + typeset -g POWERLEVEL9K_MODE=powerline 120 + # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid 121 + # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. 122 + typeset -g POWERLEVEL9K_ICON_PADDING=none 123 + 124 + # When set to true, icons appear before content on both sides of the prompt. When set 125 + # to false, icons go after content. If empty or not set, icons go before content in the left 126 + # prompt and after content in the right prompt. 127 + # 128 + # You can also override it for a specific segment: 129 + # 130 + # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false 131 + # 132 + # Or for a specific segment in specific state: 133 + # 134 + # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false 135 + typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT= 136 + 137 + # Add an empty line before each prompt. 138 + typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false 139 + 140 + # Connect left prompt lines with these symbols. You'll probably want to use the same color 141 + # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below. 142 + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%238Fโ•ญโ”€' 143 + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%238Fโ”œโ”€' 144 + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%238Fโ•ฐโ”€' 145 + # Connect right prompt lines with these symbols. 146 + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%238Fโ”€โ•ฎ' 147 + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%238Fโ”€โ”ค' 148 + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%238Fโ”€โ•ฏ' 149 + 150 + # Filler between left and right prompt on the first prompt line. You can set it to ' ', 'ยท' or 151 + # 'โ”€'. The last two make it easier to see the alignment between left and right prompt and to 152 + # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false 153 + # for more compact prompt if using this option. 154 + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR='โ”€' 155 + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND= 156 + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND= 157 + if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then 158 + # The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE 159 + # ornaments defined above. 160 + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=238 161 + # Start filler from the edge of the screen if there are no left segments on the first line. 162 + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}' 163 + # End filler on the edge of the screen if there are no right segments on the first line. 164 + typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}' 165 + fi 166 + 167 + # Default background color. 168 + typeset -g POWERLEVEL9K_BACKGROUND=234 169 + 170 + # Separator between same-color segments on the left. 171 + typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='%242F\uE0B1' 172 + # Separator between same-color segments on the right. 173 + typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='%242F\uE0B3' 174 + # Separator between different-color segments on the left. 175 + typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0' 176 + # Separator between different-color segments on the right. 177 + typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2' 178 + # The right end of left prompt. 179 + typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='โ–“โ–’โ–‘' 180 + # The left end of right prompt. 181 + typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='โ–‘โ–’โ–“' 182 + # The left end of left prompt. 183 + typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='' 184 + # The right end of right prompt. 185 + typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL='' 186 + # Left prompt terminator for lines without any segments. 187 + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= 188 + 189 + #################################[ os_icon: os identifier ]################################## 190 + # OS identifier color. 191 + typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=255 192 + # Custom icon. 193 + # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='โญ' 194 + 195 + ################################[ prompt_char: prompt symbol ]################################ 196 + # Transparent background. 197 + typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND= 198 + # Green prompt symbol if the last command succeeded. 199 + typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 200 + # Red prompt symbol if the last command failed. 201 + typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 202 + # Default prompt symbol. 203 + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='โฏ' 204 + # Prompt symbol in command vi mode. 205 + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='โฎ' 206 + # Prompt symbol in visual vi mode. 207 + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V' 208 + # Prompt symbol in overwrite vi mode. 209 + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='โ–ถ' 210 + typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true 211 + # No line terminator if prompt_char is the last segment. 212 + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= 213 + # No line introducer if prompt_char is the first segment. 214 + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= 215 + # No surrounding whitespace. 216 + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE= 217 + 218 + ##################################[ dir: current directory ]################################## 219 + # Default current directory color. 220 + typeset -g POWERLEVEL9K_DIR_FOREGROUND=31 221 + # If directory is too long, shorten some of its segments to the shortest possible unique 222 + # prefix. The shortened directory can be tab-completed to the original. 223 + typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique 224 + # Replace removed segment suffixes with this symbol. 225 + typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= 226 + # Color of the shortened directory segments. 227 + typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103 228 + # Color of the anchor directory segments. Anchor segments are never shortened. The first 229 + # segment is always an anchor. 230 + typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39 231 + # Display anchor directory segments in bold. 232 + typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true 233 + # Don't shorten directories that contain any of these files. They are anchors. 234 + local anchor_files=( 235 + .bzr 236 + .citc 237 + .git 238 + .hg 239 + .node-version 240 + .python-version 241 + .go-version 242 + .ruby-version 243 + .lua-version 244 + .java-version 245 + .perl-version 246 + .php-version 247 + .tool-version 248 + .shorten_folder_marker 249 + .svn 250 + .terraform 251 + CVS 252 + Cargo.toml 253 + composer.json 254 + go.mod 255 + package.json 256 + stack.yaml 257 + ) 258 + typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" 259 + # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains 260 + # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is 261 + # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first) 262 + # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers 263 + # and other directories don't. 264 + # 265 + # Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer. 266 + # This moves the truncation point to the right (positive offset) or to the left (negative offset) 267 + # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0" 268 + # respectively. 269 + typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false 270 + # Don't shorten this many last directory segments. They are anchors. 271 + typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 272 + # Shorten directory if it's longer than this even if there is space for it. The value can 273 + # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty, 274 + # directory will be shortened only when prompt doesn't fit or when other parameters demand it 275 + # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below). 276 + # If set to `0`, directory will always be shortened to its minimum length. 277 + typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 278 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this 279 + # many columns for typing commands. 280 + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 281 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least 282 + # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands. 283 + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 284 + # If set to true, embed a hyperlink into the directory. Useful for quickly 285 + # opening a directory in the file manager simply by clicking the link. 286 + # Can also be handy when the directory is shortened, as it allows you to see 287 + # the full directory that was used in previous commands. 288 + typeset -g POWERLEVEL9K_DIR_HYPERLINK=false 289 + 290 + # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON 291 + # and POWERLEVEL9K_DIR_CLASSES below. 292 + typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3 293 + 294 + # The default icon shown next to non-writable and non-existent directories when 295 + # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. 296 + typeset -g POWERLEVEL9K_LOCK_ICON='๐Ÿ”’' 297 + 298 + # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different 299 + # directories. It must be an array with 3 * N elements. Each triplet consists of: 300 + # 301 + # 1. A pattern against which the current directory ($PWD) is matched. Matching is done with 302 + # extended_glob option enabled. 303 + # 2. Directory class for the purpose of styling. 304 + # 3. An empty string. 305 + # 306 + # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. 307 + # 308 + # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories 309 + # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively. 310 + # 311 + # For example, given these settings: 312 + # 313 + # typeset -g POWERLEVEL9K_DIR_CLASSES=( 314 + # '~/work(|/*)' WORK '' 315 + # '~(|/*)' HOME '' 316 + # '*' DEFAULT '') 317 + # 318 + # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one 319 + # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or 320 + # WORK_NON_EXISTENT. 321 + # 322 + # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an 323 + # option to define custom colors and icons for different directory classes. 324 + # 325 + # # Styling for WORK. 326 + # typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='โญ' 327 + # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31 328 + # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103 329 + # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39 330 + # 331 + # # Styling for WORK_NOT_WRITABLE. 332 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='โญ' 333 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=31 334 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103 335 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39 336 + # 337 + # # Styling for WORK_NON_EXISTENT. 338 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='โญ' 339 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31 340 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103 341 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39 342 + # 343 + # If a styling parameter isn't explicitly defined for some class, it falls back to the classless 344 + # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls 345 + # back to POWERLEVEL9K_DIR_FOREGROUND. 346 + # 347 + typeset -g POWERLEVEL9K_DIR_CLASSES=() 348 + 349 + # Custom prefix. 350 + # typeset -g POWERLEVEL9K_DIR_PREFIX='%244Fin ' 351 + 352 + #####################################[ vcs: git status ]###################################### 353 + # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon. 354 + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON= 355 + 356 + # Untracked files icon. It's really a question mark, your font isn't broken. 357 + # Change the value of this parameter to show a different icon. 358 + typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?' 359 + 360 + # Formatter for Git status. 361 + # 362 + # Example output: master wip โ‡ฃ42โ‡ก42 *42 merge ~42 +42 !42 ?42. 363 + # 364 + # You can edit the function to customize how Git status looks. 365 + # 366 + # VCS_STATUS_* parameters are set by gitstatus plugin. See reference: 367 + # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. 368 + function my_git_formatter() { 369 + emulate -L zsh 370 + 371 + if [[ -n $P9K_CONTENT ]]; then 372 + # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from 373 + # gitstatus plugin). VCS_STATUS_* parameters are not available in this case. 374 + typeset -g my_git_format=$P9K_CONTENT 375 + return 376 + fi 377 + 378 + if (( $1 )); then 379 + # Styling for up-to-date Git status. 380 + local meta='%244F' # grey foreground 381 + local clean='%76F' # green foreground 382 + local modified='%178F' # yellow foreground 383 + local untracked='%39F' # blue foreground 384 + local conflicted='%196F' # red foreground 385 + else 386 + # Styling for incomplete and stale Git status. 387 + local meta='%244F' # grey foreground 388 + local clean='%244F' # grey foreground 389 + local modified='%244F' # grey foreground 390 + local untracked='%244F' # grey foreground 391 + local conflicted='%244F' # grey foreground 392 + fi 393 + 394 + local res 395 + 396 + if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then 397 + local branch=${(V)VCS_STATUS_LOCAL_BRANCH} 398 + # If local branch name is at most 32 characters long, show it in full. 399 + # Otherwise show the first 12 โ€ฆ the last 12. 400 + # Tip: To always show local branch name in full without truncation, delete the next line. 401 + (( $#branch > 32 )) && branch[13,-13]="โ€ฆ" # <-- this line 402 + res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}" 403 + fi 404 + 405 + if [[ -n $VCS_STATUS_TAG 406 + # Show tag only if not on a branch. 407 + # Tip: To always show tag, delete the next line. 408 + && -z $VCS_STATUS_LOCAL_BRANCH # <-- this line 409 + ]]; then 410 + local tag=${(V)VCS_STATUS_TAG} 411 + # If tag name is at most 32 characters long, show it in full. 412 + # Otherwise show the first 12 โ€ฆ the last 12. 413 + # Tip: To always show tag name in full without truncation, delete the next line. 414 + (( $#tag > 32 )) && tag[13,-13]="โ€ฆ" # <-- this line 415 + res+="${meta}#${clean}${tag//\%/%%}" 416 + fi 417 + 418 + # Display the current Git commit if there is no branch and no tag. 419 + # Tip: To always display the current Git commit, delete the next line. 420 + [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line 421 + res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" 422 + 423 + # Show tracking branch name if it differs from local branch. 424 + if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then 425 + res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" 426 + fi 427 + 428 + # Display "wip" if the latest commit's summary contains "wip" or "WIP". 429 + if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then 430 + res+=" ${modified}wip" 431 + fi 432 + 433 + # โ‡ฃ42 if behind the remote. 434 + (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}โ‡ฃ${VCS_STATUS_COMMITS_BEHIND}" 435 + # โ‡ก42 if ahead of the remote; no leading space if also behind the remote: โ‡ฃ42โ‡ก42. 436 + (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " 437 + (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}โ‡ก${VCS_STATUS_COMMITS_AHEAD}" 438 + # โ‡ 42 if behind the push remote. 439 + (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}โ‡ ${VCS_STATUS_PUSH_COMMITS_BEHIND}" 440 + (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " 441 + # โ‡ข42 if ahead of the push remote; no leading space if also behind: โ‡ 42โ‡ข42. 442 + (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}โ‡ข${VCS_STATUS_PUSH_COMMITS_AHEAD}" 443 + # *42 if have stashes. 444 + (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" 445 + # 'merge' if the repo is in an unusual state. 446 + [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}" 447 + # ~42 if have merge conflicts. 448 + (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}" 449 + # +42 if have staged changes. 450 + (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}" 451 + # !42 if have unstaged changes. 452 + (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}" 453 + # ?42 if have untracked files. It's really a question mark, your font isn't broken. 454 + # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. 455 + # Remove the next line if you don't want to see untracked files at all. 456 + (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" 457 + # "โ”€" if the number of unstaged files is unknown. This can happen due to 458 + # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower 459 + # than the number of files in the Git index, or due to bash.showDirtyState being set to false 460 + # in the repository config. The number of staged and untracked files may also be unknown 461 + # in this case. 462 + (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}โ”€" 463 + 464 + typeset -g my_git_format=$res 465 + } 466 + functions -M my_git_formatter 2>/dev/null 467 + 468 + # Don't count the number of unstaged, untracked and conflicted files in Git repositories with 469 + # more than this many files in the index. Negative value means infinity. 470 + # 471 + # If you are working in Git repositories with tens of millions of files and seeing performance 472 + # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output 473 + # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's 474 + # config: `git config bash.showDirtyState false`. 475 + typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1 476 + 477 + # Don't show Git status in prompt for repositories whose workdir matches this pattern. 478 + # For example, if set to '~', the Git repository at $HOME/.git will be ignored. 479 + # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'. 480 + typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~' 481 + 482 + # Disable the default Git status formatting. 483 + typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true 484 + # Install our own Git status formatter. 485 + typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}' 486 + typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}' 487 + # Enable counters for staged, unstaged, etc. 488 + typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 489 + 490 + # Icon color. 491 + typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76 492 + typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244 493 + # Custom icon. 494 + typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION= 495 + # Custom prefix. 496 + # typeset -g POWERLEVEL9K_VCS_PREFIX='%244Fon ' 497 + 498 + # Show status of repositories of these types. You can add svn and/or hg if you are 499 + # using them. If you do, your prompt may become slow even when your current directory 500 + # isn't in an svn or hg reposotiry. 501 + typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) 502 + 503 + # These settings are used for repositories other than Git or when gitstatusd fails and 504 + # Powerlevel10k has to fall back to using vcs_info. 505 + typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76 506 + typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76 507 + typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178 508 + 509 + ##########################[ status: exit code of the last command ]########################### 510 + # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and 511 + # style them independently from the regular OK and ERROR state. 512 + typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true 513 + 514 + # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as 515 + # it will signify success by turning green. 516 + typeset -g POWERLEVEL9K_STATUS_OK=true 517 + typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70 518 + typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='โœ”' 519 + 520 + # Status when some part of a pipe command fails but the overall exit status is zero. It may look 521 + # like this: 1|0. 522 + typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true 523 + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70 524 + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='โœ”' 525 + 526 + # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as 527 + # it will signify error by turning red. 528 + typeset -g POWERLEVEL9K_STATUS_ERROR=true 529 + typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160 530 + typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='โœ˜' 531 + 532 + # Status when the last command was terminated by a signal. 533 + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true 534 + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160 535 + # Use terse signal names: "INT" instead of "SIGINT(2)". 536 + typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false 537 + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='โœ˜' 538 + 539 + # Status when some part of a pipe command fails and the overall exit status is also non-zero. 540 + # It may look like this: 1|0. 541 + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true 542 + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160 543 + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='โœ˜' 544 + 545 + ###################[ command_execution_time: duration of the last command ]################### 546 + # Show duration of the last command if takes at least this many seconds. 547 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 548 + # Show this many fractional digits. Zero means round to seconds. 549 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 550 + # Execution time color. 551 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=248 552 + # Duration format: 1d 2h 3m 4s. 553 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' 554 + # Custom icon. 555 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION= 556 + # Custom prefix. 557 + # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%244Ftook ' 558 + 559 + #######################[ background_jobs: presence of background jobs ]####################### 560 + # Don't show the number of background jobs. 561 + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false 562 + # Background jobs color. 563 + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=37 564 + # Custom icon. 565 + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='โ‰ก' 566 + 567 + #######################[ direnv: direnv status (https://direnv.net/) ]######################## 568 + # Direnv color. 569 + typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178 570 + # Custom icon. 571 + # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 572 + 573 + ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]############### 574 + # Default asdf color. Only used to display tools for which there is no color override (see below). 575 + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND. 576 + typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66 577 + 578 + # There are four parameters that can be used to hide asdf tools. Each parameter describes 579 + # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at 580 + # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to 581 + # hide a tool, it gets shown. 582 + # 583 + # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and 584 + # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands: 585 + # 586 + # asdf local python 3.8.1 587 + # asdf global python 3.8.1 588 + # 589 + # After running both commands the current python version is 3.8.1 and its source is "local" as 590 + # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false, 591 + # it'll hide python version in this case because 3.8.1 is the same as the global version. 592 + # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't 593 + # contain "local". 594 + 595 + # Hide tool versions that don't come from one of these sources. 596 + # 597 + # Available sources: 598 + # 599 + # - shell `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable" 600 + # - local `asdf current` says "set by /some/not/home/directory/file" 601 + # - global `asdf current` says "set by /home/username/file" 602 + # 603 + # Note: If this parameter is set to (shell local global), it won't hide tools. 604 + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES. 605 + typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global) 606 + 607 + # If set to false, hide tool versions that are the same as global. 608 + # 609 + # Note: The name of this parameter doesn't reflect its meaning at all. 610 + # Note: If this parameter is set to true, it won't hide tools. 611 + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW. 612 + typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false 613 + 614 + # If set to false, hide tool versions that are equal to "system". 615 + # 616 + # Note: If this parameter is set to true, it won't hide tools. 617 + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM. 618 + typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true 619 + 620 + # If set to non-empty value, hide tools unless there is a file matching the specified file pattern 621 + # in the current directory, or its parent directory, or its grandparent directory, and so on. 622 + # 623 + # Note: If this parameter is set to empty value, it won't hide tools. 624 + # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments. 625 + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB. 626 + # 627 + # Example: Hide nodejs version when there is no package.json and no *.js files in the current 628 + # directory, in `..`, in `../..` and so on. 629 + # 630 + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json' 631 + typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB= 632 + 633 + # Ruby version from asdf. 634 + typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=168 635 + # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='โญ' 636 + # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar' 637 + 638 + # Python version from asdf. 639 + typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=37 640 + # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='โญ' 641 + # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar' 642 + 643 + # Go version from asdf. 644 + typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=37 645 + # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='โญ' 646 + # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar' 647 + 648 + # Node.js version from asdf. 649 + typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=70 650 + # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='โญ' 651 + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar' 652 + 653 + # Rust version from asdf. 654 + typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=37 655 + # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='โญ' 656 + # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar' 657 + 658 + # .NET Core version from asdf. 659 + typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=134 660 + # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='โญ' 661 + # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_SHOW_ON_UPGLOB='*.foo|*.bar' 662 + 663 + # Flutter version from asdf. 664 + typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=38 665 + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='โญ' 666 + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar' 667 + 668 + # Lua version from asdf. 669 + typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=32 670 + # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='โญ' 671 + # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar' 672 + 673 + # Java version from asdf. 674 + typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=32 675 + # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='โญ' 676 + # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar' 677 + 678 + # Perl version from asdf. 679 + typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=67 680 + # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='โญ' 681 + # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar' 682 + 683 + # Erlang version from asdf. 684 + typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=125 685 + # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='โญ' 686 + # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar' 687 + 688 + # Elixir version from asdf. 689 + typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=129 690 + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='โญ' 691 + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar' 692 + 693 + # Postgres version from asdf. 694 + typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=31 695 + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='โญ' 696 + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar' 697 + 698 + # PHP version from asdf. 699 + typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=99 700 + # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='โญ' 701 + # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar' 702 + 703 + # Haskell version from asdf. 704 + typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=172 705 + # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='โญ' 706 + # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar' 707 + 708 + # Julia version from asdf. 709 + typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=70 710 + # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='โญ' 711 + # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar' 712 + 713 + ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]########### 714 + # NordVPN connection indicator color. 715 + typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39 716 + # Hide NordVPN connection indicator when not connected. 717 + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= 718 + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= 719 + # Custom icon. 720 + typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='nord' 721 + 722 + #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## 723 + # Ranger shell color. 724 + typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178 725 + # Custom icon. 726 + typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='โ–ฒ' 727 + 728 + ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### 729 + # Nnn shell color. 730 + typeset -g POWERLEVEL9K_NNN_FOREGROUND=72 731 + # Custom icon. 732 + # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='โญ' 733 + 734 + ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]####################### 735 + # lf shell color. 736 + typeset -g POWERLEVEL9K_LF_FOREGROUND=72 737 + # Custom icon. 738 + # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='โญ' 739 + 740 + ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]################## 741 + # xplr shell color. 742 + typeset -g POWERLEVEL9K_XPLR_FOREGROUND=72 743 + # Custom icon. 744 + # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='โญ' 745 + 746 + ###########################[ vim_shell: vim shell indicator (:sh) ]########################### 747 + # Vim shell indicator color. 748 + typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34 749 + # Custom icon. 750 + # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='โญ' 751 + 752 + ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]###### 753 + # Midnight Commander shell color. 754 + typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=178 755 + # Custom icon. 756 + # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='โญ' 757 + 758 + #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]## 759 + # Nix shell color. 760 + typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74 761 + 762 + # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line. 763 + # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION= 764 + 765 + # Custom icon. 766 + # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='โญ' 767 + 768 + ##################################[ disk_usage: disk usage ]################################## 769 + # Colors for different levels of disk usage. 770 + typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35 771 + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=220 772 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=160 773 + # Thresholds for different levels of disk usage (percentage points). 774 + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90 775 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95 776 + # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent. 777 + typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false 778 + # Custom icon. 779 + # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='โญ' 780 + 781 + ###########[ vi_mode: vi mode (you don't need this if you've enabled prompt_char) ]########### 782 + # Text and color for normal (a.k.a. command) vi mode. 783 + typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=NORMAL 784 + typeset -g POWERLEVEL9K_VI_MODE_NORMAL_FOREGROUND=106 785 + # Text and color for visual vi mode. 786 + typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=VISUAL 787 + typeset -g POWERLEVEL9K_VI_MODE_VISUAL_FOREGROUND=68 788 + # Text and color for overtype (a.k.a. overwrite and replace) vi mode. 789 + typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=OVERTYPE 790 + typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_FOREGROUND=172 791 + # Text and color for insert vi mode. 792 + typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING= 793 + typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=66 794 + 795 + # Custom icon. 796 + typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='โ–ฒ' 797 + 798 + ######################################[ ram: free RAM ]####################################### 799 + # RAM color. 800 + typeset -g POWERLEVEL9K_RAM_FOREGROUND=66 801 + # Custom icon. 802 + # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='โญ' 803 + 804 + #####################################[ swap: used swap ]###################################### 805 + # Swap color. 806 + typeset -g POWERLEVEL9K_SWAP_FOREGROUND=96 807 + # Custom icon. 808 + # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='โญ' 809 + 810 + ######################################[ load: CPU load ]###################################### 811 + # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15. 812 + typeset -g POWERLEVEL9K_LOAD_WHICH=5 813 + # Load color when load is under 50%. 814 + typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66 815 + # Load color when load is between 50% and 70%. 816 + typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178 817 + # Load color when load is over 70%. 818 + typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166 819 + # Custom icon. 820 + # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='โญ' 821 + 822 + ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################ 823 + # Todo color. 824 + typeset -g POWERLEVEL9K_TODO_FOREGROUND=110 825 + # Hide todo when the total number of tasks is zero. 826 + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true 827 + # Hide todo when the number of tasks after filtering is zero. 828 + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false 829 + 830 + # Todo format. The following parameters are available within the expansion. 831 + # 832 + # - P9K_TODO_TOTAL_TASK_COUNT The total number of tasks. 833 + # - P9K_TODO_FILTERED_TASK_COUNT The number of tasks after filtering. 834 + # 835 + # These variables correspond to the last line of the output of `todo.sh -p ls`: 836 + # 837 + # TODO: 24 of 42 tasks shown 838 + # 839 + # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT. 840 + # 841 + # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT' 842 + 843 + # Custom icon. 844 + # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='โญ' 845 + 846 + ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############ 847 + # Timewarrior color. 848 + typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=110 849 + # If the tracked task is longer than 24 characters, truncate and append "โ€ฆ". 850 + # Tip: To always display tasks without truncation, delete the following parameter. 851 + # Tip: To hide task names and display just the icon when time tracking is enabled, set the 852 + # value of the following parameter to "". 853 + typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+โ€ฆ}' 854 + 855 + # Custom icon. 856 + # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='โญ' 857 + 858 + ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]############## 859 + # Taskwarrior color. 860 + typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74 861 + 862 + # Taskwarrior segment format. The following parameters are available within the expansion. 863 + # 864 + # - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`. 865 + # - P9K_TASKWARRIOR_OVERDUE_COUNT The number of overdue tasks: `task +OVERDUE count`. 866 + # 867 + # Zero values are represented as empty parameters. 868 + # 869 + # The default format: 870 + # 871 + # '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT' 872 + # 873 + # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT' 874 + 875 + # Custom icon. 876 + # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='โญ' 877 + 878 + ################################[ cpu_arch: CPU architecture ]################################ 879 + # CPU architecture color. 880 + typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=172 881 + 882 + # Hide the segment when on a specific CPU architecture. 883 + # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION= 884 + # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION= 885 + 886 + # Custom icon. 887 + # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='โญ' 888 + 889 + ##################################[ context: user@hostname ]################################## 890 + # Context color when running with privileges. 891 + typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178 892 + # Context color in SSH without privileges. 893 + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=180 894 + # Default context color (no privileges, no SSH). 895 + typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=180 896 + 897 + # Context format when running with privileges: bold user@hostname. 898 + typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m' 899 + # Context format when in SSH without privileges: user@hostname. 900 + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m' 901 + # Default context format (no privileges, no SSH): user@hostname. 902 + typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m' 903 + 904 + # Don't show context unless running with privileges or in SSH. 905 + # Tip: Remove the next line to always show context. 906 + typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION= 907 + 908 + # Custom icon. 909 + # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='โญ' 910 + # Custom prefix. 911 + # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%244Fwith ' 912 + 913 + ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]### 914 + # Python virtual environment color. 915 + typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37 916 + # Don't show Python version next to the virtual environment name. 917 + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false 918 + # If set to "false", won't show virtualenv if pyenv is already shown. 919 + # If set to "if-different", won't show virtualenv if it's the same as pyenv. 920 + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false 921 + # Separate environment name from Python version only with a space. 922 + typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= 923 + # Custom icon. 924 + # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 925 + 926 + #####################[ anaconda: conda environment (https://conda.io/) ]###################### 927 + # Anaconda environment color. 928 + typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37 929 + 930 + # Anaconda segment format. The following parameters are available within the expansion. 931 + # 932 + # - CONDA_PREFIX Absolute path to the active Anaconda/Miniconda environment. 933 + # - CONDA_DEFAULT_ENV Name of the active Anaconda/Miniconda environment. 934 + # - CONDA_PROMPT_MODIFIER Configurable prompt modifier (see below). 935 + # - P9K_ANACONDA_PYTHON_VERSION Current python version (python --version). 936 + # 937 + # CONDA_PROMPT_MODIFIER can be configured with the following command: 938 + # 939 + # conda config --set env_prompt '({default_env}) ' 940 + # 941 + # The last argument is a Python format string that can use the following variables: 942 + # 943 + # - prefix The same as CONDA_PREFIX. 944 + # - default_env The same as CONDA_DEFAULT_ENV. 945 + # - name The last segment of CONDA_PREFIX. 946 + # - stacked_env Comma-separated list of names in the environment stack. The first element is 947 + # always the same as default_env. 948 + # 949 + # Note: '({default_env}) ' is the default value of env_prompt. 950 + # 951 + # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER 952 + # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former 953 + # is empty. 954 + typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}' 955 + 956 + # Custom icon. 957 + # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='โญ' 958 + 959 + ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################ 960 + # Pyenv color. 961 + typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37 962 + # Hide python version if it doesn't come from one of these sources. 963 + typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global) 964 + # If set to false, hide python version if it's the same as global: 965 + # $(pyenv version-name) == $(pyenv global). 966 + typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false 967 + # If set to false, hide python version if it's equal to "system". 968 + typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true 969 + 970 + # Pyenv segment format. The following parameters are available within the expansion. 971 + # 972 + # - P9K_CONTENT Current pyenv environment (pyenv version-name). 973 + # - P9K_PYENV_PYTHON_VERSION Current python version (python --version). 974 + # 975 + # The default format has the following logic: 976 + # 977 + # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or 978 + # starts with "$P9K_PYENV_PYTHON_VERSION/". 979 + # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION". 980 + typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}' 981 + 982 + # Custom icon. 983 + # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 984 + 985 + ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################ 986 + # Goenv color. 987 + typeset -g POWERLEVEL9K_GOENV_FOREGROUND=37 988 + # Hide go version if it doesn't come from one of these sources. 989 + typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global) 990 + # If set to false, hide go version if it's the same as global: 991 + # $(goenv version-name) == $(goenv global). 992 + typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false 993 + # If set to false, hide go version if it's equal to "system". 994 + typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true 995 + # Custom icon. 996 + # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 997 + 998 + ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]########## 999 + # Nodenv color. 1000 + typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70 1001 + # Hide node version if it doesn't come from one of these sources. 1002 + typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global) 1003 + # If set to false, hide node version if it's the same as global: 1004 + # $(nodenv version-name) == $(nodenv global). 1005 + typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false 1006 + # If set to false, hide node version if it's equal to "system". 1007 + typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true 1008 + # Custom icon. 1009 + # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1010 + 1011 + ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]############### 1012 + # Nvm color. 1013 + typeset -g POWERLEVEL9K_NVM_FOREGROUND=70 1014 + # Custom icon. 1015 + # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='โญ' 1016 + 1017 + ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############ 1018 + # Nodeenv color. 1019 + typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70 1020 + # Don't show Node version next to the environment name. 1021 + typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false 1022 + # Separate environment name from Node version only with a space. 1023 + typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER= 1024 + # Custom icon. 1025 + # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1026 + 1027 + ##############################[ node_version: node.js version ]############################### 1028 + # Node version color. 1029 + typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70 1030 + # Show node version only when in a directory tree containing package.json. 1031 + typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true 1032 + # Custom icon. 1033 + # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 1034 + 1035 + #######################[ go_version: go version (https://golang.org) ]######################## 1036 + # Go version color. 1037 + typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37 1038 + # Show go version only when in a go project subdirectory. 1039 + typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true 1040 + # Custom icon. 1041 + # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 1042 + 1043 + #################[ rust_version: rustc version (https://www.rust-lang.org) ]################## 1044 + # Rust version color. 1045 + typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37 1046 + # Show rust version only when in a rust project subdirectory. 1047 + typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true 1048 + # Custom icon. 1049 + # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 1050 + 1051 + ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################ 1052 + # .NET version color. 1053 + typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134 1054 + # Show .NET version only when in a .NET project subdirectory. 1055 + typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true 1056 + # Custom icon. 1057 + # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 1058 + 1059 + #####################[ php_version: php version (https://www.php.net/) ]###################### 1060 + # PHP version color. 1061 + typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=99 1062 + # Show PHP version only when in a PHP project subdirectory. 1063 + typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true 1064 + # Custom icon. 1065 + # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 1066 + 1067 + ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]########### 1068 + # Laravel version color. 1069 + typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=161 1070 + # Custom icon. 1071 + # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 1072 + 1073 + ####################[ java_version: java version (https://www.java.com/) ]#################### 1074 + # Java version color. 1075 + typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=32 1076 + # Show java version only when in a java project subdirectory. 1077 + typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true 1078 + # Show brief version. 1079 + typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false 1080 + # Custom icon. 1081 + # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 1082 + 1083 + ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]#### 1084 + # Package color. 1085 + typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=117 1086 + # Package format. The following parameters are available within the expansion. 1087 + # 1088 + # - P9K_PACKAGE_NAME The value of `name` field in package.json. 1089 + # - P9K_PACKAGE_VERSION The value of `version` field in package.json. 1090 + # 1091 + # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}' 1092 + # Custom icon. 1093 + # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='โญ' 1094 + 1095 + #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]############## 1096 + # Rbenv color. 1097 + typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168 1098 + # Hide ruby version if it doesn't come from one of these sources. 1099 + typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global) 1100 + # If set to false, hide ruby version if it's the same as global: 1101 + # $(rbenv version-name) == $(rbenv global). 1102 + typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false 1103 + # If set to false, hide ruby version if it's equal to "system". 1104 + typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true 1105 + # Custom icon. 1106 + # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1107 + 1108 + #######################[ rvm: ruby version from rvm (https://rvm.io) ]######################## 1109 + # Rvm color. 1110 + typeset -g POWERLEVEL9K_RVM_FOREGROUND=168 1111 + # Don't show @gemset at the end. 1112 + typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false 1113 + # Don't show ruby- at the front. 1114 + typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false 1115 + # Custom icon. 1116 + # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='โญ' 1117 + 1118 + ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############ 1119 + # Fvm color. 1120 + typeset -g POWERLEVEL9K_FVM_FOREGROUND=38 1121 + # Custom icon. 1122 + # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='โญ' 1123 + 1124 + ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]########### 1125 + # Lua color. 1126 + typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=32 1127 + # Hide lua version if it doesn't come from one of these sources. 1128 + typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global) 1129 + # If set to false, hide lua version if it's the same as global: 1130 + # $(luaenv version-name) == $(luaenv global). 1131 + typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false 1132 + # If set to false, hide lua version if it's equal to "system". 1133 + typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true 1134 + # Custom icon. 1135 + # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1136 + 1137 + ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################ 1138 + # Java color. 1139 + typeset -g POWERLEVEL9K_JENV_FOREGROUND=32 1140 + # Hide java version if it doesn't come from one of these sources. 1141 + typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global) 1142 + # If set to false, hide java version if it's the same as global: 1143 + # $(jenv version-name) == $(jenv global). 1144 + typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false 1145 + # If set to false, hide java version if it's equal to "system". 1146 + typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true 1147 + # Custom icon. 1148 + # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1149 + 1150 + ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############ 1151 + # Perl color. 1152 + typeset -g POWERLEVEL9K_PLENV_FOREGROUND=67 1153 + # Hide perl version if it doesn't come from one of these sources. 1154 + typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global) 1155 + # If set to false, hide perl version if it's the same as global: 1156 + # $(plenv version-name) == $(plenv global). 1157 + typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false 1158 + # If set to false, hide perl version if it's equal to "system". 1159 + typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true 1160 + # Custom icon. 1161 + # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1162 + 1163 + ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############ 1164 + # Perlbrew color. 1165 + typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67 1166 + # Show perlbrew version only when in a perl project subdirectory. 1167 + typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true 1168 + # Don't show "perl-" at the front. 1169 + typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false 1170 + # Custom icon. 1171 + # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='โญ' 1172 + 1173 + ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############ 1174 + # PHP color. 1175 + typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99 1176 + # Hide php version if it doesn't come from one of these sources. 1177 + typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global) 1178 + # If set to false, hide php version if it's the same as global: 1179 + # $(phpenv version-name) == $(phpenv global). 1180 + typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false 1181 + # If set to false, hide php version if it's equal to "system". 1182 + typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true 1183 + # Custom icon. 1184 + # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1185 + 1186 + #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]####### 1187 + # Scala color. 1188 + typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=160 1189 + # Hide scala version if it doesn't come from one of these sources. 1190 + typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global) 1191 + # If set to false, hide scala version if it's the same as global: 1192 + # $(scalaenv version-name) == $(scalaenv global). 1193 + typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false 1194 + # If set to false, hide scala version if it's equal to "system". 1195 + typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true 1196 + # Custom icon. 1197 + # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='โญ' 1198 + 1199 + ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]########### 1200 + # Haskell color. 1201 + typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=172 1202 + # Hide haskell version if it doesn't come from one of these sources. 1203 + # 1204 + # shell: version is set by STACK_YAML 1205 + # local: version is set by stack.yaml up the directory tree 1206 + # global: version is set by the implicit global project (~/.stack/global-project/stack.yaml) 1207 + typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local) 1208 + # If set to false, hide haskell version if it's the same as in the implicit global project. 1209 + typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true 1210 + # Custom icon. 1211 + # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='โญ' 1212 + 1213 + ################[ terraform: terraform workspace (https://www.terraform.io) ]################# 1214 + # Don't show terraform workspace if it's literally "default". 1215 + typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false 1216 + # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element 1217 + # in each pair defines a pattern against which the current terraform workspace gets matched. 1218 + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) 1219 + # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters, 1220 + # you'll see this value in your prompt. The second element of each pair in 1221 + # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The 1222 + # first match wins. 1223 + # 1224 + # For example, given these settings: 1225 + # 1226 + # typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( 1227 + # '*prod*' PROD 1228 + # '*test*' TEST 1229 + # '*' OTHER) 1230 + # 1231 + # If your current terraform workspace is "project_test", its class is TEST because "project_test" 1232 + # doesn't match the pattern '*prod*' but does match '*test*'. 1233 + # 1234 + # You can define different colors, icons and content expansions for different classes: 1235 + # 1236 + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=28 1237 + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='โญ' 1238 + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' 1239 + typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( 1240 + # '*prod*' PROD # These values are examples that are unlikely 1241 + # '*test*' TEST # to match your needs. Customize them as needed. 1242 + '*' OTHER) 1243 + typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=38 1244 + # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='โญ' 1245 + 1246 + #############[ terraform_version: terraform version (https://www.terraform.io) ]############## 1247 + # Terraform version color. 1248 + typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=38 1249 + # Custom icon. 1250 + # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='โญ' 1251 + 1252 + #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]############# 1253 + # Show kubecontext only when the command you are typing invokes one of these tools. 1254 + # Tip: Remove the next line to always show kubecontext. 1255 + typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent' 1256 + 1257 + # Kubernetes context classes for the purpose of using different colors, icons and expansions with 1258 + # different contexts. 1259 + # 1260 + # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element 1261 + # in each pair defines a pattern against which the current kubernetes context gets matched. 1262 + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) 1263 + # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters, 1264 + # you'll see this value in your prompt. The second element of each pair in 1265 + # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The 1266 + # first match wins. 1267 + # 1268 + # For example, given these settings: 1269 + # 1270 + # typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( 1271 + # '*prod*' PROD 1272 + # '*test*' TEST 1273 + # '*' DEFAULT) 1274 + # 1275 + # If your current kubernetes context is "deathray-testing/default", its class is TEST 1276 + # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'. 1277 + # 1278 + # You can define different colors, icons and content expansions for different classes: 1279 + # 1280 + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28 1281 + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='โญ' 1282 + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' 1283 + typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( 1284 + # '*prod*' PROD # These values are examples that are unlikely 1285 + # '*test*' TEST # to match your needs. Customize them as needed. 1286 + '*' DEFAULT) 1287 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134 1288 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='โ—‹' 1289 + 1290 + # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext 1291 + # segment. Parameter expansions are very flexible and fast, too. See reference: 1292 + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. 1293 + # 1294 + # Within the expansion the following parameters are always available: 1295 + # 1296 + # - P9K_CONTENT The content that would've been displayed if there was no content 1297 + # expansion defined. 1298 + # - P9K_KUBECONTEXT_NAME The current context's name. Corresponds to column NAME in the 1299 + # output of `kubectl config get-contexts`. 1300 + # - P9K_KUBECONTEXT_CLUSTER The current context's cluster. Corresponds to column CLUSTER in the 1301 + # output of `kubectl config get-contexts`. 1302 + # - P9K_KUBECONTEXT_NAMESPACE The current context's namespace. Corresponds to column NAMESPACE 1303 + # in the output of `kubectl config get-contexts`. If there is no 1304 + # namespace, the parameter is set to "default". 1305 + # - P9K_KUBECONTEXT_USER The current context's user. Corresponds to column AUTHINFO in the 1306 + # output of `kubectl config get-contexts`. 1307 + # 1308 + # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS), 1309 + # the following extra parameters are available: 1310 + # 1311 + # - P9K_KUBECONTEXT_CLOUD_NAME Either "gke" or "eks". 1312 + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT Account/project ID. 1313 + # - P9K_KUBECONTEXT_CLOUD_ZONE Availability zone. 1314 + # - P9K_KUBECONTEXT_CLOUD_CLUSTER Cluster. 1315 + # 1316 + # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example, 1317 + # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01": 1318 + # 1319 + # - P9K_KUBECONTEXT_CLOUD_NAME=gke 1320 + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account 1321 + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a 1322 + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 1323 + # 1324 + # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01": 1325 + # 1326 + # - P9K_KUBECONTEXT_CLOUD_NAME=eks 1327 + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012 1328 + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1 1329 + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 1330 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION= 1331 + # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME. 1332 + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}' 1333 + # Append the current context's namespace if it's not "default". 1334 + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}' 1335 + 1336 + # Custom prefix. 1337 + # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%244Fat ' 1338 + 1339 + #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]# 1340 + # Show aws only when the command you are typing invokes one of these tools. 1341 + # Tip: Remove the next line to always show aws. 1342 + typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|terraform|pulumi|terragrunt' 1343 + 1344 + # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element 1345 + # in each pair defines a pattern against which the current AWS profile gets matched. 1346 + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) 1347 + # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters, 1348 + # you'll see this value in your prompt. The second element of each pair in 1349 + # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The 1350 + # first match wins. 1351 + # 1352 + # For example, given these settings: 1353 + # 1354 + # typeset -g POWERLEVEL9K_AWS_CLASSES=( 1355 + # '*prod*' PROD 1356 + # '*test*' TEST 1357 + # '*' DEFAULT) 1358 + # 1359 + # If your current AWS profile is "company_test", its class is TEST 1360 + # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'. 1361 + # 1362 + # You can define different colors, icons and content expansions for different classes: 1363 + # 1364 + # typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28 1365 + # typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='โญ' 1366 + # typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' 1367 + typeset -g POWERLEVEL9K_AWS_CLASSES=( 1368 + # '*prod*' PROD # These values are examples that are unlikely 1369 + # '*test*' TEST # to match your needs. Customize them as needed. 1370 + '*' DEFAULT) 1371 + typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208 1372 + # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='โญ' 1373 + 1374 + # AWS segment format. The following parameters are available within the expansion. 1375 + # 1376 + # - P9K_AWS_PROFILE The name of the current AWS profile. 1377 + # - P9K_AWS_REGION The region associated with the current AWS profile. 1378 + typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}' 1379 + 1380 + #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]# 1381 + # AWS Elastic Beanstalk environment color. 1382 + typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70 1383 + # Custom icon. 1384 + typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='eb' 1385 + 1386 + ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## 1387 + # Show azure only when the command you are typing invokes one of these tools. 1388 + # Tip: Remove the next line to always show azure. 1389 + typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt' 1390 + # Azure account name color. 1391 + typeset -g POWERLEVEL9K_AZURE_FOREGROUND=32 1392 + # Custom icon. 1393 + typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='az' 1394 + 1395 + ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]########### 1396 + # Show gcloud only when the command you are typing invokes one of these tools. 1397 + # Tip: Remove the next line to always show gcloud. 1398 + typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil' 1399 + # Google cloud color. 1400 + typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32 1401 + 1402 + # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or 1403 + # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative 1404 + # enough. You can use the following parameters in the expansions. Each of them corresponds to the 1405 + # output of `gcloud` tool. 1406 + # 1407 + # Parameter | Source 1408 + # -------------------------|-------------------------------------------------------------------- 1409 + # P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)' 1410 + # P9K_GCLOUD_ACCOUNT | gcloud config get-value account 1411 + # P9K_GCLOUD_PROJECT_ID | gcloud config get-value project 1412 + # P9K_GCLOUD_PROJECT_NAME | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)' 1413 + # 1414 + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'. 1415 + # 1416 + # Obtaining project name requires sending a request to Google servers. This can take a long time 1417 + # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud 1418 + # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets 1419 + # set and gcloud prompt segment transitions to state COMPLETE. 1420 + # 1421 + # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL 1422 + # and COMPLETE. You can also hide gcloud in state PARTIAL by setting 1423 + # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and 1424 + # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty. 1425 + typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}' 1426 + typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}' 1427 + 1428 + # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name 1429 + # this often. Negative value disables periodic polling. In this mode project name is retrieved 1430 + # only when the current configuration, account or project id changes. 1431 + typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60 1432 + 1433 + # Custom icon. 1434 + # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='โญ' 1435 + 1436 + #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]# 1437 + # Show google_app_cred only when the command you are typing invokes one of these tools. 1438 + # Tip: Remove the next line to always show google_app_cred. 1439 + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt' 1440 + 1441 + # Google application credentials classes for the purpose of using different colors, icons and 1442 + # expansions with different credentials. 1443 + # 1444 + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first 1445 + # element in each pair defines a pattern against which the current kubernetes context gets 1446 + # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion 1447 + # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION 1448 + # parameters, you'll see this value in your prompt. The second element of each pair in 1449 + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order. 1450 + # The first match wins. 1451 + # 1452 + # For example, given these settings: 1453 + # 1454 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( 1455 + # '*:*prod*:*' PROD 1456 + # '*:*test*:*' TEST 1457 + # '*' DEFAULT) 1458 + # 1459 + # If your current Google application credentials is "service_account deathray-testing x@y.com", 1460 + # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'. 1461 + # 1462 + # You can define different colors, icons and content expansions for different classes: 1463 + # 1464 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28 1465 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='โญ' 1466 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID' 1467 + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( 1468 + # '*:*prod*:*' PROD # These values are examples that are unlikely 1469 + # '*:*test*:*' TEST # to match your needs. Customize them as needed. 1470 + '*' DEFAULT) 1471 + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=32 1472 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='โญ' 1473 + 1474 + # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by 1475 + # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference: 1476 + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. 1477 + # 1478 + # You can use the following parameters in the expansion. Each of them corresponds to one of the 1479 + # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS. 1480 + # 1481 + # Parameter | JSON key file field 1482 + # ---------------------------------+--------------- 1483 + # P9K_GOOGLE_APP_CRED_TYPE | type 1484 + # P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id 1485 + # P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email 1486 + # 1487 + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'. 1488 + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}' 1489 + 1490 + ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]############### 1491 + # Toolbox color. 1492 + typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=178 1493 + # Don't display the name of the toolbox if it matches fedora-toolbox-*. 1494 + typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}' 1495 + # Custom icon. 1496 + # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='โญ' 1497 + # Custom prefix. 1498 + # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%244Fin ' 1499 + 1500 + ###############################[ public_ip: public IP address ]############################### 1501 + # Public IP color. 1502 + typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94 1503 + # Custom icon. 1504 + # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='โญ' 1505 + 1506 + ########################[ vpn_ip: virtual private network indicator ]######################### 1507 + # VPN IP color. 1508 + typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81 1509 + # When on VPN, show just an icon without the IP address. 1510 + # Tip: To display the private IP address when on VPN, remove the next line. 1511 + typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION= 1512 + # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN 1513 + # to see the name of the interface. 1514 + typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*' 1515 + # If set to true, show one segment per matching network interface. If set to false, show only 1516 + # one segment corresponding to the first matching network interface. 1517 + # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION. 1518 + typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false 1519 + # Custom icon. 1520 + # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='โญ' 1521 + 1522 + ###########[ ip: ip address and bandwidth usage for a specified network interface ]########### 1523 + # IP color. 1524 + typeset -g POWERLEVEL9K_IP_FOREGROUND=38 1525 + # The following parameters are accessible within the expansion: 1526 + # 1527 + # Parameter | Meaning 1528 + # ----------------------+------------------------------------------- 1529 + # P9K_IP_IP | IP address 1530 + # P9K_IP_INTERFACE | network interface 1531 + # P9K_IP_RX_BYTES | total number of bytes received 1532 + # P9K_IP_TX_BYTES | total number of bytes sent 1533 + # P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt 1534 + # P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt 1535 + # P9K_IP_RX_RATE | receive rate (since last prompt) 1536 + # P9K_IP_TX_RATE | send rate (since last prompt) 1537 + typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+%70Fโ‡ฃ$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+%215Fโ‡ก$P9K_IP_TX_RATE }%38F$P9K_IP_IP' 1538 + # Show information for the first network interface whose name matches this regular expression. 1539 + # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces. 1540 + typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*' 1541 + # Custom icon. 1542 + # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='โญ' 1543 + 1544 + #########################[ proxy: system-wide http/https/ftp proxy ]########################## 1545 + # Proxy color. 1546 + typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68 1547 + # Custom icon. 1548 + # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='โญ' 1549 + 1550 + ################################[ battery: internal battery ]################################# 1551 + # Show battery in red when it's below this level and not connected to power supply. 1552 + typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20 1553 + typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160 1554 + # Show battery in green when it's charging or fully charged. 1555 + typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70 1556 + # Show battery in yellow when it's discharging. 1557 + typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178 1558 + # Battery pictograms going from low to high level of charge. 1559 + typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}โ–' '%K{232}โ–‚' '%K{232}โ–ƒ' '%K{232}โ–„' '%K{232}โ–…' '%K{232}โ–†' '%K{232}โ–‡' '%K{232}โ–ˆ') 1560 + # Don't show the remaining time to charge/discharge. 1561 + typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false 1562 + 1563 + #####################################[ wifi: wifi speed ]##################################### 1564 + # WiFi color. 1565 + typeset -g POWERLEVEL9K_WIFI_FOREGROUND=68 1566 + # Custom icon. 1567 + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='โญ' 1568 + 1569 + # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS). 1570 + # 1571 + # # Wifi colors and icons for different signal strength levels (low to high). 1572 + # typeset -g my_wifi_fg=(68 68 68 68 68) # <-- change these values 1573 + # typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi') # <-- change these values 1574 + # 1575 + # typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps' 1576 + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}' 1577 + # 1578 + # The following parameters are accessible within the expansions: 1579 + # 1580 + # Parameter | Meaning 1581 + # ----------------------+--------------- 1582 + # P9K_WIFI_SSID | service set identifier, a.k.a. network name 1583 + # P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"; empty if unknown 1584 + # P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second 1585 + # P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0 1586 + # P9K_WIFI_NOISE | noise in dBm, from -120 to 0 1587 + # P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE) 1588 + 1589 + ####################################[ time: current time ]#################################### 1590 + # Current time color. 1591 + typeset -g POWERLEVEL9K_TIME_FOREGROUND=66 1592 + # Format for the current time: 09:51:02. See `man 3 strftime`. 1593 + typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}' 1594 + # If set to true, time will update when you hit enter. This way prompts for the past 1595 + # commands will contain the start times of their commands as opposed to the default 1596 + # behavior where they contain the end times of their preceding commands. 1597 + typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false 1598 + # Custom icon. 1599 + typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION= 1600 + # Custom prefix. 1601 + # typeset -g POWERLEVEL9K_TIME_PREFIX='%244Fat ' 1602 + 1603 + # Example of a user-defined prompt segment. Function prompt_example will be called on every 1604 + # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or 1605 + # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and orange text greeting the user. 1606 + # 1607 + # Type `p10k help segment` for documentation and a more sophisticated example. 1608 + function prompt_example() { 1609 + p10k segment -f 208 -i 'โญ' -t 'hello, %n' 1610 + } 1611 + 1612 + # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job 1613 + # is to generate the prompt segment for display in instant prompt. See 1614 + # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. 1615 + # 1616 + # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function 1617 + # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k 1618 + # will replay these calls without actually calling instant_prompt_*. It is imperative that 1619 + # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this 1620 + # rule is not observed, the content of instant prompt will be incorrect. 1621 + # 1622 + # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If 1623 + # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt. 1624 + function instant_prompt_example() { 1625 + # Since prompt_example always makes the same `p10k segment` calls, we can call it from 1626 + # instant_prompt_example. This will give us the same `example` prompt segment in the instant 1627 + # and regular prompts. 1628 + prompt_example 1629 + } 1630 + 1631 + # User-defined prompt segments can be customized the same way as built-in segments. 1632 + # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208 1633 + # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='โญ' 1634 + 1635 + # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt 1636 + # when accepting a command line. Supported values: 1637 + # 1638 + # - off: Don't change prompt when accepting a command line. 1639 + # - always: Trim down prompt when accepting a command line. 1640 + # - same-dir: Trim down prompt when accepting a command line unless this is the first command 1641 + # typed after changing current working directory. 1642 + typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always 1643 + 1644 + # Instant prompt mode. 1645 + # 1646 + # - off: Disable instant prompt. Choose this if you've tried instant prompt and found 1647 + # it incompatible with your zsh configuration files. 1648 + # - quiet: Enable instant prompt and don't print warnings when detecting console output 1649 + # during zsh initialization. Choose this if you've read and understood 1650 + # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. 1651 + # - verbose: Enable instant prompt and print a warning when detecting console output during 1652 + # zsh initialization. Choose this if you've never tried instant prompt, haven't 1653 + # seen the warning, or if you are unsure what this all means. 1654 + typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose 1655 + 1656 + # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized. 1657 + # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload 1658 + # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you 1659 + # really need it. 1660 + typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true 1661 + 1662 + # If p10k is already loaded, reload configuration. 1663 + # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true. 1664 + (( ! $+functions[p10k] )) || p10k reload 1665 + } 1666 + 1667 + # Tell `p10k configure` which file it should overwrite. 1668 + typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a} 1669 + 1670 + (( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} 1671 + 'builtin' 'unset' 'p10k_config_opts'
+17
home/modules/programs/rbw/default.nix
···
··· 1 + _: { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 6 + }: let 7 + cfg = config.programs.rbw; 8 + in { 9 + config = lib.mkIf cfg.enable { 10 + programs.rbw.settings = { 11 + inherit (pkgs) pinentry; 12 + 13 + email = "timmelzer@gmail.com"; 14 + base_url = "https://passwords.mimas.internal.nobbz.dev"; 15 + }; 16 + }; 17 + }
+60
home/modules/programs/wezterm/default.nix
···
··· 1 + _: { 2 + config, 3 + pkgs, 4 + ... 5 + }: { 6 + home.packages = [pkgs.wezterm]; 7 + 8 + xdg.configFile."wezterm/wezterm.lua".text = 9 + # lua 10 + '' 11 + -- Pull in the wezterm API 12 + local wezterm = require 'wezterm' 13 + 14 + -- This table will hold the configuration. 15 + local config = {} 16 + 17 + -- In newer versions of wezterm, use the config_builder which will 18 + -- help provide clearer error messages 19 + if wezterm.config_builder then 20 + config = wezterm.config_builder() 21 + end 22 + 23 + -- This is where you actually apply your config choices 24 + 25 + -- bells 26 + config.audible_bell = "Disabled" 27 + config.visual_bell = { 28 + fade_in_function = "EaseIn", 29 + fade_in_duration_ms = 150, 30 + fade_out_function = "EaseOut", 31 + fade_out_duration_ms = 150, 32 + } 33 + 34 + -- For example, changing the color scheme: 35 + config.color_scheme = "Catppuccin Mocha" 36 + 37 + -- show a scrollbar 38 + config.enable_scroll_bar = true 39 + 40 + -- forbid window size change on change of fontsize 41 + config.adjust_window_size_when_changing_font_size = false 42 + 43 + -- disable ligatures 44 + config.harfbuzz_features = { 'calt=0', 'clig=0', 'liga=0' } 45 + 46 + -- set the font 47 + config.font_dirs = { '${pkgs.departure-mono}/share/fonts/otf' } 48 + config.font_size = 11.0 * 1.25 49 + config.font = wezterm.font("Departure Mono") 50 + 51 + -- setting up keybindings 52 + config.keys = { 53 + -- The default is `C-Z` (so also pressing SHIFT), I prefer to not have SHIFT pressed 54 + { key = 'z', mods = 'CTRL', action = wezterm.action.TogglePaneZoomState, }, 55 + } 56 + 57 + -- and finally, return the configuration to wezterm 58 + return config 59 + ''; 60 + }
+1 -1
home/modules/services/insync/default.nix
··· 21 inherit (config.nixpkgs) config; 22 }; 23 in 24 - ipkgs.insync-v3; 25 description = '' 26 The insync package to use. 27
··· 21 inherit (config.nixpkgs) config; 22 }; 23 in 24 + ipkgs.insync; 25 description = '' 26 The insync package to use. 27
-85
home/modules/services/restic/default.nix
··· 1 - {self, ...}: { 2 - config, 3 - lib, 4 - pkgs, 5 - self, 6 - ... 7 - }: let 8 - cfg = config.services.restic; 9 - 10 - bin = "${cfg.package}/bin/restic"; 11 - excludes = builtins.concatStringsSep " " (builtins.map (e: "--exclude=${e}") cfg.exclude); 12 - xFlags = lib.optionalString cfg.oneFileSystem "-x"; 13 - compressFlag = "--compression ${cfg.compression}"; 14 - flags = "${xFlags} ${compressFlag} ${excludes}"; 15 - 16 - command = "${bin} --tag home -vv backup ${flags} %h"; 17 - in { 18 - options.services.restic = { 19 - enable = lib.mkEnableOption "Restic Backup Tool"; 20 - 21 - package = lib.mkOption { 22 - type = lib.types.package; 23 - default = pkgs.restic; 24 - description = "Restic derivation to use"; 25 - }; 26 - 27 - exclude = lib.mkOption { 28 - type = lib.types.listOf lib.types.str; 29 - default = []; 30 - description = "Corresponds to `--exclude`. Use `%h` instead of `~`"; 31 - }; 32 - 33 - oneFileSystem = lib.mkOption { 34 - type = lib.types.bool; 35 - default = false; 36 - description = "If true, exclude other file systems, don't cross filesystem boundaries and subvolumes"; 37 - }; 38 - 39 - repo = lib.mkOption { 40 - type = lib.types.str; 41 - description = "Location of the repository"; 42 - }; 43 - 44 - compression = lib.mkOption { 45 - type = lib.types.enum ["off" "auto" "max"]; 46 - description = "The compression mode to use"; 47 - default = "auto"; 48 - }; 49 - 50 - # TODO: Add options for inlcude, password file, etc 51 - }; 52 - 53 - config = lib.mkIf cfg.enable { 54 - home.packages = [cfg.package]; 55 - 56 - systemd.user.services.restic-backup = { 57 - Unit = { 58 - Description = "Restic Backup Tool"; 59 - StartLimitIntervalSec = "25m"; 60 - StartLimitBurst = "4"; 61 - }; 62 - 63 - Service = { 64 - Environment = [ 65 - "PATH=${lib.makeBinPath [pkgs.openssh]}" 66 - "RESTIC_PASSWORD_FILE=%h/.config/restic/password" 67 - "RESTIC_REPOSITORY=${cfg.repo}" 68 - ]; 69 - Type = "oneshot"; 70 - ExecStart = command; 71 - Restart = "on-failure"; 72 - RestartSec = "2m"; 73 - }; 74 - }; 75 - 76 - systemd.user.timers.restic-backup = { 77 - Unit.Description = "Restic periodic backup"; 78 - Timer = { 79 - Unit = "restic-backup.service"; 80 - OnCalendar = "hourly"; 81 - }; 82 - Install.WantedBy = ["timers.target"]; 83 - }; 84 - }; 85 - }
···
+46
home/modules/services/rustic/default.nix
··· 18 flags = lib.concatStringsSep " " flagList; 19 20 command = "${bin} backup ${flags} %h"; 21 in { 22 options.services.rustic = { 23 enable = lib.mkEnableOption "rustic"; ··· 49 type = lib.types.path; 50 default = "${config.xdg.configHome}/rustic/password"; 51 description = "Location of the password file"; 52 }; 53 }; 54
··· 18 flags = lib.concatStringsSep " " flagList; 19 20 command = "${bin} backup ${flags} %h"; 21 + 22 + profileModule = { 23 + name, 24 + config, 25 + ... 26 + }: { 27 + enable = lib.mkEnableOption name // {default = true;}; 28 + 29 + repo = lib.mkOption { 30 + type = lib.types.str; 31 + description = "Location of the repository"; 32 + }; 33 + 34 + globs = lib.mkOption { 35 + type = lib.types.listOf lib.types.str; 36 + default = []; 37 + description = "Patterns to apply to backup. Use a hardcoded prefix for the home directory"; 38 + }; 39 + 40 + oneFileSystem = lib.mkOption { 41 + type = lib.types.bool; 42 + default = false; 43 + description = "If true, exclude other file systems, don't cross filesystem boundaries and subvolumes"; 44 + }; 45 + 46 + passwordFile = lib.mkOption { 47 + type = lib.types.path; 48 + default = "${config.xdg.configHome}/rustic/password"; 49 + description = "Location of the password file"; 50 + }; 51 + 52 + source = lib.mkOption { 53 + type = lib.types.path; 54 + description = "Location of the base directory for the backup.Of "; 55 + }; 56 + 57 + settings = lib.mkOption { 58 + type = lib.types.attrsOf lib.types.any; 59 + description = "A nix representation of the profile settings which gets converted to a TOML file"; 60 + }; 61 + }; 62 in { 63 options.services.rustic = { 64 enable = lib.mkEnableOption "rustic"; ··· 90 type = lib.types.path; 91 default = "${config.xdg.configHome}/rustic/password"; 92 description = "Location of the password file"; 93 + }; 94 + 95 + profile = lib.mkOption { 96 + type = lib.types.attrsOf profileModule; 97 + description = "Specifies the backup profile to use and its settings"; 98 }; 99 }; 100
-1
nixos/configurations/bootloader/enceladeus.nix
··· 1 { 2 # Use the GRUB 2 boot loader. 3 boot.loader.grub.enable = true; 4 - boot.loader.grub.version = 2; 5 boot.loader.grub.useOSProber = false; 6 7 # boot.loader.grub.efiSupport = true;
··· 1 { 2 # Use the GRUB 2 boot loader. 3 boot.loader.grub.enable = true; 4 boot.loader.grub.useOSProber = false; 5 6 # boot.loader.grub.efiSupport = true;
+3
nixos/configurations/bootloader/janus.nix
···
··· 1 + _: {} 2 + # TODO: Move BL relevant config here! 3 +
-2
nixos/configurations/default.nix
··· 1 _: { 2 nobbz.nixosConfigurations.mimas.system = "x86_64-linux"; 3 - nobbz.nixosConfigurations.enceladeus.system = "x86_64-linux"; 4 - nobbz.nixosConfigurations.hyperion.system = "aarch64-linux"; 5 }
··· 1 _: { 2 nobbz.nixosConfigurations.mimas.system = "x86_64-linux"; 3 }
-159
nixos/configurations/enceladeus.nix
··· 1 - # Edit this configuration file to define what should be installed on 2 - # your system. Help is available in the configuration.nix(5) man page 3 - # and in the NixOS manual (accessible by running โ€˜nixos-helpโ€™). 4 - _: { 5 - config, 6 - pkgs, 7 - lib, 8 - ... 9 - }: { 10 - nix.allowedUnfree = ["b43-firmware" "zerotierone"]; 11 - nixpkgs.config.contentAddressedByDefault = false; 12 - 13 - # nixpkgs.hostPlatform.gcc.arch = "core2"; 14 - # nixpkgs.hostPlatform.system = "x86_64-linux"; 15 - # nixpkgs.buildPlatform.gcc.arch = "haswell"; 16 - # nixpkgs.buildPlatform.system = "x86_64-linux"; 17 - 18 - nixpkgs.overlays = [ 19 - # (final: prev: { 20 - # abseil-cpp = nixpkgs.legacyPackages.${final.system}.abseil-cpp; 21 - # #bash = prev.bash.override { stdenv = nixpkgs.legacyPackages.${final.system}.stdenv; }; 22 - # }) 23 - ]; 24 - 25 - services.lvm.boot.thin.enable = true; 26 - boot.kernelPackages = pkgs.linuxPackages_5_15; # TODO: Figure why I have this and nothing newer? 27 - services.lvm.dmeventd.enable = true; 28 - boot.blacklistedKernelModules = ["rtl8xxxu"]; 29 - boot.extraModulePackages = with config.boot.kernelPackages; [ 30 - rtl8192eu 31 - ]; 32 - 33 - boot.kernel.sysctl = { 34 - "vm.swappiness" = 75; 35 - }; 36 - 37 - # The global useDHCP flag is deprecated, therefore explicitly set to false here. 38 - # Per-interface useDHCP will be mandatory in the future, so this generated config 39 - # replicates the default behaviour. 40 - networking.networkmanager.enable = true; 41 - networking.networkmanager.unmanaged = [ 42 - "mac:0c:60:76:3f:c1:31" 43 - ]; 44 - networking.enableB43Firmware = true; 45 - 46 - networking.useDHCP = false; 47 - networking.interfaces.enp0s25.useDHCP = false; 48 - networking.interfaces.wlan0.useDHCP = false; 49 - networking.hostId = "62a007d6"; # required by ZFS 50 - 51 - # Configure network proxy if necessary 52 - # networking.proxy.default = "http://user:password@proxy:port/"; 53 - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; 54 - 55 - # Select internationalisation properties. 56 - i18n.defaultLocale = "en_US.UTF-8"; 57 - console = { 58 - font = "Lat2-Terminus16"; 59 - keyMap = "de"; 60 - }; 61 - 62 - # Set your time zone. 63 - time.timeZone = "Europe/Berlin"; 64 - 65 - # List packages installed in system profile. To search, run: 66 - # $ nix search wget 67 - environment.systemPackages = with pkgs; [ 68 - unison # Sadly required on the host for unison copy to work :( 69 - ]; 70 - 71 - # Some programs need SUID wrappers, can be configured further or are 72 - # started in user sessions. 73 - programs.gnupg.agent = { 74 - enable = true; 75 - enableSSHSupport = true; 76 - }; 77 - programs.zsh.enable = true; 78 - 79 - # List services that you want to enable: 80 - 81 - # Enable the OpenSSH daemon. 82 - services.openssh.enable = true; 83 - 84 - # Open ports in the firewall. 85 - networking.firewall.allowedTCPPorts = [9002]; 86 - # networking.firewall.allowedUDPPorts = [ ... ]; 87 - # Or disable the firewall altogether. 88 - # networking.firewall.enable = false; 89 - networking.firewall.trustedInterfaces = [ 90 - "ztrta4jrxj" 91 - ]; 92 - 93 - # Enable CUPS to print documents. 94 - # services.printing.enable = true; 95 - 96 - # Enable sound. 97 - sound.enable = true; 98 - hardware.pulseaudio.enable = true; 99 - 100 - # Enable the X11 windowing system. 101 - services.xserver.enable = true; 102 - services.xserver.layout = "de"; 103 - # services.xserver.xkbOptions = "eurosign:e"; 104 - 105 - # Enable touchpad support. 106 - services.xserver.libinput.enable = true; 107 - 108 - # Enable the KDE Desktop Environment. 109 - services.xserver.displayManager.lightdm.enable = true; 110 - services.xserver.desktopManager.plasma5.enable = false; 111 - services.xserver.windowManager.awesome.enable = true; 112 - 113 - virtualisation.docker.enable = false; 114 - 115 - # Define a user account. Don't forget to set a password with โ€˜passwdโ€™. 116 - users.users = { 117 - nmelzer = { 118 - isNormalUser = true; 119 - shell = pkgs.zsh; 120 - extraGroups = ["wheel" "networkmanager"]; 121 - }; 122 - 123 - aroemer = { 124 - isNormalUser = true; 125 - }; 126 - 127 - proemer = { 128 - isNormalUser = true; 129 - }; 130 - }; 131 - 132 - services.prometheus = { 133 - exporters = { 134 - node = { 135 - enable = true; 136 - enabledCollectors = ["systemd"]; 137 - port = 9002; 138 - }; 139 - }; 140 - }; 141 - 142 - # This value determines the NixOS release with which your system is to be 143 - # compatible, in order to avoid breaking some software such as database 144 - # servers. You should change this only after NixOS release notes say you 145 - # should. 146 - system.stateVersion = "19.09"; # Did you read the comment? 147 - 148 - security.sudo.extraRules = [ 149 - { 150 - commands = [ 151 - { 152 - command = "/run/current-system/sw/bin/nixos-rebuild"; 153 - options = ["NOPASSWD"]; 154 - } 155 - ]; 156 - groups = ["wheel"]; 157 - } 158 - ]; 159 - }
···
+1 -8
nixos/configurations/hardware/enceladeus.nix
··· 1 # Do not modify this file! It was generated by โ€˜nixos-generate-configโ€™ 2 # and may be overwritten by future invocations. Please make changes 3 # to /etc/nixos/configuration.nix instead. 4 - { 5 - config, 6 - lib, 7 - pkgs, 8 - ... 9 - }: { 10 - imports = []; 11 - 12 boot.initrd.availableKernelModules = ["uhci_hcd" "ehci_pci" "ahci" "firewire_ohci" "usbhid" "usb_storage" "sd_mod" "sr_mod" "sdhci_pci"]; 13 boot.initrd.kernelModules = ["dm-snapshot"]; 14 boot.kernelModules = ["kvm-intel" "wl"];
··· 1 # Do not modify this file! It was generated by โ€˜nixos-generate-configโ€™ 2 # and may be overwritten by future invocations. Please make changes 3 # to /etc/nixos/configuration.nix instead. 4 + {lib, ...}: { 5 boot.initrd.availableKernelModules = ["uhci_hcd" "ehci_pci" "ahci" "firewire_ohci" "usbhid" "usb_storage" "sd_mod" "sr_mod" "sdhci_pci"]; 6 boot.initrd.kernelModules = ["dm-snapshot"]; 7 boot.kernelModules = ["kvm-intel" "wl"];
-2
nixos/configurations/hardware/hyperion.nix
··· 2 # and may be overwritten by future invocations. Please make changes 3 # to /etc/nixos/configuration.nix instead. 4 { 5 - config, 6 lib, 7 - pkgs, 8 modulesPath, 9 ... 10 }: {
··· 2 # and may be overwritten by future invocations. Please make changes 3 # to /etc/nixos/configuration.nix instead. 4 { 5 lib, 6 modulesPath, 7 ... 8 }: {
+55
nixos/configurations/hardware/janus.nix
···
··· 1 + # Do not modify this file! It was generated by โ€˜nixos-generate-configโ€™ 2 + # and may be overwritten by future invocations. Please make changes 3 + # to /etc/nixos/configuration.nix instead. 4 + { 5 + config, 6 + lib, 7 + pkgs, 8 + modulesPath, 9 + ... 10 + }: { 11 + imports = [ 12 + (modulesPath + "/installer/scan/not-detected.nix") 13 + ]; 14 + 15 + boot.initrd.availableKernelModules = ["xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" "sdhci_pci"]; 16 + boot.initrd.kernelModules = ["dm-snapshot"]; 17 + boot.initrd.luks.devices.cryptroot.device = "/dev/disk/by-partlabel/nixoscrypt"; 18 + boot.kernelModules = ["kvm-intel"]; 19 + boot.extraModulePackages = []; 20 + 21 + fileSystems."/" = { 22 + device = "/dev/mainpool/vdo-root"; 23 + fsType = "xfs"; 24 + }; 25 + 26 + fileSystems."/boot" = { 27 + device = "/dev/nvme0n1p1"; 28 + fsType = "vfat"; 29 + }; 30 + 31 + fileSystems."/nix" = { 32 + device = "/dev/mainpool/vdo-nix"; 33 + fsType = "xfs"; 34 + }; 35 + 36 + fileSystems."/home" = { 37 + device = "/dev/mainpool/vdo-home"; 38 + fsType = "xfs"; 39 + }; 40 + 41 + swapDevices = []; 42 + 43 + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 44 + # (the default) this is the recommended approach. When using systemd-networkd it's 45 + # still possible to use this option, but it's recommended to use it in conjunction 46 + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. 47 + networking.useDHCP = lib.mkDefault true; 48 + # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; 49 + # networking.interfaces.enp56s0u1u1.useDHCP = lib.mkDefault true; 50 + # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; 51 + 52 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 53 + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; 54 + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 55 + }
+8 -3
nixos/configurations/hardware/mimas.nix
··· 2 # and may be overwritten by future invocations. Please make changes 3 # to /etc/nixos/configuration.nix instead. 4 { 5 - config, 6 lib, 7 pkgs, 8 ... ··· 14 boot.kernelModules = ["kvm-intel"]; 15 boot.kernelParams = ["intel_pstate=active"]; 16 boot.extraModulePackages = []; 17 - boot.supportedFilesystems = ["ntfs" "exfat" "avfs"]; 18 19 hardware.cpu.intel.updateMicrocode = true; 20 hardware.enableRedistributableFirmware = true; ··· 76 options = ["nofail"]; 77 }; 78 79 fileSystems."/boot" = { 80 device = "/dev/disk/by-uuid/7000-3A85"; 81 fsType = "vfat"; ··· 91 nix.settings.max-jobs = lib.mkDefault 4; 92 powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; 93 94 - hardware.opengl.extraPackages = with pkgs; [ 95 vaapiIntel 96 vaapiVdpau 97 libvdpau-va-gl
··· 2 # and may be overwritten by future invocations. Please make changes 3 # to /etc/nixos/configuration.nix instead. 4 { 5 lib, 6 pkgs, 7 ... ··· 13 boot.kernelModules = ["kvm-intel"]; 14 boot.kernelParams = ["intel_pstate=active"]; 15 boot.extraModulePackages = []; 16 + boot.supportedFilesystems = ["ntfs" "exfat" "avfs" "xfs"]; 17 18 hardware.cpu.intel.updateMicrocode = true; 19 hardware.enableRedistributableFirmware = true; ··· 75 options = ["nofail"]; 76 }; 77 78 + fileSystems."/var/lib/actual" = { 79 + device = "/dev/pool/actual"; 80 + fsType = "xfs"; 81 + options = ["nofail"]; 82 + }; 83 + 84 fileSystems."/boot" = { 85 device = "/dev/disk/by-uuid/7000-3A85"; 86 fsType = "vfat"; ··· 96 nix.settings.max-jobs = lib.mkDefault 4; 97 powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; 98 99 + hardware.graphics.extraPackages = with pkgs; [ 100 vaapiIntel 101 vaapiVdpau 102 libvdpau-va-gl
-51
nixos/configurations/hyperion.nix
··· 1 - _: {pkgs, ...}: { 2 - nix.allowedUnfree = ["zerotierone"]; 3 - 4 - networking.hostName = "hyperion"; 5 - networking.networkmanager.enable = true; 6 - 7 - time.timeZone = "Europe/Berlin"; 8 - 9 - i18n.defaultLocale = "en_US.UTF-8"; 10 - 11 - services.xserver.enable = true; 12 - 13 - # Enable the LXQT Desktop Environment. 14 - services.xserver.displayManager.lightdm.enable = true; 15 - services.xserver.desktopManager.lxqt.enable = true; 16 - services.xserver.desktopManager.plasma5.enable = true; 17 - services.xserver.desktopManager.enlightenment.enable = true; 18 - 19 - services.qemuGuest.enable = true; 20 - services.spice-vdagentd.enable = true; 21 - 22 - services.openssh.enable = true; 23 - 24 - services.acpid.enable = true; 25 - 26 - # Configure keymap in X11 27 - services.xserver = { 28 - layout = "de"; 29 - xkbVariant = ""; 30 - }; 31 - 32 - # Configure console keymap 33 - console.keyMap = "de"; 34 - 35 - services.printing.enable = true; 36 - 37 - programs.zsh.enable = true; 38 - 39 - users.users.nmelzer = { 40 - isNormalUser = true; 41 - description = "Norbert Melzer"; 42 - extraGroups = ["networkmanager" "wheel"]; 43 - shell = pkgs.zsh; 44 - packages = [ 45 - pkgs.firefox 46 - # thunderbird 47 - ]; 48 - }; 49 - 50 - system.stateVersion = "22.11"; 51 - }
···
+71
nixos/configurations/mimas/gitea.nix
···
··· 1 + { 2 + pkgs, 3 + lib, 4 + config, 5 + ... 6 + }: let 7 + writeNuBin = pkgs.writers.writeNuBin.override {makeBinaryWrapper = pkgs.makeShellWrapper;}; 8 + 9 + find = lib.getExe pkgs.findutils; 10 + git = lib.getExe pkgs.git; 11 + systemd-notify = lib.getExe' pkgs.systemd "systemd-notify"; 12 + 13 + gitea-gc-script = 14 + writeNuBin "gitea-gc" 15 + # nu 16 + '' 17 + use std log 18 + 19 + def main [ 20 + repositories_base_folder: string, 21 + ] { 22 + log info $"Performing garbage collection for all repos in ($repositories_base_folder)" 23 + 24 + let repo_paths = run-external ${find} $repositories_base_folder "-maxdepth" 2 "-name" '*.git' | lines 25 + let repo_count = $repo_paths | length 26 + 27 + run-external ${systemd-notify} "--ready" 28 + 29 + $repo_paths | enumerate | each {|itm| 30 + let repo = $itm.item 31 + let idx = $itm.index 32 + 33 + let short_name = $repo | str substring --grapheme-clusters ($repositories_base_folder + "/" | str length)..-1 34 + 35 + log info $"Starting garbage collection for ($short_name)" 36 + run-external ${systemd-notify} $"--status=($idx + 1)/($repo_count): ($short_name)" 37 + run-external ${git} "-C" $repo gc "--aggressive" "--no-quiet" 38 + log info $"Finished garbage collection for ($short_name)" 39 + } 40 + 41 + run-external ${systemd-notify} "--stopping" 42 + 43 + log info "Overall garbage collection suceeded" 44 + } 45 + ''; 46 + in { 47 + systemd = { 48 + services.gitea-gc = { 49 + description = "Garbage Collect gitea repositories"; 50 + restartIfChanged = false; 51 + environment = { 52 + NU_LOG_LEVEL = "DEBUG"; 53 + }; 54 + serviceConfig = { 55 + CPUAccounting = true; 56 + CPUQuota = "200%"; 57 + CPUWeight = "idle"; 58 + ExecStart = "${lib.getExe gitea-gc-script} /var/lib/gitea/repositories"; 59 + NotifyAccess = "all"; 60 + Type = "notify"; 61 + User = config.services.gitea.user; 62 + }; 63 + }; 64 + 65 + timers.gitea-gc = { 66 + description = "Garbage Collection for gitea repositories - timer"; 67 + wantedBy = ["timers.target"]; 68 + timerConfig.OnCalendar = "Mon 01:00:00"; 69 + }; 70 + }; 71 + }
+2 -2
nixos/configurations/mimas/paperless.nix
··· 1 - {nixpkgs-2211, ...}: {config, ...}: { 2 services.paperless = { 3 enable = true; 4 address = "0.0.0.0"; 5 port = 58080; 6 - extraConfig.PAPERLESS_OCR_LANGUAGE = "deu+eng"; 7 }; 8 9 systemd.services.paperless-consumer.after = ["var-lib-paperless.mount"];
··· 1 + _: {config, ...}: { 2 services.paperless = { 3 enable = true; 4 address = "0.0.0.0"; 5 port = 58080; 6 + settings.PAPERLESS_OCR_LANGUAGE = "deu+eng"; 7 }; 8 9 systemd.services.paperless-consumer.after = ["var-lib-paperless.mount"];
+41 -56
nixos/configurations/mimas/restic.nix
··· 6 }: let 7 resticPort = 9999; 8 9 - inherit (pkgs) writeShellScript proot mount umount restic; 10 11 pools = { 12 gitea = "/var/lib/gitea"; ··· 17 18 extraPathes = [ 19 "/var/lib/nixos" 20 ]; 21 22 - fileFromList = pkgs.writeText "files-from-verbatim" '' 23 - ${lib.concatStringsSep "\n" pathes} 24 - ''; 25 - 26 basePath = "/tmp/backup"; 27 - pathes = extraPathes ++ builtins.attrValues pools; 28 - mounts = lib.flatten (lib.mapAttrsToList (lv: path: ["-b" "${basePath}/${lv}:${path}"]) pools); 29 30 snaps = lib.mapAttrs' (lv: _: lib.nameValuePair "${lv}_snap" "pool/${lv}") pools; 31 lvcreates = lib.concatStringsSep "\n" (lib.mapAttrsToList (name: origin: "lvcreate -s --name ${name} ${origin}") snaps); 32 - lvchanges = lib.concatStringsSep "\n" (lib.mapAttrsToList (name: _: "lvchange -ay -Ky pool/${name}") snaps); 33 mkdirs = lib.concatStringsSep "\n" (lib.mapAttrsToList (lv: _: "mkdir -p ${basePath}/${lv}") pools); 34 mountCmds = lib.concatStringsSep "\n" (lib.mapAttrsToList (lv: _: "mount -o ro /dev/pool/${lv}_snap ${basePath}/${lv}") pools); 35 36 unmountCmds = lib.concatStringsSep "\n" (lib.mapAttrsToList (lv: _: "umount ${basePath}/${lv}") pools); 37 - lvunchanges = lib.concatStringsSep "\n" (lib.mapAttrsToList (name: _: "lvchange -an pool/${name}") snaps); 38 - lvremoves = lib.concatStringsSep "\n" (lib.mapAttrsToList (name: origin: "lvremove pool/${name}") snaps); 39 40 rest_repo = "rest:https://restic.mimas.internal.nobbz.dev/mimas"; 41 - gdrv_repo = "/home/nmelzer/timmelzer@gmail.com/restic_repos/mimas"; 42 - btwo_repo = "b2:nobbz-restic-services"; 43 pass = config.sops.secrets.restic.path; 44 45 - script = writeShellScript "restic-services-backup" '' 46 - set -ex 47 48 - # Create the snapshots 49 ${lvcreates} 50 - ${lvchanges} 51 ${mkdirs} 52 ${mountCmds} 53 54 # TODO: Make the latter from snapshots as well! 55 - proot ${lib.escapeShellArgs mounts} restic --tag services -vv backup --files-from-verbatim ${fileFromList} 56 57 ${unmountCmds} 58 - ${lvunchanges} 59 ${lvremoves} 60 61 rm -rfv ${basePath} ··· 93 }; 94 95 systemd.services.restic-system-snapshot-backup = { 96 path = [proot restic mount umount config.services.lvm.package]; 97 - script = "${script}"; 98 serviceConfig.LoadCredential = ["pass:${pass}"]; 99 environment = { 100 RESTIC_REPOSITORY = rest_repo; ··· 103 }; 104 serviceConfig = { 105 Type = "oneshot"; 106 - }; 107 - }; 108 - 109 - systemd.timers.restic-system-snapshot-sync-and-prune = { 110 - wantedBy = ["timers.target"]; 111 - timerConfig.OnCalendar = "daily"; 112 - }; 113 - 114 - systemd.services.restic-system-snapshot-sync-and-prune = { 115 - path = [restic]; 116 - after = ["run-secrets.d.mount"]; 117 - serviceConfig.Type = "oneshot"; 118 - serviceConfig.LoadCredential = [ 119 - "b2:${config.sops.secrets.backblaze.path}" 120 - "pass:${pass}" 121 - ]; 122 - script = '' 123 - eval $(cat "$CREDENTIALS_DIRECTORY/b2") 124 - 125 - restic copy --repo ${rest_repo} --repo2 ${gdrv_repo} -vvv 126 - restic copy --repo ${rest_repo} --repo2 ${btwo_repo} -vvv 127 - 128 - restic forget --repo ${rest_repo} --keep-hourly 12 --keep-daily 4 --keep-weekly 3 --keep-monthly 7 --keep-yearly 10 129 - restic forget --repo ${gdrv_repo} --keep-daily 30 --keep-weekly 4 --keep-monthly 12 --keep-yearly 20 130 - restic forget --repo ${btwo_repo} --keep-daily 30 --keep-weekly 4 --keep-monthly 12 --keep-yearly 20 131 - 132 - restic prune --repo ${rest_repo} --max-unused 0 133 - restic prune --repo ${gdrv_repo} --max-unused 0 134 - restic prune --repo ${btwo_repo} 135 - 136 - chown -Rv nmelzer:users /home/nmelzer/timmelzer@gmail.com/restic_repos 137 - ''; 138 - environment = { 139 - RESTIC_PASSWORD_FILE = "%d/pass"; 140 - RESTIC_PASSWORD_FILE2 = "%d/pass"; 141 - RESTIC_COMPRESSION = "max"; 142 - XDG_CACHE_HOME = "%C"; 143 }; 144 }; 145 }
··· 6 }: let 7 resticPort = 9999; 8 9 + inherit (pkgs) proot mount umount restic; 10 11 pools = { 12 gitea = "/var/lib/gitea"; ··· 17 18 extraPathes = [ 19 "/var/lib/nixos" 20 + "/var/lib/redis-paperless" 21 ]; 22 23 basePath = "/tmp/backup"; 24 + mounts = lib.flatten ( 25 + (lib.mapAttrsToList (lv: path: ["-b" "${basePath}/${lv}:${path}"]) pools) 26 + ++ (builtins.map (path: ["-b" "${path}:${path}"]) extraPathes) 27 + ); 28 29 snaps = lib.mapAttrs' (lv: _: lib.nameValuePair "${lv}_snap" "pool/${lv}") pools; 30 lvcreates = lib.concatStringsSep "\n" (lib.mapAttrsToList (name: origin: "lvcreate -s --name ${name} ${origin}") snaps); 31 + lvactivates = lib.concatStringsSep "\n" (lib.mapAttrsToList (name: _: "lvchange -ay -Ky pool/${name}") snaps); 32 mkdirs = lib.concatStringsSep "\n" (lib.mapAttrsToList (lv: _: "mkdir -p ${basePath}/${lv}") pools); 33 mountCmds = lib.concatStringsSep "\n" (lib.mapAttrsToList (lv: _: "mount -o ro /dev/pool/${lv}_snap ${basePath}/${lv}") pools); 34 35 unmountCmds = lib.concatStringsSep "\n" (lib.mapAttrsToList (lv: _: "umount ${basePath}/${lv}") pools); 36 + uncheckedUnmountCmds = lib.concatStringsSep "\n" (lib.mapAttrsToList (lv: _: "umount ${basePath}/${lv} || true") pools); 37 + lvdeactivates = lib.concatStringsSep "\n" (lib.mapAttrsToList (name: _: "lvs | grep -E '${name}\\s+.*a' && lvchange -an pool/${name}") snaps); 38 + lvremoves = lib.concatStringsSep "\n" (lib.mapAttrsToList (name: _: "lvs | grep -E '${name}' && lvremove pool/${name}") snaps); 39 40 rest_repo = "rest:https://restic.mimas.internal.nobbz.dev/mimas"; 41 pass = config.sops.secrets.restic.path; 42 43 + preStart = '' 44 + set -x 45 + 46 + ${uncheckedUnmountCmds} 47 48 + ${lvdeactivates} 49 + ${lvremoves} 50 + 51 ${lvcreates} 52 + ${lvactivates} 53 + 54 ${mkdirs} 55 + 56 ${mountCmds} 57 58 + /run/wrappers/bin/sudo -u vaultwarden ${pkgs.sqlite}/bin/sqlite3 /var/lib/bitwarden_rs/db.sqlite3 .dump > /var/lib/bitwarden_rs/dump.sql 59 + ''; 60 + 61 + script = '' 62 + set -x 63 + 64 # TODO: Make the latter from snapshots as well! 65 + proot ${lib.escapeShellArgs mounts} \ 66 + -b /var/lib/bitwarden_rs:/var/lib/bitwarden_rs \ 67 + -b /nix:/nix \ 68 + -b ''${CREDENTIALS_DIRECTORY}:''${CREDENTIALS_DIRECTORY} \ 69 + -b /etc:/etc \ 70 + -b /tmp:/tmp \ 71 + -r /var/empty \ 72 + restic --tag services -vv backup /var/lib 73 + ''; 74 + 75 + postStart = '' 76 + set -x 77 78 ${unmountCmds} 79 + 80 + ${lvdeactivates} 81 ${lvremoves} 82 83 rm -rfv ${basePath} ··· 115 }; 116 117 systemd.services.restic-system-snapshot-backup = { 118 + inherit preStart script postStart; 119 path = [proot restic mount umount config.services.lvm.package]; 120 serviceConfig.LoadCredential = ["pass:${pass}"]; 121 environment = { 122 RESTIC_REPOSITORY = rest_repo; ··· 125 }; 126 serviceConfig = { 127 Type = "oneshot"; 128 }; 129 }; 130 }
+212
nixos/configurations/mimas/rustic-timers.nix
···
··· 1 + _: { 2 + config, 3 + pkgs, 4 + lib, 5 + ... 6 + }: let 7 + profile_name = template: lib.removeSuffix ".toml" config.sops.templates."${template}".path; 8 + 9 + environment = { 10 + RUSTIC_NO_PROGRESS = "true"; 11 + RUSTIC_CACHE_DIR = "%T/rustic"; 12 + }; 13 + 14 + mimas_template = 15 + # toml 16 + '' 17 + [repository] 18 + repository = "rest:https://restic.mimas.internal.nobbz.dev/mimas" 19 + password-file = "${config.sops.secrets.rustic.path}" 20 + 21 + [copy] 22 + targets = ["${profile_name "mimas_hetzner.toml"}"] 23 + ''; 24 + mimas_hetzner_template = 25 + # toml 26 + '' 27 + [repository] 28 + repository = "opendal:sftp" 29 + password-file = "${config.sops.secrets.rustic.path}" 30 + 31 + [repository.options] 32 + endpoint = "ssh://${config.sops.placeholder.rustic-user}.your-storagebox.de:23" 33 + user = "${config.sops.placeholder.rustic-user}" 34 + key = "/root/.ssh/id_ed25519" 35 + root = "/home/mimas" 36 + ''; 37 + 38 + nobbz_template = 39 + # toml 40 + '' 41 + [repository] 42 + repository = "rest:https://restic.mimas.internal.nobbz.dev/nobbz" 43 + password-file = "${config.sops.secrets.rustic.path}" 44 + 45 + [copy] 46 + targets = ["${profile_name "nobbz_hetzner.toml"}"] 47 + ''; 48 + 49 + nobbz_hetzner_template = 50 + # toml 51 + '' 52 + [repository] 53 + repository = "opendal:sftp" 54 + password-file = "${config.sops.secrets.rustic.path}" 55 + 56 + [repository.options] 57 + endpoint = "ssh://${config.sops.placeholder.rustic-user}.your-storagebox.de:23" 58 + user = "${config.sops.placeholder.rustic-user}" 59 + key = "/root/.ssh/id_ed25519" 60 + root = "/home/nobbz" 61 + ''; 62 + 63 + schedule = { 64 + rustic-mimas-clean = "*-*-* 01:00:00"; 65 + rustic-nobbz-clean = "*-*-* 01:30:00"; 66 + rustic-mimas-hetzner-clean = "*-*-* 02:00:00"; 67 + rustic-nobbz-hetzner-clean = "*-*-* 03:00:00"; 68 + }; 69 + 70 + mkTimer = name: calendar: { 71 + "${name}" = { 72 + wantedBy = ["timers.target"]; 73 + timerConfig.OnCalendar = calendar; 74 + }; 75 + }; 76 + 77 + notify = lib.getExe' pkgs.systemd "systemd-notify"; 78 + in { 79 + sops.secrets.rustic = {}; 80 + sops.secrets.rustic-user = {}; 81 + 82 + sops.templates."mimas.toml".content = mimas_template; 83 + sops.templates."mimas_hetzner.toml".content = mimas_hetzner_template; 84 + sops.templates."nobbz.toml".content = nobbz_template; 85 + sops.templates."nobbz_hetzner.toml".content = nobbz_hetzner_template; 86 + 87 + systemd.timers = lib.pipe schedule [ 88 + (lib.mapAttrsToList mkTimer) 89 + lib.mkMerge 90 + ]; 91 + 92 + systemd.services = { 93 + rustic-mimas-clean = { 94 + path = [pkgs.rustic pkgs.openssh]; 95 + inherit environment; 96 + serviceConfig = { 97 + NotifyAccess = "all"; 98 + Type = "notify"; 99 + }; 100 + script = '' 101 + ${notify} --ready 102 + ${notify} --status=forget 103 + rustic forget -P ${profile_name "mimas.toml"} \ 104 + --keep-last 4 \ 105 + --keep-within-hourly 1d \ 106 + --keep-within-daily 5d \ 107 + --keep-within-weekly 35d \ 108 + --keep-within-monthly 100d \ 109 + --keep-within-yearly 2y 110 + 111 + ${notify} --status=prune 112 + rustic prune -P ${profile_name "mimas.toml"} \ 113 + --max-unused=0B \ 114 + --keep-delete=12h \ 115 + --max-repack=50GiB 116 + 117 + ${notify} --status=copy 118 + rustic copy -P ${profile_name "mimas.toml"} 119 + 120 + ${notify} --stopping --status="" 121 + ''; 122 + }; 123 + 124 + rustic-nobbz-clean = { 125 + path = [pkgs.rustic pkgs.openssh]; 126 + inherit environment; 127 + serviceConfig = { 128 + NotifyAccess = "all"; 129 + Type = "notify"; 130 + }; 131 + script = '' 132 + ${notify} --ready 133 + ${notify} --status=forget 134 + rustic forget -P ${profile_name "nobbz.toml"} \ 135 + --filter-tags home \ 136 + --keep-last 4 \ 137 + --keep-within-hourly 1d \ 138 + --keep-within-daily 5d \ 139 + --keep-within-weekly 35d \ 140 + --keep-within-monthly 100d \ 141 + --keep-within-yearly 2y 142 + 143 + ${notify} --status=prune 144 + rustic prune -P ${profile_name "nobbz.toml"} \ 145 + --max-unused=0B \ 146 + --keep-delete=12h \ 147 + --max-repack=50GiB 148 + 149 + ${notify} --status=copy 150 + rustic copy -P ${profile_name "nobbz.toml"} 151 + 152 + ${notify} --stopping --status="" 153 + ''; 154 + }; 155 + 156 + rustic-nobbz-hetzner-clean = { 157 + path = [pkgs.rustic pkgs.openssh]; 158 + inherit environment; 159 + serviceConfig = { 160 + NotifyAccess = "all"; 161 + Type = "notify"; 162 + }; 163 + script = '' 164 + ${notify} --ready 165 + ${notify} --status=forget 166 + rustic forget -P ${profile_name "nobbz_hetzner.toml"} \ 167 + --keep-last 1 \ 168 + --keep-within-hourly 2h \ 169 + --keep-within-daily 10d \ 170 + --keep-within-weekly 65d \ 171 + --keep-within-monthly 190d \ 172 + --keep-within-yearly 5y 173 + 174 + ${notify} --status=prune 175 + rustic prune -P ${profile_name "nobbz_hetzner.toml"} \ 176 + --max-unused 0B \ 177 + --max-repack 20GiB \ 178 + --keep-delete 11h 179 + 180 + ${notify} --stopping --status="" 181 + ''; 182 + }; 183 + 184 + rustic-mimas-hetzner-clean = { 185 + path = [pkgs.rustic pkgs.openssh]; 186 + inherit environment; 187 + serviceConfig = { 188 + NotifyAccess = "all"; 189 + Type = "notify"; 190 + }; 191 + script = '' 192 + ${notify} --ready 193 + ${notify} --status=forget 194 + rustic forget -P ${profile_name "mimas_hetzner.toml"} \ 195 + --keep-last 1 \ 196 + --keep-within-hourly 2h \ 197 + --keep-within-daily 10d \ 198 + --keep-within-weekly 65d \ 199 + --keep-within-monthly 190d \ 200 + --keep-within-yearly 5y 201 + 202 + ${notify} --status=prune 203 + rustic prune -P ${profile_name "mimas_hetzner.toml"} \ 204 + --max-unused 0B \ 205 + --max-repack 20GiB \ 206 + --keep-delete 11h 207 + 208 + ${notify} --stopping --status="" 209 + ''; 210 + }; 211 + }; 212 + }
+34
nixos/configurations/mimas/vaultwarden.nix
···
··· 1 + _: {config, ...}: let 2 + host = "passwords.mimas.internal.nobbz.dev"; 3 + wardenPort = 10000; 4 + in { 5 + sops.secrets.warden = {}; 6 + 7 + services.vaultwarden = { 8 + enable = true; 9 + environmentFile = config.sops.secrets.warden.path; 10 + config = { 11 + DOMAIN = "https://${host}"; 12 + DATABASE_MAX_CONNS = "5"; 13 + 14 + # LOG_LEVEL = "debug"; 15 + 16 + ROCKET_ADDRESS = "127.0.0.1"; 17 + ROCKET_PORT = "${toString wardenPort}"; 18 + ROCKET_WORKERS = "5"; 19 + }; 20 + }; 21 + 22 + services.traefik.dynamicConfigOptions.http.routers.warden = { 23 + entryPoints = ["https" "http"]; 24 + rule = "Host(`${host}`)"; 25 + service = "vaultwarden"; 26 + tls.domains = [{main = "*.mimas.internal.nobbz.dev";}]; 27 + tls.certResolver = "mimasWildcard"; 28 + }; 29 + 30 + services.traefik.dynamicConfigOptions.http.services.vaultwarden.loadBalancer = { 31 + passHostHeader = false; 32 + servers = [{url = "http://127.0.0.1:${toString wardenPort}";}]; 33 + }; 34 + }
+54 -46
nixos/configurations/mimas.nix
··· 1 # Edit this configuration file to define what should be installed on 2 # your system. Help is available in the configuration.nix(5) man page 3 # and in the NixOS manual (accessible by running โ€˜nixos-helpโ€™). 4 - { 5 - self, 6 - unstable, 7 - nixpkgs-2211, 8 - ... 9 - } @ inputs: { 10 config, 11 pkgs, 12 lib, 13 ... 14 }: let 15 - upkgs = unstable.legacyPackages.x86_64-linux; 16 - steamPackages = ["steam" "steam-run" "steam-original" "steam-runtime"]; 17 - printerPackages = ["hplip" "samsung-UnifiedLinuxDriver"]; 18 in { 19 imports = [ 20 (import ./mimas/restic.nix inputs) 21 - (import ./mimas/paperless.nix inputs) 22 ]; 23 24 sops.age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"]; 25 sops.defaultSopsFile = "${self}/secrets/mimas/default.yaml"; 26 27 sops.secrets.restic = {}; 28 - sops.secrets.backblaze = {}; 29 30 - nix.allowedUnfree = ["zerotierone"] ++ printerPackages ++ steamPackages; 31 nix.settings.experimental-features = ["ca-derivations" "impure-derivations"]; 32 33 security.chromiumSuidSandbox.enable = true; 34 ··· 99 100 # Enable CUPS to print documents. 101 services.printing.enable = true; 102 - services.printing.drivers = [pkgs.hplipWithPlugin pkgs.samsung-unified-linux-driver]; 103 104 services.ratbagd.enable = true; 105 106 # services.hydra = { 107 # enable = true; ··· 114 # }; 115 # networking.firewall.allowedTCPPorts = [ 3000 ]; 116 117 - # Enable sound. 118 - sound.enable = true; 119 - hardware.pulseaudio = { 120 - enable = true; 121 - package = pkgs.pulseaudioFull; 122 - }; 123 hardware.bluetooth.enable = true; 124 125 # Enable the X11 windowing system. 126 services.xserver.enable = true; 127 - services.xserver.layout = "de"; 128 - # services.xserver.xkbOptions = "eurosign:e"; 129 130 # Enable touchpad support. 131 # services.xserver.libinput.enable = true; 132 133 # Enable the KDE Desktop Environment. 134 - services.xserver.displayManager.sddm.enable = true; 135 services.xserver.desktopManager.plasma5.enable = true; 136 services.xserver.windowManager.awesome.enable = true; 137 ··· 146 147 programs = { 148 steam.enable = true; 149 zsh.enable = true; 150 zsh.enableCompletion = false; 151 }; 152 153 - hardware.opengl.driSupport32Bit = true; 154 - hardware.pulseaudio.support32Bit = true; 155 - 156 - hardware.opengl.enable = true; 157 - hardware.opengl.extraPackages = [pkgs.vaapiIntel pkgs.beignet]; 158 159 services.gitea = { 160 enable = true; 161 - httpAddress = "127.0.0.1"; 162 - domain = "gitea.mimas.internal.nobbz.dev"; 163 settings.server.ROOT_URL = lib.mkForce "https://gitea.mimas.internal.nobbz.dev/"; 164 settings."git.timeout".DEFAULT = 3600; # 1 hour 165 settings."git.timeout".MIGRATE = 3600; # 1 hour 166 settings."git.timeout".MIRROR = 3600; # 1 hour 167 settings."git.timeout".CLONE = 3600; # 1 hour 168 settings."git.timeout".PULL = 3600; # 1 hour 169 - settings."git.timeout".GC = 3600; 170 - }; # 1 hour 171 systemd.services.gitea.after = ["var-lib-gitea.mount"]; 172 173 virtualisation = { ··· 175 enable = true; 176 # storageDriver = "zfs"; 177 # extraOptions = "--storage-opt zfs.fsname=rpool/local/docker"; 178 - package = upkgs.docker; 179 extraOptions = "--dns 1.1.1.1"; 180 }; 181 ··· 220 }; 221 }; 222 223 - security.sudo.extraRules = [ 224 - { 225 - commands = [ 226 - { 227 - command = "/run/current-system/sw/bin/nixos-rebuild"; 228 - options = ["NOPASSWD"]; 229 - } 230 - ]; 231 - groups = ["wheel"]; 232 - } 233 - ]; 234 235 # services.wakeonlan.interfaces = [ 236 # { ··· 259 260 hardware.keyboard.zsa.enable = true; 261 hardware.sane.enable = true; 262 - hardware.sane.extraBackends = [pkgs.hplipWithPlugin]; 263 264 services.traefik.enable = true; 265 - systemd.services.traefik.serviceConfig.EnvironmentFile = "/etc/traefik/env"; 266 services.traefik.staticConfigOptions = { 267 log.level = "DEBUG"; 268 ··· 344 fritz.loadBalancer.servers = [{url = "http://fritz.box";}]; 345 346 gitea.loadBalancer.passHostHeader = true; 347 - gitea.loadBalancer.servers = [{url = "http://localhost:${toString config.services.gitea.httpPort}";}]; 348 349 grafana.loadBalancer.passHostHeader = true; 350 grafana.loadBalancer.servers = [{url = "http://localhost:${toString config.services.grafana.settings.server.http_port}";}]; ··· 395 } 396 ]; 397 }; 398 399 # This value determines the NixOS release with which your system is to be 400 # compatible, in order to avoid breaking some software such as database
··· 1 # Edit this configuration file to define what should be installed on 2 # your system. Help is available in the configuration.nix(5) man page 3 # and in the NixOS manual (accessible by running โ€˜nixos-helpโ€™). 4 + {self, ...} @ inputs: { 5 config, 6 pkgs, 7 lib, 8 ... 9 }: let 10 + steamPackages = ["steam" "steam-run" "steam-original" "steam-runtime" "steam-unwrapped"]; 11 in { 12 imports = [ 13 + (import ./mimas/paperless.nix inputs) 14 (import ./mimas/restic.nix inputs) 15 + (import ./mimas/rustic-timers.nix inputs) 16 + (import ./mimas/vaultwarden.nix inputs) 17 + ./mimas/gitea.nix 18 ]; 19 20 + services.tailscale.enable = true; 21 + 22 + security.pam.services.i3lock.enable = true; 23 + security.pam.services.i3lock-color.enable = true; 24 + 25 sops.age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"]; 26 sops.defaultSopsFile = "${self}/secrets/mimas/default.yaml"; 27 28 sops.secrets.restic = {}; 29 + sops.secrets.traefik = {}; 30 31 + nix.allowedUnfree = ["zerotierone"] ++ steamPackages; 32 nix.settings.experimental-features = ["ca-derivations" "impure-derivations"]; 33 + nix.distributedBuilds = true; 34 + # nix.enabledMachines = ["enceladeus"]; 35 36 security.chromiumSuidSandbox.enable = true; 37 ··· 102 103 # Enable CUPS to print documents. 104 services.printing.enable = true; 105 + 106 + services.avahi.enable = true; 107 + services.avahi.nssmdns4 = true; 108 + services.avahi.openFirewall = true; 109 110 services.ratbagd.enable = true; 111 + 112 + programs.partition-manager.enable = true; 113 + # security.polkit.enable = true; 114 115 # services.hydra = { 116 # enable = true; ··· 123 # }; 124 # networking.firewall.allowedTCPPorts = [ 3000 ]; 125 126 + # Enable pulse compat. 127 + services.pipewire.pulse.enable = true; 128 + 129 hardware.bluetooth.enable = true; 130 131 # Enable the X11 windowing system. 132 services.xserver.enable = true; 133 + services.xserver.xkb.layout = "de"; 134 135 # Enable touchpad support. 136 # services.xserver.libinput.enable = true; 137 138 # Enable the KDE Desktop Environment. 139 + services.displayManager.sddm.enable = true; 140 services.xserver.desktopManager.plasma5.enable = true; 141 services.xserver.windowManager.awesome.enable = true; 142 ··· 151 152 programs = { 153 steam.enable = true; 154 + 155 zsh.enable = true; 156 zsh.enableCompletion = false; 157 }; 158 159 + hardware.graphics.enable = true; 160 + hardware.graphics.extraPackages = [pkgs.vaapiIntel]; 161 162 services.gitea = { 163 enable = true; 164 + settings.server.DOMAIN = "gitea.mimas.internal.nobbz.dev"; 165 + settings.server.HTTP_ADDR = "127.0.0.1"; 166 settings.server.ROOT_URL = lib.mkForce "https://gitea.mimas.internal.nobbz.dev/"; 167 settings."git.timeout".DEFAULT = 3600; # 1 hour 168 settings."git.timeout".MIGRATE = 3600; # 1 hour 169 settings."git.timeout".MIRROR = 3600; # 1 hour 170 settings."git.timeout".CLONE = 3600; # 1 hour 171 settings."git.timeout".PULL = 3600; # 1 hour 172 + settings."git.timeout".GC = 3600; # 1 hour 173 + }; 174 systemd.services.gitea.after = ["var-lib-gitea.mount"]; 175 176 virtualisation = { ··· 178 enable = true; 179 # storageDriver = "zfs"; 180 # extraOptions = "--storage-opt zfs.fsname=rpool/local/docker"; 181 + package = pkgs.docker; 182 extraOptions = "--dns 1.1.1.1"; 183 }; 184 ··· 223 }; 224 }; 225 226 + security.sudo.extraConfig = "Defaults passwd_timeout=0"; 227 228 # services.wakeonlan.interfaces = [ 229 # { ··· 252 253 hardware.keyboard.zsa.enable = true; 254 hardware.sane.enable = true; 255 256 services.traefik.enable = true; 257 + systemd.services.traefik.serviceConfig.EnvironmentFile = [config.sops.secrets.traefik.path]; 258 services.traefik.staticConfigOptions = { 259 log.level = "DEBUG"; 260 ··· 336 fritz.loadBalancer.servers = [{url = "http://fritz.box";}]; 337 338 gitea.loadBalancer.passHostHeader = true; 339 + gitea.loadBalancer.servers = [{url = "http://localhost:${toString config.services.gitea.settings.server.HTTP_PORT}";}]; 340 341 grafana.loadBalancer.passHostHeader = true; 342 grafana.loadBalancer.servers = [{url = "http://localhost:${toString config.services.grafana.settings.server.http_port}";}]; ··· 387 } 388 ]; 389 }; 390 + 391 + nix.buildMachines = let 392 + communityBuilder = name: system: { 393 + hostName = "${name}.nix-community.org"; 394 + inherit system; 395 + sshKey = "/root/.ssh/id_ed25519"; 396 + sshUser = "NobbZ"; 397 + maxJobs = 8; 398 + protocol = "ssh"; 399 + speedFactor = 4; 400 + supportedFeatures = ["nixos-test" "benchmark" "big-parallel" "kvm"]; 401 + }; 402 + in [ 403 + (communityBuilder "build-box" "x86_64-linux") 404 + (communityBuilder "aarch64-build.box" "aarch64-linux") 405 + ]; 406 407 # This value determines the NixOS release with which your system is to be 408 # compatible, in order to avoid breaking some software such as database
+12 -9
nixos/modules/default.nix
··· 1 - inputs: { 2 - cachix = import ./cachix inputs; 3 - flake = import ./flake.nix inputs; 4 - hostnames = import ./hostnames.nix inputs; 5 - kernel = import ./kernel.nix inputs; 6 - moonlander = import ./moonlander.nix inputs; 7 - nix = import ./nix.nix inputs; 8 - switcher = import ./switcher.nix inputs; 9 - zerotier = import ./zerotier.nix inputs; 10 }
··· 1 + { 2 + nobbz.nixosModules = { 3 + cachix = ./cachix; 4 + distributed = ./distributed.nix; 5 + flake = ./flake.nix; 6 + hostnames = ./hostnames.nix; 7 + kernel = ./kernel.nix; 8 + moonlander = ./moonlander.nix; 9 + nix = ./nix.nix; 10 + switcher = ./switcher.nix; 11 + zerotier = ./zerotier.nix; 12 + }; 13 }
+58
nixos/modules/distributed.nix
···
··· 1 + _: { 2 + config, 3 + lib, 4 + ... 5 + }: let 6 + machines = { 7 + # Please try to keep the definitions alphabetically sorted 8 + enceladeus = { 9 + systems = ["i686-linux" "x86_64-linux"]; 10 + supportedFeatures = []; 11 + sshUser = "root"; 12 + sshKey = "/home/nmelzer/.ssh/id_rsa"; # TODO: sopsify 13 + speedFactor = 1; 14 + protocol = "ssh-ng"; 15 + maxJobs = 2; 16 + hostName = "enceladeus"; 17 + }; 18 + 19 + mimas = { 20 + systems = ["i686-linux" "aarch64-linux" "x86_64-linux"]; 21 + supportedFeatures = ["kvm" "big-parallel"]; 22 + sshUser = "root"; 23 + sshKey = "/home/nmelzer/.ssh/id_rsa"; # TODO: sopsify 24 + speedFactor = 8; 25 + protocol = "ssh-ng"; 26 + maxJobs = 4; 27 + hostName = "mimas"; 28 + }; 29 + }; 30 + 31 + names = builtins.attrNames machines; 32 + 33 + inherit (lib.types) listOf enum; 34 + inherit (config.nix) enabledMachines distributedBuilds; 35 + inherit (config.networking) hostName; 36 + 37 + selfRemote = builtins.elem hostName enabledMachines; 38 + in { 39 + options.nix = { 40 + enabledMachines = lib.mkOption { 41 + type = listOf (enum names); 42 + default = []; 43 + description = '' 44 + A list of hosts to use for remote builds. 45 + ''; 46 + }; 47 + }; 48 + 49 + config = lib.mkIf distributedBuilds { 50 + assertions = [ 51 + { 52 + assertion = !selfRemote; 53 + message = "You are not allowed to use yourself as a distributed builder"; 54 + } 55 + ]; 56 + nix.buildMachines = builtins.map (name: builtins.getAttr name machines) enabledMachines; 57 + }; 58 + }
+5 -9
nixos/modules/flake.nix
··· 1 { 2 - unstable, 3 - nixpkgs-2211, 4 nix, 5 programsdb, 6 ... 7 }: { ··· 12 }: let 13 base = "/etc/nixpkgs/channels"; 14 nixpkgsPath = "${base}/nixpkgs"; 15 - nixpkgs2211Path = "${base}/nixpkgs2211"; 16 in { 17 options.nix.flakes.enable = lib.mkEnableOption "nix flakes"; 18 ··· 20 programs.command-not-found.dbPath = programsdb.packages.${pkgs.system}.programs-sqlite; 21 22 nix = { 23 - package = lib.mkDefault nix.packages.${pkgs.system}.nix; # pkgs.nixUnstable; 24 settings.experimental-features = ["nix-command" "flakes"]; 25 26 - registry.nixpkgs.flake = unstable; 27 - registry.nixpkgs2211.flake = nixpkgs-2211; 28 29 nixPath = [ 30 "nixpkgs=${nixpkgsPath}" 31 - "nixpkgs2211=${nixpkgs2211Path}" 32 "/nix/var/nix/profiles/per-user/root/channels" 33 ]; 34 }; 35 36 systemd.tmpfiles.rules = [ 37 - "L+ ${nixpkgsPath} - - - - ${unstable}" 38 - "L+ ${nixpkgs2211Path} - - - - ${nixpkgs-2211}" 39 ]; 40 }; 41 }
··· 1 { 2 nix, 3 + nixpkgs, 4 programsdb, 5 ... 6 }: { ··· 11 }: let 12 base = "/etc/nixpkgs/channels"; 13 nixpkgsPath = "${base}/nixpkgs"; 14 in { 15 options.nix.flakes.enable = lib.mkEnableOption "nix flakes"; 16 ··· 18 programs.command-not-found.dbPath = programsdb.packages.${pkgs.system}.programs-sqlite; 19 20 nix = { 21 + package = lib.mkDefault nix.packages.${pkgs.system}.nix-cli; 22 + 23 settings.experimental-features = ["nix-command" "flakes"]; 24 25 + registry.nixpkgs.flake = nixpkgs; 26 27 nixPath = [ 28 "nixpkgs=${nixpkgsPath}" 29 "/nix/var/nix/profiles/per-user/root/channels" 30 ]; 31 }; 32 33 systemd.tmpfiles.rules = [ 34 + "L+ ${nixpkgsPath} - - - - ${nixpkgs}" 35 ]; 36 }; 37 }
+5 -1
nixos/modules/kernel.nix
··· 4 config, 5 ... 6 }: let 7 - zfsUsed = lib.lists.elem "zfs" (config.boot.supportedFilesystems ++ config.boot.initrd.supportedFilesystems); 8 in { 9 boot.kernelPackages = lib.mkDefault ( 10 if zfsUsed
··· 4 config, 5 ... 6 }: let 7 + supportedFilesystems = 8 + if builtins.isList config.boot.supportedFilesystems 9 + then config.boot.supportedFilesystems ++ config.boot.initrd.supportedFilesystems 10 + else builtins.attrNames (lib.filterAttrs (_name: value: value) (config.boot.supportedFilesystems // config.boot.initrd.supportedFilesystems)); 11 + zfsUsed = lib.lists.elem "zfs" supportedFilesystems; 12 in { 13 boot.kernelPackages = lib.mkDefault ( 14 if zfsUsed
+2 -1
nixos/modules/nix.nix
··· 10 in { 11 options.nix = { 12 allowedUnfree = lib.mkOption { 13 - type = lib.types.listOf lib.types.string; 14 default = []; 15 description = '' 16 Allows for unfree packages by their name. ··· 22 (lib.mkIf (allowed != []) {nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) allowed;}) 23 {nix.settings.auto-optimise-store = lib.mkDefault true;} 24 { 25 nix.settings.min-free = lib.mkDefault (5 * gibibyte); 26 nix.settings.max-free = lib.mkDefault (25 * gibibyte); 27 nix.settings.allow-import-from-derivation = lib.mkDefault false;
··· 10 in { 11 options.nix = { 12 allowedUnfree = lib.mkOption { 13 + type = lib.types.listOf lib.types.str; 14 default = []; 15 description = '' 16 Allows for unfree packages by their name. ··· 22 (lib.mkIf (allowed != []) {nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) allowed;}) 23 {nix.settings.auto-optimise-store = lib.mkDefault true;} 24 { 25 + nix.settings.trusted-users = lib.mkDefault ["root" "@wheel"]; 26 nix.settings.min-free = lib.mkDefault (5 * gibibyte); 27 nix.settings.max-free = lib.mkDefault (25 * gibibyte); 28 nix.settings.allow-import-from-derivation = lib.mkDefault false;
+13
nixos/modules/prefer-local.patch
···
··· 1 + diff --git a/src/build-remote/build-remote.cc b/src/build-remote/build-remote.cc 2 + index cfc4baaca..4fbaae4fa 100644 3 + --- a/src/build-remote/build-remote.cc 4 + +++ b/src/build-remote/build-remote.cc 5 + @@ -122,6 +122,8 @@ static int main_build_remote(int argc, char * * argv) 6 + /* It's possible to build this locally right now: */ 7 + bool canBuildLocally = amWilling && couldBuildLocally; 8 + 9 + + if (canBuildLocally) continue; 10 + + 11 + /* Error ignored here, will be caught later */ 12 + mkdir(currentLoad.c_str(), 0777); 13 +
+24 -1
nixos/modules/switcher.nix
··· 1 - {self, ...}: {pkgs, ...}: { 2 environment.systemPackages = [self.packages."${pkgs.system}".switcher]; 3 }
··· 1 + {self, ...}: { 2 + pkgs, 3 + config, 4 + ... 5 + }: { 6 environment.systemPackages = [self.packages."${pkgs.system}".switcher]; 7 + 8 + security.sudo.extraRules = let 9 + storePrefix = "/nix/store/*"; 10 + commandPrefix = "/run/current-system/sw"; 11 + systemName = "nixos-system-${config.networking.hostName}-*"; 12 + nixEnvCmd = "${commandPrefix}/bin/nix-env"; 13 + systemdPath = "${commandPrefix}/bin/systemd-run"; 14 + systemdRunCmd = "${systemdPath} -E LOCALE_ARCHIVE -E NIXOS_INSTALL_BOOTLOADER --collect --no-ask-password --pty --quiet --same-dir --service-type=exec --unit=nixos-rebuild-switch-to-configuration"; 15 + systemdRunEqCmd = "${systemdPath} -E LOCALE_ARCHIVE -E NIXOS_INSTALL_BOOTLOADER= --collect --no-ask-password --pty --quiet --same-dir --service-type=exec --unit=nixos-rebuild-switch-to-configuration"; 16 + options = ["NOPASSWD"]; 17 + mkRule = command: { 18 + commands = [{inherit command options;}]; 19 + groups = ["wheel"]; 20 + }; 21 + in [ 22 + (mkRule "${nixEnvCmd} -p /nix/var/nix/profiles/system --set ${storePrefix}-${systemName}") 23 + (mkRule "${systemdRunCmd} --wait true") 24 + (mkRule "${systemdRunEqCmd} --wait ${storePrefix}-${systemName}/bin/switch-to-configuration switch") 25 + ]; 26 }
+14 -1
nixos/modules/zerotier.nix
··· 1 - _: { 2 services.zerotierone.enable = true; 3 services.zerotierone.joinNetworks = ["8286ac0e4768c8ae"]; 4 }
··· 1 + {nixpkgs-pre-rust, ...}: { 2 + config, 3 + pkgs, 4 + ... 5 + }: { 6 services.zerotierone.enable = true; 7 services.zerotierone.joinNetworks = ["8286ac0e4768c8ae"]; 8 + 9 + services.zerotierone.localConf = {}; 10 + 11 + services.zerotierone.package = 12 + (import nixpkgs-pre-rust { 13 + inherit (config.nixpkgs) config; 14 + inherit (pkgs) system; 15 + }) 16 + .zerotierone; 17 }
+33 -9
npins/sources.json
··· 1 { 2 "pins": { 3 - "konsole": { 4 "type": "Git", 5 "repository": { 6 "type": "GitHub", 7 - "owner": "dracula", 8 - "repo": "konsole" 9 }, 10 "branch": "master", 11 - "revision": "030486c75f12853e9d922b59eb37c25aea4f66f4", 12 - "url": "https://github.com/dracula/konsole/archive/030486c75f12853e9d922b59eb37c25aea4f66f4.tar.gz", 13 - "hash": "123dll2w2mbflgxfgdjg0a3gbr4srnwbyj3zd6wg1hx5miki48xj" 14 }, 15 "zsh-syntax-highlighting": { 16 "type": "Git", ··· 20 "repo": "zsh-syntax-highlighting" 21 }, 22 "branch": "master", 23 - "revision": "b2c910a85ed84cb7e5108e7cb3406a2e825a858f", 24 - "url": "https://github.com/zsh-users/zsh-syntax-highlighting/archive/b2c910a85ed84cb7e5108e7cb3406a2e825a858f.tar.gz", 25 - "hash": "1b4hqdsfvcg87wm8jpvrh1005nzij2wgl0wbcrvgkcjqmxb2874p" 26 } 27 }, 28 "version": 3
··· 1 { 2 "pins": { 3 + "catppuccin-bat": { 4 + "type": "Git", 5 + "repository": { 6 + "type": "GitHub", 7 + "owner": "catppuccin", 8 + "repo": "bat" 9 + }, 10 + "branch": "main", 11 + "revision": "699f60fc8ec434574ca7451b444b880430319941", 12 + "url": "https://github.com/catppuccin/bat/archive/699f60fc8ec434574ca7451b444b880430319941.tar.gz", 13 + "hash": "1lirgwgh2hnz6j60py19bbmhvgaqs7i6wf6702k6n83lgw4aixg9" 14 + }, 15 + "catppuccin-rofi": { 16 "type": "Git", 17 "repository": { 18 "type": "GitHub", 19 + "owner": "catppuccin", 20 + "repo": "rofi" 21 + }, 22 + "branch": "main", 23 + "revision": "c24a212a6b07c2d45f32d01d7f10b4d88ddc9f45", 24 + "url": "https://github.com/catppuccin/rofi/archive/c24a212a6b07c2d45f32d01d7f10b4d88ddc9f45.tar.gz", 25 + "hash": "0236bcwad4cmr1fhnywvcnzf7xdmhhwgrkrq8jdg8livhh1h8rjq" 26 + }, 27 + "fzf-tab": { 28 + "type": "Git", 29 + "repository": { 30 + "type": "GitHub", 31 + "owner": "Aloxaf", 32 + "repo": "fzf-tab" 33 }, 34 "branch": "master", 35 + "revision": "6aced3f35def61c5edf9d790e945e8bb4fe7b305", 36 + "url": "https://github.com/Aloxaf/fzf-tab/archive/6aced3f35def61c5edf9d790e945e8bb4fe7b305.tar.gz", 37 + "hash": "1brljd9744wg8p9v3q39kdys33jb03d27pd0apbg1cz0a2r1wqqi" 38 }, 39 "zsh-syntax-highlighting": { 40 "type": "Git", ··· 44 "repo": "zsh-syntax-highlighting" 45 }, 46 "branch": "master", 47 + "revision": "5eb677bb0fa9a3e60f0eff031dc13926e093df92", 48 + "url": "https://github.com/zsh-users/zsh-syntax-highlighting/archive/5eb677bb0fa9a3e60f0eff031dc13926e093df92.tar.gz", 49 + "hash": "1x33gk7hhp07jqq7yjvrsp2vmdbxmadlv3335ixx29bc6h8106r9" 50 } 51 }, 52 "version": 3
+1
packages/advcp/default.nix
··· 7 stdenv.mkDerivation rec { 8 name = "advcp"; 9 version = "9.1"; 10 11 src = fetchurl { 12 name = "source-${name}-${version}.tar.xz";
··· 7 stdenv.mkDerivation rec { 8 name = "advcp"; 9 version = "9.1"; 10 + strictDeps = true; 11 12 src = fetchurl { 13 name = "source-${name}-${version}.tar.xz";
+28 -52
packages/default.nix
··· 1 - { 2 - self, 3 - emacs, 4 - ... 5 - } @ inputs: system: let 6 - pkgs = inputs.nixpkgs-2211.legacyPackages."${system}"; 7 - upkgs = inputs.unstable.legacyPackages."${system}"; 8 - 9 - epkgs = import inputs.unstable { 10 - inherit system; 11 - overlays = [emacs.overlay]; 12 - }; 13 - nodePkgs = upkgs.callPackages ./nodePackages/override.nix {}; 14 - 15 - nilBasePackage = 16 - if upkgs.stdenv.isLinux 17 - then inputs.nil.packages.${system}.nil 18 - else upkgs.nil; 19 - 20 - rnil-lsp = upkgs.writeShellScriptBin "rnix-lsp" '' 21 - exec ${nilBasePackage}/bin/nil "$@" 22 - ''; 23 - 24 - nil = upkgs.symlinkJoin { 25 - name = "nil"; 26 - paths = [nilBasePackage rnil-lsp]; 27 - }; 28 - # npins = import ../npins; 29 - in 30 - { 31 - inherit nil; 32 - 33 - "advcp" = upkgs.callPackage ./advcp {}; 34 - "dracula/konsole" = upkgs.callPackage ./dracula/konsole {}; 35 - "emacs" = epkgs.emacsUnstable; 36 - "rofi/unicode" = upkgs.callPackage ./rofi-unicode {}; 37 - "zx" = upkgs.nodePackages.zx; 38 - "angular" = nodePkgs."@angular/cli"; 39 40 - "alejandra" = inputs.alejandra.defaultPackage."${system}"; 41 - } 42 - // pkgs.lib.optionalAttrs pkgs.stdenv.isLinux { 43 - "gnucash-de" = upkgs.callPackage ./gnucash-de {}; 44 - "switcher" = inputs.switcher.packages.${system}.switcher; 45 - } 46 - // pkgs.lib.optionalAttrs (system == "x86_64-linux") { 47 - "google-chrome" = 48 - (import inputs.master { 49 - inherit system; 50 - config.allowUnfree = true; 51 - config.google-chrome.enableWideVine = true; 52 }) 53 - .google-chrome; 54 - }
··· 1 + {inputs, ...}: { 2 + perSystem = { 3 + system, 4 + pkgs, 5 + lib, 6 + inputs', 7 + ... 8 + }: let 9 + upkgs = inputs'.nixpkgs.legacyPackages; 10 11 + chromePkgs = import inputs.nixpkgs { 12 + inherit system; 13 + config.allowUnfree = true; 14 + config.google-chrome.enableWideVine = true; 15 + }; 16 + in { 17 + packages = lib.mkMerge [ 18 + { 19 + advcp = upkgs.callPackage ./advcp {}; 20 + "rofi/unicode" = upkgs.callPackage ./rofi-unicode {}; 21 + } 22 + (lib.mkIf pkgs.stdenv.isLinux { 23 + inherit (inputs'.switcher.packages) switcher; 24 }) 25 + (lib.mkIf (system == "x86_64-linux") { 26 + inherit (chromePkgs) google-chrome; 27 + }) 28 + ]; 29 + }; 30 + }
-16
packages/dracula/konsole/default.nix
··· 1 - {stdenv}: let 2 - npins = import ../../../npins; 3 - in 4 - stdenv.mkDerivation (self: { 5 - pname = "dracula-konsole-theme"; 6 - version = npins.konsole.revision; 7 - 8 - src = npins.konsole; 9 - 10 - phases = ["unpackPhase" "installPhase"]; 11 - 12 - installPhase = '' 13 - mkdir -p $out/share/konsole 14 - cp Dracula.colorscheme $out/share/konsole 15 - ''; 16 - })
···
-14
packages/gnucash-de/default.nix
··· 1 - { 2 - runCommand, 3 - makeWrapper, 4 - gnucash, 5 - }: 6 - runCommand "gnucash-de-${gnucash.version}" 7 - { 8 - nativeBuildInputs = [makeWrapper]; 9 - } '' 10 - mkdir -p $out/{bin,share/applications} 11 - makeWrapper ${gnucash}/bin/gnucash $out/bin/gnucash \ 12 - --set LANG de_DE.UTF-8 13 - ln -s ${gnucash}/share/applications/gnucash.desktop $out/share/applications/gnucash.desktop 14 - ''
···
-22
packages/nodePackages/default.nix
··· 1 - # This file has been generated by node2nix 1.11.1. Do not edit! 2 - { 3 - pkgs ? 4 - import <nixpkgs> { 5 - inherit system; 6 - }, 7 - system ? builtins.currentSystem, 8 - nodejs ? pkgs."nodejs-14_x", 9 - }: let 10 - nodeEnv = import ./node-env.nix { 11 - inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript; 12 - inherit pkgs nodejs; 13 - libtool = 14 - if pkgs.stdenv.isDarwin 15 - then pkgs.darwin.cctools 16 - else null; 17 - }; 18 - in 19 - import ./node-packages.nix { 20 - inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit; 21 - inherit nodeEnv; 22 - }
···
-652
packages/nodePackages/node-env.nix
··· 1 - # This file originates from node2nix 2 - { 3 - lib, 4 - stdenv, 5 - nodejs, 6 - python2, 7 - pkgs, 8 - libtool, 9 - runCommand, 10 - writeTextFile, 11 - writeShellScript, 12 - }: let 13 - # Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master 14 - utillinux = 15 - if pkgs ? utillinux 16 - then pkgs.utillinux 17 - else pkgs.util-linux; 18 - 19 - python = 20 - if nodejs ? python 21 - then nodejs.python 22 - else python2; 23 - 24 - # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise 25 - tarWrapper = runCommand "tarWrapper" {} '' 26 - mkdir -p $out/bin 27 - 28 - cat > $out/bin/tar <<EOF 29 - #! ${stdenv.shell} -e 30 - $(type -p tar) "\$@" --warning=no-unknown-keyword --delay-directory-restore 31 - EOF 32 - 33 - chmod +x $out/bin/tar 34 - ''; 35 - 36 - # Function that generates a TGZ file from a NPM project 37 - buildNodeSourceDist = { 38 - name, 39 - version, 40 - src, 41 - ... 42 - }: 43 - stdenv.mkDerivation { 44 - name = "node-tarball-${name}-${version}"; 45 - inherit src; 46 - buildInputs = [nodejs]; 47 - buildPhase = '' 48 - export HOME=$TMPDIR 49 - tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts) 50 - ''; 51 - installPhase = '' 52 - mkdir -p $out/tarballs 53 - mv $tgzFile $out/tarballs 54 - mkdir -p $out/nix-support 55 - echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products 56 - ''; 57 - }; 58 - 59 - # Common shell logic 60 - installPackage = writeShellScript "install-package" '' 61 - installPackage() { 62 - local packageName=$1 src=$2 63 - 64 - local strippedName 65 - 66 - local DIR=$PWD 67 - cd $TMPDIR 68 - 69 - unpackFile $src 70 - 71 - # Make the base dir in which the target dependency resides first 72 - mkdir -p "$(dirname "$DIR/$packageName")" 73 - 74 - if [ -f "$src" ] 75 - then 76 - # Figure out what directory has been unpacked 77 - packageDir="$(find . -maxdepth 1 -type d | tail -1)" 78 - 79 - # Restore write permissions to make building work 80 - find "$packageDir" -type d -exec chmod u+x {} \; 81 - chmod -R u+w "$packageDir" 82 - 83 - # Move the extracted tarball into the output folder 84 - mv "$packageDir" "$DIR/$packageName" 85 - elif [ -d "$src" ] 86 - then 87 - # Get a stripped name (without hash) of the source directory. 88 - # On old nixpkgs it's already set internally. 89 - if [ -z "$strippedName" ] 90 - then 91 - strippedName="$(stripHash $src)" 92 - fi 93 - 94 - # Restore write permissions to make building work 95 - chmod -R u+w "$strippedName" 96 - 97 - # Move the extracted directory into the output folder 98 - mv "$strippedName" "$DIR/$packageName" 99 - fi 100 - 101 - # Change to the package directory to install dependencies 102 - cd "$DIR/$packageName" 103 - } 104 - ''; 105 - 106 - # Bundle the dependencies of the package 107 - # 108 - # Only include dependencies if they don't exist. They may also be bundled in the package. 109 - includeDependencies = {dependencies}: 110 - lib.optionalString (dependencies != []) ( 111 - '' 112 - mkdir -p node_modules 113 - cd node_modules 114 - '' 115 - + (lib.concatMapStrings ( 116 - dependency: '' 117 - if [ ! -e "${dependency.packageName}" ]; then 118 - ${composePackage dependency} 119 - fi 120 - '' 121 - ) 122 - dependencies) 123 - + '' 124 - cd .. 125 - '' 126 - ); 127 - 128 - # Recursively composes the dependencies of a package 129 - composePackage = { 130 - name, 131 - packageName, 132 - src, 133 - dependencies ? [], 134 - ... 135 - } @ args: 136 - builtins.addErrorContext "while evaluating node package '${packageName}'" '' 137 - installPackage "${packageName}" "${src}" 138 - ${includeDependencies {inherit dependencies;}} 139 - cd .. 140 - ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} 141 - ''; 142 - 143 - pinpointDependencies = { 144 - dependencies, 145 - production, 146 - }: let 147 - pinpointDependenciesFromPackageJSON = writeTextFile { 148 - name = "pinpointDependencies.js"; 149 - text = '' 150 - var fs = require('fs'); 151 - var path = require('path'); 152 - 153 - function resolveDependencyVersion(location, name) { 154 - if(location == process.env['NIX_STORE']) { 155 - return null; 156 - } else { 157 - var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json"); 158 - 159 - if(fs.existsSync(dependencyPackageJSON)) { 160 - var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON)); 161 - 162 - if(dependencyPackageObj.name == name) { 163 - return dependencyPackageObj.version; 164 - } 165 - } else { 166 - return resolveDependencyVersion(path.resolve(location, ".."), name); 167 - } 168 - } 169 - } 170 - 171 - function replaceDependencies(dependencies) { 172 - if(typeof dependencies == "object" && dependencies !== null) { 173 - for(var dependency in dependencies) { 174 - var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency); 175 - 176 - if(resolvedVersion === null) { 177 - process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n"); 178 - } else { 179 - dependencies[dependency] = resolvedVersion; 180 - } 181 - } 182 - } 183 - } 184 - 185 - /* Read the package.json configuration */ 186 - var packageObj = JSON.parse(fs.readFileSync('./package.json')); 187 - 188 - /* Pinpoint all dependencies */ 189 - replaceDependencies(packageObj.dependencies); 190 - if(process.argv[2] == "development") { 191 - replaceDependencies(packageObj.devDependencies); 192 - } 193 - replaceDependencies(packageObj.optionalDependencies); 194 - 195 - /* Write the fixed package.json file */ 196 - fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2)); 197 - ''; 198 - }; 199 - in '' 200 - node ${pinpointDependenciesFromPackageJSON} ${ 201 - if production 202 - then "production" 203 - else "development" 204 - } 205 - 206 - ${lib.optionalString (dependencies != []) 207 - '' 208 - if [ -d node_modules ] 209 - then 210 - cd node_modules 211 - ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies} 212 - cd .. 213 - fi 214 - ''} 215 - ''; 216 - 217 - # Recursively traverses all dependencies of a package and pinpoints all 218 - # dependencies in the package.json file to the versions that are actually 219 - # being used. 220 - 221 - pinpointDependenciesOfPackage = { 222 - packageName, 223 - dependencies ? [], 224 - production ? true, 225 - ... 226 - } @ args: '' 227 - if [ -d "${packageName}" ] 228 - then 229 - cd "${packageName}" 230 - ${pinpointDependencies {inherit dependencies production;}} 231 - cd .. 232 - ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} 233 - fi 234 - ''; 235 - 236 - # Extract the Node.js source code which is used to compile packages with 237 - # native bindings 238 - nodeSources = runCommand "node-sources" {} '' 239 - tar --no-same-owner --no-same-permissions -xf ${nodejs.src} 240 - mv node-* $out 241 - ''; 242 - 243 - # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty) 244 - addIntegrityFieldsScript = writeTextFile { 245 - name = "addintegrityfields.js"; 246 - text = '' 247 - var fs = require('fs'); 248 - var path = require('path'); 249 - 250 - function augmentDependencies(baseDir, dependencies) { 251 - for(var dependencyName in dependencies) { 252 - var dependency = dependencies[dependencyName]; 253 - 254 - // Open package.json and augment metadata fields 255 - var packageJSONDir = path.join(baseDir, "node_modules", dependencyName); 256 - var packageJSONPath = path.join(packageJSONDir, "package.json"); 257 - 258 - if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored 259 - console.log("Adding metadata fields to: "+packageJSONPath); 260 - var packageObj = JSON.parse(fs.readFileSync(packageJSONPath)); 261 - 262 - if(dependency.integrity) { 263 - packageObj["_integrity"] = dependency.integrity; 264 - } else { 265 - packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads. 266 - } 267 - 268 - if(dependency.resolved) { 269 - packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided 270 - } else { 271 - packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories. 272 - } 273 - 274 - if(dependency.from !== undefined) { // Adopt from property if one has been provided 275 - packageObj["_from"] = dependency.from; 276 - } 277 - 278 - fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2)); 279 - } 280 - 281 - // Augment transitive dependencies 282 - if(dependency.dependencies !== undefined) { 283 - augmentDependencies(packageJSONDir, dependency.dependencies); 284 - } 285 - } 286 - } 287 - 288 - if(fs.existsSync("./package-lock.json")) { 289 - var packageLock = JSON.parse(fs.readFileSync("./package-lock.json")); 290 - 291 - if(![1, 2].includes(packageLock.lockfileVersion)) { 292 - process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n"); 293 - process.exit(1); 294 - } 295 - 296 - if(packageLock.dependencies !== undefined) { 297 - augmentDependencies(".", packageLock.dependencies); 298 - } 299 - } 300 - ''; 301 - }; 302 - 303 - # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes 304 - reconstructPackageLock = writeTextFile { 305 - name = "addintegrityfields.js"; 306 - text = '' 307 - var fs = require('fs'); 308 - var path = require('path'); 309 - 310 - var packageObj = JSON.parse(fs.readFileSync("package.json")); 311 - 312 - var lockObj = { 313 - name: packageObj.name, 314 - version: packageObj.version, 315 - lockfileVersion: 1, 316 - requires: true, 317 - dependencies: {} 318 - }; 319 - 320 - function augmentPackageJSON(filePath, dependencies) { 321 - var packageJSON = path.join(filePath, "package.json"); 322 - if(fs.existsSync(packageJSON)) { 323 - var packageObj = JSON.parse(fs.readFileSync(packageJSON)); 324 - dependencies[packageObj.name] = { 325 - version: packageObj.version, 326 - integrity: "sha1-000000000000000000000000000=", 327 - dependencies: {} 328 - }; 329 - processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies); 330 - } 331 - } 332 - 333 - function processDependencies(dir, dependencies) { 334 - if(fs.existsSync(dir)) { 335 - var files = fs.readdirSync(dir); 336 - 337 - files.forEach(function(entry) { 338 - var filePath = path.join(dir, entry); 339 - var stats = fs.statSync(filePath); 340 - 341 - if(stats.isDirectory()) { 342 - if(entry.substr(0, 1) == "@") { 343 - // When we encounter a namespace folder, augment all packages belonging to the scope 344 - var pkgFiles = fs.readdirSync(filePath); 345 - 346 - pkgFiles.forEach(function(entry) { 347 - if(stats.isDirectory()) { 348 - var pkgFilePath = path.join(filePath, entry); 349 - augmentPackageJSON(pkgFilePath, dependencies); 350 - } 351 - }); 352 - } else { 353 - augmentPackageJSON(filePath, dependencies); 354 - } 355 - } 356 - }); 357 - } 358 - } 359 - 360 - processDependencies("node_modules", lockObj.dependencies); 361 - 362 - fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2)); 363 - ''; 364 - }; 365 - 366 - prepareAndInvokeNPM = { 367 - packageName, 368 - bypassCache, 369 - reconstructLock, 370 - npmFlags, 371 - production, 372 - }: let 373 - forceOfflineFlag = 374 - if bypassCache 375 - then "--offline" 376 - else "--registry http://www.example.com"; 377 - in '' 378 - # Pinpoint the versions of all dependencies to the ones that are actually being used 379 - echo "pinpointing versions of dependencies..." 380 - source $pinpointDependenciesScriptPath 381 - 382 - # Patch the shebangs of the bundled modules to prevent them from 383 - # calling executables outside the Nix store as much as possible 384 - patchShebangs . 385 - 386 - # Deploy the Node.js package by running npm install. Since the 387 - # dependencies have been provided already by ourselves, it should not 388 - # attempt to install them again, which is good, because we want to make 389 - # it Nix's responsibility. If it needs to install any dependencies 390 - # anyway (e.g. because the dependency parameters are 391 - # incomplete/incorrect), it fails. 392 - # 393 - # The other responsibilities of NPM are kept -- version checks, build 394 - # steps, postprocessing etc. 395 - 396 - export HOME=$TMPDIR 397 - cd "${packageName}" 398 - runHook preRebuild 399 - 400 - ${lib.optionalString bypassCache '' 401 - ${lib.optionalString reconstructLock '' 402 - if [ -f package-lock.json ] 403 - then 404 - echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!" 405 - echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!" 406 - rm package-lock.json 407 - else 408 - echo "No package-lock.json file found, reconstructing..." 409 - fi 410 - 411 - node ${reconstructPackageLock} 412 - ''} 413 - 414 - node ${addIntegrityFieldsScript} 415 - ''} 416 - 417 - npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild 418 - 419 - if [ "''${dontNpmInstall-}" != "1" ] 420 - then 421 - # NPM tries to download packages even when they already exist if npm-shrinkwrap is used. 422 - rm -f npm-shrinkwrap.json 423 - 424 - npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install 425 - fi 426 - ''; 427 - 428 - # Builds and composes an NPM package including all its dependencies 429 - buildNodePackage = { 430 - name, 431 - packageName, 432 - version ? null, 433 - dependencies ? [], 434 - buildInputs ? [], 435 - production ? true, 436 - npmFlags ? "", 437 - dontNpmInstall ? false, 438 - bypassCache ? false, 439 - reconstructLock ? false, 440 - preRebuild ? "", 441 - dontStrip ? true, 442 - unpackPhase ? "true", 443 - buildPhase ? "true", 444 - meta ? {}, 445 - ... 446 - } @ args: let 447 - extraArgs = removeAttrs args ["name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta"]; 448 - in 449 - stdenv.mkDerivation ({ 450 - name = "${name}${ 451 - if version == null 452 - then "" 453 - else "-${version}" 454 - }"; 455 - buildInputs = 456 - [tarWrapper python nodejs] 457 - ++ lib.optional (stdenv.isLinux) utillinux 458 - ++ lib.optional (stdenv.isDarwin) libtool 459 - ++ buildInputs; 460 - 461 - inherit nodejs; 462 - 463 - inherit dontStrip; # Stripping may fail a build for some package deployments 464 - inherit dontNpmInstall preRebuild unpackPhase buildPhase; 465 - 466 - compositionScript = composePackage args; 467 - pinpointDependenciesScript = pinpointDependenciesOfPackage args; 468 - 469 - passAsFile = ["compositionScript" "pinpointDependenciesScript"]; 470 - 471 - installPhase = '' 472 - source ${installPackage} 473 - 474 - # Create and enter a root node_modules/ folder 475 - mkdir -p $out/lib/node_modules 476 - cd $out/lib/node_modules 477 - 478 - # Compose the package and all its dependencies 479 - source $compositionScriptPath 480 - 481 - ${prepareAndInvokeNPM {inherit packageName bypassCache reconstructLock npmFlags production;}} 482 - 483 - # Create symlink to the deployed executable folder, if applicable 484 - if [ -d "$out/lib/node_modules/.bin" ] 485 - then 486 - ln -s $out/lib/node_modules/.bin $out/bin 487 - 488 - # Patch the shebang lines of all the executables 489 - ls $out/bin/* | while read i 490 - do 491 - file="$(readlink -f "$i")" 492 - chmod u+rwx "$file" 493 - patchShebangs "$file" 494 - done 495 - fi 496 - 497 - # Create symlinks to the deployed manual page folders, if applicable 498 - if [ -d "$out/lib/node_modules/${packageName}/man" ] 499 - then 500 - mkdir -p $out/share 501 - for dir in "$out/lib/node_modules/${packageName}/man/"* 502 - do 503 - mkdir -p $out/share/man/$(basename "$dir") 504 - for page in "$dir"/* 505 - do 506 - ln -s $page $out/share/man/$(basename "$dir") 507 - done 508 - done 509 - fi 510 - 511 - # Run post install hook, if provided 512 - runHook postInstall 513 - ''; 514 - 515 - meta = 516 - { 517 - # default to Node.js' platforms 518 - platforms = nodejs.meta.platforms; 519 - } 520 - // meta; 521 - } 522 - // extraArgs); 523 - 524 - # Builds a node environment (a node_modules folder and a set of binaries) 525 - buildNodeDependencies = { 526 - name, 527 - packageName, 528 - version ? null, 529 - src, 530 - dependencies ? [], 531 - buildInputs ? [], 532 - production ? true, 533 - npmFlags ? "", 534 - dontNpmInstall ? false, 535 - bypassCache ? false, 536 - reconstructLock ? false, 537 - dontStrip ? true, 538 - unpackPhase ? "true", 539 - buildPhase ? "true", 540 - ... 541 - } @ args: let 542 - extraArgs = removeAttrs args ["name" "dependencies" "buildInputs"]; 543 - in 544 - stdenv.mkDerivation ({ 545 - name = "node-dependencies-${name}${ 546 - if version == null 547 - then "" 548 - else "-${version}" 549 - }"; 550 - 551 - buildInputs = 552 - [tarWrapper python nodejs] 553 - ++ lib.optional (stdenv.isLinux) utillinux 554 - ++ lib.optional (stdenv.isDarwin) libtool 555 - ++ buildInputs; 556 - 557 - inherit dontStrip; # Stripping may fail a build for some package deployments 558 - inherit dontNpmInstall unpackPhase buildPhase; 559 - 560 - includeScript = includeDependencies {inherit dependencies;}; 561 - pinpointDependenciesScript = pinpointDependenciesOfPackage args; 562 - 563 - passAsFile = ["includeScript" "pinpointDependenciesScript"]; 564 - 565 - installPhase = '' 566 - source ${installPackage} 567 - 568 - mkdir -p $out/${packageName} 569 - cd $out/${packageName} 570 - 571 - source $includeScriptPath 572 - 573 - # Create fake package.json to make the npm commands work properly 574 - cp ${src}/package.json . 575 - chmod 644 package.json 576 - ${lib.optionalString bypassCache '' 577 - if [ -f ${src}/package-lock.json ] 578 - then 579 - cp ${src}/package-lock.json . 580 - chmod 644 package-lock.json 581 - fi 582 - ''} 583 - 584 - # Go to the parent folder to make sure that all packages are pinpointed 585 - cd .. 586 - ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} 587 - 588 - ${prepareAndInvokeNPM {inherit packageName bypassCache reconstructLock npmFlags production;}} 589 - 590 - # Expose the executables that were installed 591 - cd .. 592 - ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} 593 - 594 - mv ${packageName} lib 595 - ln -s $out/lib/node_modules/.bin $out/bin 596 - ''; 597 - } 598 - // extraArgs); 599 - 600 - # Builds a development shell 601 - buildNodeShell = { 602 - name, 603 - packageName, 604 - version ? null, 605 - src, 606 - dependencies ? [], 607 - buildInputs ? [], 608 - production ? true, 609 - npmFlags ? "", 610 - dontNpmInstall ? false, 611 - bypassCache ? false, 612 - reconstructLock ? false, 613 - dontStrip ? true, 614 - unpackPhase ? "true", 615 - buildPhase ? "true", 616 - ... 617 - } @ args: let 618 - nodeDependencies = buildNodeDependencies args; 619 - extraArgs = removeAttrs args ["name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "unpackPhase" "buildPhase"]; 620 - in 621 - stdenv.mkDerivation ({ 622 - name = "node-shell-${name}${ 623 - if version == null 624 - then "" 625 - else "-${version}" 626 - }"; 627 - 628 - buildInputs = [python nodejs] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs; 629 - buildCommand = '' 630 - mkdir -p $out/bin 631 - cat > $out/bin/shell <<EOF 632 - #! ${stdenv.shell} -e 633 - $shellHook 634 - exec ${stdenv.shell} 635 - EOF 636 - chmod +x $out/bin/shell 637 - ''; 638 - 639 - # Provide the dependencies in a development shell through the NODE_PATH environment variable 640 - inherit nodeDependencies; 641 - shellHook = lib.optionalString (dependencies != []) '' 642 - export NODE_PATH=${nodeDependencies}/lib/node_modules 643 - export PATH="${nodeDependencies}/bin:$PATH" 644 - ''; 645 - } 646 - // extraArgs); 647 - in { 648 - buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist; 649 - buildNodePackage = lib.makeOverridable buildNodePackage; 650 - buildNodeDependencies = lib.makeOverridable buildNodeDependencies; 651 - buildNodeShell = lib.makeOverridable buildNodeShell; 652 - }
···
-3
packages/nodePackages/node-packages.json
··· 1 - [ 2 - "@angular/cli" 3 - ]
···
-2000
packages/nodePackages/node-packages.nix
··· 1 - # This file has been generated by node2nix 1.11.1. Do not edit! 2 - { 3 - nodeEnv, 4 - fetchurl, 5 - fetchgit, 6 - nix-gitignore, 7 - stdenv, 8 - lib, 9 - globalBuildInputs ? [], 10 - }: let 11 - sources = { 12 - "@angular-devkit/architect-0.1303.6" = { 13 - name = "_at_angular-devkit_slash_architect"; 14 - packageName = "@angular-devkit/architect"; 15 - version = "0.1303.6"; 16 - src = fetchurl { 17 - url = "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.6.tgz"; 18 - sha512 = "Quh8KzO17PZH38mrDlBihrT6TioTnD8I+nSXuTZIqHwDpyFCTB9wBm9wC1J6HzMzEJ1GoYWEH/ukfbVpmj8ghw=="; 19 - }; 20 - }; 21 - "@angular-devkit/core-13.3.6" = { 22 - name = "_at_angular-devkit_slash_core"; 23 - packageName = "@angular-devkit/core"; 24 - version = "13.3.6"; 25 - src = fetchurl { 26 - url = "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.6.tgz"; 27 - sha512 = "ZmD586B+RnM2CG5+jbXh2NVfIydTc/yKSjppYDDOv4I530YBm6vpfZMwClpiNk6XLbMv7KqX4Tlr4wfxlPYYbA=="; 28 - }; 29 - }; 30 - "@angular-devkit/schematics-13.3.6" = { 31 - name = "_at_angular-devkit_slash_schematics"; 32 - packageName = "@angular-devkit/schematics"; 33 - version = "13.3.6"; 34 - src = fetchurl { 35 - url = "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.6.tgz"; 36 - sha512 = "yLh5xc92C/FiaAp27coPiKWpSUmwoXF7vMxbJYJTyOXlt0mUITAEAwtrZQNr4yAxW/yvgTdyg7PhXaveQNTUuQ=="; 37 - }; 38 - }; 39 - "@gar/promisify-1.1.3" = { 40 - name = "_at_gar_slash_promisify"; 41 - packageName = "@gar/promisify"; 42 - version = "1.1.3"; 43 - src = fetchurl { 44 - url = "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz"; 45 - sha512 = "k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw=="; 46 - }; 47 - }; 48 - "@npmcli/fs-1.1.1" = { 49 - name = "_at_npmcli_slash_fs"; 50 - packageName = "@npmcli/fs"; 51 - version = "1.1.1"; 52 - src = fetchurl { 53 - url = "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz"; 54 - sha512 = "8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ=="; 55 - }; 56 - }; 57 - "@npmcli/fs-2.1.0" = { 58 - name = "_at_npmcli_slash_fs"; 59 - packageName = "@npmcli/fs"; 60 - version = "2.1.0"; 61 - src = fetchurl { 62 - url = "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz"; 63 - sha512 = "DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ=="; 64 - }; 65 - }; 66 - "@npmcli/git-2.1.0" = { 67 - name = "_at_npmcli_slash_git"; 68 - packageName = "@npmcli/git"; 69 - version = "2.1.0"; 70 - src = fetchurl { 71 - url = "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz"; 72 - sha512 = "/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw=="; 73 - }; 74 - }; 75 - "@npmcli/installed-package-contents-1.0.7" = { 76 - name = "_at_npmcli_slash_installed-package-contents"; 77 - packageName = "@npmcli/installed-package-contents"; 78 - version = "1.0.7"; 79 - src = fetchurl { 80 - url = "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz"; 81 - sha512 = "9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw=="; 82 - }; 83 - }; 84 - "@npmcli/move-file-1.1.2" = { 85 - name = "_at_npmcli_slash_move-file"; 86 - packageName = "@npmcli/move-file"; 87 - version = "1.1.2"; 88 - src = fetchurl { 89 - url = "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz"; 90 - sha512 = "1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg=="; 91 - }; 92 - }; 93 - "@npmcli/move-file-2.0.0" = { 94 - name = "_at_npmcli_slash_move-file"; 95 - packageName = "@npmcli/move-file"; 96 - version = "2.0.0"; 97 - src = fetchurl { 98 - url = "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz"; 99 - sha512 = "UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg=="; 100 - }; 101 - }; 102 - "@npmcli/node-gyp-1.0.3" = { 103 - name = "_at_npmcli_slash_node-gyp"; 104 - packageName = "@npmcli/node-gyp"; 105 - version = "1.0.3"; 106 - src = fetchurl { 107 - url = "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz"; 108 - sha512 = "fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA=="; 109 - }; 110 - }; 111 - "@npmcli/promise-spawn-1.3.2" = { 112 - name = "_at_npmcli_slash_promise-spawn"; 113 - packageName = "@npmcli/promise-spawn"; 114 - version = "1.3.2"; 115 - src = fetchurl { 116 - url = "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz"; 117 - sha512 = "QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg=="; 118 - }; 119 - }; 120 - "@npmcli/run-script-2.0.0" = { 121 - name = "_at_npmcli_slash_run-script"; 122 - packageName = "@npmcli/run-script"; 123 - version = "2.0.0"; 124 - src = fetchurl { 125 - url = "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz"; 126 - sha512 = "fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig=="; 127 - }; 128 - }; 129 - "@schematics/angular-13.3.6" = { 130 - name = "_at_schematics_slash_angular"; 131 - packageName = "@schematics/angular"; 132 - version = "13.3.6"; 133 - src = fetchurl { 134 - url = "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.6.tgz"; 135 - sha512 = "BGBmIasjipBxQhV+UdN8B5P73SBXgBPkc7rcOK3Py+xpqMcoTWn290nqxIxLxRVmSeHLabE7+n1m3WnCumlm9Q=="; 136 - }; 137 - }; 138 - "@tootallnate/once-1.1.2" = { 139 - name = "_at_tootallnate_slash_once"; 140 - packageName = "@tootallnate/once"; 141 - version = "1.1.2"; 142 - src = fetchurl { 143 - url = "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz"; 144 - sha512 = "RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="; 145 - }; 146 - }; 147 - "@tootallnate/once-2.0.0" = { 148 - name = "_at_tootallnate_slash_once"; 149 - packageName = "@tootallnate/once"; 150 - version = "2.0.0"; 151 - src = fetchurl { 152 - url = "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz"; 153 - sha512 = "XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A=="; 154 - }; 155 - }; 156 - "@yarnpkg/lockfile-1.1.0" = { 157 - name = "_at_yarnpkg_slash_lockfile"; 158 - packageName = "@yarnpkg/lockfile"; 159 - version = "1.1.0"; 160 - src = fetchurl { 161 - url = "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz"; 162 - sha512 = "GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ=="; 163 - }; 164 - }; 165 - "abbrev-1.1.1" = { 166 - name = "abbrev"; 167 - packageName = "abbrev"; 168 - version = "1.1.1"; 169 - src = fetchurl { 170 - url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"; 171 - sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="; 172 - }; 173 - }; 174 - "agent-base-6.0.2" = { 175 - name = "agent-base"; 176 - packageName = "agent-base"; 177 - version = "6.0.2"; 178 - src = fetchurl { 179 - url = "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz"; 180 - sha512 = "RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="; 181 - }; 182 - }; 183 - "agentkeepalive-4.2.1" = { 184 - name = "agentkeepalive"; 185 - packageName = "agentkeepalive"; 186 - version = "4.2.1"; 187 - src = fetchurl { 188 - url = "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz"; 189 - sha512 = "Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA=="; 190 - }; 191 - }; 192 - "aggregate-error-3.1.0" = { 193 - name = "aggregate-error"; 194 - packageName = "aggregate-error"; 195 - version = "3.1.0"; 196 - src = fetchurl { 197 - url = "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz"; 198 - sha512 = "4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="; 199 - }; 200 - }; 201 - "ajv-8.9.0" = { 202 - name = "ajv"; 203 - packageName = "ajv"; 204 - version = "8.9.0"; 205 - src = fetchurl { 206 - url = "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz"; 207 - sha512 = "qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ=="; 208 - }; 209 - }; 210 - "ajv-formats-2.1.1" = { 211 - name = "ajv-formats"; 212 - packageName = "ajv-formats"; 213 - version = "2.1.1"; 214 - src = fetchurl { 215 - url = "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz"; 216 - sha512 = "Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="; 217 - }; 218 - }; 219 - "ansi-colors-4.1.1" = { 220 - name = "ansi-colors"; 221 - packageName = "ansi-colors"; 222 - version = "4.1.1"; 223 - src = fetchurl { 224 - url = "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz"; 225 - sha512 = "JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA=="; 226 - }; 227 - }; 228 - "ansi-escapes-4.3.2" = { 229 - name = "ansi-escapes"; 230 - packageName = "ansi-escapes"; 231 - version = "4.3.2"; 232 - src = fetchurl { 233 - url = "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz"; 234 - sha512 = "gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="; 235 - }; 236 - }; 237 - "ansi-regex-5.0.1" = { 238 - name = "ansi-regex"; 239 - packageName = "ansi-regex"; 240 - version = "5.0.1"; 241 - src = fetchurl { 242 - url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"; 243 - sha512 = "quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="; 244 - }; 245 - }; 246 - "ansi-styles-4.3.0" = { 247 - name = "ansi-styles"; 248 - packageName = "ansi-styles"; 249 - version = "4.3.0"; 250 - src = fetchurl { 251 - url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"; 252 - sha512 = "zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="; 253 - }; 254 - }; 255 - "aproba-2.0.0" = { 256 - name = "aproba"; 257 - packageName = "aproba"; 258 - version = "2.0.0"; 259 - src = fetchurl { 260 - url = "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz"; 261 - sha512 = "lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="; 262 - }; 263 - }; 264 - "are-we-there-yet-3.0.0" = { 265 - name = "are-we-there-yet"; 266 - packageName = "are-we-there-yet"; 267 - version = "3.0.0"; 268 - src = fetchurl { 269 - url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz"; 270 - sha512 = "0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw=="; 271 - }; 272 - }; 273 - "balanced-match-1.0.2" = { 274 - name = "balanced-match"; 275 - packageName = "balanced-match"; 276 - version = "1.0.2"; 277 - src = fetchurl { 278 - url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"; 279 - sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="; 280 - }; 281 - }; 282 - "base64-js-1.5.1" = { 283 - name = "base64-js"; 284 - packageName = "base64-js"; 285 - version = "1.5.1"; 286 - src = fetchurl { 287 - url = "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"; 288 - sha512 = "AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="; 289 - }; 290 - }; 291 - "bl-4.1.0" = { 292 - name = "bl"; 293 - packageName = "bl"; 294 - version = "4.1.0"; 295 - src = fetchurl { 296 - url = "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz"; 297 - sha512 = "1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="; 298 - }; 299 - }; 300 - "brace-expansion-1.1.11" = { 301 - name = "brace-expansion"; 302 - packageName = "brace-expansion"; 303 - version = "1.1.11"; 304 - src = fetchurl { 305 - url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"; 306 - sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="; 307 - }; 308 - }; 309 - "brace-expansion-2.0.1" = { 310 - name = "brace-expansion"; 311 - packageName = "brace-expansion"; 312 - version = "2.0.1"; 313 - src = fetchurl { 314 - url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"; 315 - sha512 = "XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="; 316 - }; 317 - }; 318 - "buffer-5.7.1" = { 319 - name = "buffer"; 320 - packageName = "buffer"; 321 - version = "5.7.1"; 322 - src = fetchurl { 323 - url = "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz"; 324 - sha512 = "EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="; 325 - }; 326 - }; 327 - "builtins-1.0.3" = { 328 - name = "builtins"; 329 - packageName = "builtins"; 330 - version = "1.0.3"; 331 - src = fetchurl { 332 - url = "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz"; 333 - sha512 = "uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ=="; 334 - }; 335 - }; 336 - "cacache-15.3.0" = { 337 - name = "cacache"; 338 - packageName = "cacache"; 339 - version = "15.3.0"; 340 - src = fetchurl { 341 - url = "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz"; 342 - sha512 = "VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ=="; 343 - }; 344 - }; 345 - "cacache-16.1.0" = { 346 - name = "cacache"; 347 - packageName = "cacache"; 348 - version = "16.1.0"; 349 - src = fetchurl { 350 - url = "https://registry.npmjs.org/cacache/-/cacache-16.1.0.tgz"; 351 - sha512 = "Pk4aQkwCW82A4jGKFvcGkQFqZcMspfP9YWq9Pr87/ldDvlWf718zeI6KWCdKt/jeihu6BytHRUicJPB1K2k8EQ=="; 352 - }; 353 - }; 354 - "chalk-4.1.2" = { 355 - name = "chalk"; 356 - packageName = "chalk"; 357 - version = "4.1.2"; 358 - src = fetchurl { 359 - url = "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"; 360 - sha512 = "oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="; 361 - }; 362 - }; 363 - "chardet-0.7.0" = { 364 - name = "chardet"; 365 - packageName = "chardet"; 366 - version = "0.7.0"; 367 - src = fetchurl { 368 - url = "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz"; 369 - sha512 = "mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="; 370 - }; 371 - }; 372 - "chownr-2.0.0" = { 373 - name = "chownr"; 374 - packageName = "chownr"; 375 - version = "2.0.0"; 376 - src = fetchurl { 377 - url = "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz"; 378 - sha512 = "bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="; 379 - }; 380 - }; 381 - "clean-stack-2.2.0" = { 382 - name = "clean-stack"; 383 - packageName = "clean-stack"; 384 - version = "2.2.0"; 385 - src = fetchurl { 386 - url = "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz"; 387 - sha512 = "4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="; 388 - }; 389 - }; 390 - "cli-cursor-3.1.0" = { 391 - name = "cli-cursor"; 392 - packageName = "cli-cursor"; 393 - version = "3.1.0"; 394 - src = fetchurl { 395 - url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz"; 396 - sha512 = "I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="; 397 - }; 398 - }; 399 - "cli-spinners-2.6.1" = { 400 - name = "cli-spinners"; 401 - packageName = "cli-spinners"; 402 - version = "2.6.1"; 403 - src = fetchurl { 404 - url = "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz"; 405 - sha512 = "x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g=="; 406 - }; 407 - }; 408 - "cli-width-3.0.0" = { 409 - name = "cli-width"; 410 - packageName = "cli-width"; 411 - version = "3.0.0"; 412 - src = fetchurl { 413 - url = "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz"; 414 - sha512 = "FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw=="; 415 - }; 416 - }; 417 - "clone-1.0.4" = { 418 - name = "clone"; 419 - packageName = "clone"; 420 - version = "1.0.4"; 421 - src = fetchurl { 422 - url = "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz"; 423 - sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e"; 424 - }; 425 - }; 426 - "color-convert-2.0.1" = { 427 - name = "color-convert"; 428 - packageName = "color-convert"; 429 - version = "2.0.1"; 430 - src = fetchurl { 431 - url = "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"; 432 - sha512 = "RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="; 433 - }; 434 - }; 435 - "color-name-1.1.4" = { 436 - name = "color-name"; 437 - packageName = "color-name"; 438 - version = "1.1.4"; 439 - src = fetchurl { 440 - url = "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"; 441 - sha512 = "dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="; 442 - }; 443 - }; 444 - "color-support-1.1.3" = { 445 - name = "color-support"; 446 - packageName = "color-support"; 447 - version = "1.1.3"; 448 - src = fetchurl { 449 - url = "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz"; 450 - sha512 = "qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="; 451 - }; 452 - }; 453 - "concat-map-0.0.1" = { 454 - name = "concat-map"; 455 - packageName = "concat-map"; 456 - version = "0.0.1"; 457 - src = fetchurl { 458 - url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"; 459 - sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b"; 460 - }; 461 - }; 462 - "console-control-strings-1.1.0" = { 463 - name = "console-control-strings"; 464 - packageName = "console-control-strings"; 465 - version = "1.1.0"; 466 - src = fetchurl { 467 - url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"; 468 - sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e"; 469 - }; 470 - }; 471 - "debug-4.3.3" = { 472 - name = "debug"; 473 - packageName = "debug"; 474 - version = "4.3.3"; 475 - src = fetchurl { 476 - url = "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz"; 477 - sha512 = "/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q=="; 478 - }; 479 - }; 480 - "defaults-1.0.3" = { 481 - name = "defaults"; 482 - packageName = "defaults"; 483 - version = "1.0.3"; 484 - src = fetchurl { 485 - url = "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz"; 486 - sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d"; 487 - }; 488 - }; 489 - "define-lazy-prop-2.0.0" = { 490 - name = "define-lazy-prop"; 491 - packageName = "define-lazy-prop"; 492 - version = "2.0.0"; 493 - src = fetchurl { 494 - url = "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz"; 495 - sha512 = "Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="; 496 - }; 497 - }; 498 - "delegates-1.0.0" = { 499 - name = "delegates"; 500 - packageName = "delegates"; 501 - version = "1.0.0"; 502 - src = fetchurl { 503 - url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"; 504 - sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a"; 505 - }; 506 - }; 507 - "depd-1.1.2" = { 508 - name = "depd"; 509 - packageName = "depd"; 510 - version = "1.1.2"; 511 - src = fetchurl { 512 - url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"; 513 - sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9"; 514 - }; 515 - }; 516 - "emoji-regex-8.0.0" = { 517 - name = "emoji-regex"; 518 - packageName = "emoji-regex"; 519 - version = "8.0.0"; 520 - src = fetchurl { 521 - url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"; 522 - sha512 = "MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="; 523 - }; 524 - }; 525 - "encoding-0.1.13" = { 526 - name = "encoding"; 527 - packageName = "encoding"; 528 - version = "0.1.13"; 529 - src = fetchurl { 530 - url = "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz"; 531 - sha512 = "ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A=="; 532 - }; 533 - }; 534 - "env-paths-2.2.1" = { 535 - name = "env-paths"; 536 - packageName = "env-paths"; 537 - version = "2.2.1"; 538 - src = fetchurl { 539 - url = "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz"; 540 - sha512 = "+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="; 541 - }; 542 - }; 543 - "err-code-2.0.3" = { 544 - name = "err-code"; 545 - packageName = "err-code"; 546 - version = "2.0.3"; 547 - src = fetchurl { 548 - url = "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz"; 549 - sha512 = "2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="; 550 - }; 551 - }; 552 - "escape-string-regexp-1.0.5" = { 553 - name = "escape-string-regexp"; 554 - packageName = "escape-string-regexp"; 555 - version = "1.0.5"; 556 - src = fetchurl { 557 - url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"; 558 - sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"; 559 - }; 560 - }; 561 - "external-editor-3.1.0" = { 562 - name = "external-editor"; 563 - packageName = "external-editor"; 564 - version = "3.1.0"; 565 - src = fetchurl { 566 - url = "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz"; 567 - sha512 = "hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew=="; 568 - }; 569 - }; 570 - "fast-deep-equal-3.1.3" = { 571 - name = "fast-deep-equal"; 572 - packageName = "fast-deep-equal"; 573 - version = "3.1.3"; 574 - src = fetchurl { 575 - url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"; 576 - sha512 = "f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="; 577 - }; 578 - }; 579 - "fast-json-stable-stringify-2.1.0" = { 580 - name = "fast-json-stable-stringify"; 581 - packageName = "fast-json-stable-stringify"; 582 - version = "2.1.0"; 583 - src = fetchurl { 584 - url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"; 585 - sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="; 586 - }; 587 - }; 588 - "figures-3.2.0" = { 589 - name = "figures"; 590 - packageName = "figures"; 591 - version = "3.2.0"; 592 - src = fetchurl { 593 - url = "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz"; 594 - sha512 = "yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg=="; 595 - }; 596 - }; 597 - "fs-minipass-2.1.0" = { 598 - name = "fs-minipass"; 599 - packageName = "fs-minipass"; 600 - version = "2.1.0"; 601 - src = fetchurl { 602 - url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"; 603 - sha512 = "V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="; 604 - }; 605 - }; 606 - "fs.realpath-1.0.0" = { 607 - name = "fs.realpath"; 608 - packageName = "fs.realpath"; 609 - version = "1.0.0"; 610 - src = fetchurl { 611 - url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"; 612 - sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f"; 613 - }; 614 - }; 615 - "function-bind-1.1.1" = { 616 - name = "function-bind"; 617 - packageName = "function-bind"; 618 - version = "1.1.1"; 619 - src = fetchurl { 620 - url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"; 621 - sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="; 622 - }; 623 - }; 624 - "gauge-4.0.4" = { 625 - name = "gauge"; 626 - packageName = "gauge"; 627 - version = "4.0.4"; 628 - src = fetchurl { 629 - url = "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz"; 630 - sha512 = "f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg=="; 631 - }; 632 - }; 633 - "glob-7.2.3" = { 634 - name = "glob"; 635 - packageName = "glob"; 636 - version = "7.2.3"; 637 - src = fetchurl { 638 - url = "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"; 639 - sha512 = "nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="; 640 - }; 641 - }; 642 - "glob-8.0.3" = { 643 - name = "glob"; 644 - packageName = "glob"; 645 - version = "8.0.3"; 646 - src = fetchurl { 647 - url = "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz"; 648 - sha512 = "ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ=="; 649 - }; 650 - }; 651 - "graceful-fs-4.2.10" = { 652 - name = "graceful-fs"; 653 - packageName = "graceful-fs"; 654 - version = "4.2.10"; 655 - src = fetchurl { 656 - url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"; 657 - sha512 = "9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="; 658 - }; 659 - }; 660 - "has-1.0.3" = { 661 - name = "has"; 662 - packageName = "has"; 663 - version = "1.0.3"; 664 - src = fetchurl { 665 - url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz"; 666 - sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="; 667 - }; 668 - }; 669 - "has-flag-4.0.0" = { 670 - name = "has-flag"; 671 - packageName = "has-flag"; 672 - version = "4.0.0"; 673 - src = fetchurl { 674 - url = "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"; 675 - sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="; 676 - }; 677 - }; 678 - "has-unicode-2.0.1" = { 679 - name = "has-unicode"; 680 - packageName = "has-unicode"; 681 - version = "2.0.1"; 682 - src = fetchurl { 683 - url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"; 684 - sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9"; 685 - }; 686 - }; 687 - "hosted-git-info-4.1.0" = { 688 - name = "hosted-git-info"; 689 - packageName = "hosted-git-info"; 690 - version = "4.1.0"; 691 - src = fetchurl { 692 - url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz"; 693 - sha512 = "kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA=="; 694 - }; 695 - }; 696 - "http-cache-semantics-4.1.0" = { 697 - name = "http-cache-semantics"; 698 - packageName = "http-cache-semantics"; 699 - version = "4.1.0"; 700 - src = fetchurl { 701 - url = "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz"; 702 - sha512 = "carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="; 703 - }; 704 - }; 705 - "http-proxy-agent-4.0.1" = { 706 - name = "http-proxy-agent"; 707 - packageName = "http-proxy-agent"; 708 - version = "4.0.1"; 709 - src = fetchurl { 710 - url = "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz"; 711 - sha512 = "k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg=="; 712 - }; 713 - }; 714 - "http-proxy-agent-5.0.0" = { 715 - name = "http-proxy-agent"; 716 - packageName = "http-proxy-agent"; 717 - version = "5.0.0"; 718 - src = fetchurl { 719 - url = "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz"; 720 - sha512 = "n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w=="; 721 - }; 722 - }; 723 - "https-proxy-agent-5.0.1" = { 724 - name = "https-proxy-agent"; 725 - packageName = "https-proxy-agent"; 726 - version = "5.0.1"; 727 - src = fetchurl { 728 - url = "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz"; 729 - sha512 = "dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="; 730 - }; 731 - }; 732 - "humanize-ms-1.2.1" = { 733 - name = "humanize-ms"; 734 - packageName = "humanize-ms"; 735 - version = "1.2.1"; 736 - src = fetchurl { 737 - url = "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz"; 738 - sha1 = "c46e3159a293f6b896da29316d8b6fe8bb79bbed"; 739 - }; 740 - }; 741 - "iconv-lite-0.4.24" = { 742 - name = "iconv-lite"; 743 - packageName = "iconv-lite"; 744 - version = "0.4.24"; 745 - src = fetchurl { 746 - url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"; 747 - sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="; 748 - }; 749 - }; 750 - "iconv-lite-0.6.3" = { 751 - name = "iconv-lite"; 752 - packageName = "iconv-lite"; 753 - version = "0.6.3"; 754 - src = fetchurl { 755 - url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz"; 756 - sha512 = "4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="; 757 - }; 758 - }; 759 - "ieee754-1.2.1" = { 760 - name = "ieee754"; 761 - packageName = "ieee754"; 762 - version = "1.2.1"; 763 - src = fetchurl { 764 - url = "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"; 765 - sha512 = "dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="; 766 - }; 767 - }; 768 - "ignore-walk-4.0.1" = { 769 - name = "ignore-walk"; 770 - packageName = "ignore-walk"; 771 - version = "4.0.1"; 772 - src = fetchurl { 773 - url = "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz"; 774 - sha512 = "rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw=="; 775 - }; 776 - }; 777 - "imurmurhash-0.1.4" = { 778 - name = "imurmurhash"; 779 - packageName = "imurmurhash"; 780 - version = "0.1.4"; 781 - src = fetchurl { 782 - url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"; 783 - sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea"; 784 - }; 785 - }; 786 - "indent-string-4.0.0" = { 787 - name = "indent-string"; 788 - packageName = "indent-string"; 789 - version = "4.0.0"; 790 - src = fetchurl { 791 - url = "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz"; 792 - sha512 = "EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="; 793 - }; 794 - }; 795 - "infer-owner-1.0.4" = { 796 - name = "infer-owner"; 797 - packageName = "infer-owner"; 798 - version = "1.0.4"; 799 - src = fetchurl { 800 - url = "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz"; 801 - sha512 = "IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="; 802 - }; 803 - }; 804 - "inflight-1.0.6" = { 805 - name = "inflight"; 806 - packageName = "inflight"; 807 - version = "1.0.6"; 808 - src = fetchurl { 809 - url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"; 810 - sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9"; 811 - }; 812 - }; 813 - "inherits-2.0.4" = { 814 - name = "inherits"; 815 - packageName = "inherits"; 816 - version = "2.0.4"; 817 - src = fetchurl { 818 - url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"; 819 - sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="; 820 - }; 821 - }; 822 - "ini-2.0.0" = { 823 - name = "ini"; 824 - packageName = "ini"; 825 - version = "2.0.0"; 826 - src = fetchurl { 827 - url = "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz"; 828 - sha512 = "7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA=="; 829 - }; 830 - }; 831 - "inquirer-8.2.0" = { 832 - name = "inquirer"; 833 - packageName = "inquirer"; 834 - version = "8.2.0"; 835 - src = fetchurl { 836 - url = "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz"; 837 - sha512 = "0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ=="; 838 - }; 839 - }; 840 - "ip-1.1.8" = { 841 - name = "ip"; 842 - packageName = "ip"; 843 - version = "1.1.8"; 844 - src = fetchurl { 845 - url = "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz"; 846 - sha512 = "PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="; 847 - }; 848 - }; 849 - "is-core-module-2.9.0" = { 850 - name = "is-core-module"; 851 - packageName = "is-core-module"; 852 - version = "2.9.0"; 853 - src = fetchurl { 854 - url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz"; 855 - sha512 = "+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A=="; 856 - }; 857 - }; 858 - "is-docker-2.2.1" = { 859 - name = "is-docker"; 860 - packageName = "is-docker"; 861 - version = "2.2.1"; 862 - src = fetchurl { 863 - url = "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz"; 864 - sha512 = "F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="; 865 - }; 866 - }; 867 - "is-fullwidth-code-point-3.0.0" = { 868 - name = "is-fullwidth-code-point"; 869 - packageName = "is-fullwidth-code-point"; 870 - version = "3.0.0"; 871 - src = fetchurl { 872 - url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"; 873 - sha512 = "zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="; 874 - }; 875 - }; 876 - "is-interactive-1.0.0" = { 877 - name = "is-interactive"; 878 - packageName = "is-interactive"; 879 - version = "1.0.0"; 880 - src = fetchurl { 881 - url = "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz"; 882 - sha512 = "2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="; 883 - }; 884 - }; 885 - "is-lambda-1.0.1" = { 886 - name = "is-lambda"; 887 - packageName = "is-lambda"; 888 - version = "1.0.1"; 889 - src = fetchurl { 890 - url = "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz"; 891 - sha1 = "3d9877899e6a53efc0160504cde15f82e6f061d5"; 892 - }; 893 - }; 894 - "is-unicode-supported-0.1.0" = { 895 - name = "is-unicode-supported"; 896 - packageName = "is-unicode-supported"; 897 - version = "0.1.0"; 898 - src = fetchurl { 899 - url = "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz"; 900 - sha512 = "knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="; 901 - }; 902 - }; 903 - "is-wsl-2.2.0" = { 904 - name = "is-wsl"; 905 - packageName = "is-wsl"; 906 - version = "2.2.0"; 907 - src = fetchurl { 908 - url = "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz"; 909 - sha512 = "fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="; 910 - }; 911 - }; 912 - "isexe-2.0.0" = { 913 - name = "isexe"; 914 - packageName = "isexe"; 915 - version = "2.0.0"; 916 - src = fetchurl { 917 - url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"; 918 - sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10"; 919 - }; 920 - }; 921 - "json-parse-even-better-errors-2.3.1" = { 922 - name = "json-parse-even-better-errors"; 923 - packageName = "json-parse-even-better-errors"; 924 - version = "2.3.1"; 925 - src = fetchurl { 926 - url = "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"; 927 - sha512 = "xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="; 928 - }; 929 - }; 930 - "json-schema-traverse-1.0.0" = { 931 - name = "json-schema-traverse"; 932 - packageName = "json-schema-traverse"; 933 - version = "1.0.0"; 934 - src = fetchurl { 935 - url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz"; 936 - sha512 = "NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="; 937 - }; 938 - }; 939 - "jsonc-parser-3.0.0" = { 940 - name = "jsonc-parser"; 941 - packageName = "jsonc-parser"; 942 - version = "3.0.0"; 943 - src = fetchurl { 944 - url = "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz"; 945 - sha512 = "fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA=="; 946 - }; 947 - }; 948 - "jsonparse-1.3.1" = { 949 - name = "jsonparse"; 950 - packageName = "jsonparse"; 951 - version = "1.3.1"; 952 - src = fetchurl { 953 - url = "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz"; 954 - sha1 = "3f4dae4a91fac315f71062f8521cc239f1366280"; 955 - }; 956 - }; 957 - "lodash-4.17.21" = { 958 - name = "lodash"; 959 - packageName = "lodash"; 960 - version = "4.17.21"; 961 - src = fetchurl { 962 - url = "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"; 963 - sha512 = "v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="; 964 - }; 965 - }; 966 - "log-symbols-4.1.0" = { 967 - name = "log-symbols"; 968 - packageName = "log-symbols"; 969 - version = "4.1.0"; 970 - src = fetchurl { 971 - url = "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz"; 972 - sha512 = "8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="; 973 - }; 974 - }; 975 - "lru-cache-6.0.0" = { 976 - name = "lru-cache"; 977 - packageName = "lru-cache"; 978 - version = "6.0.0"; 979 - src = fetchurl { 980 - url = "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"; 981 - sha512 = "Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="; 982 - }; 983 - }; 984 - "lru-cache-7.10.1" = { 985 - name = "lru-cache"; 986 - packageName = "lru-cache"; 987 - version = "7.10.1"; 988 - src = fetchurl { 989 - url = "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz"; 990 - sha512 = "BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A=="; 991 - }; 992 - }; 993 - "magic-string-0.25.7" = { 994 - name = "magic-string"; 995 - packageName = "magic-string"; 996 - version = "0.25.7"; 997 - src = fetchurl { 998 - url = "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz"; 999 - sha512 = "4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA=="; 1000 - }; 1001 - }; 1002 - "make-fetch-happen-10.1.5" = { 1003 - name = "make-fetch-happen"; 1004 - packageName = "make-fetch-happen"; 1005 - version = "10.1.5"; 1006 - src = fetchurl { 1007 - url = "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.5.tgz"; 1008 - sha512 = "mucOj2H0Jn/ax7H9K9T1bf0p1nn/mBFa551Os7ed9xRfLEx20aZhZeLslmRYfAaAqXZUGipcs+m5KOKvOH0XKA=="; 1009 - }; 1010 - }; 1011 - "make-fetch-happen-9.1.0" = { 1012 - name = "make-fetch-happen"; 1013 - packageName = "make-fetch-happen"; 1014 - version = "9.1.0"; 1015 - src = fetchurl { 1016 - url = "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz"; 1017 - sha512 = "+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg=="; 1018 - }; 1019 - }; 1020 - "mimic-fn-2.1.0" = { 1021 - name = "mimic-fn"; 1022 - packageName = "mimic-fn"; 1023 - version = "2.1.0"; 1024 - src = fetchurl { 1025 - url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"; 1026 - sha512 = "OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="; 1027 - }; 1028 - }; 1029 - "minimatch-3.1.2" = { 1030 - name = "minimatch"; 1031 - packageName = "minimatch"; 1032 - version = "3.1.2"; 1033 - src = fetchurl { 1034 - url = "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"; 1035 - sha512 = "J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="; 1036 - }; 1037 - }; 1038 - "minimatch-5.1.0" = { 1039 - name = "minimatch"; 1040 - packageName = "minimatch"; 1041 - version = "5.1.0"; 1042 - src = fetchurl { 1043 - url = "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz"; 1044 - sha512 = "9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg=="; 1045 - }; 1046 - }; 1047 - "minipass-3.1.6" = { 1048 - name = "minipass"; 1049 - packageName = "minipass"; 1050 - version = "3.1.6"; 1051 - src = fetchurl { 1052 - url = "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz"; 1053 - sha512 = "rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ=="; 1054 - }; 1055 - }; 1056 - "minipass-collect-1.0.2" = { 1057 - name = "minipass-collect"; 1058 - packageName = "minipass-collect"; 1059 - version = "1.0.2"; 1060 - src = fetchurl { 1061 - url = "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz"; 1062 - sha512 = "6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA=="; 1063 - }; 1064 - }; 1065 - "minipass-fetch-1.4.1" = { 1066 - name = "minipass-fetch"; 1067 - packageName = "minipass-fetch"; 1068 - version = "1.4.1"; 1069 - src = fetchurl { 1070 - url = "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz"; 1071 - sha512 = "CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw=="; 1072 - }; 1073 - }; 1074 - "minipass-fetch-2.1.0" = { 1075 - name = "minipass-fetch"; 1076 - packageName = "minipass-fetch"; 1077 - version = "2.1.0"; 1078 - src = fetchurl { 1079 - url = "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz"; 1080 - sha512 = "H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg=="; 1081 - }; 1082 - }; 1083 - "minipass-flush-1.0.5" = { 1084 - name = "minipass-flush"; 1085 - packageName = "minipass-flush"; 1086 - version = "1.0.5"; 1087 - src = fetchurl { 1088 - url = "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz"; 1089 - sha512 = "JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw=="; 1090 - }; 1091 - }; 1092 - "minipass-json-stream-1.0.1" = { 1093 - name = "minipass-json-stream"; 1094 - packageName = "minipass-json-stream"; 1095 - version = "1.0.1"; 1096 - src = fetchurl { 1097 - url = "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz"; 1098 - sha512 = "ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg=="; 1099 - }; 1100 - }; 1101 - "minipass-pipeline-1.2.4" = { 1102 - name = "minipass-pipeline"; 1103 - packageName = "minipass-pipeline"; 1104 - version = "1.2.4"; 1105 - src = fetchurl { 1106 - url = "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz"; 1107 - sha512 = "xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A=="; 1108 - }; 1109 - }; 1110 - "minipass-sized-1.0.3" = { 1111 - name = "minipass-sized"; 1112 - packageName = "minipass-sized"; 1113 - version = "1.0.3"; 1114 - src = fetchurl { 1115 - url = "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz"; 1116 - sha512 = "MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g=="; 1117 - }; 1118 - }; 1119 - "minizlib-2.1.2" = { 1120 - name = "minizlib"; 1121 - packageName = "minizlib"; 1122 - version = "2.1.2"; 1123 - src = fetchurl { 1124 - url = "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"; 1125 - sha512 = "bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="; 1126 - }; 1127 - }; 1128 - "mkdirp-1.0.4" = { 1129 - name = "mkdirp"; 1130 - packageName = "mkdirp"; 1131 - version = "1.0.4"; 1132 - src = fetchurl { 1133 - url = "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"; 1134 - sha512 = "vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="; 1135 - }; 1136 - }; 1137 - "ms-2.1.2" = { 1138 - name = "ms"; 1139 - packageName = "ms"; 1140 - version = "2.1.2"; 1141 - src = fetchurl { 1142 - url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"; 1143 - sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="; 1144 - }; 1145 - }; 1146 - "mute-stream-0.0.8" = { 1147 - name = "mute-stream"; 1148 - packageName = "mute-stream"; 1149 - version = "0.0.8"; 1150 - src = fetchurl { 1151 - url = "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz"; 1152 - sha512 = "nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="; 1153 - }; 1154 - }; 1155 - "negotiator-0.6.3" = { 1156 - name = "negotiator"; 1157 - packageName = "negotiator"; 1158 - version = "0.6.3"; 1159 - src = fetchurl { 1160 - url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"; 1161 - sha512 = "+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="; 1162 - }; 1163 - }; 1164 - "node-gyp-8.4.1" = { 1165 - name = "node-gyp"; 1166 - packageName = "node-gyp"; 1167 - version = "8.4.1"; 1168 - src = fetchurl { 1169 - url = "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz"; 1170 - sha512 = "olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w=="; 1171 - }; 1172 - }; 1173 - "nopt-5.0.0" = { 1174 - name = "nopt"; 1175 - packageName = "nopt"; 1176 - version = "5.0.0"; 1177 - src = fetchurl { 1178 - url = "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz"; 1179 - sha512 = "Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ=="; 1180 - }; 1181 - }; 1182 - "npm-bundled-1.1.2" = { 1183 - name = "npm-bundled"; 1184 - packageName = "npm-bundled"; 1185 - version = "1.1.2"; 1186 - src = fetchurl { 1187 - url = "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz"; 1188 - sha512 = "x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ=="; 1189 - }; 1190 - }; 1191 - "npm-install-checks-4.0.0" = { 1192 - name = "npm-install-checks"; 1193 - packageName = "npm-install-checks"; 1194 - version = "4.0.0"; 1195 - src = fetchurl { 1196 - url = "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz"; 1197 - sha512 = "09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w=="; 1198 - }; 1199 - }; 1200 - "npm-normalize-package-bin-1.0.1" = { 1201 - name = "npm-normalize-package-bin"; 1202 - packageName = "npm-normalize-package-bin"; 1203 - version = "1.0.1"; 1204 - src = fetchurl { 1205 - url = "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz"; 1206 - sha512 = "EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="; 1207 - }; 1208 - }; 1209 - "npm-package-arg-8.1.5" = { 1210 - name = "npm-package-arg"; 1211 - packageName = "npm-package-arg"; 1212 - version = "8.1.5"; 1213 - src = fetchurl { 1214 - url = "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz"; 1215 - sha512 = "LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q=="; 1216 - }; 1217 - }; 1218 - "npm-packlist-3.0.0" = { 1219 - name = "npm-packlist"; 1220 - packageName = "npm-packlist"; 1221 - version = "3.0.0"; 1222 - src = fetchurl { 1223 - url = "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz"; 1224 - sha512 = "L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ=="; 1225 - }; 1226 - }; 1227 - "npm-pick-manifest-6.1.1" = { 1228 - name = "npm-pick-manifest"; 1229 - packageName = "npm-pick-manifest"; 1230 - version = "6.1.1"; 1231 - src = fetchurl { 1232 - url = "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz"; 1233 - sha512 = "dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA=="; 1234 - }; 1235 - }; 1236 - "npm-registry-fetch-12.0.2" = { 1237 - name = "npm-registry-fetch"; 1238 - packageName = "npm-registry-fetch"; 1239 - version = "12.0.2"; 1240 - src = fetchurl { 1241 - url = "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz"; 1242 - sha512 = "Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA=="; 1243 - }; 1244 - }; 1245 - "npmlog-6.0.2" = { 1246 - name = "npmlog"; 1247 - packageName = "npmlog"; 1248 - version = "6.0.2"; 1249 - src = fetchurl { 1250 - url = "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz"; 1251 - sha512 = "/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg=="; 1252 - }; 1253 - }; 1254 - "once-1.4.0" = { 1255 - name = "once"; 1256 - packageName = "once"; 1257 - version = "1.4.0"; 1258 - src = fetchurl { 1259 - url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz"; 1260 - sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1"; 1261 - }; 1262 - }; 1263 - "onetime-5.1.2" = { 1264 - name = "onetime"; 1265 - packageName = "onetime"; 1266 - version = "5.1.2"; 1267 - src = fetchurl { 1268 - url = "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz"; 1269 - sha512 = "kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="; 1270 - }; 1271 - }; 1272 - "open-8.4.0" = { 1273 - name = "open"; 1274 - packageName = "open"; 1275 - version = "8.4.0"; 1276 - src = fetchurl { 1277 - url = "https://registry.npmjs.org/open/-/open-8.4.0.tgz"; 1278 - sha512 = "XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q=="; 1279 - }; 1280 - }; 1281 - "ora-5.4.1" = { 1282 - name = "ora"; 1283 - packageName = "ora"; 1284 - version = "5.4.1"; 1285 - src = fetchurl { 1286 - url = "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz"; 1287 - sha512 = "5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="; 1288 - }; 1289 - }; 1290 - "os-tmpdir-1.0.2" = { 1291 - name = "os-tmpdir"; 1292 - packageName = "os-tmpdir"; 1293 - version = "1.0.2"; 1294 - src = fetchurl { 1295 - url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"; 1296 - sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274"; 1297 - }; 1298 - }; 1299 - "p-map-4.0.0" = { 1300 - name = "p-map"; 1301 - packageName = "p-map"; 1302 - version = "4.0.0"; 1303 - src = fetchurl { 1304 - url = "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz"; 1305 - sha512 = "/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="; 1306 - }; 1307 - }; 1308 - "pacote-12.0.3" = { 1309 - name = "pacote"; 1310 - packageName = "pacote"; 1311 - version = "12.0.3"; 1312 - src = fetchurl { 1313 - url = "https://registry.npmjs.org/pacote/-/pacote-12.0.3.tgz"; 1314 - sha512 = "CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow=="; 1315 - }; 1316 - }; 1317 - "path-is-absolute-1.0.1" = { 1318 - name = "path-is-absolute"; 1319 - packageName = "path-is-absolute"; 1320 - version = "1.0.1"; 1321 - src = fetchurl { 1322 - url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; 1323 - sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"; 1324 - }; 1325 - }; 1326 - "path-parse-1.0.7" = { 1327 - name = "path-parse"; 1328 - packageName = "path-parse"; 1329 - version = "1.0.7"; 1330 - src = fetchurl { 1331 - url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"; 1332 - sha512 = "LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="; 1333 - }; 1334 - }; 1335 - "promise-inflight-1.0.1" = { 1336 - name = "promise-inflight"; 1337 - packageName = "promise-inflight"; 1338 - version = "1.0.1"; 1339 - src = fetchurl { 1340 - url = "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz"; 1341 - sha1 = "98472870bf228132fcbdd868129bad12c3c029e3"; 1342 - }; 1343 - }; 1344 - "promise-retry-2.0.1" = { 1345 - name = "promise-retry"; 1346 - packageName = "promise-retry"; 1347 - version = "2.0.1"; 1348 - src = fetchurl { 1349 - url = "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz"; 1350 - sha512 = "y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g=="; 1351 - }; 1352 - }; 1353 - "punycode-2.1.1" = { 1354 - name = "punycode"; 1355 - packageName = "punycode"; 1356 - version = "2.1.1"; 1357 - src = fetchurl { 1358 - url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"; 1359 - sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="; 1360 - }; 1361 - }; 1362 - "read-package-json-fast-2.0.3" = { 1363 - name = "read-package-json-fast"; 1364 - packageName = "read-package-json-fast"; 1365 - version = "2.0.3"; 1366 - src = fetchurl { 1367 - url = "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz"; 1368 - sha512 = "W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ=="; 1369 - }; 1370 - }; 1371 - "readable-stream-3.6.0" = { 1372 - name = "readable-stream"; 1373 - packageName = "readable-stream"; 1374 - version = "3.6.0"; 1375 - src = fetchurl { 1376 - url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"; 1377 - sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA=="; 1378 - }; 1379 - }; 1380 - "require-from-string-2.0.2" = { 1381 - name = "require-from-string"; 1382 - packageName = "require-from-string"; 1383 - version = "2.0.2"; 1384 - src = fetchurl { 1385 - url = "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz"; 1386 - sha512 = "Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="; 1387 - }; 1388 - }; 1389 - "resolve-1.22.0" = { 1390 - name = "resolve"; 1391 - packageName = "resolve"; 1392 - version = "1.22.0"; 1393 - src = fetchurl { 1394 - url = "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz"; 1395 - sha512 = "Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw=="; 1396 - }; 1397 - }; 1398 - "restore-cursor-3.1.0" = { 1399 - name = "restore-cursor"; 1400 - packageName = "restore-cursor"; 1401 - version = "3.1.0"; 1402 - src = fetchurl { 1403 - url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz"; 1404 - sha512 = "l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="; 1405 - }; 1406 - }; 1407 - "retry-0.12.0" = { 1408 - name = "retry"; 1409 - packageName = "retry"; 1410 - version = "0.12.0"; 1411 - src = fetchurl { 1412 - url = "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz"; 1413 - sha1 = "1b42a6266a21f07421d1b0b54b7dc167b01c013b"; 1414 - }; 1415 - }; 1416 - "rimraf-3.0.2" = { 1417 - name = "rimraf"; 1418 - packageName = "rimraf"; 1419 - version = "3.0.2"; 1420 - src = fetchurl { 1421 - url = "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"; 1422 - sha512 = "JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="; 1423 - }; 1424 - }; 1425 - "run-async-2.4.1" = { 1426 - name = "run-async"; 1427 - packageName = "run-async"; 1428 - version = "2.4.1"; 1429 - src = fetchurl { 1430 - url = "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz"; 1431 - sha512 = "tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ=="; 1432 - }; 1433 - }; 1434 - "rxjs-6.6.7" = { 1435 - name = "rxjs"; 1436 - packageName = "rxjs"; 1437 - version = "6.6.7"; 1438 - src = fetchurl { 1439 - url = "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz"; 1440 - sha512 = "hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ=="; 1441 - }; 1442 - }; 1443 - "rxjs-7.5.5" = { 1444 - name = "rxjs"; 1445 - packageName = "rxjs"; 1446 - version = "7.5.5"; 1447 - src = fetchurl { 1448 - url = "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz"; 1449 - sha512 = "sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw=="; 1450 - }; 1451 - }; 1452 - "safe-buffer-5.2.1" = { 1453 - name = "safe-buffer"; 1454 - packageName = "safe-buffer"; 1455 - version = "5.2.1"; 1456 - src = fetchurl { 1457 - url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"; 1458 - sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="; 1459 - }; 1460 - }; 1461 - "safer-buffer-2.1.2" = { 1462 - name = "safer-buffer"; 1463 - packageName = "safer-buffer"; 1464 - version = "2.1.2"; 1465 - src = fetchurl { 1466 - url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"; 1467 - sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="; 1468 - }; 1469 - }; 1470 - "semver-7.3.5" = { 1471 - name = "semver"; 1472 - packageName = "semver"; 1473 - version = "7.3.5"; 1474 - src = fetchurl { 1475 - url = "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz"; 1476 - sha512 = "PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ=="; 1477 - }; 1478 - }; 1479 - "set-blocking-2.0.0" = { 1480 - name = "set-blocking"; 1481 - packageName = "set-blocking"; 1482 - version = "2.0.0"; 1483 - src = fetchurl { 1484 - url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"; 1485 - sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7"; 1486 - }; 1487 - }; 1488 - "signal-exit-3.0.7" = { 1489 - name = "signal-exit"; 1490 - packageName = "signal-exit"; 1491 - version = "3.0.7"; 1492 - src = fetchurl { 1493 - url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"; 1494 - sha512 = "wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="; 1495 - }; 1496 - }; 1497 - "smart-buffer-4.2.0" = { 1498 - name = "smart-buffer"; 1499 - packageName = "smart-buffer"; 1500 - version = "4.2.0"; 1501 - src = fetchurl { 1502 - url = "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"; 1503 - sha512 = "94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="; 1504 - }; 1505 - }; 1506 - "socks-2.6.2" = { 1507 - name = "socks"; 1508 - packageName = "socks"; 1509 - version = "2.6.2"; 1510 - src = fetchurl { 1511 - url = "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz"; 1512 - sha512 = "zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA=="; 1513 - }; 1514 - }; 1515 - "socks-proxy-agent-6.2.0" = { 1516 - name = "socks-proxy-agent"; 1517 - packageName = "socks-proxy-agent"; 1518 - version = "6.2.0"; 1519 - src = fetchurl { 1520 - url = "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz"; 1521 - sha512 = "wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ=="; 1522 - }; 1523 - }; 1524 - "source-map-0.7.3" = { 1525 - name = "source-map"; 1526 - packageName = "source-map"; 1527 - version = "0.7.3"; 1528 - src = fetchurl { 1529 - url = "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz"; 1530 - sha512 = "CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="; 1531 - }; 1532 - }; 1533 - "sourcemap-codec-1.4.8" = { 1534 - name = "sourcemap-codec"; 1535 - packageName = "sourcemap-codec"; 1536 - version = "1.4.8"; 1537 - src = fetchurl { 1538 - url = "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"; 1539 - sha512 = "9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="; 1540 - }; 1541 - }; 1542 - "ssri-8.0.1" = { 1543 - name = "ssri"; 1544 - packageName = "ssri"; 1545 - version = "8.0.1"; 1546 - src = fetchurl { 1547 - url = "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz"; 1548 - sha512 = "97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ=="; 1549 - }; 1550 - }; 1551 - "ssri-9.0.1" = { 1552 - name = "ssri"; 1553 - packageName = "ssri"; 1554 - version = "9.0.1"; 1555 - src = fetchurl { 1556 - url = "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz"; 1557 - sha512 = "o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q=="; 1558 - }; 1559 - }; 1560 - "string-width-4.2.3" = { 1561 - name = "string-width"; 1562 - packageName = "string-width"; 1563 - version = "4.2.3"; 1564 - src = fetchurl { 1565 - url = "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"; 1566 - sha512 = "wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="; 1567 - }; 1568 - }; 1569 - "string_decoder-1.3.0" = { 1570 - name = "string_decoder"; 1571 - packageName = "string_decoder"; 1572 - version = "1.3.0"; 1573 - src = fetchurl { 1574 - url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"; 1575 - sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="; 1576 - }; 1577 - }; 1578 - "strip-ansi-6.0.1" = { 1579 - name = "strip-ansi"; 1580 - packageName = "strip-ansi"; 1581 - version = "6.0.1"; 1582 - src = fetchurl { 1583 - url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"; 1584 - sha512 = "Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="; 1585 - }; 1586 - }; 1587 - "supports-color-7.2.0" = { 1588 - name = "supports-color"; 1589 - packageName = "supports-color"; 1590 - version = "7.2.0"; 1591 - src = fetchurl { 1592 - url = "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"; 1593 - sha512 = "qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="; 1594 - }; 1595 - }; 1596 - "supports-preserve-symlinks-flag-1.0.0" = { 1597 - name = "supports-preserve-symlinks-flag"; 1598 - packageName = "supports-preserve-symlinks-flag"; 1599 - version = "1.0.0"; 1600 - src = fetchurl { 1601 - url = "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"; 1602 - sha512 = "ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="; 1603 - }; 1604 - }; 1605 - "symbol-observable-4.0.0" = { 1606 - name = "symbol-observable"; 1607 - packageName = "symbol-observable"; 1608 - version = "4.0.0"; 1609 - src = fetchurl { 1610 - url = "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz"; 1611 - sha512 = "b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ=="; 1612 - }; 1613 - }; 1614 - "tar-6.1.11" = { 1615 - name = "tar"; 1616 - packageName = "tar"; 1617 - version = "6.1.11"; 1618 - src = fetchurl { 1619 - url = "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz"; 1620 - sha512 = "an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA=="; 1621 - }; 1622 - }; 1623 - "through-2.3.8" = { 1624 - name = "through"; 1625 - packageName = "through"; 1626 - version = "2.3.8"; 1627 - src = fetchurl { 1628 - url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz"; 1629 - sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"; 1630 - }; 1631 - }; 1632 - "tmp-0.0.33" = { 1633 - name = "tmp"; 1634 - packageName = "tmp"; 1635 - version = "0.0.33"; 1636 - src = fetchurl { 1637 - url = "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz"; 1638 - sha512 = "jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="; 1639 - }; 1640 - }; 1641 - "tslib-1.14.1" = { 1642 - name = "tslib"; 1643 - packageName = "tslib"; 1644 - version = "1.14.1"; 1645 - src = fetchurl { 1646 - url = "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"; 1647 - sha512 = "Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="; 1648 - }; 1649 - }; 1650 - "tslib-2.4.0" = { 1651 - name = "tslib"; 1652 - packageName = "tslib"; 1653 - version = "2.4.0"; 1654 - src = fetchurl { 1655 - url = "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz"; 1656 - sha512 = "d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="; 1657 - }; 1658 - }; 1659 - "type-fest-0.21.3" = { 1660 - name = "type-fest"; 1661 - packageName = "type-fest"; 1662 - version = "0.21.3"; 1663 - src = fetchurl { 1664 - url = "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz"; 1665 - sha512 = "t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="; 1666 - }; 1667 - }; 1668 - "unique-filename-1.1.1" = { 1669 - name = "unique-filename"; 1670 - packageName = "unique-filename"; 1671 - version = "1.1.1"; 1672 - src = fetchurl { 1673 - url = "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz"; 1674 - sha512 = "Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ=="; 1675 - }; 1676 - }; 1677 - "unique-slug-2.0.2" = { 1678 - name = "unique-slug"; 1679 - packageName = "unique-slug"; 1680 - version = "2.0.2"; 1681 - src = fetchurl { 1682 - url = "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz"; 1683 - sha512 = "zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w=="; 1684 - }; 1685 - }; 1686 - "uri-js-4.4.1" = { 1687 - name = "uri-js"; 1688 - packageName = "uri-js"; 1689 - version = "4.4.1"; 1690 - src = fetchurl { 1691 - url = "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"; 1692 - sha512 = "7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="; 1693 - }; 1694 - }; 1695 - "util-deprecate-1.0.2" = { 1696 - name = "util-deprecate"; 1697 - packageName = "util-deprecate"; 1698 - version = "1.0.2"; 1699 - src = fetchurl { 1700 - url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"; 1701 - sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf"; 1702 - }; 1703 - }; 1704 - "uuid-8.3.2" = { 1705 - name = "uuid"; 1706 - packageName = "uuid"; 1707 - version = "8.3.2"; 1708 - src = fetchurl { 1709 - url = "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz"; 1710 - sha512 = "+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="; 1711 - }; 1712 - }; 1713 - "validate-npm-package-name-3.0.0" = { 1714 - name = "validate-npm-package-name"; 1715 - packageName = "validate-npm-package-name"; 1716 - version = "3.0.0"; 1717 - src = fetchurl { 1718 - url = "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz"; 1719 - sha1 = "5fa912d81eb7d0c74afc140de7317f0ca7df437e"; 1720 - }; 1721 - }; 1722 - "wcwidth-1.0.1" = { 1723 - name = "wcwidth"; 1724 - packageName = "wcwidth"; 1725 - version = "1.0.1"; 1726 - src = fetchurl { 1727 - url = "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz"; 1728 - sha1 = "f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"; 1729 - }; 1730 - }; 1731 - "which-2.0.2" = { 1732 - name = "which"; 1733 - packageName = "which"; 1734 - version = "2.0.2"; 1735 - src = fetchurl { 1736 - url = "https://registry.npmjs.org/which/-/which-2.0.2.tgz"; 1737 - sha512 = "BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="; 1738 - }; 1739 - }; 1740 - "wide-align-1.1.5" = { 1741 - name = "wide-align"; 1742 - packageName = "wide-align"; 1743 - version = "1.1.5"; 1744 - src = fetchurl { 1745 - url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz"; 1746 - sha512 = "eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg=="; 1747 - }; 1748 - }; 1749 - "wrappy-1.0.2" = { 1750 - name = "wrappy"; 1751 - packageName = "wrappy"; 1752 - version = "1.0.2"; 1753 - src = fetchurl { 1754 - url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"; 1755 - sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"; 1756 - }; 1757 - }; 1758 - "yallist-4.0.0" = { 1759 - name = "yallist"; 1760 - packageName = "yallist"; 1761 - version = "4.0.0"; 1762 - src = fetchurl { 1763 - url = "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"; 1764 - sha512 = "3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="; 1765 - }; 1766 - }; 1767 - }; 1768 - in { 1769 - "@angular/cli" = nodeEnv.buildNodePackage { 1770 - name = "_at_angular_slash_cli"; 1771 - packageName = "@angular/cli"; 1772 - version = "13.3.6"; 1773 - src = fetchurl { 1774 - url = "https://registry.npmjs.org/@angular/cli/-/cli-13.3.6.tgz"; 1775 - sha512 = "+OC7uspa8oDGQzcpml3DI8XyLvYurhSFhcmLPsyY/naHAV78NKSNf3dIWMPNozAioDzkZXPZXH0dwSdb+cOeQA=="; 1776 - }; 1777 - dependencies = [ 1778 - sources."@angular-devkit/architect-0.1303.6" 1779 - sources."@angular-devkit/core-13.3.6" 1780 - sources."@angular-devkit/schematics-13.3.6" 1781 - sources."@gar/promisify-1.1.3" 1782 - sources."@npmcli/fs-1.1.1" 1783 - sources."@npmcli/git-2.1.0" 1784 - sources."@npmcli/installed-package-contents-1.0.7" 1785 - sources."@npmcli/move-file-1.1.2" 1786 - sources."@npmcli/node-gyp-1.0.3" 1787 - sources."@npmcli/promise-spawn-1.3.2" 1788 - sources."@npmcli/run-script-2.0.0" 1789 - sources."@schematics/angular-13.3.6" 1790 - sources."@tootallnate/once-1.1.2" 1791 - sources."@yarnpkg/lockfile-1.1.0" 1792 - sources."abbrev-1.1.1" 1793 - sources."agent-base-6.0.2" 1794 - sources."agentkeepalive-4.2.1" 1795 - sources."aggregate-error-3.1.0" 1796 - sources."ajv-8.9.0" 1797 - sources."ajv-formats-2.1.1" 1798 - sources."ansi-colors-4.1.1" 1799 - sources."ansi-escapes-4.3.2" 1800 - sources."ansi-regex-5.0.1" 1801 - sources."ansi-styles-4.3.0" 1802 - sources."aproba-2.0.0" 1803 - sources."are-we-there-yet-3.0.0" 1804 - sources."balanced-match-1.0.2" 1805 - sources."base64-js-1.5.1" 1806 - sources."bl-4.1.0" 1807 - sources."brace-expansion-1.1.11" 1808 - sources."buffer-5.7.1" 1809 - sources."builtins-1.0.3" 1810 - sources."cacache-15.3.0" 1811 - sources."chalk-4.1.2" 1812 - sources."chardet-0.7.0" 1813 - sources."chownr-2.0.0" 1814 - sources."clean-stack-2.2.0" 1815 - sources."cli-cursor-3.1.0" 1816 - sources."cli-spinners-2.6.1" 1817 - sources."cli-width-3.0.0" 1818 - sources."clone-1.0.4" 1819 - sources."color-convert-2.0.1" 1820 - sources."color-name-1.1.4" 1821 - sources."color-support-1.1.3" 1822 - sources."concat-map-0.0.1" 1823 - sources."console-control-strings-1.1.0" 1824 - sources."debug-4.3.3" 1825 - sources."defaults-1.0.3" 1826 - sources."define-lazy-prop-2.0.0" 1827 - sources."delegates-1.0.0" 1828 - sources."depd-1.1.2" 1829 - sources."emoji-regex-8.0.0" 1830 - (sources."encoding-0.1.13" 1831 - // { 1832 - dependencies = [ 1833 - sources."iconv-lite-0.6.3" 1834 - ]; 1835 - }) 1836 - sources."env-paths-2.2.1" 1837 - sources."err-code-2.0.3" 1838 - sources."escape-string-regexp-1.0.5" 1839 - sources."external-editor-3.1.0" 1840 - sources."fast-deep-equal-3.1.3" 1841 - sources."fast-json-stable-stringify-2.1.0" 1842 - sources."figures-3.2.0" 1843 - sources."fs-minipass-2.1.0" 1844 - sources."fs.realpath-1.0.0" 1845 - sources."function-bind-1.1.1" 1846 - sources."gauge-4.0.4" 1847 - sources."glob-7.2.3" 1848 - sources."graceful-fs-4.2.10" 1849 - sources."has-1.0.3" 1850 - sources."has-flag-4.0.0" 1851 - sources."has-unicode-2.0.1" 1852 - sources."hosted-git-info-4.1.0" 1853 - sources."http-cache-semantics-4.1.0" 1854 - sources."http-proxy-agent-4.0.1" 1855 - sources."https-proxy-agent-5.0.1" 1856 - sources."humanize-ms-1.2.1" 1857 - sources."iconv-lite-0.4.24" 1858 - sources."ieee754-1.2.1" 1859 - sources."ignore-walk-4.0.1" 1860 - sources."imurmurhash-0.1.4" 1861 - sources."indent-string-4.0.0" 1862 - sources."infer-owner-1.0.4" 1863 - sources."inflight-1.0.6" 1864 - sources."inherits-2.0.4" 1865 - sources."ini-2.0.0" 1866 - (sources."inquirer-8.2.0" 1867 - // { 1868 - dependencies = [ 1869 - sources."rxjs-7.5.5" 1870 - sources."tslib-2.4.0" 1871 - ]; 1872 - }) 1873 - sources."ip-1.1.8" 1874 - sources."is-core-module-2.9.0" 1875 - sources."is-docker-2.2.1" 1876 - sources."is-fullwidth-code-point-3.0.0" 1877 - sources."is-interactive-1.0.0" 1878 - sources."is-lambda-1.0.1" 1879 - sources."is-unicode-supported-0.1.0" 1880 - sources."is-wsl-2.2.0" 1881 - sources."isexe-2.0.0" 1882 - sources."json-parse-even-better-errors-2.3.1" 1883 - sources."json-schema-traverse-1.0.0" 1884 - sources."jsonc-parser-3.0.0" 1885 - sources."jsonparse-1.3.1" 1886 - sources."lodash-4.17.21" 1887 - sources."log-symbols-4.1.0" 1888 - sources."lru-cache-6.0.0" 1889 - sources."magic-string-0.25.7" 1890 - sources."make-fetch-happen-9.1.0" 1891 - sources."mimic-fn-2.1.0" 1892 - sources."minimatch-3.1.2" 1893 - sources."minipass-3.1.6" 1894 - sources."minipass-collect-1.0.2" 1895 - sources."minipass-fetch-1.4.1" 1896 - sources."minipass-flush-1.0.5" 1897 - sources."minipass-json-stream-1.0.1" 1898 - sources."minipass-pipeline-1.2.4" 1899 - sources."minipass-sized-1.0.3" 1900 - sources."minizlib-2.1.2" 1901 - sources."mkdirp-1.0.4" 1902 - sources."ms-2.1.2" 1903 - sources."mute-stream-0.0.8" 1904 - sources."negotiator-0.6.3" 1905 - sources."node-gyp-8.4.1" 1906 - sources."nopt-5.0.0" 1907 - sources."npm-bundled-1.1.2" 1908 - sources."npm-install-checks-4.0.0" 1909 - sources."npm-normalize-package-bin-1.0.1" 1910 - sources."npm-package-arg-8.1.5" 1911 - sources."npm-packlist-3.0.0" 1912 - sources."npm-pick-manifest-6.1.1" 1913 - (sources."npm-registry-fetch-12.0.2" 1914 - // { 1915 - dependencies = [ 1916 - sources."@npmcli/fs-2.1.0" 1917 - sources."@npmcli/move-file-2.0.0" 1918 - sources."@tootallnate/once-2.0.0" 1919 - sources."brace-expansion-2.0.1" 1920 - sources."cacache-16.1.0" 1921 - sources."glob-8.0.3" 1922 - sources."http-proxy-agent-5.0.0" 1923 - sources."lru-cache-7.10.1" 1924 - (sources."make-fetch-happen-10.1.5" 1925 - // { 1926 - dependencies = [ 1927 - sources."minipass-fetch-2.1.0" 1928 - ]; 1929 - }) 1930 - sources."minimatch-5.1.0" 1931 - sources."ssri-9.0.1" 1932 - ]; 1933 - }) 1934 - sources."npmlog-6.0.2" 1935 - sources."once-1.4.0" 1936 - sources."onetime-5.1.2" 1937 - sources."open-8.4.0" 1938 - sources."ora-5.4.1" 1939 - sources."os-tmpdir-1.0.2" 1940 - sources."p-map-4.0.0" 1941 - sources."pacote-12.0.3" 1942 - sources."path-is-absolute-1.0.1" 1943 - sources."path-parse-1.0.7" 1944 - sources."promise-inflight-1.0.1" 1945 - sources."promise-retry-2.0.1" 1946 - sources."punycode-2.1.1" 1947 - sources."read-package-json-fast-2.0.3" 1948 - sources."readable-stream-3.6.0" 1949 - sources."require-from-string-2.0.2" 1950 - sources."resolve-1.22.0" 1951 - sources."restore-cursor-3.1.0" 1952 - sources."retry-0.12.0" 1953 - sources."rimraf-3.0.2" 1954 - sources."run-async-2.4.1" 1955 - sources."rxjs-6.6.7" 1956 - sources."safe-buffer-5.2.1" 1957 - sources."safer-buffer-2.1.2" 1958 - sources."semver-7.3.5" 1959 - sources."set-blocking-2.0.0" 1960 - sources."signal-exit-3.0.7" 1961 - sources."smart-buffer-4.2.0" 1962 - sources."socks-2.6.2" 1963 - sources."socks-proxy-agent-6.2.0" 1964 - sources."source-map-0.7.3" 1965 - sources."sourcemap-codec-1.4.8" 1966 - sources."ssri-8.0.1" 1967 - sources."string-width-4.2.3" 1968 - sources."string_decoder-1.3.0" 1969 - sources."strip-ansi-6.0.1" 1970 - sources."supports-color-7.2.0" 1971 - sources."supports-preserve-symlinks-flag-1.0.0" 1972 - sources."symbol-observable-4.0.0" 1973 - sources."tar-6.1.11" 1974 - sources."through-2.3.8" 1975 - sources."tmp-0.0.33" 1976 - sources."tslib-1.14.1" 1977 - sources."type-fest-0.21.3" 1978 - sources."unique-filename-1.1.1" 1979 - sources."unique-slug-2.0.2" 1980 - sources."uri-js-4.4.1" 1981 - sources."util-deprecate-1.0.2" 1982 - sources."uuid-8.3.2" 1983 - sources."validate-npm-package-name-3.0.0" 1984 - sources."wcwidth-1.0.1" 1985 - sources."which-2.0.2" 1986 - sources."wide-align-1.1.5" 1987 - sources."wrappy-1.0.2" 1988 - sources."yallist-4.0.0" 1989 - ]; 1990 - buildInputs = globalBuildInputs; 1991 - meta = { 1992 - description = "CLI tool for Angular"; 1993 - homepage = "https://github.com/angular/angular-cli"; 1994 - license = "MIT"; 1995 - }; 1996 - production = true; 1997 - bypassCache = true; 1998 - reconstructLock = true; 1999 - }; 2000 - }
···
-14
packages/nodePackages/override.nix
··· 1 - { 2 - pkgs, 3 - system, 4 - }: let 5 - nodePackages = import ./default.nix { 6 - inherit pkgs system; 7 - }; 8 - in 9 - nodePackages 10 - // { 11 - "@angular/cli" = nodePackages."@angular/cli".overrideAttrs (_: { 12 - NG_CLI_ANALYTICS = false; 13 - }); 14 - }
···
+1
packages/rofi-unicode/default.nix
··· 8 stdenvNoCC.mkDerivation (self: { 9 pname = "rofiemoji-rofiunicode"; 10 version = "${source.rev}"; 11 12 src = fetchgit { 13 inherit (source) rev url sha256;
··· 8 stdenvNoCC.mkDerivation (self: { 9 pname = "rofiemoji-rofiunicode"; 10 version = "${source.rev}"; 11 + strictDeps = true; 12 13 src = fetchgit { 14 inherit (source) rev url sha256;
+21 -4
parts/auxiliary.nix
··· 1 - {self, ...}: { 2 perSystem = { 3 config, 4 pkgs, ··· 7 system, 8 ... 9 }: { 10 - formatter = self.packages.${system}.alejandra; 11 12 devShells.default = pkgs.mkShell { 13 packages = builtins.attrValues { 14 - inherit (self'.packages) nil alejandra; 15 - inherit (inputs'.unstable.legacyPackages) npins rust-analyzer rustc cargo rustfmt clippy openssl pkg-config sops age ssh-to-age; 16 }; 17 }; 18 };
··· 1 + _: { 2 perSystem = { 3 config, 4 pkgs, ··· 7 system, 8 ... 9 }: { 10 + formatter = pkgs.alejandra; 11 + 12 + apps.rotate.meta.description = "rotate keys for sops"; 13 + apps.rotate.program = let 14 + sopsrotate = pkgs.writeShellScript "sops-rotate" '' 15 + file=$1 16 + 17 + printf "Rotating %s...\n" "''${file}" 18 + ${pkgs.sops}/bin/sops -r -i "''${file}" 19 + ''; 20 + rotate = pkgs.writeShellScript "rotate" '' 21 + ${pkgs.git}/bin/git switch -c rotate-$(${pkgs.coreutils}/bin/date -Idate) >/dev/null || true 22 + 23 + ${pkgs.findutils}/bin/find secrets -type f -exec ${sopsrotate} '{}' \; 24 + 25 + ${pkgs.git}/bin/git add secrets 26 + ${pkgs.git}/bin/git commit -m "chore: rotate secrets $(${pkgs.coreutils}/bin/date -Idate)" 27 + ''; 28 + in "${rotate}"; 29 30 devShells.default = pkgs.mkShell { 31 packages = builtins.attrValues { 32 + inherit (pkgs) npins sops age ssh-to-age nil alejandra; 33 }; 34 }; 35 };
+13 -7
parts/home_configs.nix
··· 1 { 2 self, 3 - nixpkgs, 4 inputs, 5 config, 6 lib, 7 ... 8 }: let 9 cfg = config.nobbz.homeConfigurations; 10 11 - configs = builtins.mapAttrs (_: config: config.finalHome) cfg; 12 13 - packages = builtins.attrValues (builtins.mapAttrs (_: config: config.packageModule) cfg); 14 in { 15 options = { 16 nobbz.homeConfigurations = lib.mkOption { ··· 20 ... 21 }: { 22 options = { 23 nixpkgs = lib.mkOption { 24 type = lib.types.unspecified; 25 default = inputs.nixpkgs; ··· 83 }; 84 }; 85 86 - config = { 87 - entryPoint = import "${self}/home/configurations/${config.username}@${config.hostname}.nix" (inputs // {inherit self;}); 88 base = 89 if lib.strings.hasSuffix "-darwin" config.system 90 then "Users" ··· 95 [ 96 config.entryPoint 97 {home = {inherit (config) username homeDirectory;};} 98 - {systemd.user.startServices = "legacy";} 99 inputs.nixos-vscode-server.nixosModules.home 100 inputs.sops-nix.homeManagerModules.sops 101 ] 102 ++ config.modules 103 - ++ builtins.attrValues self.homeModules 104 ++ builtins.attrValues self.mixedModules; 105 106 packageName = "home/config/${name}"; ··· 110 111 finalHome = inputs.home-manager.lib.homeManagerConfiguration { 112 pkgs = config.nixpkgs.legacyPackages.${config.system}; 113 modules = config.finalModules; 114 }; 115 };
··· 1 { 2 self, 3 inputs, 4 config, 5 lib, 6 + npins, 7 ... 8 }: let 9 cfg = config.nobbz.homeConfigurations; 10 11 + enabledCfgs = lib.filterAttrs (_: config: config.enable) cfg; 12 13 + configs = builtins.mapAttrs (_: config: config.finalHome) enabledCfgs; 14 + 15 + packages = builtins.attrValues (builtins.mapAttrs (_: config: config.packageModule) enabledCfgs); 16 in { 17 options = { 18 nobbz.homeConfigurations = lib.mkOption { ··· 22 ... 23 }: { 24 options = { 25 + enable = lib.mkEnableOption "Enable this home configuration." // {default = true;}; 26 + 27 nixpkgs = lib.mkOption { 28 type = lib.types.unspecified; 29 default = inputs.nixpkgs; ··· 87 }; 88 }; 89 90 + config = lib.mkIf config.enable { 91 + entryPoint = import "${self}/home/configurations/${config.username}_at_${config.hostname}.nix" (inputs // {inherit self;}); 92 base = 93 if lib.strings.hasSuffix "-darwin" config.system 94 then "Users" ··· 99 [ 100 config.entryPoint 101 {home = {inherit (config) username homeDirectory;};} 102 + {systemd.user.startServices = "sd-switch";} 103 + {news.display = "silent";} 104 inputs.nixos-vscode-server.nixosModules.home 105 inputs.sops-nix.homeManagerModules.sops 106 ] 107 ++ config.modules 108 + ++ builtins.attrValues self.homeManagerModules 109 ++ builtins.attrValues self.mixedModules; 110 111 packageName = "home/config/${name}"; ··· 115 116 finalHome = inputs.home-manager.lib.homeManagerConfiguration { 117 pkgs = config.nixpkgs.legacyPackages.${config.system}; 118 + extraSpecialArgs.npins = npins; 119 modules = config.finalModules; 120 }; 121 };
+21
parts/home_modules.nix
···
··· 1 + { 2 + self, 3 + inputs, 4 + config, 5 + lib, 6 + ... 7 + }: let 8 + cfg = config.nobbz.homeManagerModules; 9 + 10 + inherit (import ./module_helpers.nix lib inputs) submodule; 11 + 12 + modules = builtins.mapAttrs (_: config: config.wrappedModule) cfg; 13 + in { 14 + options = { 15 + nobbz.homeManagerModules = lib.mkOption { 16 + type = lib.types.attrsOf submodule; 17 + }; 18 + }; 19 + 20 + config.flake.homeManagerModules = modules; 21 + }
+51
parts/module_helpers.nix
···
··· 1 + lib: inputs: let 2 + inherit (builtins) isString isPath; 3 + 4 + callModule = module: args: let 5 + moduleToImport = 6 + if args == null 7 + then module 8 + else import module args; 9 + in 10 + {imports = [moduleToImport];} 11 + // lib.optionalAttrs (builtins.any (p: p module) [isPath isString]) {_file = module;}; 12 + 13 + from = lib.types.oneOf [lib.types.str lib.types.path]; 14 + 15 + submodule = lib.types.coercedTo from (m: {module = m;}) (lib.types.submodule ({ 16 + name, 17 + config, 18 + ... 19 + }: { 20 + options = { 21 + name = lib.mkOption { 22 + type = lib.types.str; 23 + default = name; 24 + }; 25 + 26 + module = lib.mkOption { 27 + type = lib.types.oneOf [ 28 + lib.types.str 29 + lib.types.path 30 + # TODO: add sets and functions 31 + ]; 32 + }; 33 + 34 + extraArgs = lib.mkOption { 35 + type = lib.types.nullOr (lib.types.attrsOf lib.types.unspecified); 36 + default = inputs; 37 + }; 38 + 39 + wrappedModule = lib.mkOption { 40 + type = lib.types.unspecified; 41 + readOnly = true; 42 + }; 43 + }; 44 + 45 + config = { 46 + wrappedModule = callModule config.module config.extraArgs; 47 + }; 48 + })); 49 + in { 50 + inherit callModule submodule; 51 + }
+21
parts/nixos_modules.nix
···
··· 1 + { 2 + self, 3 + inputs, 4 + config, 5 + lib, 6 + ... 7 + }: let 8 + cfg = config.nobbz.nixosModules; 9 + 10 + inherit (import ./module_helpers.nix lib inputs) submodule; 11 + 12 + modules = builtins.mapAttrs (_: config: config.wrappedModule) cfg; 13 + in { 14 + options = { 15 + nobbz.nixosModules = lib.mkOption { 16 + type = lib.types.attrsOf submodule; 17 + }; 18 + }; 19 + 20 + config.flake.nixosModules = modules; 21 + }
+3 -4
parts/system_configs.nix
··· 84 85 finalModules = 86 [ 87 - {boot.cleanTmpDir = true;} 88 {networking.hostName = name;} 89 {nix.flakes.enable = true;} 90 - {system.configurationRevision = self.rev or "dirty";} 91 {documentation.man.enable = true;} 92 {documentation.man.generateCaches = true;} 93 inputs.sops-nix.nixosModules.sops 94 ] 95 ++ config.modules ··· 105 packageModule = {${config.system}.${config.packageName} = config.finalPackage;}; 106 107 finalSystem = config.nixpkgs.lib.nixosSystem { 108 - inherit (config) system; 109 - 110 modules = config.finalModules; 111 }; 112 };
··· 84 85 finalModules = 86 [ 87 + {boot.tmp.cleanOnBoot = true;} 88 {networking.hostName = name;} 89 {nix.flakes.enable = true;} 90 + {system.configurationRevision = self.rev or "${self.dirtyRev or "unknown"}-dirty";} 91 {documentation.man.enable = true;} 92 {documentation.man.generateCaches = true;} 93 + {nixpkgs.hostPlatform.system = config.system;} 94 inputs.sops-nix.nixosModules.sops 95 ] 96 ++ config.modules ··· 106 packageModule = {${config.system}.${config.packageName} = config.finalPackage;}; 107 108 finalSystem = config.nixpkgs.lib.nixosSystem { 109 modules = config.finalModules; 110 }; 111 };
+18 -15
secrets/mimas/default.yaml
··· 1 - restic: ENC[AES256_GCM,data:+4nwZVi6T3yd4Q==,iv:9NdaTuhLR57mv8OaCSyso9cfr8V1iQNuQuWInKyi3bI=,tag:ByjPvjpO9YQHzdSQ48UGxQ==,type:str] 2 - backblaze: ENC[AES256_GCM,data:d/LtXbUVd5d07c3GqEs5oRwQXLFqKapLxKcMGylExw6cDV6w4XtwCNBtm8ohSMd7X3xtHOWVV8W2MiE9KHsqTKk8jAIFOFMwG29k1qAXqiX2fVPUVtYCeezi5oBm+lynr+njNn8=,iv:kGHjUYWYpY5XBVr9EpPMwxaEsFFBwn+aMgmHScK9quo=,tag:WDVLzOqa9WMwmTSUz/DCYQ==,type:str] 3 sops: 4 kms: [] 5 gcp_kms: [] ··· 9 - recipient: age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 10 enc: | 11 -----BEGIN AGE ENCRYPTED FILE----- 12 - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1U0xXZjZDN090YkNRRSsw 13 - YlBPR2lQMXM2aHZ4WHRoSjRMUFpmRWJjOHpvCmsrUDZkcFJpRWk5djEvWDJsRE5O 14 - Zm9YdjlDY0VOYTJjRmJIMUl4OWVNbEUKLS0tIElvMERlamNBWjdFRkMzOC9RVnpo 15 - TzJwdjNCRHVFeDNQZVZEM1JXd0hPUFUKQITfkwBEWM41s1396WfuZGbFyZf885t9 16 - +uIQ53TAsmk1hv4noW4tE4d0AFbwE5vgWkFP205Ciq7r6uOkL+wOeg== 17 -----END AGE ENCRYPTED FILE----- 18 - recipient: age10jl78vwyqk622dpn2890l9jl4et3p7lsr8wh8vusem3j8jdxle8qg000qa 19 enc: | 20 -----BEGIN AGE ENCRYPTED FILE----- 21 - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBnbWQ5QUg2RWRISjIrR2Y3 22 - VmZnT0N2SDVPSU5EdFNIT0YvVXF4RUhCNzFFCnFsSDE0OVNWVGFMOWdlVVIwaTh0 23 - cGpya1FMQTdsNlNYNjNUWTNNWVhQM3MKLS0tIFhoU1AvRjBwckxPbE84bW55Y3c3 24 - WTVUbzgrNmwycFUraHBzUlZWR3VCQ1UK27oYZV02fKzJ1sbqtpwnDhmBlkCNo67l 25 - S3HLuh+/rEp4xDUVY6Zcs8ua/u5iSzo0whvUBTYPF6BCVW7/3xL8ww== 26 -----END AGE ENCRYPTED FILE----- 27 - lastmodified: "2023-02-23T21:11:49Z" 28 - mac: ENC[AES256_GCM,data:qTpbgZ8ZpqbhW8TJul5dVUXur2ZK3SbzJ3wE0b2albjqVz+Y22TIhQAQKDZ8OHGvROVO9B+yKHY9xt54Pth4dpjJftbnhbnmcEZCxG5BybKbBiA5u1sFs7I9EffrM4qgYGugC8tTz/JNNQmRfCAQPjkEKb7i1LB0pYyEop0EKB8=,iv:N2oBn0uGyUKmX+mkdlrrVquDWcTpEjSiNU596R3gm90=,tag:EowbJbM/FVj+e7+wOtGDhw==,type:str] 29 pgp: [] 30 unencrypted_suffix: _unencrypted 31 - version: 3.7.3
··· 1 + restic: ENC[AES256_GCM,data:XMkh9jvehbD3Zg==,iv:9NdaTuhLR57mv8OaCSyso9cfr8V1iQNuQuWInKyi3bI=,tag:Kz08EadPaIWcytF6ASJssw==,type:str] 2 + rustic: ENC[AES256_GCM,data:ETWxyvBz3AlXNp0=,iv:MXlQuvTJa2mZuXeiCX/YYpbqKpT1+RE5TNahBrUMM3Y=,tag:Vl7n0JF5M9Q+xZD32G1njQ==,type:str] 3 + rustic-user: ENC[AES256_GCM,data:2hwYQS4nAA==,iv:y0pbF5axrPRdYRGAmx+kp7jkmSl77R8LQMUKQaiDWak=,tag:8kgcxNtvjmyT9PPc/WjrOg==,type:str] 4 + traefik: ENC[AES256_GCM,data:kMnWaxpt0fLxJeX3oYLQrnZPS+pq/xjqVINleaCfaiXeMlJ8qno0eHBkx82gjldeObvTO1ENFz5k5EJ0ICbnS0ny6qHxeBAMaNVF3dZ+XmKx7w==,iv:ZL90s3YuBmwafBz7VEwCTr2flnkguUxJgPp9OrnyfGA=,tag:UeyiUtdQwOlyQoHObL+80w==,type:str] 5 + warden: ENC[AES256_GCM,data:H3So3oZfZ6MBKsjxJNnxk/6UZi6J5D6H5bCMsb1E7rk/r51qYDe+1z2Gq1o0qqwX0k/O4Dxq7wJPaelLO4kE9bxQHvoT1NJQIZolnYF5G/PMqMKWIE4bxq6uLmxNKBmjOkJLo3hBiOHT8MjD/S6rOkUAB6Mn4YRKqcG+EG1Wz0sw1a+6KcNFMqO9xdcwD44MZYrreexOiwVx6UMPSJc/67fvzJ4ms/E3gQEOq6VvCHpxmk4bujo9ucqajfPGK4ewHqkdn4r0vQvrYxXMBkX7AXcL6CHSZ+ht0Hcw0A+m12GuTSHC0g38Avz5klP3FIruzj7oWcjv6XPBYfk=,iv:OauSp63ywmrkENIqBVGVQ99Ozyom0o+DfSqYaL46Ujg=,tag:ZcYkapCUZZE9DDh0PSfZEg==,type:str] 6 sops: 7 kms: [] 8 gcp_kms: [] ··· 12 - recipient: age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 13 enc: | 14 -----BEGIN AGE ENCRYPTED FILE----- 15 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVRkRBcWlnM25ablJBdit2 16 + b0Y1Zy9PM2FjRmg5ajN0YWpsaitJUStTTXlBCnpuL2wvU0hxZFpDREhiTmhnaFFi 17 + LzkxMmVHYWo4TkZOaStJeHZsK3pIZG8KLS0tIC9DSjUyUVk0SG9mNHd0aGdXN1ow 18 + N2Q4QWk3RU83dUxuSG85V1N5TzFkSVEK58cE6fE6mxjRCgtHRMqqahqMkwYeUnhx 19 + F2Bdg5oPPQxoqIf769fZD9L1y/+LZ6Vi4YhJkjfMVFXk6YtEjKJSmQ== 20 -----END AGE ENCRYPTED FILE----- 21 - recipient: age10jl78vwyqk622dpn2890l9jl4et3p7lsr8wh8vusem3j8jdxle8qg000qa 22 enc: | 23 -----BEGIN AGE ENCRYPTED FILE----- 24 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkY3EzZyt1YXFTTlVhK3Rk 25 + djUvWmVjeDBSajlENCtNc0RZMVRVWUVuRWtBCnFpa0NnVjBvb0J2NCtpYitoMngv 26 + WkxNaDNIQnRSSm0vSXF4a1RYcmNsK2MKLS0tIE5zSkExNVVJYkZsV244eElwMTd0 27 + N3ZuTHhVdFo0aGZVMXFlaTdsRi9lRUUK+K5CUVCdjtMVegVydoKRIb6kpPnfBiy1 28 + FxkXAp3a1qU2WqNvXCSO3gtUwYaMG+MPSCWI1gA3oBjGGtTasHyHsQ== 29 -----END AGE ENCRYPTED FILE----- 30 + lastmodified: "2025-03-08T10:44:25Z" 31 + mac: ENC[AES256_GCM,data:iKKmalnJnmm8EkDupTPKmKJydLLYkbAabLy5KJdQfKGvRj6vbJAQHZ3u0Pu2TI0oi5Xv3dtPh7ww04kT0Whe1E97p4t3RPyNCCGNqA8OqQiCPDUn6uqTQwOo1//3xIGFnnRC0VSYrQT0rjebbL96RnWE9XF67TefycxIMHusUXU=,iv:FU6VTW2zkEIlH5P/rr58gmuMnz16TCLP+UtEVkiLueg=,tag:uf7I1GwWxXOT190y8Hddow==,type:str] 32 pgp: [] 33 unencrypted_suffix: _unencrypted 34 + version: 3.9.4
+14 -15
secrets/mimas/nmelzer/default.yaml
··· 1 - rustic: ENC[AES256_GCM,data:/rH3svpZdz/GKHs=,iv:NHuqnSibmY/RkJrSUWm0TbgG45iSdjso9ABI8SGqUTg=,tag:TeyCRhHEEF9uMy8hs22a4Q==,type:str] 2 - gh_hosts: ENC[AES256_GCM,data:AOaQG+/V0S/MD70HZA1zUiJj2w2dGYOQYnej9dFIS6AHGQi5VUUtBupscd7DZvAsgs0nkEEXL6dngIywaU/ZnlBi5He/7x5H1GPJlEJo3mnt6RvfrNunQztvQMhqPvxxot5/i37B,iv:iFRFCY7y00O3hTi2Ba7stqfVAGPm9M4QRgpbI7X5u1E=,tag:vt38Wm/VToo/c/YV5hAz/A==,type:str] 3 sops: 4 kms: [] 5 gcp_kms: [] ··· 9 - recipient: age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 10 enc: | 11 -----BEGIN AGE ENCRYPTED FILE----- 12 - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArRTAxMnpBMC94K1Y3c3FQ 13 - YWhrQjdIV1dsMVZIWUxWRkJyQUQ4WWRvdEhJClZhamMvMk5jYWw0ZEVROFNTVmc3 14 - T2JjTFZNd2xyM1NvSW9tcDlGYkhseWMKLS0tIE5MTEZ4WXJ5UzUxUkEvaG9sZ2dO 15 - Z2ltMHlrenhUYXJFbkN5L09BTEV1aUEKI/nMtRFPlOyr4kV3NVDGKX7/TsBofVsV 16 - FDht428Z6dU6AiojXuQ62Iu0wx5Ar8LTwxgmrU03E0CGv2DPhNKGPg== 17 -----END AGE ENCRYPTED FILE----- 18 - recipient: age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6 19 enc: | 20 -----BEGIN AGE ENCRYPTED FILE----- 21 - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZdGduQ20rMkVRSjVwRk9s 22 - QnVQREhVVkVBTGhUSWUzUlZiRDNaZVNQUVdnCklJQlowSUtDdExMcUdDcldSK0FJ 23 - SFY0cUpSdEUzV2FocEt0cXVjNXdYMmcKLS0tIDNCbGpWU2N6UVlMNG9VZzZ2RkVS 24 - VUgrWE5XdEFtRmF1Z3Q0ZUhYbXFhYWsKPpE3rUzBfqm2cuckrSuUztUExxrA/qpH 25 - Be8drRHDMWbDBv60Ldi3R4phgmIISESHBHwIvdMLyJAozkkLQSqGhQ== 26 -----END AGE ENCRYPTED FILE----- 27 - lastmodified: "2023-03-12T13:59:40Z" 28 - mac: ENC[AES256_GCM,data:O4XkXzsRa9pw+SpyICQeWkRzxjBi2+GAh4bKQZoBCF2g6e6Hz9KZJef2EAn7qteSNJvdJmB0bzoKg+Z6VO2Hm2RT1BtFKcBRxqA33BHHUEQpIZxnw+P1XpCaiKzJNoJoq5utrpiFOVPE2u6MPZtuhzgB38M8Ru6rXm55n4JRnlI=,iv:EjJuqi/gyNx/6XFNUnuPkYWlunahKrU+5jVM5K7rB2Q=,tag:ff9QkH4BulnDOcj8Kyt2gw==,type:str] 29 pgp: [] 30 unencrypted_suffix: _unencrypted 31 - version: 3.7.3
··· 1 + rustic: ENC[AES256_GCM,data:aYi1wQgLgRL3n40=,iv:NHuqnSibmY/RkJrSUWm0TbgG45iSdjso9ABI8SGqUTg=,tag:k13fNK3kDcylC53d/haqog==,type:str] 2 sops: 3 kms: [] 4 gcp_kms: [] ··· 8 - recipient: age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 9 enc: | 10 -----BEGIN AGE ENCRYPTED FILE----- 11 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3U1ExOVN2aWVRVnB2M3RR 12 + QmxQNDZnSWVWMW1IZWh5YmFmNTZYbGRzSFVRCjdvSGp1WThzc29aNUZQMHJDMThJ 13 + MXNURHJUVVpDQ1hmUDBFamJ3TnRUSzQKLS0tIExXdWNoRm9aL29nUldQemwxOXdV 14 + aktSY1lQZmxkTThpcU82Q0dwSUUzUmcKm2VCJHEUzjz2vXAJH1wOovNqzK6Hkk2z 15 + hoIQzqgfQL3a4WA1q0Oj+R8wBChuRMUAYW4+TWCIAckKKwLqRyzBcQ== 16 -----END AGE ENCRYPTED FILE----- 17 - recipient: age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6 18 enc: | 19 -----BEGIN AGE ENCRYPTED FILE----- 20 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSamQ1R0tHZGIxUlN3NWtV 21 + Q1htSVdJMG5rUEN6Rm1QTStONys3YjNiVEdzCmE0bDJCa1VaVTIyK1IvTDBFbVhs 22 + ZWVGSzdwUWpVZTNSYUkvNjNtTERnZHMKLS0tIHRLSnBxTm8rVVo5ME4vS0dKZXF5 23 + MjdaWk9mZEczVGVxZEpnN3pCQTdMOFEKO4oemn8P9PYZVTsJ81oDy17PRAaeu3pn 24 + zxZ5a8/IrS/lZfMJ1vYwlZf0AEgOMTSyjVMNyOkWAgWIq8z1UkrpUA== 25 -----END AGE ENCRYPTED FILE----- 26 + lastmodified: "2025-03-08T10:28:45Z" 27 + mac: ENC[AES256_GCM,data:k+Ui8hxJM/W4vHxZtSkTO86L81ZnzXHcX+VEzef438dfoB6rhIUhz6OaVfLnF6v3RSzRPsYCoDP8L2p1vHAY42ljl4jzZvMqrIYU2N7ATTNFc+m2FO1lcfmKbsOqjkrVQxnux8lwBdD9e2H4/xOB+nAivuCEDd3rihYR0yRYiMI=,iv:yMu0MA0VTdwUsKkZUZAVo91iI9qaT+qOVVI3hlmZC0c=,tag:bbKM/vE0lEpvPHIKWk9llQ==,type:str] 28 pgp: [] 29 unencrypted_suffix: _unencrypted 30 + version: 3.8.1
+30
secrets/phoebe/nmelzer/default.yaml
···
··· 1 + ssh: ENC[AES256_GCM,data:Ti7PvRp+ooyu/MHGv90zlACZVzE5EseJUFk5KvxwYbE+bLcEKnTWW8yV+BBa3xoOe50P4X0GeNFHLsaCcCtrjNshNJSxZ3QHt1TQjLABvKrQvpU8BgN3qT3RMo019NMj0+UxWL4/5icaR4XAax+JWCTBXhncqFzyXqcB/IbLLJKKqqFTWe4zYhvQitBDF+oU6nTv/qTtj/6B7XN6byTbGPjTJrEXLotmbvl8ll/LiEkTPmuu,iv:poHvd4U4dJha27Bqf4hA1pFhna29kO/RnFNjJsflpaA=,tag:uUfl6tjzVQQ5oaKOcmUYQA==,type:str] 2 + sops: 3 + kms: [] 4 + gcp_kms: [] 5 + azure_kv: [] 6 + hc_vault: [] 7 + age: 8 + - recipient: age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 9 + enc: | 10 + -----BEGIN AGE ENCRYPTED FILE----- 11 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwMnNzT2dFWWVPRjh2QUdF 12 + VUZkUzdsQXRISG9kaHVqSGp2UWhCNlN3cVFJCmtQbE9LelRkbW4yU3ZyWG9MdnZB 13 + b1k1QUwrOXBZQTVoRTArNGFtTEJSU0kKLS0tIG5KS3ZFd0hKMEhsSkV4ck5za2VQ 14 + YzFLSjNUVXNRaklnczVKdGQ4V0JYUE0KGVHj8sWKKvVGwMrYmx0Js1uI1DmD028V 15 + R+Y+p8H766496hBt6Eza6r7JhKtLXR5CrcoItq8m+fWU6lu+ElsnAw== 16 + -----END AGE ENCRYPTED FILE----- 17 + - recipient: age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna 18 + enc: | 19 + -----BEGIN AGE ENCRYPTED FILE----- 20 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRSTB0dGxWOFhTK0FHcGxI 21 + VkFKV2NkZTlJRVNSZ1dnWVBKQk02YmZ3aERnClZaeTFSYzRJZ3ZWQjNPc1BnanhU 22 + ak1RZ0w0MDExZVlJWVNrYjZxMHZsNEkKLS0tIE9tWHlVMEFpek1VTFdROE8zUFZa 23 + VU9yempBMGVXenkxdkpHZC9YdlFZYm8KsdOmOI4ah0pEjqPt9XnJNxMyFSY4eYsI 24 + UOgJZqRhlG8Y4NL6J1DyJPfeKeIroTAbNoCb65lxWHHWfoPvt3gU3A== 25 + -----END AGE ENCRYPTED FILE----- 26 + lastmodified: "2025-03-08T10:28:45Z" 27 + mac: ENC[AES256_GCM,data:ycmOZIduc6cbx9daCGmLOL6eNSroAkGJw9dSnR79feaplXi6hmvycijcSJkys2vA3m81K2E7MW465GfodkpW1YWT1xW8RPp+WOOlqZvu3qoSu3F2T/VJxx4wCzTaXwvkcY9APAqb+WydN5KQDzakWaJfw+gTP3OS8LTRkYCDtcc=,iv:soCcQcGoi41g+g5X1SVDNH7iH28BCSImZqY1OE/H1Bo=,tag:RGY47osA22GETBuOynX1Dg==,type:str] 28 + pgp: [] 29 + unencrypted_suffix: _unencrypted 30 + version: 3.9.1
+57
secrets/users/nmelzer/default.yaml
···
··· 1 + access-tokens: ENC[AES256_GCM,data:sLkIWAyispOwNUZJqXfTFVl8NbUcLhWhgLIVI2rahROYHMO3aU/0x8BOtmm0QkPYHA3C7GwzyvatMoASJWrqn6ife48=,iv:BPI8HwuKwfzOMT2gs7U0cpbpP77f+X/HvCcfvIJh9Q4=,tag:Kf2wZ+3xtKhaSY5S1QjTuw==,type:str] 2 + sops: 3 + kms: [] 4 + gcp_kms: [] 5 + azure_kv: [] 6 + hc_vault: [] 7 + age: 8 + - recipient: age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 9 + enc: | 10 + -----BEGIN AGE ENCRYPTED FILE----- 11 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwcVV6MWRlWjhSQUt6V2E4 12 + R3h5ZTlTei9QaTBnSm0zQXU4Q2dkVFdkL0JRCjVnbHFpQ0VaVis1TENCbVQ0Tm9F 13 + bmxZakNpMmIyTmZTdy9aRDJKNGU0dWMKLS0tIHYwMGJxV3VhNTd3b1gwRUREMWVW 14 + MUVzclBGZmV5d2lZcFJyMzViZGxXbFkKpgyVR4xv8NA6J7keZwVvJX0QSjoTAaW7 15 + 9fu5UR/d/pYIoJswd7jPNdhnClRLnTpJB62RZf+HHzGU2uq6aND1AA== 16 + -----END AGE ENCRYPTED FILE----- 17 + - recipient: age18p8x2cxam2l0trtpyhj4x9amcppp9ruzkqxzgapy9wnfpzl9hgaqlkht86 18 + enc: | 19 + -----BEGIN AGE ENCRYPTED FILE----- 20 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXeGFqL0NVaFYxaWVNdVFa 21 + Y3JKdFE3dnh0cFhQRVFqZjdXWHJ6VjV4eVdZCmZQUmJXNDZUbmVvWjRaMk5VSkxL 22 + dFpVTDRqR05xcm5OMDYxc2NjNXNJYTAKLS0tIFNmZ0JsR2MwSzhWeWhwUEx0WlUy 23 + ZlM1NXhPSjdQaGZlVDN1UGZLNDJRNVEKLmyd5dcZhNPKltxgVgHjJR1KQEcYOJ1V 24 + 6jY2Pq1dw8n8CswcThH4GmWBTqttEirFV8tB8CkYvHGk7oJCpX8gIg== 25 + -----END AGE ENCRYPTED FILE----- 26 + - recipient: age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6 27 + enc: | 28 + -----BEGIN AGE ENCRYPTED FILE----- 29 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwTEZRbk42bk9UdWh5bUFY 30 + MlBoVUFScE0yUlJNeUlDOFNkZTNmZ2ZYZXg4CnV0a3JTOEZmZXdJYmxUOUlQR2pm 31 + QzRmcGhWZW5RcGpLYURTWGoxcEtZVVUKLS0tIHVieWVteHcyMFRUOEZFVVYxN1oz 32 + SklxWSs3RDhtNHdjZ2tZb0ZSRG4ydlkKvjxtjpOtaNmzeGnVqVLbkI8cEh0wKsLH 33 + k5J7At247/4BFnQApfnw2cbeve2aQVsDjO6a6aZwcVrYQrErq/Ltog== 34 + -----END AGE ENCRYPTED FILE----- 35 + - recipient: age1tf0zelmw4lh9gvkl0qycdk83fut9t4q3tfcdzk8cvlyhjp7z0g2q7hklgq 36 + enc: | 37 + -----BEGIN AGE ENCRYPTED FILE----- 38 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvemdIMXNVSFNibjBmc3cz 39 + YXR3dHNGVGpUZDhtWGtSZVMwWHdKcU9zQ0VjCnNpdmMzNldvYi91ZWdGTkJyaWlF 40 + R2tBcHg5aXpFR2x3M2Q0RU0vVWU0OUEKLS0tIEZYRWVpc2JLWGEvVExpSktDcFNQ 41 + ZDFySCtOdk1Kdm1yRnlaTzFZRkpvQVUKGZoNU9KJgFOJau7Gxge47txwpAlMh2rQ 42 + 6Hfjf8E1igzLnbjvxQcGa2xVvI95KqhKZZclzPX9Vagl1z3XnoCvSw== 43 + -----END AGE ENCRYPTED FILE----- 44 + - recipient: age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna 45 + enc: | 46 + -----BEGIN AGE ENCRYPTED FILE----- 47 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1ci9GbWNmMWU4S1lGelFi 48 + TVAvUUE0TmtxNE9nSURqQjVSb244bnBjdlJBCkY5eHhaRUxiOXA2OFhSTkthR0d4 49 + dDhMUGhNeXA3aHcvemNZczU2bVpsQkkKLS0tIFZEMFFyTGJwWkR6QXFvYnZHVnNs 50 + OUR3N2IyMkxJc3RqcmorUFBOYjRpa2cKPQT3cmtP7I2C38OPaRqxudCXv6CEObnp 51 + DOVPG5JpeQGEu74kK5WTqbWlQU8AToOXmJdc+ru7ea1wAiXZiKEG4Q== 52 + -----END AGE ENCRYPTED FILE----- 53 + lastmodified: "2025-03-08T10:28:45Z" 54 + mac: ENC[AES256_GCM,data:VktkGG1xk+tFtgdmLrM7rLQ+NEqDMATyu0kdm4iRe61mcMppNVR7ZxjP7Ryfz6kkiwAfqrv5g8pzaoHHCJoLAOShgCDdHB49USDVR7OZHp/BiNJkSwSYgSWsWQf4Wxve2lADcGJNrOD/l8jmO9DcUDldLdGEGJeZ6waej3g7z7Q=,iv:FhfHa/LN9UVC8fnilYv2NxlNT+xRRXdsKIejOqug4cc=,tag:mTBuhaR2AxulRrfPSB6F+Q==,type:str] 55 + pgp: [] 56 + unencrypted_suffix: _unencrypted 57 + version: 3.9.1
+36
secrets/users/nmelzer/github
···
··· 1 + { 2 + "data": "ENC[AES256_GCM,data:WaE9ywj9g4TvMdjrRmKjwxwTuak4gsPENMaP37qdxQTSvp+dhklwaIh+LIAIMhPHYtrhBMNj1viHnaIETwMIB7uUsblKIYa6AOxpi9CU9xPkpBhKGw7vMEfCjlj9rHPjB41W9EN/EDVgY0phYFRF7DSoOa1wpHouKwKbbaO3r8L+ZbN4BOiizquzMOVOxp1b71xsc34WvrAIQc7+0H5f145I+KPAKGkUSMrV7t0RJTC24ENa9Zz7n0NduoLokK/IGXt6tsQNnzdS/DTmLw2W6fVkb5b4uzEvkqgnQOuQilH4CMX+xsuEkUkWqe3E8sUlzvdUszAjfruQUvJDuC//Vvx0vE1Kx70h+8BCqDGPLIs/4aEtW7xfu5B09WOQKByyd86NArZsC6R+sbmTCPD7WLFV9NI7Sg+E1wkPSmtYUYeMTmvPwfNISLKC4KHNm0cp5rb0EhmZTxKu1qId59vNdpjTnTEz0AZAGoVB1pGi45Bb0pUE/n54WsNhuscOVHk2XdYH/BTcEU8VYpLvcNAWFX/a1MWc0Bx21e8Qk/KNZGuATrWLiXIhGxT33bmlm2/Lb+5LS7xwMxomu1g0xGzSzD3z2B9CExekUw7q9VWfAinVecHA8NbMLrajkqGQb7fbcTqXOQqXL6BrQDbaOb/hC/AffYq4SEurvP4BI30E1hArLIlHabLwxBOaNLB/Ii7i51BKWqQGaof01ziAWChptvSic/oN6xnF6CbpXLr1r/z5WoLm4MqEQJ4Qvp+vsAChan/1kG3S93xpgYof3PZsrSpxxfGSJq2qBZq5Xd//6CfHdwhdulaciKi32F0GV+DTkDAWTwOOy5fo8IC3bLnWr8rFo3iS0DhETR2V7s1/w6MU/0iuPz95TrBffNvaI9uSehJaQwI4a3Y2M79nxB9xfgHIsbh4+fef8OFa53snckCCzY74Rsv3Th7HliBLVcpAUNvaw5xFnECFkjq/uJVd3cJ3GnYO01InxRqkHm7Bl4RqA0tctpzM98p6RtidTAZ1RHZD3rwgU/oPoV8a32gcmhdRbm8m1/nBXDg2aoSXYJ9NhGtJ2hK+ufsW+szAv240SVX/JH5vk7w7T6H7n6UcZqxYozjAqawP7hUSB/eYfY3uKJIxUdJmGfnDq+L8/d15Pnbqb6zD9qSHi38OfKUTAe8WONWSiziK9EEO5R1EPAdsZod3CFBx0K/TfrBC2mpCZIUUY1HqIDICsDUoFdzj377tLQqcF6K/b0r0sL5rw8L0I6pZiYCCz4LfaBg+oCJwupTqnm1Lusstw1EZP0Psqt+pabj30wA5JPPbo+EB7X5oK6P9N7b/Hw9MpQNNddTvZk0bHI9l5hUZF/rv6TY/qVVCKcAH06bCbQfPvzV9Q6fc+e6/k401zVplq73+WjiqxUWm9iNhrWodXpLWH7Zj3Tcn/mmWNRYUvJE9IccTd+mQ+rvfAM8om66NH68zISbPlDeBuEUIhUlCihpUOerE5j/SasBuTqnrXNz1Z+aR3LT40r4QH2OMEeBR93pPbsZ2l/2zoqL8t685U8B3nimYAE6bwpdn6tErT3MnO2+R6VKIISaUm29Kang6jfDPgPaOZPVXCN05O35Of555TjbSn2XXsh7jqnnp7qW6zUXCcM2Q470yAlQXF9VAXLTI0zKkTVK5b4g0jNs9IFHXelw4vZNM26L5wsTVsvvjW8TpJm8Hkf/Flv3hjLQql21YyAejxRe/vu4ku80Gglwrqyu6wVdZtL28lqZwt0k06z19JuxbTwyck7cSQpMiHg5Ou/0ThqHJdEbCv10d61Be6bZ/kGaqG7mjzX16BjGJamzrRsW+dB96WGipFfLswFka4slB0Bsn5uA9awhNTR9JJyAk+6LvXDg/YigSYiwpXqcOoSPY8KrfBapNussU9oYPqIumdocMGvIzg9MOqpR4Kl9E/ZOyf0gzomIYqdP7elFNnmcxDmuGBwexqO188w2pRIQ7C/GrCwmarMJfe2ZKozmVAbMPaze9B3lLs2gb059tj6WF2xTJd/3HYxbdmUtMeGIrQkxKhFxBY/+bU8M4rhbR5HZiOJIfqko/lAPPQIB9UMGC0yBfGofaZYndHtJAjf9LKLtj3crHAPd1vsS7zyy8rhGkNGFHJNnYgyvYZT1A3eM36W7MlCnVImgENg50uV6xFFKzruiVLTLhF68bfKRKnncxw2sb0dKBGvVcOFm6At7ZgtM8bX2HIlM+7A==,iv:+pnvwKJLNUD+0tpxurFocDgK0qOGzVsYkcV6b6KYock=,tag:oVCamxWlyuQU7McVwxZUKw==,type:str]", 3 + "sops": { 4 + "kms": null, 5 + "gcp_kms": null, 6 + "azure_kv": null, 7 + "hc_vault": null, 8 + "age": [ 9 + { 10 + "recipient": "age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r", 11 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOSEw0c0dWY0JhdGpMVFo1\nc2kzQm1FdHZIaEtuRG4zYUIyU0Z0QmVOdVZFCkpNTFJpTi9ha1VFb2l5czJONnl4\na3lYU1VmNmpBNzNBdVZEMjNRVjF0RG8KLS0tIFRhTEs1RFF0cTRnNTJqbDVJajh5\naG5UWExpVVl5YjZKUUQrT3gxR09CbVkKc64s7ROfryegUfEr+lS1KkbUDJo7+hso\nBvdJ4EJqS1Uu6H2XugpwBco640PKknJABrkL68LdUGlsUsITqK/MFQ==\n-----END AGE ENCRYPTED FILE-----\n" 12 + }, 13 + { 14 + "recipient": "age18p8x2cxam2l0trtpyhj4x9amcppp9ruzkqxzgapy9wnfpzl9hgaqlkht86", 15 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGOFBxeFNVU1RTSUNCOG1B\nZGhZQm1WSjR1NmsrYkpBd3A0M3liNlNEYXdZCkJKUkp3TGRsMzMrZ2RvU1YxVU0y\nMDJGT0dwQzM3T2pHZFplcFozYi9Pek0KLS0tIFlEb3VuaVJ1QlJPRWlVVDJaMnV4\nQzNhNzBuL1JZeFljb1hwMkp6NE9hY0EKtSZY/B+DbKkDW6cof3sjud77Qz+S6qO4\n81N0I13ywjMmLKLE/eXKEwRXvZkTV8o4AfkZIZo+JPvMgXcujrTFzA==\n-----END AGE ENCRYPTED FILE-----\n" 16 + }, 17 + { 18 + "recipient": "age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6", 19 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKMHA0ZHRjU2tYSEZna2ZV\nUjFTRDdMV1B1Ny9YbGlXVmEyRUNuMlRWSDFjClR6cjhHaHVKRFFGWEJHdERZZDRw\nQU9sVC9SNGZUUGxrVUdJWlVwbGpBa1EKLS0tIHYyeWZtS2ZjWTVJZWExTkJWdzFJ\na3NDMUNhSEtiamhIVUV6T2luNjI0S1UKIVHr+P3jpJY/k44EEE1RYB/PQxI4E3lw\n1DdyulRw0CvhuxVoZsINckTjgNIfRSeJlqS2OYEYfHPvqg2xcBNlGg==\n-----END AGE ENCRYPTED FILE-----\n" 20 + }, 21 + { 22 + "recipient": "age1tf0zelmw4lh9gvkl0qycdk83fut9t4q3tfcdzk8cvlyhjp7z0g2q7hklgq", 23 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArRWhuWVNScC9IK0Vya2oz\nZ1JSRERnSmpJVEVNY3VlWnZLcUFESUxVM2dBCjFSdUtEbTVDZ3V1eERja1hnb09I\nWGNLcmNKcW5wOHFIMjJUWTJrTXh4M2MKLS0tIGI2OFh2ak5PTEV4MFZKWjhIVSsv\nZXA1dFFRY2FjVnI1MnE0TUtJemoxTEkKcCGDk5Mj16JL4/fevQCXYuTdY5ZVE2rb\n7nP+oqXXRTQAMVYsWwWIftNjd2XCM43UkTUKetMktGlcBMd/vNh/Xg==\n-----END AGE ENCRYPTED FILE-----\n" 24 + }, 25 + { 26 + "recipient": "age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna", 27 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1RE0rOU1pYWVQOFU0N3da\nd2NmNjlZVWtEdisvcTVJa2ExRzVsK2lFcDNvCnkzb0dTQ1ZkM085VFpLQ09NZXBR\nd2VKNWtmWVp4YVViV2dpeUJyblBoNHcKLS0tIGUybXNsQ2tsaU81MURmKzJ5YThY\nS280YUMyL2JyK2pHMWlRTnNpSjRqNmsKg80xYn2ZE2zjt/t6pSUpXm0umg1+OM3h\niWJzu2RPayXglUc22hIiC08kahueHA+iJ+OPvMkl+NEM0FBMHotGLA==\n-----END AGE ENCRYPTED FILE-----\n" 28 + } 29 + ], 30 + "lastmodified": "2025-03-08T10:28:45Z", 31 + "mac": "ENC[AES256_GCM,data:xbFr0rhkcvO/+fTrGrOLCcmE52QVVxvwEu2Zg2vQ8DIt9aa+8p/aXI5ndY8TDoHsrl27IqZUetTYReXgyNBWuYhCbh6pLlJ/9GBipq+HTtyTuorj/hAREnaWDI049awM9yR6S6jELBSvPfUSKDi8JfBYelO04D9a2VinuAyP8/A=,iv:HzqLaMQbsNhwgBCX2YZj4pNbnLf73hc/IpJ8Hm5+pDQ=,tag:3rBwAgrscRB7hSKKj8ps6Q==,type:str]", 32 + "pgp": null, 33 + "unencrypted_suffix": "_unencrypted", 34 + "version": "3.8.1" 35 + } 36 + }
+36
secrets/users/nmelzer/gitlab
···
··· 1 + { 2 + "data": "ENC[AES256_GCM,data:Ogl6BZFz2S1TTDdGDckoF2Mb8KD6G+tD1gIKsiiGBJBQFkC62fT/bEPKNEQ1kndIsLQAcsU26tBEn9YhCLyWkeIIcFDSnq58u9La4HVtydpNo8f+jrvWeDqp3lfXPgIMKRUywC499Oa0HtIyUGs5Xf3DuwoaECS/hhNBNUG9gSb2X6iLb0C7mV+Gd66kJf31DX0cm0JFChiwdQyLlxgnxRMeeBeUhXETMQBVPlRtEs1WxUnvn8D8WkHRcZBs+/TRIRaJ3rY7oG62iBAum/UmVBgs3kt5ZfsK9wBkIFuujwd1wVlTZjWkUYnte87G2p2My2khEQX0A9AXatAxRowRUMI/BS7nq51iv4RLGuHEWK/2IOwmfKPShPvUOZsRx+b16GT2/Xeaq5WnIdW2PaBcfYJV4GaLUwFSlsFHq8D1E/DnlD1s3msmoy0IppNwvk4zkK9zdZxoWIhldq1Baa+GpFHhqPjRIgpN9Gd/hulcygvDKr/rrekOiz/xdjBREXvwW2siwnMIr2SfnKLlGYyb+P8KmYXdPgHh2+X8k767b6fzQ6WmoqzeXVlsLtjPHK32nOz0T5eilQYrL5oC1Mi0u+4wmD8QiIS7KvMC/pU6B5lCb0yjpsdLET5gbQ5Xqo0vn4inftGMwHl7HoQbB9bokHhCmZSoI7DQCUjIYlKCHR5we46IZv55RzLCkmMpBlHCjhqn6nK08+Kj34jl65BBx1BjUR/digio29VhCgL8NwYgwk1k2YABVuFJFnCERBPiDLpL9v0zTQzB1Z8qfFpwxmLw/e/4UbqhPl7z2uhlFMkMjF01kgqBpZNzXTEwUm+kWegURdGdo+XJhHs634QuCZKsKExODCw4Lgl5jUCBgSxHYdnqzyN1MH9ws6xrvywAMmzTwMX19gb3q/NGijlX/Ipt5hrOGlmteNuhepW4KVuTanxhdtRfU9CeSBsHxabZkglkl2tQhfaXoW1OwE/Sp/NF4pYfxy09kOqH/c+Yp2j9WGyxrLTnNlS5XNPY+NCVDk31/zQno2hV77EbXK7pW10TThlu0iNOa2X0OhkJEZV9nWhN8QeKwN/Xao8F29JZ0WDYmcXMWrTPAmSsDob2SnQwgEvRpmxxtuum53IYnTxdGZGpL7DBWLdKZBMsJ9bP5vgeHClSHPyjpro1zK4VhxW/U6Yzpi3PCEyx+KpV/v8sG1DnvSReYd5RHga+p2ekYE8zWD0BzeNfvucroKMFcX2erZHYBKliMuAM85jXLXEohMhoOVdLm/1gAPt49LJnz2QFaU91G89QRxSjXaIqNjZdCDM/jE4Oa3qx3P7QtBzKzS9q6EYjvKzoFlo8I33X7CpAZ0PZuJttD3jDLHmmoOaVnIiquq0I7ESBjIbCtzjuerhDEhkaQDlHPUlFthK5Dg21/cPUbKL1xrZLYoOC6UfWa0lkayz8m7+o6NQAEJYJmvGd4pWVPoHPuYKCtmXWHeNNH8GIcGLvwUe87F5LeC/QFe+oPix8FHOfjZS3vzQRTDdEp057UewWMvodChFnZV+73rl1WOHhqGWghi58ghIY7pkhzj76lrMBhRq8ryyefrDq00uVYntoIbetxwH/GducP7JBvNPbFVvRn4/n3u6/3/0ZrdzyuXKtgwW17YP6UOexvQmkzgyBnTVs+JW1hnS/BToIliMtBg6KlUXcQR+0X+6hLF5mms1oPmX7wH1sC01iMKpt/jpnfIhq5tjySaebCahjqDJ7XC3HuvBjCvGmVpLYFWBjJoUX8fnPcaVI50zUtwqofF0BPcsSCg5U8S9vjVB61A9mTqOcH/6p5lThL/8yAii76XRn+tLA8UoabuQs+Z1bPb6DowkMnmT93Ye22NRX6fxFrXyJCr0puRkh2Qn9xbPmcIwx3CxRhO4DmBivtVtZtmYhoxYvcs3dNV/ergk6O7FKwM+q8c6Ia363GAhATHJkNyjxmDZRvaSY7v9CeqMyFmGobp0ZohWyfgXRuMO20CU9Ub7VdIct1mgMslhYSOfW4UStc66tGvozsMdyvnCo5lzjQUBHxOq93HxkSTedP9FB03WFyVWZEH2++nYyc3IsExGnq7ce6YQwL5rPThMNw5Ur09zrf4aX9Rl4mQJaMQyQWES9BfO0fDRIMciZXwWW0FDSlMCeBwesQwlnBpVIjPixsy8r09LMd3LxxPw1pt7vtfJh1R+6y4ye8/1VdVsGBp6AFLTvpaYW/aZUFAr8SP/mVYhlfms=,iv:wutx8cOVSjjC69NzlIrojwRLhs28QvNXRnRJSC6MMb0=,tag:cPf78d+51Op/58UiaM8IqQ==,type:str]", 3 + "sops": { 4 + "kms": null, 5 + "gcp_kms": null, 6 + "azure_kv": null, 7 + "hc_vault": null, 8 + "age": [ 9 + { 10 + "recipient": "age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r", 11 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJc1N0MUNwVFNlTEdjUElq\nUWlsTG8vc2xQYitYNWlUTlRGRTVLVzRyY1dBCmlMVG9OcUU5bjhzNDhpWStDaWVn\nRTcxZ1QySFhabklhQzJKL3BqSVVydncKLS0tIGhIamdINjdJZERnbXowZTlNRGtY\nOVVJSEZ1Q2NNNXNXV3UrbldUTy8yTlUKeLwquuhjLHDwzzL8JERFELXD9b6HWlKD\n6YXv+mHaeKtcN0y61uzH2O51U13e79ipex9AeYj8YSIZx1DRiJAg5Q==\n-----END AGE ENCRYPTED FILE-----\n" 12 + }, 13 + { 14 + "recipient": "age18p8x2cxam2l0trtpyhj4x9amcppp9ruzkqxzgapy9wnfpzl9hgaqlkht86", 15 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlU2tFSTgwSXFyVEo4YVdO\naUx5R2F3UGxhY0RBbStMNDdpMWZCdkVzMEc4CmcwOVVFbDBGRlZDS3dhdGZNNUtI\nWWNCRDRUelhvVzA2ZFIwZ09QYUhZWk0KLS0tIDRORmpMZk5CcDdOL2pvMW51clA2\naFpFS1k2dW9rY1dQR2hwb2FlMWVrREUKL3F0eiR8lKlDfQMYekRvxUo/c/qDVgKJ\nl5+yOsCMh6iu2u696gRcrnzrZ/aX23TJE98ttYS97DeUjUCc0Dpo1w==\n-----END AGE ENCRYPTED FILE-----\n" 16 + }, 17 + { 18 + "recipient": "age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6", 19 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHcUhZOU9kQ1FkMWY4TkdS\neStwOThKdkpWa04xYUU4MENrbjZRQ29ya3pZCkpqaHRGeVUyeGdDemZUeXNkMlo5\nTkg3dFNlL3c1NWJNS1FzWUJ3b3FSYkkKLS0tIG9aUkxYTTVDRitCWTh1TmRFMXoy\nU3p6RHk4cUVOOTlDamNSZFdIVmc3STQKdvB/aVmyKhVAA+JKT8aQo1VmDa2WhGl7\nzGIGX77gsjDiy9Jb15Z3KWGu4AP+bonUTmTkUWA5Oiqe1rhOe9MDMA==\n-----END AGE ENCRYPTED FILE-----\n" 20 + }, 21 + { 22 + "recipient": "age1tf0zelmw4lh9gvkl0qycdk83fut9t4q3tfcdzk8cvlyhjp7z0g2q7hklgq", 23 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaNWhBaWQycm1EZ0JwKzIv\nSit2UjFhNUsrd00wSzhua2xONXZwZlA1WjMwCk80WG5acXNGTkFEdmxyYlRCNlIv\nc05CY0RQM3Z0ZXZNTkswOXVsaVcwS0EKLS0tIHBrNnpZbFRpY1BuMm5ocnlYWXNZ\nTXdBMkhROGxBM0R1MDdPNHhKM1NYYVUKjZaHwqh/0OKB+ybatAfxEF4OmskYW2E9\nYEjuhy9jdcqi2a3hm2bI6rdSCsemAADJPW2PWsqjNc2TB9QeAK9ZgQ==\n-----END AGE ENCRYPTED FILE-----\n" 24 + }, 25 + { 26 + "recipient": "age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna", 27 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTUEJ4ZjV5aUhLNUVxNlZp\nY1N1WUEwNE5odUQ2ZkdqdFV5cjB6WW1LWkRNCndObExzUDB4ZFdsYVVNbUtBbFE2\nSU5kZy9iK3RlY3FLWXFrR1pzZmhYOU0KLS0tIG04dm85SGtMQmZmT2RqTGYyRWlS\nTVhCRVUwWGhUaGdpUExPVjIxUVl1ZzQKkcnzuMCngr9oWFDynRENTlJQEFIbRJV/\nY8THko3rajg5QrIcoDTHeQ85WM6ucapUakAUTbis+Sa9xBoQ2coqDg==\n-----END AGE ENCRYPTED FILE-----\n" 28 + } 29 + ], 30 + "lastmodified": "2025-03-08T10:28:45Z", 31 + "mac": "ENC[AES256_GCM,data:1Y93EdZwSxZ3u+F0umtNc0jxzHHR7CdF2OUDb+DhxhmJrt9dEBoK1pRAN2qkdTMRMu5SDZVh0oilbQQC8HSC0iegpvlJo7lkG/qXyo1ixqEdp/P+mjqZTRqyxt2F/fFTPU9ggXhpQKyJcDgV6fjGm1pyYcTSMsvm0hOyrFq2+fE=,iv:rBYnAsB8PFoK2y0rb3G8YgX7e0yACTSE/AO1fYoRV8Q=,tag:TR6ZqCdPll7zPVSL/qUTzg==,type:str]", 32 + "pgp": null, 33 + "unencrypted_suffix": "_unencrypted", 34 + "version": "3.8.1" 35 + } 36 + }
+36
secrets/users/nmelzer/nix-community
···
··· 1 + { 2 + "data": "ENC[AES256_GCM,data:beYSt9kq8a7NhS+FQcWQFFz0AjJP+Ybz1o5tYhAXkFo88OlxooLKCEpFgSDmN8jKgoE/IItxuLNVJJmPmo7+QUbQZgZq2Gs5xE5Am40ckfWc5vdGshxa5cPFqt1v+Sq/D6+oMj+8wxRC8zbUXGAH7Pah9Zaht/O/8gYcdnuypokYz6iKn9J713JbKAUHNNK358UUQhkEuVHWIgsWjbe6FylP+GlNtziYm2d4FwhAebuoOmZx3prQidP2qAcuul/FWjvRa5tJX3mEEa/oA1z44Q54jkPyWHvaMbsXMwdmq/3iFL26pMMZJl7FrM5OjfcxsTPNFHZFe9zonVWzffvdgu3KDpNcGTDK2OZRbOszr6kXy3BZYkzt/EMHoqH75mJ+WNCaGIZ41c3MMWBjEr0AkDLrLWA59EcVAJdH0WQ0TaVUErncLG6kR9UfGTMNm6dFs50IJy0PfGISHAKrnNL+2NkAdEVKlhHouP/0nlCqgB9Zg33nWzHniP7e4j2yDz6jfIkoIUjBHuwYPh44MEFE,iv:liL/qeyXe5Wbm3WtMCR8iIUk0O7gdIqYTOS9sBJSyqo=,tag:pkKFZEKNNBvl3/SfjH2nwQ==,type:str]", 3 + "sops": { 4 + "kms": null, 5 + "gcp_kms": null, 6 + "azure_kv": null, 7 + "hc_vault": null, 8 + "age": [ 9 + { 10 + "recipient": "age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r", 11 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtZ2c0aUJiRENZM1FNamJX\ndElNRmNsdlRBMFZNeG5vRHdVcjFyWEhYTnhBClJEbWF4ZFkxM3NoS0hXS2tnaTJY\nM29oY2xzQldidzdBcE54c2pTdkhCNncKLS0tIEFLNC94aUZmUkdLc09oSEkrb0VS\nM29wT2h4SEdjUE9CMWtFMmYwSHVSaUEKN9MEDf76Wa5JNjk0DSy8MExMDjyxhpSu\nBCPeuJpyYqac2vpwc09ttV4vqbzRzrGHlMGPpgFkgkYvvzX5lqehkQ==\n-----END AGE ENCRYPTED FILE-----\n" 12 + }, 13 + { 14 + "recipient": "age18p8x2cxam2l0trtpyhj4x9amcppp9ruzkqxzgapy9wnfpzl9hgaqlkht86", 15 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXeGZtQ2xERDlxd3l1TzFW\nTFhmRDJnOUJxUW0vemtZM1FORCsyMHFyTkJFCmtvR3I4eWhuSjFrNTJDdkd4Z29k\nRkt4eHM0aWVtNTZuc2txVGNKc2N1SDQKLS0tIEZ4bE5qU3hSSGpXb3lGWHp6MGti\nb2QzWDRYRmluWDllTVNJNmJaMlMxZDAKB0LOonMk7ypELophUHLnR2eEOclM5CgD\nrbgkmmKZPXMSvXLXDoQDICxleDNoFD2mWi4JvwZWZuRpaNs/1KPraw==\n-----END AGE ENCRYPTED FILE-----\n" 16 + }, 17 + { 18 + "recipient": "age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6", 19 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGdTVoVUI4UzM1VmlTZWVy\nblZxZE04TmIxaU1zOGhrREh6NnJaaTIwSjBBClFHejZwdHlFRTQyMC9YOFFsczhI\nMjh6cjJzcklFUGlHV1p6TnJUdzNPVGsKLS0tIFVQTDI1K0Jydno1ZVgrN2p2aDdi\nQ01mR3lNVzRmSEptQklBR0tIbWR0WE0KKND3aAMOLmMLjQV4iexO+XnjZIgZSSOj\nbK3qtICJ7E9lcRgoXtHDJm6+e5BzpBOUVkfX7cKAEWWtbfwrHbYnyA==\n-----END AGE ENCRYPTED FILE-----\n" 20 + }, 21 + { 22 + "recipient": "age1tf0zelmw4lh9gvkl0qycdk83fut9t4q3tfcdzk8cvlyhjp7z0g2q7hklgq", 23 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYZTVyRU9DQmNIRm1HWDQy\nUmhQUGVPM21ldGhCSzMydGpMK2JBdUNZU1JrCkpTa1krT1haWGo3OEdnLzFQZzh5\nTkFYb21JZjhGdmZxTjU1U1hRU0hkaGMKLS0tIDl0M3NaeE0vOTlTU0psSnVpYUw1\nYUE3ZGxXUmk0WUZmWUlQdjJNMTRBclEKPCZVzELeRe9jUC+dY/LTFrk0yrk4uWn0\nhNCROYc6jQPAHLhYRnCbWkENCQHfhBrxVLeyzLmELoU5ZdM0KgtPyA==\n-----END AGE ENCRYPTED FILE-----\n" 24 + }, 25 + { 26 + "recipient": "age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna", 27 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3aU02ZFlIcDFpUXU5ZUg3\nUFZTR0Uya2JDUkw5L29tK3d2cmg2N05XVFRJClZnWVpwVHo3cFp2b0h3QVh0Wk15\nWGFOclBuQVMvcVdMcklGOUVST2JGYVkKLS0tIHFrRUl1aW1OZ1Z2SkF5K3FMRmFu\nQXlDZjdlWVFVZWEzaXN5NnNFc25iRkUKk6/f0mFEON/gplXSDCviVm4+e+duQJlw\nBT1oJflU2VHXK9RJBiUl9sV3tGHF41MeXpt3WoEO1AKMsk8Q3Q++1w==\n-----END AGE ENCRYPTED FILE-----\n" 28 + } 29 + ], 30 + "lastmodified": "2025-03-08T10:28:45Z", 31 + "mac": "ENC[AES256_GCM,data:yenOYHB/Eax95Z8YqLd2kWq6bHUIbDXHj/qQntzLgLmBTUpnWW4DKuyligR3iBH91WD4evWBc+bDU5sMfGuozDQpgynsoIjPiOsNXPlLOURZLQf4tnqPzd4VzSkWsH2Q+b5bQvEteqYwYt9EI0XUxOfIF0X10yrjCM6axV6bsu8=,iv:du8kmJ2P/33SsLOih+5oCMrdvIEgWsFEC4ys51ASLJ4=,tag:4jsUew+WAfIj6pAUTGymLg==,type:str]", 32 + "pgp": null, 33 + "unencrypted_suffix": "_unencrypted", 34 + "version": "3.9.2" 35 + } 36 + }
+36
secrets/users/nmelzer/nobbz_dev
···
··· 1 + { 2 + "data": "ENC[AES256_GCM,data:JbATH1rQff0rUhJUxXAKwqq+KO8hjLXnwp6uwBwCpQXK1OAD88l/4StWTZ94oSqUwcwjT8DtI2M0DLFdGFQTmmQrrt/Or8XKHnZc1zu5axgJ8H/Ey3m+CFDgz6Wg9rOuc1nz0EBTBk6XIGvyeXc4AMMfUuVDo14ijarTL34JqPy4sB0ayzCGCWZTyxy0VKQoQnYQBK5D2JTqG4P2IjFY4yh/2R+IRmK+MghErz3gKg5ORKPfIqH4rFAszGbUjYZt9TKpVGiidW2lYVn0nqVHHzMgZGokst+jkrcriKQS4CLLLk/zh0Dx0fHo1QrJyRYzry5cFFQVCQZKyTe3nbkuExPbxfm13hROCC7jK+XYgn6T+MowJ4u6/B6F//UgjTLQ9by58lhbG7N1IUbXcgGYpWYib9bavF1ELk2PXdazP+WQJTQXMYT/f++eT80m6PdPbmHVbm1cjVD22SjnMa8g695eTUcvx8jwFbTKVEkE9kMEMOlAG6hVvf6/+8G+xvoCYXu/C35/mf9k6n62ii5QkoPiqT5yKKiGv/GXht+24d9NQGX4f1CF4p/6s3yRfKaOnnOF2MLseY8eYGrlLdGqdr3QWet0cAcraTXP62OH3gBBPhTW0U4N0EciBsX3/9atVxoiq4y9C/SQOYla6MIRRK6NTrWlWLCRif/MOBja+Ya7BG3s51umZgS8v3uPL9OyjpWutRpYvBPkherfHpKKzUUNJx+o/2De0yFtQx659bVddBQ1dBmJPjYkUbSzQBJE767pEyZf1oac88SC0wizxPFLDcI7ZzFvQlO9XYs5pgoO9aZKqYDx97rT6BJeOyUmLE4XhURliQtpL18fRqIqHu6SoAQoLZpjLx9A5JUHyI2iem7FyZJKFVeA/bL1hdXL1hby/VpnuP3PmbGP90Y4FOHPozUsLgBLObqbgf6SMKZBEs7JWWEK4i9A1uYbv7LIvxslqYvB+qwdCDEa+tFfz8TG9pBerJ2oqCpaNbO0UGruvpwJ7HXSpn4VdAXgG5zy4glupIqkGUNoERpYEVJMRZxx4K8ST9OZ+0qwpAOOTXTwYuqkcEw5TNwcoNswUNzu9Ck2/An0307fhOYXjO0D8IDvTDIF5CSESILjASB5H7qhbR4hbUE4G09fIChKi6DLyTP/zMAwWpgUBwxByZGMrttH+EzntFNbgL2EGbbdCfr8Vf7XWHhXT/bNYhlGJp2dkdOOBnV3XdPMIkyl4zJqzzAFySx4cpFTfCQ/zwWOEQN7H58sEsqcUxeYOtnSwccWkuP0+9Z4nrdJrAjq32RLeLSzTJ8cMStB85E3h/Gqx+O0Jw9fA+H4sE49JGkIobiuioz0wC/6uMQvyMBs5cyDvpiWFQ3dj2bKgpCtBVrAlcNG1Q8Hljc55WblkFiQRxVix1xB13yCpFMeNuIdCifGXUbTWuA64H4QjG5/P5KgH5IkT6Ry0wDPGw7CSqMXCXhCiRLsyzByGfy+LMkjL4LZk8GP21+6NlUkc+5j+cNZkjZ22J5LhxIdz4eE7MXSMKTno0iMrvUKYPJe0+NgIrXtprsacHLDyDSXowS3FUPWqPfPLG6vOBfz+99DMumFY1UU6eHSdFHVovBdp50kHnu3LbsiNh4iNvl8rtctgVl7PGRMvU+tF4GtiIrxHt0MRZzQ6WemRVvRIvZBYMXEEjn5p6Xn9Lg5p9HjsnvpjdmJOZCp4CCwYrkm9kzk+f2qwPVy/J6DQBwgr41k0Pd8fbCQjdICkGSU8yJxwCsWvP5I2T5NWrPiUdav0doc2i5fEi02NnDcL1ncChBooqrVjD0mLIbQ9ra9F+f+51RGZO+Y7XjfFH8E2uUb8GS3u/bZbhmoCvouVKHLurOCcmFfs14ZGek0bZT7Q+PHChWzv890MkA1S5A3x9orY6WmhR4Zy86Bsi9PA3YNL59jUQTl0nWknbrxuhPdPcsmCL+DgdSV7E5zesUaeRJi7QuL/GCZ2E8PKKSuh9Kq56pYk8HsYMsrqNqyU80QM8aRc1o++YSq6SLwEmY1Pm8fsssZTjP9PT2RZIXt5LjskQbkA4Q4rECm4JQepx9jHZeFAgo0tDOfAmj7q1QQq3bxEfvRO1dxJ212tvcFpR5ehDO8d4CLyTMqprBvG9/0r2qO8xp7ifJQKHx4CDpiiZaNS9Fyl1QdfqADvrT9z15ucRsmoQuL5zjVdbC05lAie4wswlcOUUvu3qoj6RikDC+xFG6AXd+e33un1v9rT2XmVzz+47WKPCQLfRqCDkNgwpjxUkrgCsiFun3+EhzWxLxzXLIEkVfE8c7eJnQSDu3IEShZ2vF2sT5FFJScN8tf888J7mCgLsHpnWbSplXxa4RMjO1rHD1S04tLC80EPGl/rdaraHmnEtt4mc9boo7IyusR19gotEjRRnZDZJaplDt72IdgC6hBCQM=,iv:iwfQiWkkxmB52x5mVXlhS3pbzKL3/ctoJMctdhHGQuk=,tag:VQ0GWz0xyQiCx/WpYq1itA==,type:str]", 3 + "sops": { 4 + "kms": null, 5 + "gcp_kms": null, 6 + "azure_kv": null, 7 + "hc_vault": null, 8 + "age": [ 9 + { 10 + "recipient": "age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r", 11 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtQUpwZ2JXYTUybXc5Tm9T\na1p6azYvbno0NzY0UGNrWnNjQUd3SnJMakV3CjVMemhwQ3NmOWFJSGEzQ2ZsL1pF\najgrM2g2THQ2dkxTUUM0QlpnODRjbUkKLS0tIDZKaFYydnZRYWdxZFIzYnNZbjZ3\nWkxPcWdHbm9ZZnZNNVpIQmZ5djVHTGcKAiKFm4r93FBNXxt/jgofvKS3pn0NbdWW\njDacQ7VUubSqpmHax/s/FNV75g5ynIm8ldOJVoW6lgNxPWxcfucTLA==\n-----END AGE ENCRYPTED FILE-----\n" 12 + }, 13 + { 14 + "recipient": "age18p8x2cxam2l0trtpyhj4x9amcppp9ruzkqxzgapy9wnfpzl9hgaqlkht86", 15 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLMU5ycnhZSlJyQ0UrRXVo\naVIra1o2TkRmbTFFMHFzeTN2d1NGQUluTVRzCk4wRm41Sy8rNWh4OXI0eUdKdDhH\nRjZwcE80K1NUbGxubGp1akh1WVFTWU0KLS0tIFZraWFpdmU3dlRCMnVtMHN3RnFD\nYmN5dmIwRUlJQktKTmUzZllTb1lOUTQKkJLBrTeUlPaZ1C/pGWu9WQNFCBgsJVqS\nYnPpsvYJiOE/6WmCzB34OVpO8vdrv1mE5jR/Ila3YQVjBt8JHo7Zqw==\n-----END AGE ENCRYPTED FILE-----\n" 16 + }, 17 + { 18 + "recipient": "age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6", 19 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVUEx6UkEveUI1UVRqQm1n\ncE9OcFNnZFM4eU5iM2NpQjQ5R0NteFZOMlhZCk1Kd3JxVy9tTk5oTU1GSUgyTjNO\nY1hmaTZjYmZkZHVnazl3Q1ViT1R6RVUKLS0tIE9udElPWU9vNWpYYWtmMmluTWQ2\nK0hWL25OemxpVStNMFZJUGI4UUc4MmsKs7DTAfnY74yp33cmdyYiF6fPiNgheehm\nRO9PDQ/Yh6wIq/6j/brPsMJLyYrC7+Mjgx/oX5lNmMwTVLBrCe/qdg==\n-----END AGE ENCRYPTED FILE-----\n" 20 + }, 21 + { 22 + "recipient": "age1tf0zelmw4lh9gvkl0qycdk83fut9t4q3tfcdzk8cvlyhjp7z0g2q7hklgq", 23 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqVW5aVUVpZk14U1pYK2NJ\nRVpGbGdXVzlLQ25PSWYyWjR6bGRCWkIxM3dVCnlGd1h3Z2pJNmNweTgwRmUyL1Bo\nNVBoaFprQWVUK1pQbi9YOTgreFBpcDgKLS0tIFhCUE5WQ2w4R3J1eXVhSFJEOGRp\nMlZpSnovWnpvc3lGemE3WmJkK2xQWVkKkNZaVbq8X99+MXfei0BzbXBwzibERWvR\nV26mOEEYcfv/3/KqCLOjBVCLEE3RSuB9AtniAAFC6Fj0/jHnMzaghQ==\n-----END AGE ENCRYPTED FILE-----\n" 24 + }, 25 + { 26 + "recipient": "age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna", 27 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQdlIzc3NQM2JkdW1TQzVX\nYVRjR2hEY3NrME9GeHJhbitpQURVbUdoTWlrCm81Wmt5dWpWWlVtaHJKcnNnMVJm\nekZnM0gycDdlZi9ZdUhYMTRpTFhjK28KLS0tIHcrcFQ3SEphOW1oeEsvcDdBUFRI\nU1psVWVldkZ0TXp3QnBmMUxHdm1ocmsKn/oYX+0hYRZvC32KGQ9hNRDMdlxclv5x\nekDM5wPeI9wT/j62bxmykEtNnI40WEpEopz7MSZvRnj6B8zF9boFPw==\n-----END AGE ENCRYPTED FILE-----\n" 28 + } 29 + ], 30 + "lastmodified": "2025-03-08T10:28:45Z", 31 + "mac": "ENC[AES256_GCM,data:7XBQhTfVn9Uq4ZjjpLdMyvw+kDhIJ+dUEjI1j7Lq8QzoxLN7kqWyrotavl4T7x3kbhGseqA/RtuldK5cvw90OK7FVvWD0H5WSsxDCG2zuNRCELmiOEM8O4Iw47J6ye3wY9F+05F7ggG/GrZGJK09YojuZyek4G+/slHfp/Zgxy0=,iv:vAqJx7GT28f4wC0iH0w+K/HRywJlMb6/N/5Lb1/4q80=,tag:L3odjAh/IWuddrzg7vP/Sg==,type:str]", 32 + "pgp": null, 33 + "unencrypted_suffix": "_unencrypted", 34 + "version": "3.8.1" 35 + } 36 + }