My nixos configuration

Compare changes

Choose any two refs to compare.

Changed files
+1530 -2026
.github
checks
home
mixed
nixos
npins
packages
advcp
dracula
konsole
rofi-unicode
parts
secrets
+28 -28
.github/workflows/flake-update.yml
··· 7 7 8 8 jobs: 9 9 generate_matrix: 10 - runs-on: ubuntu-20.04 10 + runs-on: ubuntu-24.04 11 11 outputs: 12 12 packages: ${{ steps.gen_packages.outputs.packages }} 13 13 checks: ${{ steps.gen_checks.outputs.checks }} ··· 15 15 - name: Clone repository 16 16 uses: actions/checkout@v4 17 17 with: 18 - token: "${{ secrets.GITHUB_TOKEN }}" 18 + token: "${{ secrets.TEST_TOKEN }}" 19 19 - name: Install nix 20 - uses: cachix/install-nix-action@v25 20 + uses: cachix/install-nix-action@v31 21 21 with: 22 22 extra_nix_config: | 23 23 auto-optimise-store = true 24 - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} 24 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 25 25 experimental-features = nix-command flakes 26 26 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 27 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.19.0/install 28 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 29 29 - name: Generate flake.json 30 30 run: | 31 31 nix flake show --json > flake.json ··· 39 39 printf "::set-output name=checks::%s" "$checks" 40 40 41 41 update_flake: 42 - runs-on: ubuntu-20.04 42 + runs-on: ubuntu-24.04 43 43 steps: 44 44 - name: Clone repository 45 45 uses: actions/checkout@v4 46 46 with: 47 - token: "${{ secrets.GITHUB_TOKEN }}" 47 + token: "${{ secrets.TEST_TOKEN }}" 48 48 - name: Install nix 49 - uses: cachix/install-nix-action@v25 49 + uses: cachix/install-nix-action@v31 50 50 with: 51 51 extra_nix_config: | 52 52 auto-optimise-store = true 53 - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} 53 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 54 54 experimental-features = nix-command flakes 55 55 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 56 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.19.0/install 57 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 58 58 - name: Set up git 59 59 run: | 60 60 git config user.email gitbot@nobbz.dev ··· 68 68 path: flake.lock 69 69 70 70 build_flake: 71 - runs-on: ubuntu-20.04 71 + runs-on: ubuntu-24.04 72 72 needs: [generate_matrix, update_flake] 73 73 strategy: 74 74 fail-fast: false ··· 89 89 - name: Clone repository 90 90 uses: actions/checkout@v4 91 91 with: 92 - token: "${{ secrets.GITHUB_TOKEN }}" 92 + token: "${{ secrets.TEST_TOKEN }}" 93 93 - name: Install nix 94 - uses: cachix/install-nix-action@v25 94 + uses: cachix/install-nix-action@v31 95 95 with: 96 96 extra_nix_config: | 97 97 auto-optimise-store = true 98 - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} 98 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 99 99 experimental-features = nix-command flakes 100 100 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 101 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.19.0/install 102 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 103 103 - name: Set up cachix 104 104 uses: cachix/cachix-action@master # pathsToPush, please update once we have v11! 105 105 with: ··· 114 114 run: nix build .#${{ matrix.package }} 115 115 116 116 build_checks: 117 - runs-on: ubuntu-20.04 117 + runs-on: ubuntu-24.04 118 118 needs: [generate_matrix, update_flake] 119 119 strategy: 120 120 fail-fast: false ··· 125 125 - name: Clone repository 126 126 uses: actions/checkout@v4 127 127 with: 128 - token: "${{ secrets.GITHUB_TOKEN }}" 128 + token: "${{ secrets.TEST_TOKEN }}" 129 129 - name: Install nix 130 - uses: cachix/install-nix-action@v25 130 + uses: cachix/install-nix-action@v31 131 131 with: 132 132 extra_nix_config: | 133 133 auto-optimise-store = true 134 - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} 134 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 135 135 experimental-features = nix-command flakes 136 136 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 137 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.19.0/install 138 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 139 139 - name: Set up cachix 140 140 uses: cachix/cachix-action@master # pathsToPush, please update once we have v11! 141 141 with: ··· 150 150 run: nix build .#checks.x86_64-linux.${{ matrix.check }} --no-link 151 151 152 152 check_flake: 153 - runs-on: ubuntu-20.04 153 + runs-on: ubuntu-24.04 154 154 needs: [update_flake] 155 155 continue-on-error: true 156 156 steps: 157 157 - name: Clone repository 158 158 uses: actions/checkout@v4 159 159 with: 160 - token: "${{ secrets.GITHUB_TOKEN }}" 160 + token: "${{ secrets.TEST_TOKEN }}" 161 161 - name: Install nix 162 - uses: cachix/install-nix-action@v25 162 + uses: cachix/install-nix-action@v31 163 163 with: 164 164 extra_nix_config: | 165 165 auto-optimise-store = true 166 - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} 166 + access-tokens = github.com=${{ secrets.TEST_TOKEN }} 167 167 experimental-features = nix-command flakes 168 168 substituters = https://cache.nixos.org/ https://nix-community.cachix.org 169 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.19.0/install 170 + install_url: https://releases.nixos.org/nix/nix-2.25.0/install 171 171 - name: Restore flake.lock 172 172 uses: actions/download-artifact@v4 173 173 with: ··· 177 177 nix flake check --keep-going 178 178 179 179 push_update: 180 - runs-on: ubuntu-20.04 180 + runs-on: ubuntu-24.04 181 181 permissions: write-all 182 182 needs: [update_flake, build_flake, build_checks, check_flake] 183 183 steps: 184 184 - name: Clone repository 185 185 uses: actions/checkout@v4 186 186 with: 187 - token: "${{ secrets.GITHUB_TOKEN }}" 187 + token: "${{ secrets.TEST_TOKEN }}" 188 188 - name: Restore flake.lock 189 189 uses: actions/download-artifact@v4 190 190 with: ··· 207 207 --title "Auto update $(date -I)") 208 208 gh pr merge $PR --merge --delete-branch 209 209 env: 210 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 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
-15
.sops.yaml
··· 1 1 keys: 2 2 - &admin_nobbz age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 3 3 - &host_mimas age10jl78vwyqk622dpn2890l9jl4et3p7lsr8wh8vusem3j8jdxle8qg000qa 4 - - &host_janus age1swznwyf5zyh66xuex8jnwsargmeq58h8u6fy57ta3xtkgh806ews09ztkl 5 4 - &user_nmelzer_mimas age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6 6 - - &user_nmelzer_janus age18p8x2cxam2l0trtpyhj4x9amcppp9ruzkqxzgapy9wnfpzl9hgaqlkht86 7 - - &user_nmelzer_enceladeus age1tf0zelmw4lh9gvkl0qycdk83fut9t4q3tfcdzk8cvlyhjp7z0g2q7hklgq 8 5 - &user_nmelzer_phoebe age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna 9 6 creation_rules: 10 7 - path_regex: secrets/[^/]+\.yaml$ ··· 17 14 - age: 18 15 - *admin_nobbz 19 16 - *host_mimas 20 - - path_regex: secrets/janus/[^/]+$ 21 - key_groups: 22 - - age: 23 - - *admin_nobbz 24 - - *host_janus 25 17 - path_regex: secrets/mimas/nmelzer/[^/]+\.yaml$ 26 18 key_groups: 27 19 - age: 28 20 - *admin_nobbz 29 21 - *user_nmelzer_mimas 30 - - path_regex: secrets/janus/nmelzer/[^/]+\.yaml$ 31 - key_groups: 32 - - age: 33 - - *admin_nobbz 34 - - *user_nmelzer_janus 35 22 - path_regex: secrets/phoebe/nmelzer/[^/]+ 36 23 key_groups: 37 24 - age: ··· 41 28 key_groups: 42 29 - age: 43 30 - *admin_nobbz 44 - - *user_nmelzer_janus 45 31 - *user_nmelzer_mimas 46 - - *user_nmelzer_enceladeus 47 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 1 inputs: let 2 - pkgs = inputs.unstable.legacyPackages.x86_64-linux; 3 - apkgs = inputs.alejandra.packages.x86_64-linux; 2 + pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux; 4 3 5 - callPackage = pkgs.lib.callPackageWith (pkgs // apkgs // {inherit (inputs) self;}); 4 + callPackage = pkgs.lib.callPackageWith (pkgs // {inherit (inputs) self;}); 6 5 in { 7 6 alejandra = callPackage ./alejandra.nix {}; 8 7 statix = callPackage ./statix.nix {};
+265 -395
flake.lock
··· 1 1 { 2 2 "nodes": { 3 - "alejandra": { 4 - "inputs": { 5 - "fenix": "fenix", 6 - "flakeCompat": "flakeCompat", 7 - "nixpkgs": "nixpkgs" 8 - }, 9 - "locked": { 10 - "lastModified": 1660592437, 11 - "narHash": "sha256-xFumnivtVwu5fFBOrTxrv6fv3geHKF04RGP23EsDVaI=", 12 - "owner": "kamadorueda", 13 - "repo": "alejandra", 14 - "rev": "e7eac49074b70814b542fee987af2987dd0520b5", 15 - "type": "github" 16 - }, 17 - "original": { 18 - "owner": "kamadorueda", 19 - "ref": "3.0.0", 20 - "repo": "alejandra", 21 - "type": "github" 22 - } 23 - }, 24 3 "cargo2nix": { 25 4 "inputs": { 26 - "flake-compat": "flake-compat_2", 27 - "flake-utils": "flake-utils_5", 5 + "flake-compat": "flake-compat_3", 6 + "flake-utils": "flake-utils_3", 28 7 "nixpkgs": [ 29 8 "switcher", 30 9 "nixpkgs" ··· 50 29 }, 51 30 "emacs": { 52 31 "inputs": { 53 - "flake-utils": "flake-utils", 54 32 "nixpkgs": [ 55 - "master" 33 + "nixpkgs" 56 34 ], 57 - "nixpkgs-stable": "nixpkgs-stable" 35 + "nixpkgs-stable": [ 36 + "nixpkgs" 37 + ] 58 38 }, 59 39 "locked": { 60 - "lastModified": 1709603049, 61 - "narHash": "sha256-pw/Lty1T7CDnhJvyVziXQM+nbPSAgwFf4JE3zM0j6bM=", 40 + "lastModified": 1749090069, 41 + "narHash": "sha256-uN3Mp+o7IfVT9H/OuwEtJ17NktCaF4t9Ond3TKt+BE4=", 62 42 "owner": "nix-community", 63 43 "repo": "emacs-overlay", 64 - "rev": "ceb9739648fff3dea0552003a9a4127191f50cd1", 44 + "rev": "c17506666090e412a50b01c57944386ab81d2aa8", 65 45 "type": "github" 66 46 }, 67 47 "original": { ··· 70 50 "type": "github" 71 51 } 72 52 }, 73 - "fenix": { 74 - "inputs": { 75 - "nixpkgs": [ 76 - "alejandra", 77 - "nixpkgs" 78 - ], 79 - "rust-analyzer-src": "rust-analyzer-src" 80 - }, 53 + "flake-compat": { 54 + "flake": false, 81 55 "locked": { 82 - "lastModified": 1657607339, 83 - "narHash": "sha256-HaqoAwlbVVZH2n4P3jN2FFPMpVuhxDy1poNOR7kzODc=", 84 - "owner": "nix-community", 85 - "repo": "fenix", 86 - "rev": "b814c83d9e6aa5a28d0cf356ecfdafb2505ad37d", 56 + "lastModified": 1733328505, 57 + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", 58 + "owner": "edolstra", 59 + "repo": "flake-compat", 60 + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", 87 61 "type": "github" 88 62 }, 89 63 "original": { 90 - "owner": "nix-community", 91 - "repo": "fenix", 64 + "owner": "edolstra", 65 + "repo": "flake-compat", 92 66 "type": "github" 93 67 } 94 68 }, 95 - "flake-compat": { 69 + "flake-compat_2": { 96 70 "flake": false, 97 71 "locked": { 98 - "lastModified": 1673956053, 99 - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", 72 + "lastModified": 1696426674, 73 + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", 100 74 "owner": "edolstra", 101 75 "repo": "flake-compat", 102 - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", 76 + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", 103 77 "type": "github" 104 78 }, 105 79 "original": { ··· 108 82 "type": "github" 109 83 } 110 84 }, 111 - "flake-compat_2": { 85 + "flake-compat_3": { 112 86 "flake": false, 113 87 "locked": { 114 88 "lastModified": 1696426674, ··· 125 99 } 126 100 }, 127 101 "flake-utils": { 128 - "inputs": { 129 - "systems": "systems" 130 - }, 131 102 "locked": { 132 - "lastModified": 1709126324, 133 - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", 103 + "lastModified": 1659877975, 104 + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", 134 105 "owner": "numtide", 135 106 "repo": "flake-utils", 136 - "rev": "d465f4819400de7c8d874d50b982301f28a84605", 107 + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", 137 108 "type": "github" 138 109 }, 139 110 "original": { ··· 144 115 }, 145 116 "flake-utils_2": { 146 117 "inputs": { 147 - "systems": "systems_2" 118 + "systems": "systems" 148 119 }, 149 120 "locked": { 150 - "lastModified": 1709126324, 151 - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", 121 + "lastModified": 1681202837, 122 + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", 152 123 "owner": "numtide", 153 124 "repo": "flake-utils", 154 - "rev": "d465f4819400de7c8d874d50b982301f28a84605", 125 + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", 155 126 "type": "github" 156 127 }, 157 128 "original": { ··· 162 133 }, 163 134 "flake-utils_3": { 164 135 "inputs": { 165 - "systems": "systems_3" 136 + "systems": "systems_2" 166 137 }, 167 138 "locked": { 168 - "lastModified": 1701680307, 169 - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", 139 + "lastModified": 1694529238, 140 + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", 170 141 "owner": "numtide", 171 142 "repo": "flake-utils", 172 - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", 143 + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", 173 144 "type": "github" 174 145 }, 175 146 "original": { ··· 178 149 "type": "github" 179 150 } 180 151 }, 181 - "flake-utils_4": { 152 + "gen-luarc": { 182 153 "inputs": { 183 - "systems": "systems_4" 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 + ] 184 164 }, 185 165 "locked": { 186 - "lastModified": 1681202837, 187 - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", 188 - "owner": "numtide", 189 - "repo": "flake-utils", 190 - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", 166 + "lastModified": 1724097937, 167 + "narHash": "sha256-Q4tgm8ZHAQUdvsNft86MqIbHQAm7OF7RT/wwYWXqSdY=", 168 + "owner": "mrcjkb", 169 + "repo": "nix-gen-luarc-json", 170 + "rev": "b36b69c4ded9f31b079523bc452e23458734cf00", 191 171 "type": "github" 192 172 }, 193 173 "original": { 194 - "owner": "numtide", 195 - "repo": "flake-utils", 174 + "owner": "mrcjkb", 175 + "repo": "nix-gen-luarc-json", 196 176 "type": "github" 197 177 } 198 178 }, 199 - "flake-utils_5": { 179 + "git-hooks": { 200 180 "inputs": { 201 - "systems": "systems_5" 181 + "flake-compat": "flake-compat_2", 182 + "gitignore": "gitignore", 183 + "nixpkgs": [ 184 + "nvim", 185 + "gen-luarc", 186 + "nixpkgs" 187 + ], 188 + "nixpkgs-stable": "nixpkgs-stable" 202 189 }, 203 190 "locked": { 204 - "lastModified": 1694529238, 205 - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", 206 - "owner": "numtide", 207 - "repo": "flake-utils", 208 - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", 191 + "lastModified": 1723803910, 192 + "narHash": "sha256-yezvUuFiEnCFbGuwj/bQcqg7RykIEqudOy/RBrId0pc=", 193 + "owner": "cachix", 194 + "repo": "git-hooks.nix", 195 + "rev": "bfef0ada09e2c8ac55bbcd0831bd0c9d42e651ba", 209 196 "type": "github" 210 197 }, 211 198 "original": { 212 - "owner": "numtide", 213 - "repo": "flake-utils", 199 + "owner": "cachix", 200 + "repo": "git-hooks.nix", 214 201 "type": "github" 215 202 } 216 203 }, 217 - "flake-utils_6": { 204 + "git-hooks-nix": { 218 205 "inputs": { 219 - "systems": "systems_6" 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 220 }, 221 221 "locked": { 222 - "lastModified": 1681202837, 223 - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", 224 - "owner": "numtide", 225 - "repo": "flake-utils", 226 - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", 222 + "lastModified": 1734279981, 223 + "narHash": "sha256-NdaCraHPp8iYMWzdXAt5Nv6sA3MUzlCiGiR586TCwo0=", 224 + "owner": "cachix", 225 + "repo": "git-hooks.nix", 226 + "rev": "aa9f40c906904ebd83da78e7f328cd8aeaeae785", 227 227 "type": "github" 228 228 }, 229 229 "original": { 230 - "owner": "numtide", 231 - "repo": "flake-utils", 230 + "owner": "cachix", 231 + "repo": "git-hooks.nix", 232 232 "type": "github" 233 233 } 234 234 }, 235 - "flakeCompat": { 236 - "flake": false, 235 + "gitignore": { 236 + "inputs": { 237 + "nixpkgs": [ 238 + "nvim", 239 + "gen-luarc", 240 + "git-hooks", 241 + "nixpkgs" 242 + ] 243 + }, 237 244 "locked": { 238 - "lastModified": 1650374568, 239 - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", 240 - "owner": "edolstra", 241 - "repo": "flake-compat", 242 - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", 245 + "lastModified": 1709087332, 246 + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", 247 + "owner": "hercules-ci", 248 + "repo": "gitignore.nix", 249 + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", 243 250 "type": "github" 244 251 }, 245 252 "original": { 246 - "owner": "edolstra", 247 - "repo": "flake-compat", 253 + "owner": "hercules-ci", 254 + "repo": "gitignore.nix", 248 255 "type": "github" 249 256 } 250 257 }, 251 258 "home-manager": { 252 259 "inputs": { 253 260 "nixpkgs": [ 254 - "unstable" 261 + "nixpkgs" 255 262 ] 256 263 }, 257 264 "locked": { 258 - "lastModified": 1709578243, 259 - "narHash": "sha256-hF96D+c2PBmAFhymMw3z8hou++lqKtZ7IzpFbYeL1/Y=", 265 + "lastModified": 1749062139, 266 + "narHash": "sha256-gGGLujmeWU+ZjFzfMvFMI0hp9xONsSbm88187wJr82Q=", 260 267 "owner": "nix-community", 261 268 "repo": "home-manager", 262 - "rev": "23ff9821bcaec12981e32049e8687f25f11e5ef3", 269 + "rev": "86b95fc1ed2b9b04a451a08ccf13d78fb421859c", 263 270 "type": "github" 264 271 }, 265 272 "original": { ··· 268 275 "type": "github" 269 276 } 270 277 }, 271 - "libgit2": { 278 + "luvit-meta": { 272 279 "flake": false, 273 280 "locked": { 274 - "lastModified": 1697646580, 275 - "narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=", 276 - "owner": "libgit2", 277 - "repo": "libgit2", 278 - "rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5", 281 + "lastModified": 1705776742, 282 + "narHash": "sha256-zAAptV/oLuLAAsa2zSB/6fxlElk4+jNZd/cPr9oxFig=", 283 + "owner": "Bilal2453", 284 + "repo": "luvit-meta", 285 + "rev": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60", 279 286 "type": "github" 280 287 }, 281 288 "original": { 282 - "owner": "libgit2", 283 - "repo": "libgit2", 289 + "owner": "Bilal2453", 290 + "repo": "luvit-meta", 284 291 "type": "github" 285 292 } 286 293 }, 287 - "master": { 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 + }, 288 305 "locked": { 289 - "lastModified": 1709604507, 290 - "narHash": "sha256-XV7Dd3XdIj+5Bq18KI/Zkubgfj+0az43+ZHtnT8bMm0=", 306 + "lastModified": 1749012568, 307 + "narHash": "sha256-7IltFTct/oe6pGkwB6f/1WhWA65hFnsBY6XaGjodf3k=", 291 308 "owner": "nixos", 292 - "repo": "nixpkgs", 293 - "rev": "3d7128dc4273fa5a72c2c21a01cc4ba5c2f341b4", 309 + "repo": "nix", 310 + "rev": "4751cbef6303d10479f3db1b13db69197d9c3446", 294 311 "type": "github" 295 312 }, 296 313 "original": { 297 314 "owner": "nixos", 298 - "ref": "master", 299 - "repo": "nixpkgs", 315 + "repo": "nix", 300 316 "type": "github" 301 317 } 302 318 }, 303 - "nil": { 319 + "nix-gl": { 304 320 "inputs": { 305 - "flake-utils": "flake-utils_3", 306 - "nixpkgs": "nixpkgs_2", 307 - "rust-overlay": "rust-overlay" 321 + "flake-utils": "flake-utils", 322 + "nixpkgs": [ 323 + "nixpkgs" 324 + ] 308 325 }, 309 326 "locked": { 310 - "lastModified": 1704611696, 311 - "narHash": "sha256-4ZCgV5oHdEc3q+XaIzy//gh20uC/aSuAtMU9bsfgLZk=", 312 - "owner": "oxalica", 313 - "repo": "nil", 314 - "rev": "059d33a24bb76d2048740bcce936362bf54b5bc9", 315 - "type": "github" 316 - }, 317 - "original": { 318 - "owner": "oxalica", 319 - "repo": "nil", 320 - "type": "github" 321 - } 322 - }, 323 - "nix": { 324 - "inputs": { 325 - "flake-compat": "flake-compat", 326 - "libgit2": "libgit2", 327 - "nixpkgs": "nixpkgs_3", 328 - "nixpkgs-regression": "nixpkgs-regression" 329 - }, 330 - "locked": { 331 - "lastModified": 1709580543, 332 - "narHash": "sha256-IrO/V16iJ63Q3H4vUFGIzZuG6ZOsm/HCwVxdFmKXnw0=", 333 - "owner": "nixos", 334 - "repo": "nix", 335 - "rev": "6b976a1898cb1f6688da66725a8182279d83c0fa", 327 + "lastModified": 1713543440, 328 + "narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=", 329 + "owner": "nix-community", 330 + "repo": "nixgl", 331 + "rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a", 336 332 "type": "github" 337 333 }, 338 334 "original": { 339 - "owner": "nixos", 340 - "repo": "nix", 335 + "owner": "nix-community", 336 + "repo": "nixgl", 341 337 "type": "github" 342 338 } 343 339 }, 344 340 "nixos-vscode-server": { 345 341 "inputs": { 346 - "flake-utils": "flake-utils_4", 347 - "nixpkgs": "nixpkgs_4" 342 + "flake-utils": "flake-utils_2", 343 + "nixpkgs": [ 344 + "nixpkgs" 345 + ] 348 346 }, 349 347 "locked": { 350 - "lastModified": 1684517665, 351 - "narHash": "sha256-SaAr66uCQ8CF75jIr23FZjk1+9Kfwm5sQnwV25206Gs=", 348 + "lastModified": 1729422940, 349 + "narHash": "sha256-DlvJv33ml5UTKgu4b0HauOfFIoDx6QXtbqUF3vWeRCY=", 352 350 "owner": "msteen", 353 351 "repo": "nixos-vscode-server", 354 - "rev": "1e1358493df6529d4c7bc4cc3066f76fd16d4ae6", 352 + "rev": "8b6db451de46ecf9b4ab3d01ef76e59957ff549f", 355 353 "type": "github" 356 354 }, 357 355 "original": { ··· 362 360 }, 363 361 "nixpkgs": { 364 362 "locked": { 365 - "lastModified": 1657425264, 366 - "narHash": "sha256-3aHvoI2e8vJKw3hvnHECaBpSsL5mxVsVtaLCnTdNcH8=", 367 - "owner": "nixos", 363 + "lastModified": 1747179050, 364 + "narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=", 365 + "owner": "NixOS", 368 366 "repo": "nixpkgs", 369 - "rev": "de5b3dd17034e6106e75746e81618e5bd408de8a", 367 + "rev": "adaa24fbf46737f3f1b5497bf64bae750f82942e", 370 368 "type": "github" 371 369 }, 372 370 "original": { 373 - "owner": "nixos", 374 - "ref": "nixos-unstable-small", 371 + "owner": "NixOS", 372 + "ref": "nixos-unstable", 375 373 "repo": "nixpkgs", 376 374 "type": "github" 377 375 } 378 376 }, 379 - "nixpkgs-2211": { 377 + "nixpkgs-23-11": { 380 378 "locked": { 381 - "lastModified": 1688392541, 382 - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", 383 - "owner": "nixos", 379 + "lastModified": 1717159533, 380 + "narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=", 381 + "owner": "NixOS", 384 382 "repo": "nixpkgs", 385 - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", 383 + "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", 386 384 "type": "github" 387 385 }, 388 386 "original": { 389 - "owner": "nixos", 390 - "ref": "nixos-22.11", 387 + "owner": "NixOS", 391 388 "repo": "nixpkgs", 389 + "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", 392 390 "type": "github" 393 391 } 394 392 }, 395 - "nixpkgs-insync-v3": { 393 + "nixpkgs-emmy": { 396 394 "locked": { 397 - "lastModified": 1674552486, 398 - "narHash": "sha256-FK9Y4P5Q7lzq9hjXIflr9oW+Cxw+5gxP/dN9+R/bHnA=", 399 - "owner": "nixos", 395 + "lastModified": 1719675406, 396 + "narHash": "sha256-bZgaUZikDI7ZS1EY0jjZnbcO4vNeSRhIekb17FyUMf0=", 397 + "owner": "NixOS", 400 398 "repo": "nixpkgs", 401 - "rev": "32fdc268e921994e3f38088486ddfe765d11df93", 399 + "rev": "2feb215c297f2c9ae272336f55d54a962d71a9ff", 402 400 "type": "github" 403 401 }, 404 402 "original": { 405 - "owner": "nixos", 406 - "ref": "32fdc268e921994e3f38088486ddfe765d11df93", 403 + "owner": "NixOS", 404 + "ref": "pull/323401/head", 407 405 "repo": "nixpkgs", 408 406 "type": "github" 409 407 } 410 408 }, 411 - "nixpkgs-lib": { 409 + "nixpkgs-pre-rust": { 412 410 "locked": { 413 - "dir": "lib", 414 - "lastModified": 1709237383, 415 - "narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=", 416 - "owner": "NixOS", 411 + "lastModified": 1723634395, 412 + "narHash": "sha256-K1ohl/M/HWXqieqNtsF39FbWqtaNX/mUgulrqcOO1KU=", 413 + "owner": "nixos", 417 414 "repo": "nixpkgs", 418 - "rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8", 415 + "rev": "57d0d4a8f3025e2b902d2b4403bcece26ad1ea74", 419 416 "type": "github" 420 417 }, 421 418 "original": { 422 - "dir": "lib", 423 - "owner": "NixOS", 424 - "ref": "nixos-unstable", 419 + "owner": "nixos", 420 + "ref": "57d0d4a8f302", 425 421 "repo": "nixpkgs", 426 422 "type": "github" 427 423 } ··· 444 440 }, 445 441 "nixpkgs-stable": { 446 442 "locked": { 447 - "lastModified": 1709309926, 448 - "narHash": "sha256-VZFBtXGVD9LWTecGi6eXrE0hJ/mVB3zGUlHImUs2Qak=", 443 + "lastModified": 1720386169, 444 + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", 449 445 "owner": "NixOS", 450 446 "repo": "nixpkgs", 451 - "rev": "79baff8812a0d68e24a836df0a364c678089e2c7", 447 + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", 452 448 "type": "github" 453 449 }, 454 450 "original": { 455 451 "owner": "NixOS", 456 - "ref": "nixos-23.11", 452 + "ref": "nixos-24.05", 457 453 "repo": "nixpkgs", 458 454 "type": "github" 459 455 } 460 456 }, 461 - "nixpkgs-stable_2": { 457 + "nixpkgs_2": { 462 458 "locked": { 463 - "lastModified": 1709428628, 464 - "narHash": "sha256-//ZCCnpVai/ShtO2vPjh3AWgo8riXCaret6V9s7Hew4=", 465 - "owner": "NixOS", 466 - "repo": "nixpkgs", 467 - "rev": "66d65cb00b82ffa04ee03347595aa20e41fe3555", 468 - "type": "github" 469 - }, 470 - "original": { 471 - "owner": "NixOS", 472 - "ref": "release-23.11", 473 - "repo": "nixpkgs", 474 - "type": "github" 475 - } 476 - }, 477 - "nixpkgs-unstable": { 478 - "locked": { 479 - "lastModified": 1709479366, 480 - "narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=", 459 + "lastModified": 1748929857, 460 + "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", 481 461 "owner": "nixos", 482 462 "repo": "nixpkgs", 483 - "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", 463 + "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", 484 464 "type": "github" 485 465 }, 486 466 "original": { ··· 490 470 "type": "github" 491 471 } 492 472 }, 493 - "nixpkgs_2": { 494 - "locked": { 495 - "lastModified": 1704161960, 496 - "narHash": "sha256-QGua89Pmq+FBAro8NriTuoO/wNaUtugt29/qqA8zeeM=", 497 - "owner": "nixos", 498 - "repo": "nixpkgs", 499 - "rev": "63143ac2c9186be6d9da6035fa22620018c85932", 500 - "type": "github" 501 - }, 502 - "original": { 503 - "owner": "nixos", 504 - "ref": "nixpkgs-unstable", 505 - "repo": "nixpkgs", 506 - "type": "github" 507 - } 508 - }, 509 473 "nixpkgs_3": { 510 474 "locked": { 511 - "lastModified": 1709083642, 512 - "narHash": "sha256-7kkJQd4rZ+vFrzWu8sTRtta5D1kBG0LSRYAfhtmMlSo=", 475 + "lastModified": 1744868846, 476 + "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", 513 477 "owner": "NixOS", 514 478 "repo": "nixpkgs", 515 - "rev": "b550fe4b4776908ac2a861124307045f8e717c8e", 479 + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", 516 480 "type": "github" 517 481 }, 518 482 "original": { 519 483 "owner": "NixOS", 520 - "ref": "release-23.11", 484 + "ref": "nixpkgs-unstable", 521 485 "repo": "nixpkgs", 522 486 "type": "github" 523 487 } 524 488 }, 525 489 "nixpkgs_4": { 526 490 "locked": { 527 - "lastModified": 1682134069, 528 - "narHash": "sha256-TnI/ZXSmRxQDt2sjRYK/8j8iha4B4zP2cnQCZZ3vp7k=", 491 + "lastModified": 1728538411, 492 + "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", 529 493 "owner": "NixOS", 530 494 "repo": "nixpkgs", 531 - "rev": "fd901ef4bf93499374c5af385b2943f5801c0833", 532 - "type": "github" 533 - }, 534 - "original": { 535 - "id": "nixpkgs", 536 - "type": "indirect" 537 - } 538 - }, 539 - "nixpkgs_5": { 540 - "locked": { 541 - "lastModified": 1709356872, 542 - "narHash": "sha256-mvxCirJbtkP0cZ6ABdwcgTk0u3bgLoIoEFIoYBvD6+4=", 543 - "owner": "NixOS", 544 - "repo": "nixpkgs", 545 - "rev": "458b097d81f90275b3fdf03796f0563844926708", 495 + "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", 546 496 "type": "github" 547 497 }, 548 498 "original": { ··· 552 502 "type": "github" 553 503 } 554 504 }, 555 - "nixpkgs_6": { 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 + }, 556 517 "locked": { 557 - "lastModified": 1681358109, 558 - "narHash": "sha256-eKyxW4OohHQx9Urxi7TQlFBTDWII+F+x2hklDOQPB50=", 559 - "owner": "NixOS", 560 - "repo": "nixpkgs", 561 - "rev": "96ba1c52e54e74c3197f4d43026b3f3d92e83ff9", 518 + "lastModified": 1748686149, 519 + "narHash": "sha256-RdLAPiha8lr1wQiL158p4DTFhLcWcjRv6ioCTd3athQ=", 520 + "owner": "nobbz", 521 + "repo": "nobbz-vim", 522 + "rev": "a22303075cac32d83edfd79ef79c0386a38b02ce", 562 523 "type": "github" 563 524 }, 564 525 "original": { 565 - "owner": "NixOS", 566 - "ref": "nixpkgs-unstable", 567 - "repo": "nixpkgs", 526 + "owner": "nobbz", 527 + "repo": "nobbz-vim", 568 528 "type": "github" 569 529 } 570 530 }, 571 531 "parts": { 572 532 "inputs": { 573 - "nixpkgs-lib": "nixpkgs-lib" 533 + "nixpkgs-lib": [ 534 + "nixpkgs" 535 + ] 574 536 }, 575 537 "locked": { 576 - "lastModified": 1709336216, 577 - "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", 538 + "lastModified": 1748821116, 539 + "narHash": "sha256-F82+gS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE=", 578 540 "owner": "hercules-ci", 579 541 "repo": "flake-parts", 580 - "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", 542 + "rev": "49f0870db23e8c1ca0b5259734a02cd9e1e371a1", 581 543 "type": "github" 582 544 }, 583 545 "original": { ··· 589 551 "programsdb": { 590 552 "inputs": { 591 553 "nixpkgs": [ 592 - "unstable" 554 + "nixpkgs" 593 555 ], 594 556 "utils": "utils" 595 557 }, 596 558 "locked": { 597 - "lastModified": 1709585526, 598 - "narHash": "sha256-c33YNdfeooa6VlM56P8IyEJQHCifQg9ys5EynWjyfvU=", 559 + "lastModified": 1749055058, 560 + "narHash": "sha256-OgCTSX0WXPpEi/ukjbBRrElSo+TR2/pzCCcY5yfou58=", 599 561 "owner": "wamserma", 600 562 "repo": "flake-programs-sqlite", 601 - "rev": "f62cd6c7c492145c9e5ba4500d4037127a5b0c73", 563 + "rev": "78d23d728abddce902528922f93967f0630f1cfe", 602 564 "type": "github" 603 565 }, 604 566 "original": { ··· 609 571 }, 610 572 "root": { 611 573 "inputs": { 612 - "alejandra": "alejandra", 613 574 "emacs": "emacs", 614 - "flake-utils": "flake-utils_2", 615 575 "home-manager": "home-manager", 616 - "master": "master", 617 - "nil": "nil", 618 576 "nix": "nix", 577 + "nix-gl": "nix-gl", 619 578 "nixos-vscode-server": "nixos-vscode-server", 620 - "nixpkgs": [ 621 - "nixpkgs-unstable" 579 + "nixpkgs": "nixpkgs_2", 580 + "nixpkgs-insync-v3": [ 581 + "nixpkgs" 622 582 ], 623 - "nixpkgs-2211": "nixpkgs-2211", 624 - "nixpkgs-insync-v3": "nixpkgs-insync-v3", 625 - "nixpkgs-unstable": "nixpkgs-unstable", 583 + "nixpkgs-pre-rust": "nixpkgs-pre-rust", 584 + "nvim": "nvim", 626 585 "parts": "parts", 627 586 "programsdb": "programsdb", 628 587 "sops-nix": "sops-nix", 629 - "stable": [ 630 - "nixpkgs-2211" 631 - ], 632 - "switcher": "switcher", 633 - "unstable": [ 634 - "nixpkgs-unstable" 635 - ] 636 - } 637 - }, 638 - "rust-analyzer-src": { 639 - "flake": false, 640 - "locked": { 641 - "lastModified": 1657557289, 642 - "narHash": "sha256-PRW+nUwuqNTRAEa83SfX+7g+g8nQ+2MMbasQ9nt6+UM=", 643 - "owner": "rust-lang", 644 - "repo": "rust-analyzer", 645 - "rev": "caf23f29144b371035b864a1017dbc32573ad56d", 646 - "type": "github" 647 - }, 648 - "original": { 649 - "owner": "rust-lang", 650 - "ref": "nightly", 651 - "repo": "rust-analyzer", 652 - "type": "github" 588 + "switcher": "switcher" 653 589 } 654 590 }, 655 591 "rust-overlay": { 656 592 "inputs": { 657 - "flake-utils": [ 658 - "nil", 659 - "flake-utils" 660 - ], 661 - "nixpkgs": [ 662 - "nil", 663 - "nixpkgs" 664 - ] 593 + "nixpkgs": "nixpkgs_4" 665 594 }, 666 595 "locked": { 667 - "lastModified": 1704593904, 668 - "narHash": "sha256-nDoXZDTRdgF3b4n3m011y99nYFewvOl9UpzFvP8Rb3c=", 596 + "lastModified": 1734402816, 597 + "narHash": "sha256-cgQ8mjUJz7J3fp97lnvl0dSJ6vLt8yzUSmw3B7QKw94=", 669 598 "owner": "oxalica", 670 599 "repo": "rust-overlay", 671 - "rev": "c36fd70a99decfa6e110c86f296a97613034a680", 672 - "type": "github" 673 - }, 674 - "original": { 675 - "owner": "oxalica", 676 - "repo": "rust-overlay", 677 - "type": "github" 678 - } 679 - }, 680 - "rust-overlay_2": { 681 - "inputs": { 682 - "flake-utils": "flake-utils_6", 683 - "nixpkgs": "nixpkgs_6" 684 - }, 685 - "locked": { 686 - "lastModified": 1687746941, 687 - "narHash": "sha256-wsSRCmPQ1+uXsDNnEH2mN4ZVtHHpfavA4FrQnCb5A44=", 688 - "owner": "oxalica", 689 - "repo": "rust-overlay", 690 - "rev": "b91d162355e88de89b379f3d6a459ade92704474", 600 + "rev": "e38fbd6e56e8cd1d61c65a21bbb7785e966707b4", 691 601 "type": "github" 692 602 }, 693 603 "original": { ··· 698 608 }, 699 609 "sops-nix": { 700 610 "inputs": { 701 - "nixpkgs": "nixpkgs_5", 702 - "nixpkgs-stable": "nixpkgs-stable_2" 611 + "nixpkgs": "nixpkgs_3" 703 612 }, 704 613 "locked": { 705 - "lastModified": 1709591996, 706 - "narHash": "sha256-0sQcalXSgqlO6mnxBTXkSQChBHy2GQsokB1XY8r+LpQ=", 614 + "lastModified": 1747603214, 615 + "narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", 707 616 "owner": "Mic92", 708 617 "repo": "sops-nix", 709 - "rev": "291aad29b59ceda517a06e59809f35cb0bb17c6b", 618 + "rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", 710 619 "type": "github" 711 620 }, 712 621 "original": { ··· 722 631 "parts" 723 632 ], 724 633 "nixpkgs": [ 725 - "unstable" 634 + "nixpkgs" 726 635 ], 727 - "rust-overlay": "rust-overlay_2" 636 + "rust-overlay": "rust-overlay" 728 637 }, 729 638 "locked": { 730 - "lastModified": 1707998256, 731 - "narHash": "sha256-+rca2uGRu3k6PcXE5wwYeqURaWwLsZ0PGWUuM1tSSR0=", 639 + "lastModified": 1734435961, 640 + "narHash": "sha256-HIw4Naoc0Gcl9VOT4JkagzKDvAdBwyzlq2majy5pSks=", 732 641 "owner": "nobbz", 733 642 "repo": "nix-switcher", 734 - "rev": "cd05c5fb56b2aed48162b89d47fd0c970f302257", 643 + "rev": "6f12e77ff6b46d53a5e58567803f94708e15660e", 735 644 "type": "github" 736 645 }, 737 646 "original": { ··· 771 680 "type": "github" 772 681 } 773 682 }, 774 - "systems_3": { 775 - "locked": { 776 - "lastModified": 1681028828, 777 - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 778 - "owner": "nix-systems", 779 - "repo": "default", 780 - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 781 - "type": "github" 782 - }, 783 - "original": { 784 - "owner": "nix-systems", 785 - "repo": "default", 786 - "type": "github" 787 - } 788 - }, 789 - "systems_4": { 790 - "locked": { 791 - "lastModified": 1681028828, 792 - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 793 - "owner": "nix-systems", 794 - "repo": "default", 795 - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 796 - "type": "github" 797 - }, 798 - "original": { 799 - "owner": "nix-systems", 800 - "repo": "default", 801 - "type": "github" 802 - } 803 - }, 804 - "systems_5": { 805 - "locked": { 806 - "lastModified": 1681028828, 807 - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 808 - "owner": "nix-systems", 809 - "repo": "default", 810 - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 811 - "type": "github" 812 - }, 813 - "original": { 814 - "owner": "nix-systems", 815 - "repo": "default", 816 - "type": "github" 817 - } 818 - }, 819 - "systems_6": { 820 - "locked": { 821 - "lastModified": 1681028828, 822 - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 823 - "owner": "nix-systems", 824 - "repo": "default", 825 - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 826 - "type": "github" 827 - }, 828 - "original": { 829 - "owner": "nix-systems", 830 - "repo": "default", 831 - "type": "github" 832 - } 833 - }, 834 683 "utils": { 835 684 "locked": { 836 685 "lastModified": 1678901627, ··· 843 692 "original": { 844 693 "owner": "numtide", 845 694 "repo": "flake-utils", 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", 846 716 "type": "github" 847 717 } 848 718 }
+47 -43
flake.nix
··· 1 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 2 outputs = {parts, ...} @ inputs: 42 3 parts.lib.mkFlake {inherit inputs;} { 43 4 systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin"]; ··· 47 8 imports = [ 48 9 ./parts/auxiliary.nix 49 10 ./parts/home_configs.nix 11 + ./parts/home_modules.nix 12 + ./parts/nixos_modules.nix 50 13 ./parts/system_configs.nix 51 14 52 15 ./nixos/configurations 53 16 ./home/configurations 54 17 18 + ./home/modules 19 + ./nixos/modules 20 + 55 21 ./packages 56 22 ]; 57 23 58 24 flake = { 59 - nixosModules = import ./nixos/modules inputs; 60 - 61 - homeModules = import ./home/modules inputs; 62 - 63 25 mixedModules = import ./mixed inputs; 64 26 65 27 checks.x86_64-linux = import ./checks inputs; 66 28 }; 67 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 + }; 68 72 }
-9
home/configurations/default.nix
··· 1 1 _: { 2 - _file = ./default.nix; 3 - 4 2 nobbz.homeConfigurations."nmelzer@mimas".system = "x86_64-linux"; 5 - nobbz.homeConfigurations."nmelzer@enceladeus".system = "x86_64-linux"; 6 - nobbz.homeConfigurations."nmelzer@hyperion".system = "aarch64-linux"; 7 3 nobbz.homeConfigurations."nmelzer@phoebe".system = "x86_64-linux"; 8 - 9 - nobbz.homeConfigurations."nmelzer@Titan.local" = { 10 - system = "aarch64-darwin"; 11 - hostname = "titan"; 12 - }; 13 4 }
-39
home/configurations/nmelzer_at_enceladeus.nix
··· 1 - {self, ...}: { 2 - config, 3 - pkgs, 4 - lib, 5 - ... 6 - }: { 7 - _file = ./nmelzer_at_enceladeus.nix; 8 - 9 - config = { 10 - nixpkgs.allowedUnfree = ["google-chrome" "vscode"]; 11 - 12 - nixpkgs.config.contentAddressedByDefault = false; 13 - 14 - activeProfiles = ["browsing" "development"]; 15 - 16 - xsession.windowManager.awesome.autostart = [ 17 - "${pkgs.blueman}/bin/blueman-applet" 18 - "${pkgs.networkmanagerapplet}/bin/nm-applet" 19 - ]; 20 - 21 - programs.emacs.enable = lib.mkForce false; 22 - 23 - services.rustic = { 24 - enable = true; 25 - globs = let 26 - mkHome = e: "${config.home.homeDirectory}/${e}"; 27 - mkIgnore = e: "!${e}"; 28 - 29 - 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"]; 30 - patterns = ["_build" "deps" "result" "target" ".elixir_ls" "ccls-cache" ".direnv"]; 31 - in 32 - map mkIgnore (home ++ patterns); 33 - oneFileSystem = true; 34 - repo = "rest:https://restic.mimas.internal.nobbz.dev/nobbz"; 35 - }; 36 - 37 - home.packages = [pkgs.vscode]; 38 - }; 39 - }
-43
home/configurations/nmelzer_at_hyperion.nix
··· 1 - { 2 - unstable, 3 - self, 4 - ... 5 - }: { 6 - config, 7 - pkgs, 8 - lib, 9 - ... 10 - }: { 11 - _file = ./nmelzer_at_hyperion.nix; 12 - 13 - config = { 14 - nixpkgs.allowedUnfree = ["vscode"]; 15 - # nixpkgs.config.allowBroken = true; 16 - 17 - activeProfiles = ["development"]; 18 - 19 - dconf.enable = true; 20 - 21 - enabledLanguages = []; 22 - 23 - xsession.enable = lib.mkForce false; 24 - xsession.windowManager.awesome.enable = lib.mkForce false; 25 - xsession.numlock.enable = lib.mkForce false; 26 - 27 - programs.emacs.splashScreen = false; 28 - 29 - home.packages = builtins.attrValues { 30 - inherit (pkgs) vscode keepassxc nix-output-monitor; 31 - inherit (pkgs.gnome) gnome-tweaks; 32 - }; 33 - 34 - programs.htop = { 35 - settings = { 36 - detailed_cpu_time = true; 37 - }; 38 - }; 39 - }; 40 - # environment.pathsToLink = [ "/share/zsh" ]; 41 - } 42 - # /nix/store/7skqa8vxfydq7w3cix55ffvkmjb3b5da-python-2.7.18 43 -
+107 -82
home/configurations/nmelzer_at_mimas.nix
··· 1 - { 2 - master, 3 - unstable, 4 - self, 5 - ... 6 - }: { 1 + {self, ...}: { 7 2 config, 8 3 pkgs, 9 4 lib, 10 5 ... 11 6 }: { 12 - _file = ./nmelzer_at_mimas.nix; 7 + nixpkgs.allowedUnfree = ["google-chrome" "vscode" "discord" "obsidian"]; 13 8 14 - config = { 15 - nixpkgs.allowedUnfree = ["google-chrome" "vscode" "discord" "obsidian"]; 9 + activeProfiles = ["browsing" "development"]; 16 10 17 - activeProfiles = ["browsing" "development"]; 11 + sops.age.sshKeyPaths = ["${config.home.homeDirectory}/.ssh/id_ed25519"]; 12 + sops.defaultSopsFile = "${self}/secrets/mimas/nmelzer/default.yaml"; 18 13 19 - sops.age.sshKeyPaths = ["${config.home.homeDirectory}/.ssh/id_ed25519"]; 20 - sops.defaultSopsFile = "${self}/secrets/mimas/nmelzer/default.yaml"; 14 + sops.secrets.rustic.path = "${config.xdg.configHome}/rustic/password"; 21 15 22 - sops.secrets.rustic.path = "${config.xdg.configHome}/rustic/password"; 16 + dconf.enable = true; 23 17 24 - dconf.enable = true; 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 + }; 25 24 26 - enabledLanguages = ["nix"]; 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 + }; 27 40 28 - programs.emacs.splashScreen = false; 41 + programs.yazi.enable = true; 29 42 30 - home.packages = let 31 - mpkgs = import master { 32 - inherit (config.nixpkgs) config; 33 - inherit (pkgs) system; 34 - }; 35 - in 36 - builtins.attrValues { 37 - inherit (pkgs) keybase-gui freerdp keepassxc nix-output-monitor discord; 38 - inherit (pkgs) obsidian; 39 - inherit (pkgs.gnome) gnome-tweaks; 40 - # https://nixpk.gs/pr-tracker.html?pr=248167 41 - # ^^ once in unstable, revert this commit ^^ 42 - inherit (mpkgs) vscode; 43 - }; 43 + xsession.windowManager.awesome.autostart = [ 44 + "${pkgs.blueman}/bin/blueman-applet" 45 + "${pkgs.networkmanagerapplet}/bin/nm-applet" 46 + ]; 44 47 45 - programs.obs-studio.enable = true; 46 - programs.htop = { 47 - settings = { 48 - detailed_cpu_time = true; 49 - }; 50 - # meters.right = [ 51 - # { kind = "Battery"; mode = 1; } 52 - # "Tasks" 53 - # "LoadAverage" 54 - # "Uptime" 55 - # ]; 56 - }; 48 + systemd.user.tmpfiles.rules = [ 49 + "d ${config.home.homeDirectory}/tmp 700 ${config.home.username} users 14d" 50 + ]; 57 51 58 - xsession.windowManager.awesome.autostart = [ 59 - "${pkgs.blueman}/bin/blueman-applet" 60 - "${pkgs.networkmanagerapplet}/bin/nm-applet" 61 - ]; 52 + services = { 53 + keybase.enable = true; 54 + kbfs.enable = true; 55 + insync.enable = true; 56 + playerctld.enable = true; 57 + flameshot.enable = true; 62 58 63 - services = { 64 - keybase.enable = true; 65 - kbfs.enable = true; 66 - insync.enable = true; 67 - playerctld.enable = true; 68 - flameshot.enable = true; 69 - 70 - rustic = { 71 - enable = true; 72 - passwordFile = config.sops.secrets.rustic.path; 73 - globs = let 74 - mkHome = e: "${config.home.homeDirectory}/${e}"; 75 - mkIgnore = e: "!${e}"; 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}"; 76 65 77 - 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"]; 78 - patterns = ["_build" "Cache" "deps" "result" "target" ".elixir_ls" "ccls-cache" ".direnv" "direnv" "node_modules"]; 79 - in 80 - map mkIgnore (home ++ patterns); 81 - oneFileSystem = true; 82 - repo = "rest:https://restic.mimas.internal.nobbz.dev/nobbz"; 83 - }; 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"; 84 72 }; 73 + }; 85 74 86 - systemd.user.services = { 87 - rustic.Unit.After = ["sops-nix.service"]; 88 - keybase-gui = { 89 - Unit = { 90 - Description = "Keybase GUI"; 91 - Requires = ["keybase.service" "kbfs.service"]; 92 - After = ["keybase.service" "kbfs.service"]; 93 - }; 94 - Service = { 95 - ExecStart = "${pkgs.keybase-gui}/share/keybase/Keybase"; 96 - PrivateTmp = true; 97 - # Slice = "keybase.slice"; 98 - }; 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"; 99 87 }; 100 88 }; 101 89 }; 102 - # environment.pathsToLink = [ "/share/zsh" ]; 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"; 103 130 } 104 - # /nix/store/7skqa8vxfydq7w3cix55ffvkmjb3b5da-python-2.7.18 105 -
+23 -4
home/configurations/nmelzer_at_phoebe.nix
··· 1 - {self, ...}: { 1 + { 2 + self, 3 + nix, 4 + ... 5 + }: { 2 6 config, 3 7 pkgs, 4 8 lib, ··· 6 10 }: let 7 11 sshConfigPath = "${config.home.homeDirectory}/.ssh"; 8 12 inherit (lib.hm) dag; 13 + spkgs = self.packages.${pkgs.system}; 9 14 in { 10 - _file = ./nmelzer_at_phoebe.nix; 11 - 12 15 nixpkgs.allowedUnfree = ["google-chrome" "vscode" "discord" "obsidian" "slack"]; 13 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; 14 23 15 24 activeProfiles = ["development"]; 16 25 ··· 18 27 sops.defaultSopsFile = "${self}/secrets/phoebe/nmelzer/default.yaml"; 19 28 20 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 + }; 21 36 22 37 sops.secrets."github" = { 23 38 path = "${sshConfigPath}/github"; ··· 44 59 45 60 home.packages = builtins.attrValues { 46 61 inherit (pkgs) keepassxc nix-output-monitor discord obsidian vscode slack; 62 + inherit (config.nix) package; 63 + inherit (spkgs) switcher; 47 64 }; 48 65 49 66 xsession.windowManager.awesome.enable = lib.mkForce false; ··· 51 68 52 69 services.playerctld.enable = true; 53 70 54 - home.file."${config.gtk.gtk2.configLocation}".force = true; 71 + gtk.gtk2.force = true; 55 72 56 73 programs.ssh.includes = [ 57 74 config.sops.secrets.ssh.path ··· 71 88 user = "nmelzer"; 72 89 }); 73 90 }; 91 + 92 + home.stateVersion = "20.09"; 74 93 }
-22
home/configurations/nmelzer_at_titan.nix
··· 1 - {self, ...}: { 2 - pkgs, 3 - lib, 4 - ... 5 - }: { 6 - _file = ./nmelzer_at_titan.nix; 7 - 8 - nixpkgs.allowedUnfree = []; 9 - 10 - activeProfiles = ["base" "development"]; 11 - enabledLanguages = []; 12 - 13 - xsession.enable = lib.mkForce false; 14 - xsession.windowManager.awesome.enable = lib.mkForce false; 15 - xsession.numlock.enable = lib.mkForce false; 16 - 17 - gtk.theme.package = lib.mkForce null; 18 - 19 - home.packages = builtins.attrValues { 20 - inherit (pkgs) neovim; 21 - }; 22 - }
+19 -28
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; 1 + { 2 + nobbz.homeManagerModules = { 3 + "profiles" = ./profiles; 4 + "profiles/base" = ./profiles/base; 5 + "profiles/browsing" = ./profiles/browsing; 6 + "profiles/development" = ./profiles/development; 6 7 7 - "languages" = import ./languages inputs; 8 - "languages/nix" = import ./languages/nix inputs; 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; 9 15 10 - "programs/advcp" = import ./programs/advcp inputs; 11 - "programs/emacs" = import ./programs/emacs inputs; 12 - "programs/emacs/beacon" = import ./programs/emacs/beacon.nix inputs; 13 - "programs/emacs/company" = import ./programs/emacs/company.nix inputs; 14 - "programs/emacs/helm" = import ./programs/emacs/helm.nix inputs; 15 - "programs/emacs/lib" = import ./programs/emacs/lib.nix inputs; 16 - "programs/emacs/lsp" = import ./programs/emacs/lsp.nix inputs; 17 - "programs/emacs/projectile" = import ./programs/emacs/projectile.nix inputs; 18 - "programs/emacs/telephoneline" = import ./programs/emacs/telephoneline.nix inputs; 19 - "programs/emacs/whichkey" = import ./programs/emacs/whichkey inputs; 20 - "programs/eza" = import ./programs/eza inputs; 21 - "programs/nixpkgs" = import ./programs/nixpkgs inputs; 22 - "programs/openshift" = import ./programs/openshift inputs; 23 - "programs/p10k" = import ./programs/p10k inputs; 16 + "services/insync" = ./services/insync; 17 + "services/rustic" = ./services/rustic; 24 18 25 - "services/insync" = import ./services/insync inputs; 26 - "services/restic" = import ./services/restic inputs; 27 - "services/rustic" = import ./services/rustic inputs; 28 - 29 - "misc/awesome" = import ./misc/awesome inputs; 30 - "misc/home" = import ./misc/home inputs; 31 - "misc/rofi" = import ./misc/rofi inputs; 19 + "misc/awesome" = ./misc/awesome; 20 + "misc/home" = ./misc/home; 21 + "misc/rofi" = ./misc/rofi; 22 + }; 32 23 }
-19
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 - _file = ./default.nix; 12 - 13 - options.enabledLanguages = lib.mkOption { 14 - default = []; 15 - type = lib.types.listOf lib.types.str; 16 - }; 17 - 18 - config = {languages = langsEnabler;}; 19 - }
-39
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 - _file = ./default.nix; 13 - 14 - options.languages.nix = { 15 - enable = lib.mkEnableOption "Enable support for the nix language"; 16 - }; 17 - 18 - config = lib.mkIf cfg.enable { 19 - programs.emacs.extraPackages = ep: [ep.lsp-mode ep.nix-mode ep.flycheck]; 20 - 21 - programs.emacs.extraInit = '' 22 - (require 'lsp-mode) 23 - 24 - ;; make lsp-mode aware of nix 25 - (add-to-list 'lsp-language-id-configuration '(nix-mode . "nix")) 26 - (lsp-register-client 27 - (make-lsp-client :new-connection (lsp-stdio-connection '("${rnixLsp}/bin/rnix-lsp")) 28 - :major-modes '(nix-mode) 29 - :server-id 'nix)) 30 - 31 - (add-hook 'nix-mode-hook 32 - (lambda () 33 - (lsp) 34 - (subword-mode) 35 - (company-mode) 36 - (flycheck-mode))) 37 - ''; 38 - }; 39 - }
+1 -3
home/modules/misc/awesome/default.nix
··· 79 79 -- }}} 80 80 ''; 81 81 in { 82 - _file = ./default.nix; 83 - 84 82 options.xsession.windowManager.awesome = { 85 83 terminalEmulator = lib.mkOption { 86 84 type = lib.types.str; 87 - default = "${pkgs.konsole}/bin/konsole"; 85 + default = "${lib.getExe pkgs.wezterm}"; 88 86 }; 89 87 90 88 lockCommand = lib.mkOption {
+1 -12
home/modules/misc/home/default.nix
··· 1 - { 2 - nixpkgs-2211, 3 - unstable, 4 - self, 5 - ... 6 - }: { 1 + {self, ...}: { 7 2 config, 8 3 pkgs, 9 4 lib, ··· 11 6 }: let 12 7 self' = self.packages.${pkgs.system}; 13 8 in { 14 - _file = ./default.nix; 15 - 16 9 profiles.base.enable = true; 17 10 fonts.fontconfig.enable = true; 18 11 ··· 27 20 28 21 packages = let 29 22 p = pkgs; 30 - s = self'; 31 23 in [ 32 24 p.cachix 33 25 p.exercism 34 26 p.tmate 35 - s."dracula/konsole" 36 27 37 28 # There is a conflict with the ZSH completion plugin, installed by default 38 29 # therefore we need to override here ··· 48 39 exec ${p.timewarrior}/bin/timew "$@" 49 40 '') 50 41 ]; 51 - 52 - stateVersion = "20.09"; 53 42 }; 54 43 }
+2 -2
home/modules/misc/rofi/common.rasi
··· 1 1 configuration { 2 - font: "Cascadia Mono PL 20"; 3 - terminal: "konsole"; 2 + font: "Departure Mono 22"; 3 + terminal: "@TERMINAL@"; 4 4 fixed-num-lines: false; 5 5 show-icons: true; 6 6 drun-show-actions: false;
+23 -17
home/modules/misc/rofi/default.nix
··· 1 1 {self, ...}: { 2 2 pkgs, 3 3 lib, 4 + npins, 4 5 ... 5 6 }: let 6 7 self' = self.packages.x86_64-linux; 7 8 8 - launcherConfig = pkgs.writeText "launcher-config" '' 9 - configuration { 10 - modes: "drun#run#ssh"; 11 - } 12 - @import "${./common.rasi}" 9 + common_rasi = pkgs.runCommandNoCC "common.rasi" {preferLocalBuild = true;} '' 10 + substitute ${./common.rasi} $out \ 11 + --subst-var-by TERMINAL ${lib.getExe pkgs.wezterm} 13 12 ''; 14 13 15 - windowSwitcherConfig = pkgs.writeText "window-switcher-config" '' 16 - configuration { 17 - modes: "window"; 18 - } 19 - @import "${./common.rasi}" 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"' 20 17 ''; 21 18 22 - emojiConfig = pkgs.writeText "window-switcher-config" '' 23 - configuration { 24 - modes: "emoji#unicode:${self'."rofi/unicode"}/bin/rofiunicode.sh"; 25 - } 26 - @import "${./common.rasi}" 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}"; 27 35 ''; 28 36 29 37 wrapper = rofi: config: ··· 49 57 windowSwitcher = wrapper windowSwitcherPkg windowSwitcherConfig; 50 58 emoji = wrapper emojiPkg emojiConfig; 51 59 in { 52 - _file = ./default.nix; 53 - 54 60 xsession.windowManager.awesome.launcher = "${lib.getExe launcher} -show drun"; 55 61 xsession.windowManager.awesome.windowSwitcher = "${lib.getExe windowSwitcher} -show window"; 56 62 xsession.windowManager.awesome.emojiPicker = "${lib.getExe emoji} -show emoji";
+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
+93 -29
home/modules/profiles/base/default.nix
··· 1 - {self, ...}: { 1 + { 2 + self, 3 + nix, 4 + nvim, 5 + nix-gl, 6 + ... 7 + }: { 2 8 config, 3 9 lib, 4 10 pkgs, ··· 7 13 }: let 8 14 cfg = config.profiles.base; 9 15 10 - inherit (self.packages.${pkgs.system}) emacs; 11 16 inherit (lib.hm) dag; 12 17 13 18 # TODO: make these a bit more nice, so that repeating the hosts and individual config isn't necessary. ··· 26 31 cp $src $out/_nix 27 32 ''; 28 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 + }; 29 50 in { 30 - _file = ./default.nix; 31 - 32 51 options.profiles.base = { 33 52 enable = lib.mkEnableOption "The base profile, should be always enabled"; 53 + 54 + needsGL = lib.mkEnableOption "nix-gl wrappers"; 34 55 }; 35 56 36 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 + 37 67 manual.manpages.enable = false; 38 68 39 69 services.vscode-server.enable = lib.mkDefault pkgs.stdenv.isLinux; 40 70 41 - home.sessionVariables = rec { 42 - EDITOR = "emacs -nw"; 43 - VISUAL = "emacs"; 44 - GIT_EDITOR = EDITOR; 71 + home.sessionVariables = { 72 + EDITOR = "nvim"; 45 73 }; 46 74 47 75 gtk.enable = true; 48 - gtk.theme.package = pkgs.gnome.gnome-themes-extra; 76 + gtk.theme.package = pkgs.gnome-themes-extra; 49 77 gtk.theme.name = "Adwaita-dark"; 50 78 79 + services.pueue.enable = true; 80 + 51 81 home.keyboard.layout = "de"; 52 82 home.packages = let 53 83 optisave = ··· 71 101 | sed -E 's/([0-9])([A-Za-z])/\1 \2/')" \ 72 102 "$(numfmt --to=none --format="%'f" ''${saved})" 73 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; 74 111 in 75 - [optisave pkgs.hydra-check] ++ lib.optionals pkgs.stdenv.isLinux [pkgs.dconf]; 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 + ]; 76 116 77 117 # dconf.enable = lib.mkMerge [ 78 118 # (lib.mkIf pkgs.stdenv.isLinux true) ··· 89 129 90 130 programs = { 91 131 advancedCopy.enable = true; 92 - bat.enable = true; 93 132 direnv.enable = true; 94 133 direnv.nix-direnv.enable = true; 134 + direnv.nix-direnv.package = pkgs.nix-direnv.override {nix = nix.packages.${pkgs.system}.default;}; 95 135 eza.enable = true; 96 136 fzf.enable = true; 97 137 home-manager.enable = true; 98 138 htop.enable = true; 99 139 jq.enable = true; 100 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 + }; 101 153 102 154 ssh = { 103 155 enable = true; ··· 110 162 user = "nmelzer"; 111 163 }; 112 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 + 113 175 "ryzen-ubuntu.adoring_suess.zerotier" = { 114 176 hostname = "172.24.237.73"; 115 177 }; ··· 139 201 }; 140 202 }; 141 203 142 - emacs = { 143 - enable = true; 144 - package = emacs; 145 - }; 146 - 147 204 tmux = { 148 205 enable = true; 149 206 150 207 clock24 = true; 151 208 historyLimit = 10000; 152 - terminal = "screen-256color"; 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 + ''; 153 224 }; 154 225 155 226 zsh = { 156 227 enable = true; 157 228 158 229 enableCompletion = true; 159 - enableAutosuggestions = true; 230 + autosuggestion.enable = true; 160 231 161 232 autocd = true; 162 233 ··· 167 238 plugins = [ 168 239 { 169 240 name = "fzf-tab"; 170 - src = npins.fzf-tab; 241 + src = fzf-tab; 171 242 } 172 243 { 173 244 name = "nix-zsh-complete.zsh"; ··· 180 251 } 181 252 ]; 182 253 183 - initExtra = '' 254 + initContent = '' 184 255 bindkey "^[[1;5D" backward-word 185 256 bindkey "^[[1;5C" forward-word 186 257 ··· 188 259 ''; 189 260 190 261 sessionVariables = { 191 - # NIX_PATH = builtins.concatStringsSep ":" [ 192 - # "nixpkgs=${inputs.nixpkgs}" 193 - # "nixos-config=/etc/nixos/configuration.nix" 194 - # "/nix/var/nix/profiles/per-user/root/channels" 195 - # ]; 262 + PROMPT_EOL_MARK = "%F{243}ยถ%f"; 196 263 }; 197 264 198 265 shellAliases.fixstore = "sudo nix-store --verify --check-contents --repair"; 266 + shellAliases.pq = "pueue"; 199 267 }; 200 268 }; 201 - 202 - # htop has some nastly problem that is saves a new config when you change by which column to sort 203 - # this workaround will always overwrite any changes made by the running system 204 - xdg.configFile = lib.mkIf (config.programs.htop.settings != {}) {"htop/htoprc".force = true;}; 205 269 }; 206 270 }
-2
home/modules/profiles/browsing/default.nix
··· 6 6 }: let 7 7 cfg = config.profiles.browsing; 8 8 in { 9 - _file = ./default.nix; 10 - 11 9 options.profiles.browsing = { 12 10 enable = 13 11 lib.mkEnableOption
-2
home/modules/profiles/default.nix
··· 8 8 in 9 9 builtins.foldl' reducer {} config.activeProfiles; 10 10 in { 11 - _file = ./default.nix; 12 - 13 11 options.activeProfiles = lib.mkOption { 14 12 type = lib.types.listOf lib.types.str; 15 13 default = [];
+19 -14
home/modules/profiles/development/default.nix
··· 6 6 }: let 7 7 cfg = config.profiles.development; 8 8 in { 9 - _file = ./default.nix; 10 - 11 9 options.profiles.development = { 12 10 enable = 13 11 lib.mkEnableOption ··· 15 13 }; 16 14 17 15 config = lib.mkIf cfg.enable { 18 - programs.emacs = { 19 - extraPackages = ep: [ep.magit]; 20 - extraInit = '' 21 - ;; prepare magit use from shell 22 - (require 'magit) 23 - (global-git-commit-mode) 16 + programs.jujutsu = { 17 + enable = true; 18 + settings = { 19 + user = { 20 + name = config.programs.git.userName; 21 + email = config.programs.git.userEmail; 22 + }; 24 23 25 - ;; let magit autorefresh on file save within emacs 26 - (add-hook 'after-save-hook 'magit-after-save-refresh-status t) 27 - ''; 24 + ui.diff.tool = [config.programs.git.extraConfig.diff.external "$left" "$right"]; 25 + }; 28 26 }; 29 27 30 28 programs.gh.enable = true; ··· 40 38 inputs = builtins.attrValues {inherit (pkgs) git fzf ripgrep;}; 41 39 interpreter = "${pkgs.bash}/bin/bash"; 42 40 execer = ["cannot:${pkgs.git}/bin/git" "cannot:${pkgs.fzf}/bin/fzf"]; 43 - } '' 41 + } 42 + # bash 43 + '' 44 44 git log --graph --color=always --format="%C(auto)%h%d %s0x09%C(white)%C(bold)%cr" "$@" | 45 45 fzf --ansi --no-sort --reverse --tiebreak=index \ 46 46 --bind=ctrl-s:toggle-sort \ ··· 53 53 inputs = builtins.attrValues {inherit (pkgs) git fzf coreutils gawk;}; 54 54 interpreter = "${pkgs.bash}/bin/bash"; 55 55 execer = ["cannot:${pkgs.git}/bin/git" "cannot:${pkgs.fzf}/bin/fzf"]; 56 - } '' 56 + } 57 + # bash 58 + '' 57 59 # Function to determine the ref type 58 60 function get_ref_type() { 59 61 local ref="$1" ··· 133 135 hopbase = ''!f() { set -o nounset; tag=$(git describe --abbrev=0 --tag "$1") && git rebase -i "''${tag}"; }; f''; 134 136 comfix = "!${mkFixupAlias "fixup"}"; 135 137 comreb = "!${mkFixupAlias "rebase"}"; 138 + show = "show --ext-diff"; 139 + lp = "log -p --ext-diff"; 136 140 }; 137 141 138 142 extraConfig = { 139 143 init.defaultBranch = "main"; 144 + diff.external = lib.getExe pkgs.difftastic; 140 145 pull.rebase = false; 141 146 rerere.enabled = true; 142 147 }; ··· 181 186 ]; 182 187 }; 183 188 184 - home.packages = [pkgs.ripgrep]; 189 + home.packages = [pkgs.ripgrep pkgs.difftastic]; 185 190 }; 186 191 }
-2
home/modules/programs/advcp/default.nix
··· 6 6 }: let 7 7 cfg = config.programs.advancedCopy; 8 8 in { 9 - _file = ./default.nix; 10 - 11 9 options.programs.advancedCopy = { 12 10 enable = lib.mkEnableOption "CP and MV with a progressbar"; 13 11 };
-33
home/modules/programs/emacs/beacon.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - cfg = config.programs.emacs.packages.beacon; 7 - in { 8 - _file = ./beacon.nix; 9 - 10 - options.programs.emacs.packages.beacon = { 11 - enable = lib.mkOption { 12 - type = lib.types.bool; 13 - default = true; 14 - description = '' 15 - Enable `beacon' for emacs. 16 - ''; 17 - }; 18 - }; 19 - 20 - config = lib.mkIf cfg.enable { 21 - programs.emacs.localPackages."init-beacon" = { 22 - tag = "Setup beacon"; 23 - comments = []; 24 - requires = []; 25 - code = '' 26 - ;; enable the beacon minor mode globally. 27 - (beacon-mode 1) 28 - ''; 29 - }; 30 - 31 - programs.emacs.extraPackages = ep: [ep.beacon]; 32 - }; 33 - }
-40
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 - _file = ./company.nix; 10 - 11 - config = lib.mkIf emacs.enable { 12 - programs.emacs.extraPackages = ep: [ep.company]; 13 - 14 - programs.emacs.localPackages."init-company" = { 15 - tag = "Setup and initialise company"; 16 - comments = []; 17 - requires = []; 18 - code = '' 19 - ;; company 20 - (setq tab-always-indent 'complete) 21 - (add-to-list 'completion-styles 'initials t) 22 - 23 - ;; (eval-when-compile (require 'company)) 24 - 25 - (add-hook 'after-init-hook 'global-company-mode) 26 - (with-eval-after-load 'company 27 - 28 - ;; (diminish 'company-mode "CMP") 29 - (define-key company-mode-map (kbd "M-+") '("complete" . 'company-complete)) 30 - (define-key company-active-map (kbd "M-+") '("change backend" . 'company-other-backend)) 31 - (define-key company-active-map (kbd "C-n") '("next" . 'company-select-next)) 32 - (define-key company-active-map (kbd "C-p") '("previous" . 'company-select-previous)) 33 - (setq-default company-dabbrev-other-buffers 'all 34 - company-tooltip-align-annotations t 35 - company-minimum-prefix-length 1 36 - company-idle-delay 0.05)) 37 - ''; 38 - }; 39 - }; 40 - }
-181
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 - _file = ./default.nix; 47 - 48 - options.programs.emacs = { 49 - splashScreen = lib.mkOption { 50 - type = lib.types.bool; 51 - default = true; 52 - example = false; 53 - description = '' 54 - Enable the startup screen. 55 - ''; 56 - }; 57 - 58 - localPackages = lib.mkOption { 59 - type = lib.types.attrsOf (lib.types.submodule (_: { 60 - options = { 61 - tag = lib.mkOption {type = lib.types.str;}; 62 - comments = lib.mkOption {type = lib.types.listOf lib.types.str;}; 63 - requires = lib.mkOption {type = lib.types.listOf lib.types.str;}; 64 - code = lib.mkOption {type = lib.types.str;}; 65 - packageRequires = lib.mkOption { 66 - type = lib.types.unspecified; 67 - default = _: []; 68 - }; 69 - }; 70 - })); 71 - }; 72 - 73 - extraInit = lib.mkOption { 74 - type = lib.types.lines; 75 - default = ""; 76 - description = '' 77 - Extra preferences to add to <filename>init.el</filename>. 78 - ''; 79 - }; 80 - 81 - module = lib.mkOption { 82 - description = "Attribute set of modules to link into emacs configuration"; 83 - default = {}; 84 - }; 85 - }; 86 - 87 - config = lib.mkIf emacsEnabled { 88 - programs.emacs.extraInit = '' 89 - ;; adjust the load-path to find further down required files 90 - (add-to-list 'load-path 91 - (expand-file-name "lisp" user-emacs-directory)) 92 - 93 - (fset 'yes-or-no-p 'y-or-n-p) 94 - 95 - ;; Move backups and autosaves out of the way 96 - (setq backup-directory-alist 97 - `((".*" . ,temporary-file-directory))) 98 - (setq auto-save-file-name-transforms 99 - `((".*" ,temporary-file-directory))) 100 - 101 - ;; use a dark theme 102 - (load-theme 'dracula t) 103 - 104 - ;; Set a font 105 - (add-to-list 'default-frame-alist 106 - '(font . "Cascadia Code PL-10")) 107 - 108 - ;; require all those local packages 109 - ${lispRequires} 110 - (require 'pest-mode) 111 - (add-to-list #'auto-mode-alist '("\\.pest\\'" . pest-mode)) 112 - 113 - (global-auto-revert-mode) 114 - (global-whitespace-mode) 115 - (global-linum-mode) 116 - 117 - (setq-default indent-tabs-mode nil) 118 - (setq-default tab-width 2) 119 - (setq-default whitespace-style 120 - '(face 121 - tabs 122 - spaces 123 - trailing 124 - lines-tail 125 - newline 126 - missing-newline-at-eof 127 - space-before-tab 128 - indentation 129 - empty 130 - space-after-tab 131 - space-mark 132 - tab-mark 133 - newline-mark)) 134 - 135 - ;; set splash screen 136 - (setq inhibit-startup-screen ${bool2Lisp (!cfg.splashScreen)}) 137 - ''; 138 - 139 - programs.emacs.extraPackages = ep: 140 - [ 141 - ep.company-go 142 - ep.dracula-theme 143 - ep.docker-compose-mode 144 - ep.dockerfile-mode 145 - ep.go-mode 146 - ep.markdown-mode 147 - ep.yaml-mode 148 - ep.adoc-mode 149 - ep.k8s-mode 150 - ep.buttercup 151 - ep.adoc-mode 152 - ep.hledger-mode 153 - ep.typescript-mode 154 - ep.earthfile-mode 155 - ep.ledger-mode 156 - ep.pest-mode 157 - 158 - # ep.bazel-mode 159 - 160 - # (ep.trivialBuild { pname = "configuration"; src = confPackages; }) 161 - ] 162 - ++ lib.attrsets.mapAttrsToList 163 - (pname: v: 164 - ep.trivialBuild { 165 - inherit pname; 166 - version = "0.0.0"; 167 - inherit (v) src; 168 - packageRequires = v.ep ep; 169 - }) 170 - confPackages; 171 - 172 - home.file = { 173 - ".emacs.d/init.el" = { 174 - text = 175 - config.lib.emacs.generatePackage "init" 176 - "Initialises emacs configuration" [] [] 177 - cfg.extraInit; 178 - }; 179 - }; 180 - }; 181 - }
-35
home/modules/programs/emacs/helm.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - emacsCfg = config.programs.emacs; 7 - in { 8 - _file = ./helm.nix; 9 - 10 - config = lib.mkIf emacsCfg.enable { 11 - programs.emacs = { 12 - localPackages."init-helm" = { 13 - tag = "Setup helm"; 14 - comments = []; 15 - requires = ["helm"]; 16 - packageRequires = ep: [ep.helm ep.helm-rg]; 17 - code = '' 18 - ;; enable and configure auto resize 19 - (helm-autoresize-mode t) 20 - (setq-default 21 - helm-autoresize-max-height 20 ; take at most 20% of the screen 22 - helm-autoresize-min-height 1) ; get as small as necessary 23 - 24 - ;; set up key bindings 25 - (global-set-key (kbd "M-x") 'helm-M-x) 26 - (global-set-key (kbd "C-x C-f") 'helm-find-files) 27 - (global-set-key (kbd "C-x C-b") 'helm-buffers-list) 28 - 29 - ;; enable helm 30 - (helm-mode t) 31 - ''; 32 - }; 33 - }; 34 - }; 35 - }
-62
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 - _file = ./lib.nix; 57 - 58 - config.lib.emacs.generatePackage = name: tagLine: commentLines: requireList: code: 59 - generatePackage { 60 - inherit name code tagLine commentLines requireList; 61 - }; 62 - }
-67
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 - _file = ./lsp.nix; 17 - 18 - options.programs.emacs.lsp-mode = { 19 - enable = lib.mkEnableOption "Enables and installs lsp-mode"; 20 - 21 - languages = lib.mkOption { 22 - type = lib.types.listOf lib.types.str; 23 - default = []; 24 - description = '' 25 - The prefixes of the prog-mode that shall be handled through lsp-mode. 26 - ''; 27 - example = ["erlang"]; 28 - }; 29 - }; 30 - 31 - config = lib.mkIf cfg.enable { 32 - programs.emacs = { 33 - localPackages."init-lsp" = { 34 - tag = "Setup and prepare the LSP mode"; 35 - comments = []; 36 - requires = ["lsp-mode"]; 37 - packageRequires = ep: [ 38 - # ep.company-lsp 39 - ep.helm-lsp 40 - ep.lsp-mode 41 - ep.lsp-origami 42 - ep.lsp-ui 43 - ep.yasnippet 44 - ]; 45 - code = '' 46 - (yas-global-mode t) 47 - 48 - (setq lsp-log-io t) 49 - (setq lsp-ui-sideline-enable t) 50 - (setq lsp-ui-doc-enable t) 51 - (setq lsp-ui-doc-position 'bottom) 52 - 53 - (eval-after-load 'company 54 - '(push 'company-lsp company-backend)) 55 - 56 - (dolist (match 57 - '("[/\\\\].direnv$" 58 - "[/\\\\]node_modules$" 59 - "/nix/store")) 60 - (add-to-list 'lsp-file-watch-ignored match)) 61 - 62 - ${mode-hooks} 63 - ''; 64 - }; 65 - }; 66 - }; 67 - }
-36
home/modules/programs/emacs/polymode/default.nix
··· 1 - { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - inherit (config.programs) emacs; 7 - in { 8 - _file = ./default.nix; 9 - 10 - config = lib.mkIf emacs.enable { 11 - programs.emacs.extraPackages = ep: [ep.polymode]; 12 - 13 - programs.emacs.localPackages."init-polymode" = { 14 - tag = "Setup and initialise polymode"; 15 - comments = []; 16 - requires = []; 17 - code = '' 18 - ;; polymode 19 - (add-to-list 'auto-mode-alist '("\\.nix$" . poly-nix-mode)) 20 - 21 - (define-hostmode poly-nix-hostmode :mode 'nix-mode) 22 - 23 - (define-innermode poly-elisp-expr-nix-innermode 24 - :mode 'emacs-lisp-mode 25 - :head-matcher (cons "'''\n\\( *;;.*\n\\)" 1) 26 - :tail-matcher " *''';$" 27 - :head-mode 'body 28 - :tail-mode 'host) 29 - 30 - (define-polymode poly-nix-mode 31 - :hostmode 'poly-nix-hostmode 32 - :innermodes '(poly-elisp-expr-nix-innermode)) 33 - ''; 34 - }; 35 - }; 36 - }
-27
home/modules/programs/emacs/projectile.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - emacsCfg = config.programs.emacs; 7 - in { 8 - _file = ./phojectile.nix; 9 - 10 - config = lib.mkIf emacsCfg.enable { 11 - programs.emacs = { 12 - localPackages."init-projectile" = { 13 - tag = "Setup projectile"; 14 - comments = []; 15 - requires = ["projectile" "helm-projectile" "tramp"]; 16 - packageRequires = ep: [ep.projectile ep.helm-projectile]; 17 - code = '' 18 - ;; enable projectile 19 - (projectile-mode t) 20 - (helm-projectile-on) 21 - 22 - (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map) 23 - ''; 24 - }; 25 - }; 26 - }; 27 - }
-33
home/modules/programs/emacs/telephoneline.nix
··· 1 - _: { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - ecfg = config.programs.emacs; 7 - in { 8 - _file = ./telephoneline.nix; 9 - 10 - config = lib.mkIf ecfg.enable { 11 - programs.emacs.localPackages."init-telephoneline" = { 12 - tag = "Setup telephone line"; 13 - comments = []; 14 - requires = []; 15 - code = '' 16 - ;; set up telephone line 17 - (setq-default 18 - telephone-line-lhs '((accent . (telephone-line-vc-segment 19 - telephone-line-erc-modified-channels-segment 20 - telephone-line-process-segment)) 21 - (nil . (telephone-line-minor-mode-segment 22 - telephone-line-buffer-segment))) 23 - telephone-line-rhs '((nil . (telephone-line-misc-info-segment)) 24 - (accent . (telephone-line-major-mode-segment)) 25 - (accent . (telephone-line-airline-position-segment)))) 26 - 27 - (telephone-line-mode t) 28 - ''; 29 - }; 30 - 31 - programs.emacs.extraPackages = ep: [ep.telephone-line]; 32 - }; 33 - }
-74
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 - _file = ./default.nix; 37 - 38 - options.programs.emacs.whichkey = { 39 - replacement = lib.mkOption {type = keyReplacementType;}; 40 - }; 41 - 42 - config = lib.mkIf enabled { 43 - programs.emacs = { 44 - whichkey.replacement = [ 45 - { 46 - keys = "C-x C-f"; 47 - replace = "find file"; 48 - } 49 - { 50 - keys = "C-x C-s"; 51 - replace = "write file"; 52 - } 53 - { 54 - keys = "C-x C-c"; 55 - replace = "leave emacs"; 56 - } 57 - ]; 58 - extraPackages = ep: [ep.which-key]; 59 - localPackages."init-whichkey" = { 60 - tag = "Setup and initialise whichkey"; 61 - comments = []; 62 - requires = []; 63 - code = '' 64 - ;; which-key 65 - (which-key-mode t) 66 - (setq-default which-key-idle-delay 0.1) 67 - 68 - (which-key-add-key-based-replacements 69 - ${replacements}) 70 - ''; 71 - }; 72 - }; 73 - }; 74 - }
+1 -2
home/modules/programs/eza/default.nix
··· 6 6 }: let 7 7 cfg = config.programs.eza; 8 8 in { 9 - _file = ./default.nix; 10 - 11 9 config = lib.mkIf cfg.enable { 12 10 programs.eza.package = pkgs.eza; 13 11 programs.zsh.shellAliases = { 14 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"; 15 14 }; 16 15 }; 17 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 + }
-2
home/modules/programs/nixpkgs/default.nix
··· 5 5 }: let 6 6 allowed = config.nixpkgs.allowedUnfree; 7 7 in { 8 - _file = ./default.nix; 9 - 10 8 options.nixpkgs.allowedUnfree = lib.mkOption { 11 9 type = lib.types.listOf lib.types.str; 12 10 default = [];
-25
home/modules/programs/openshift/default.nix
··· 1 - _: { 2 - pkgs, 3 - lib, 4 - config, 5 - ... 6 - }: let 7 - cfg = config.programs.openshift; 8 - in { 9 - _file = ./default.nix; 10 - 11 - options.programs.openshift = { 12 - enable = lib.mkEnableOption "Tools to manage openshift instances"; 13 - }; 14 - 15 - config = lib.mkIf cfg.enable { 16 - home.packages = [pkgs.sops pkgs.openshift (lib.setPrio 0 pkgs.kubectl) pkgs.kubernetes-helm]; 17 - 18 - programs.zsh.initExtra = '' 19 - # Enable autocomplete for oc, kubectl and helm 20 - eval "$(${pkgs.openshift}/bin/oc completion zsh)" 21 - eval "$(${pkgs.kubectl}/bin/kubectl completion zsh)" 22 - eval "$(${pkgs.kubernetes-helm}/bin/helm completion zsh)" 23 - ''; 24 - }; 25 - }
-2
home/modules/programs/p10k/default.nix
··· 7 7 cfg = config.programs.p10k; 8 8 zsh = config.programs.zsh.enable; 9 9 in { 10 - _file = ./default.nix; 11 - 12 10 options = { 13 11 programs.p10k.enable = lib.mkEnableOption "p10k"; 14 12 };
+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 -3
home/modules/services/insync/default.nix
··· 10 10 }: let 11 11 cfg = config.services.insync; 12 12 in { 13 - _file = ./default.nix; 14 - 15 13 options.services.insync = { 16 14 enable = lib.mkEnableOption "Insync cloud sync tool"; 17 15 ··· 23 21 inherit (config.nixpkgs) config; 24 22 }; 25 23 in 26 - ipkgs.insync-v3; 24 + ipkgs.insync; 27 25 description = '' 28 26 The insync package to use. 29 27
-87
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 - _file = ./default.nix; 19 - 20 - options.services.restic = { 21 - enable = lib.mkEnableOption "Restic Backup Tool"; 22 - 23 - package = lib.mkOption { 24 - type = lib.types.package; 25 - default = pkgs.restic; 26 - description = "Restic derivation to use"; 27 - }; 28 - 29 - exclude = lib.mkOption { 30 - type = lib.types.listOf lib.types.str; 31 - default = []; 32 - description = "Corresponds to `--exclude`. Use `%h` instead of `~`"; 33 - }; 34 - 35 - oneFileSystem = lib.mkOption { 36 - type = lib.types.bool; 37 - default = false; 38 - description = "If true, exclude other file systems, don't cross filesystem boundaries and subvolumes"; 39 - }; 40 - 41 - repo = lib.mkOption { 42 - type = lib.types.str; 43 - description = "Location of the repository"; 44 - }; 45 - 46 - compression = lib.mkOption { 47 - type = lib.types.enum ["off" "auto" "max"]; 48 - description = "The compression mode to use"; 49 - default = "auto"; 50 - }; 51 - 52 - # TODO: Add options for inlcude, password file, etc 53 - }; 54 - 55 - config = lib.mkIf cfg.enable { 56 - home.packages = [cfg.package]; 57 - 58 - systemd.user.services.restic-backup = { 59 - Unit = { 60 - Description = "Restic Backup Tool"; 61 - StartLimitIntervalSec = "25m"; 62 - StartLimitBurst = "4"; 63 - }; 64 - 65 - Service = { 66 - Environment = [ 67 - "PATH=${lib.makeBinPath [pkgs.openssh]}" 68 - "RESTIC_PASSWORD_FILE=%h/.config/restic/password" 69 - "RESTIC_REPOSITORY=${cfg.repo}" 70 - ]; 71 - Type = "oneshot"; 72 - ExecStart = command; 73 - Restart = "on-failure"; 74 - RestartSec = "2m"; 75 - }; 76 - }; 77 - 78 - systemd.user.timers.restic-backup = { 79 - Unit.Description = "Restic periodic backup"; 80 - Timer = { 81 - Unit = "restic-backup.service"; 82 - OnCalendar = "hourly"; 83 - }; 84 - Install.WantedBy = ["timers.target"]; 85 - }; 86 - }; 87 - }
-4
home/modules/services/rustic/default.nix
··· 6 6 }: let 7 7 cfg = config.services.rustic; 8 8 9 - osConfig = config; 10 - 11 9 bin = lib.getExe cfg.package; 12 10 13 11 globs = let lines = map (g: "${g}\n") cfg.globs; in lib.concatStrings lines; ··· 62 60 }; 63 61 }; 64 62 in { 65 - _file = ./default.nix; 66 - 67 63 options.services.rustic = { 68 64 enable = lib.mkEnableOption "rustic"; 69 65
-2
mixed/ip_addresses.nix
··· 1 1 _: _: { 2 - _file = ./ip_addresses.nix; 3 - 4 2 lib.nobbz = { 5 3 enceladeus.v4 = "172.24.199.101"; 6 4 enceladeus.v6 = "fcc5:ee64:a023:8429:3ae6:0000:0000:0001";
-2
nixos/configurations/bootloader/enceladeus.nix
··· 1 1 { 2 - _file = ./hyperion.nix; 3 - 4 2 # Use the GRUB 2 boot loader. 5 3 boot.loader.grub.enable = true; 6 4 boot.loader.grub.useOSProber = false;
-2
nixos/configurations/bootloader/hyperion.nix
··· 1 1 { 2 - _file = ./hyperion.nix; 3 - 4 2 boot.loader.systemd-boot.enable = true; 5 3 boot.loader.efi.canTouchEfiVariables = true; 6 4 boot.loader.efi.efiSysMountPoint = "/boot/efi";
-2
nixos/configurations/bootloader/mimas.nix
··· 1 1 { 2 - _file = ./mimas.nix; 3 - 4 2 boot.loader.systemd-boot.enable = true; 5 3 boot.loader.efi.canTouchEfiVariables = true; 6 4 }
-4
nixos/configurations/default.nix
··· 1 1 _: { 2 - _file = ./default.nix; 3 - 4 2 nobbz.nixosConfigurations.mimas.system = "x86_64-linux"; 5 - nobbz.nixosConfigurations.enceladeus.system = "x86_64-linux"; 6 - nobbz.nixosConfigurations.hyperion.system = "aarch64-linux"; 7 3 }
-164
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 - _file = ./enceladeus.nix; 11 - 12 - nix.allowedUnfree = ["b43-firmware" "zerotierone"]; 13 - nixpkgs.config.contentAddressedByDefault = false; 14 - nix.distributedBuilds = true; 15 - # nix.enabledMachines = ["mimas"]; 16 - 17 - # nixpkgs.hostPlatform.gcc.arch = "core2"; 18 - # nixpkgs.hostPlatform.system = "x86_64-linux"; 19 - # nixpkgs.buildPlatform.gcc.arch = "haswell"; 20 - # nixpkgs.buildPlatform.system = "x86_64-linux"; 21 - 22 - nixpkgs.overlays = [ 23 - # (final: prev: { 24 - # abseil-cpp = nixpkgs.legacyPackages.${final.system}.abseil-cpp; 25 - # #bash = prev.bash.override { stdenv = nixpkgs.legacyPackages.${final.system}.stdenv; }; 26 - # }) 27 - ]; 28 - 29 - services.lvm.boot.thin.enable = true; 30 - boot.kernelPackages = pkgs.linuxPackages_6_6; # WiFi kernel module doesn't build on newer kernels 31 - services.lvm.dmeventd.enable = true; 32 - boot.blacklistedKernelModules = ["rtl8xxxu"]; 33 - boot.extraModulePackages = with config.boot.kernelPackages; [ 34 - rtl8192eu 35 - ]; 36 - 37 - boot.kernel.sysctl = { 38 - "vm.swappiness" = 75; 39 - }; 40 - 41 - # The global useDHCP flag is deprecated, therefore explicitly set to false here. 42 - # Per-interface useDHCP will be mandatory in the future, so this generated config 43 - # replicates the default behaviour. 44 - networking.networkmanager.enable = true; 45 - networking.networkmanager.unmanaged = [ 46 - "mac:0c:60:76:3f:c1:31" 47 - ]; 48 - networking.enableB43Firmware = true; 49 - 50 - networking.useDHCP = false; 51 - networking.interfaces.enp0s25.useDHCP = false; 52 - networking.interfaces.wlan0.useDHCP = false; 53 - networking.hostId = "62a007d6"; # required by ZFS 54 - 55 - # Configure network proxy if necessary 56 - # networking.proxy.default = "http://user:password@proxy:port/"; 57 - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; 58 - 59 - # Select internationalisation properties. 60 - i18n.defaultLocale = "en_US.UTF-8"; 61 - console = { 62 - font = "Lat2-Terminus16"; 63 - keyMap = "de"; 64 - }; 65 - 66 - # Set your time zone. 67 - time.timeZone = "Europe/Berlin"; 68 - 69 - # List packages installed in system profile. To search, run: 70 - # $ nix search wget 71 - environment.systemPackages = with pkgs; [ 72 - unison # Sadly required on the host for unison copy to work :( 73 - nix-output-monitor 74 - ]; 75 - 76 - # Some programs need SUID wrappers, can be configured further or are 77 - # started in user sessions. 78 - programs.gnupg.agent = { 79 - enable = true; 80 - enableSSHSupport = true; 81 - }; 82 - programs.zsh.enable = true; 83 - 84 - # List services that you want to enable: 85 - 86 - # Enable the OpenSSH daemon. 87 - services.openssh.enable = true; 88 - 89 - # Open ports in the firewall. 90 - networking.firewall.allowedTCPPorts = [9002]; 91 - # networking.firewall.allowedUDPPorts = [ ... ]; 92 - # Or disable the firewall altogether. 93 - # networking.firewall.enable = false; 94 - networking.firewall.trustedInterfaces = [ 95 - "ztrta4jrxj" 96 - ]; 97 - 98 - # Enable CUPS to print documents. 99 - # services.printing.enable = true; 100 - 101 - # Enable sound. 102 - sound.enable = true; 103 - hardware.pulseaudio.enable = true; 104 - 105 - # Enable the X11 windowing system. 106 - services.xserver.enable = true; 107 - services.xserver.xkb.layout = "de"; 108 - # services.xserver.xkbOptions = "eurosign:e"; 109 - 110 - # Enable touchpad support. 111 - services.xserver.libinput.enable = true; 112 - 113 - # Enable the KDE Desktop Environment. 114 - services.xserver.displayManager.lightdm.enable = true; 115 - services.xserver.desktopManager.plasma5.enable = false; 116 - services.xserver.windowManager.awesome.enable = true; 117 - 118 - virtualisation.docker.enable = false; 119 - 120 - # Define a user account. Don't forget to set a password with โ€˜passwdโ€™. 121 - users.users = { 122 - nmelzer = { 123 - isNormalUser = true; 124 - shell = pkgs.zsh; 125 - extraGroups = ["wheel" "networkmanager"]; 126 - }; 127 - 128 - aroemer = { 129 - isNormalUser = true; 130 - }; 131 - 132 - proemer = { 133 - isNormalUser = true; 134 - }; 135 - }; 136 - 137 - services.prometheus = { 138 - exporters = { 139 - node = { 140 - enable = true; 141 - enabledCollectors = ["systemd"]; 142 - port = 9002; 143 - }; 144 - }; 145 - }; 146 - 147 - # This value determines the NixOS release with which your system is to be 148 - # compatible, in order to avoid breaking some software such as database 149 - # servers. You should change this only after NixOS release notes say you 150 - # should. 151 - system.stateVersion = "19.09"; # Did you read the comment? 152 - 153 - security.sudo.extraRules = [ 154 - { 155 - commands = [ 156 - { 157 - command = "/run/current-system/sw/bin/nixos-rebuild"; 158 - options = ["NOPASSWD"]; 159 - } 160 - ]; 161 - groups = ["wheel"]; 162 - } 163 - ]; 164 - }
-4
nixos/configurations/hardware/enceladeus.nix
··· 2 2 # and may be overwritten by future invocations. Please make changes 3 3 # to /etc/nixos/configuration.nix instead. 4 4 {lib, ...}: { 5 - _file = ./enceladeus.nix; 6 - 7 - imports = []; 8 - 9 5 boot.initrd.availableKernelModules = ["uhci_hcd" "ehci_pci" "ahci" "firewire_ohci" "usbhid" "usb_storage" "sd_mod" "sr_mod" "sdhci_pci"]; 10 6 boot.initrd.kernelModules = ["dm-snapshot"]; 11 7 boot.kernelModules = ["kvm-intel" "wl"];
-2
nixos/configurations/hardware/hyperion.nix
··· 6 6 modulesPath, 7 7 ... 8 8 }: { 9 - _file = ./hyperion.nix; 10 - 11 9 imports = [ 12 10 (modulesPath + "/profiles/qemu-guest.nix") 13 11 ];
+8 -4
nixos/configurations/hardware/mimas.nix
··· 6 6 pkgs, 7 7 ... 8 8 }: { 9 - _file = ./mimas.nix; 10 - 11 9 imports = []; 12 10 13 11 boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sr_mod" "rtsx_pci_sdmmc"]; ··· 15 13 boot.kernelModules = ["kvm-intel"]; 16 14 boot.kernelParams = ["intel_pstate=active"]; 17 15 boot.extraModulePackages = []; 18 - boot.supportedFilesystems = ["ntfs" "exfat" "avfs"]; 16 + boot.supportedFilesystems = ["ntfs" "exfat" "avfs" "xfs"]; 19 17 20 18 hardware.cpu.intel.updateMicrocode = true; 21 19 hardware.enableRedistributableFirmware = true; ··· 77 75 options = ["nofail"]; 78 76 }; 79 77 78 + fileSystems."/var/lib/actual" = { 79 + device = "/dev/pool/actual"; 80 + fsType = "xfs"; 81 + options = ["nofail"]; 82 + }; 83 + 80 84 fileSystems."/boot" = { 81 85 device = "/dev/disk/by-uuid/7000-3A85"; 82 86 fsType = "vfat"; ··· 92 96 nix.settings.max-jobs = lib.mkDefault 4; 93 97 powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; 94 98 95 - hardware.opengl.extraPackages = with pkgs; [ 99 + hardware.graphics.extraPackages = with pkgs; [ 96 100 vaapiIntel 97 101 vaapiVdpau 98 102 libvdpau-va-gl
-53
nixos/configurations/hyperion.nix
··· 1 - _: {pkgs, ...}: { 2 - _file = ./hyperion.nix; 3 - 4 - nix.allowedUnfree = ["zerotierone"]; 5 - 6 - networking.hostName = "hyperion"; 7 - networking.networkmanager.enable = true; 8 - 9 - time.timeZone = "Europe/Berlin"; 10 - 11 - i18n.defaultLocale = "en_US.UTF-8"; 12 - 13 - services.xserver.enable = true; 14 - 15 - # Enable the LXQT Desktop Environment. 16 - services.xserver.displayManager.lightdm.enable = true; 17 - services.xserver.desktopManager.lxqt.enable = true; 18 - services.xserver.desktopManager.plasma5.enable = true; 19 - services.xserver.desktopManager.enlightenment.enable = true; 20 - 21 - services.qemuGuest.enable = true; 22 - services.spice-vdagentd.enable = true; 23 - 24 - services.openssh.enable = true; 25 - 26 - services.acpid.enable = true; 27 - 28 - # Configure keymap in X11 29 - services.xserver.xkb = { 30 - layout = "de"; 31 - variant = ""; 32 - }; 33 - 34 - # Configure console keymap 35 - console.keyMap = "de"; 36 - 37 - services.printing.enable = true; 38 - 39 - programs.zsh.enable = true; 40 - 41 - users.users.nmelzer = { 42 - isNormalUser = true; 43 - description = "Norbert Melzer"; 44 - extraGroups = ["networkmanager" "wheel"]; 45 - shell = pkgs.zsh; 46 - packages = [ 47 - pkgs.firefox 48 - # thunderbird 49 - ]; 50 - }; 51 - 52 - system.stateVersion = "22.11"; 53 - }
+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 + }
+1 -3
nixos/configurations/mimas/paperless.nix
··· 1 - {nixpkgs-2211, ...}: {config, ...}: { 2 - _file = ./paperless.nix; 3 - 1 + _: {config, ...}: { 4 2 services.paperless = { 5 3 enable = true; 6 4 address = "0.0.0.0";
-2
nixos/configurations/mimas/restic.nix
··· 83 83 rm -rfv ${basePath} 84 84 ''; 85 85 in { 86 - _file = ./restic.nix; 87 - 88 86 services.restic.server = { 89 87 enable = true; 90 88 prometheus = true;
+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 + }
-2
nixos/configurations/mimas/vaultwarden.nix
··· 2 2 host = "passwords.mimas.internal.nobbz.dev"; 3 3 wardenPort = 10000; 4 4 in { 5 - _file = ./vaultwarden.nix; 6 - 7 5 sops.secrets.warden = {}; 8 6 9 7 services.vaultwarden = {
+34 -29
nixos/configurations/mimas.nix
··· 1 1 # Edit this configuration file to define what should be installed on 2 2 # your system. Help is available in the configuration.nix(5) man page 3 3 # and in the NixOS manual (accessible by running โ€˜nixos-helpโ€™). 4 - { 5 - self, 6 - unstable, 7 - nixpkgs-2211, 8 - ... 9 - } @ inputs: { 4 + {self, ...} @ inputs: { 10 5 config, 11 6 pkgs, 12 7 lib, 13 8 ... 14 9 }: let 15 - upkgs = unstable.legacyPackages.x86_64-linux; 16 - steamPackages = ["steam" "steam-run" "steam-original" "steam-runtime"]; 17 - printerPackages = ["hplip" "samsung-UnifiedLinuxDriver"]; 10 + steamPackages = ["steam" "steam-run" "steam-original" "steam-runtime" "steam-unwrapped"]; 18 11 in { 19 - _file = ./mimas.nix; 20 - 21 12 imports = [ 13 + (import ./mimas/paperless.nix inputs) 22 14 (import ./mimas/restic.nix inputs) 23 - (import ./mimas/paperless.nix inputs) 15 + (import ./mimas/rustic-timers.nix inputs) 24 16 (import ./mimas/vaultwarden.nix inputs) 17 + ./mimas/gitea.nix 25 18 ]; 26 19 20 + services.tailscale.enable = true; 21 + 22 + security.pam.services.i3lock.enable = true; 23 + security.pam.services.i3lock-color.enable = true; 24 + 27 25 sops.age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"]; 28 26 sops.defaultSopsFile = "${self}/secrets/mimas/default.yaml"; 29 27 30 28 sops.secrets.restic = {}; 31 29 sops.secrets.traefik = {}; 32 30 33 - nix.allowedUnfree = ["zerotierone"] ++ printerPackages ++ steamPackages; 31 + nix.allowedUnfree = ["zerotierone"] ++ steamPackages; 34 32 nix.settings.experimental-features = ["ca-derivations" "impure-derivations"]; 35 33 nix.distributedBuilds = true; 36 34 # nix.enabledMachines = ["enceladeus"]; ··· 104 102 105 103 # Enable CUPS to print documents. 106 104 services.printing.enable = true; 107 - services.printing.drivers = [pkgs.hplipWithPlugin pkgs.samsung-unified-linux-driver]; 108 105 109 106 services.avahi.enable = true; 110 107 services.avahi.nssmdns4 = true; ··· 126 123 # }; 127 124 # networking.firewall.allowedTCPPorts = [ 3000 ]; 128 125 129 - # Enable sound. 130 - sound.enable = true; 131 - hardware.pulseaudio = { 132 - enable = true; 133 - package = pkgs.pulseaudioFull; 134 - }; 126 + # Enable pulse compat. 127 + services.pipewire.pulse.enable = true; 128 + 135 129 hardware.bluetooth.enable = true; 136 130 137 131 # Enable the X11 windowing system. 138 132 services.xserver.enable = true; 139 133 services.xserver.xkb.layout = "de"; 140 - # services.xserver.xkbOptions = "eurosign:e"; 141 134 142 135 # Enable touchpad support. 143 136 # services.xserver.libinput.enable = true; 144 137 145 138 # Enable the KDE Desktop Environment. 146 - services.xserver.displayManager.sddm.enable = true; 139 + services.displayManager.sddm.enable = true; 147 140 services.xserver.desktopManager.plasma5.enable = true; 148 141 services.xserver.windowManager.awesome.enable = true; 149 142 ··· 163 156 zsh.enableCompletion = false; 164 157 }; 165 158 166 - hardware.opengl.driSupport32Bit = true; 167 - hardware.pulseaudio.support32Bit = true; 168 - 169 - hardware.opengl.enable = true; 170 - hardware.opengl.extraPackages = [pkgs.vaapiIntel]; 159 + hardware.graphics.enable = true; 160 + hardware.graphics.extraPackages = [pkgs.vaapiIntel]; 171 161 172 162 services.gitea = { 173 163 enable = true; ··· 188 178 enable = true; 189 179 # storageDriver = "zfs"; 190 180 # extraOptions = "--storage-opt zfs.fsname=rpool/local/docker"; 191 - package = upkgs.docker; 181 + package = pkgs.docker; 192 182 extraOptions = "--dns 1.1.1.1"; 193 183 }; 194 184 ··· 262 252 263 253 hardware.keyboard.zsa.enable = true; 264 254 hardware.sane.enable = true; 265 - hardware.sane.extraBackends = [pkgs.hplipWithPlugin]; 266 255 267 256 services.traefik.enable = true; 268 257 systemd.services.traefik.serviceConfig.EnvironmentFile = [config.sops.secrets.traefik.path]; ··· 398 387 } 399 388 ]; 400 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 + ]; 401 406 402 407 # This value determines the NixOS release with which your system is to be 403 408 # compatible, in order to avoid breaking some software such as database
+12 -10
nixos/modules/default.nix
··· 1 - inputs: { 2 - cachix = import ./cachix inputs; 3 - distributed = import ./distributed.nix inputs; 4 - flake = import ./flake.nix inputs; 5 - hostnames = import ./hostnames.nix inputs; 6 - kernel = import ./kernel.nix inputs; 7 - moonlander = import ./moonlander.nix inputs; 8 - nix = import ./nix.nix inputs; 9 - switcher = import ./switcher.nix inputs; 10 - zerotier = import ./zerotier.nix inputs; 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 + }; 11 13 }
-2
nixos/modules/distributed.nix
··· 36 36 37 37 selfRemote = builtins.elem hostName enabledMachines; 38 38 in { 39 - _file = ./distributed.nix; 40 - 41 39 options.nix = { 42 40 enabledMachines = lib.mkOption { 43 41 type = listOf (enum names);
+5 -11
nixos/modules/flake.nix
··· 1 1 { 2 - unstable, 3 - nixpkgs-2211, 4 2 nix, 3 + nixpkgs, 5 4 programsdb, 6 5 ... 7 6 }: { ··· 12 11 }: let 13 12 base = "/etc/nixpkgs/channels"; 14 13 nixpkgsPath = "${base}/nixpkgs"; 15 - nixpkgs2211Path = "${base}/nixpkgs2211"; 16 14 in { 17 - _file = ./flake.nix; 18 - 19 15 options.nix.flakes.enable = lib.mkEnableOption "nix flakes"; 20 16 21 17 config = lib.mkIf config.nix.flakes.enable { 22 18 programs.command-not-found.dbPath = programsdb.packages.${pkgs.system}.programs-sqlite; 23 19 24 20 nix = { 25 - package = lib.mkDefault nix.packages.${pkgs.system}.nix; 21 + package = lib.mkDefault nix.packages.${pkgs.system}.nix-cli; 22 + 26 23 settings.experimental-features = ["nix-command" "flakes"]; 27 24 28 - registry.nixpkgs.flake = unstable; 29 - registry.nixpkgs2211.flake = nixpkgs-2211; 25 + registry.nixpkgs.flake = nixpkgs; 30 26 31 27 nixPath = [ 32 28 "nixpkgs=${nixpkgsPath}" 33 - "nixpkgs2211=${nixpkgs2211Path}" 34 29 "/nix/var/nix/profiles/per-user/root/channels" 35 30 ]; 36 31 }; 37 32 38 33 systemd.tmpfiles.rules = [ 39 - "L+ ${nixpkgsPath} - - - - ${unstable}" 40 - "L+ ${nixpkgs2211Path} - - - - ${nixpkgs-2211}" 34 + "L+ ${nixpkgsPath} - - - - ${nixpkgs}" 41 35 ]; 42 36 }; 43 37 }
-2
nixos/modules/hostnames.nix
··· 4 4 pkgs, 5 5 ... 6 6 }: { 7 - _file = ./hostnames.nix; 8 - 9 7 networking.search = ["internal.nobbz.dev"]; 10 8 networking.domain = "internal.nobbz.dev"; 11 9 }
-2
nixos/modules/kernel.nix
··· 10 10 else builtins.attrNames (lib.filterAttrs (_name: value: value) (config.boot.supportedFilesystems // config.boot.initrd.supportedFilesystems)); 11 11 zfsUsed = lib.lists.elem "zfs" supportedFilesystems; 12 12 in { 13 - _file = ./kernel.nix; 14 - 15 13 boot.kernelPackages = lib.mkDefault ( 16 14 if zfsUsed 17 15 then pkgs.zfs.latestCompatibleLinuxPackages
-2
nixos/modules/moonlander.nix
··· 9 9 10 10 cfg = config.hardware.keyboard.zsa; 11 11 in { 12 - _file = ./moonlander.nix; 13 - 14 12 config = mkIf cfg.enable { 15 13 users.users.nmelzer.extraGroups = ["plugdev"]; 16 14 environment.systemPackages = [wally-cli];
-2
nixos/modules/nix.nix
··· 8 8 mibibyte = 1024 * kibibyte; 9 9 gibibyte = 1024 * mibibyte; 10 10 in { 11 - _file = ./nix.nix; 12 - 13 11 options.nix = { 14 12 allowedUnfree = lib.mkOption { 15 13 type = lib.types.listOf lib.types.str;
-2
nixos/modules/switcher.nix
··· 3 3 config, 4 4 ... 5 5 }: { 6 - _file = ./switcher.nix; 7 - 8 6 environment.systemPackages = [self.packages."${pkgs.system}".switcher]; 9 7 10 8 security.sudo.extraRules = let
+14 -3
nixos/modules/zerotier.nix
··· 1 - _: { 2 - _file = ./zerotier.nix; 3 - 1 + {nixpkgs-pre-rust, ...}: { 2 + config, 3 + pkgs, 4 + ... 5 + }: { 4 6 services.zerotierone.enable = true; 5 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; 6 17 }
+28 -16
npins/sources.json
··· 1 1 { 2 2 "pins": { 3 - "fzf-tab": { 3 + "catppuccin-bat": { 4 4 "type": "Git", 5 5 "repository": { 6 6 "type": "GitHub", 7 - "owner": "Aloxaf", 8 - "repo": "fzf-tab" 7 + "owner": "catppuccin", 8 + "repo": "bat" 9 9 }, 10 - "branch": "master", 11 - "revision": "c2b4aa5ad2532cca91f23908ac7f00efb7ff09c9", 12 - "url": "https://github.com/Aloxaf/fzf-tab/archive/c2b4aa5ad2532cca91f23908ac7f00efb7ff09c9.tar.gz", 13 - "hash": "1b4pksrc573aklk71dn2zikiymsvq19bgvamrdffpf7azpq6kxl2" 10 + "branch": "main", 11 + "revision": "699f60fc8ec434574ca7451b444b880430319941", 12 + "url": "https://github.com/catppuccin/bat/archive/699f60fc8ec434574ca7451b444b880430319941.tar.gz", 13 + "hash": "1lirgwgh2hnz6j60py19bbmhvgaqs7i6wf6702k6n83lgw4aixg9" 14 14 }, 15 - "konsole": { 15 + "catppuccin-rofi": { 16 16 "type": "Git", 17 17 "repository": { 18 18 "type": "GitHub", 19 - "owner": "dracula", 20 - "repo": "konsole" 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" 21 33 }, 22 34 "branch": "master", 23 - "revision": "030486c75f12853e9d922b59eb37c25aea4f66f4", 24 - "url": "https://github.com/dracula/konsole/archive/030486c75f12853e9d922b59eb37c25aea4f66f4.tar.gz", 25 - "hash": "123dll2w2mbflgxfgdjg0a3gbr4srnwbyj3zd6wg1hx5miki48xj" 35 + "revision": "6aced3f35def61c5edf9d790e945e8bb4fe7b305", 36 + "url": "https://github.com/Aloxaf/fzf-tab/archive/6aced3f35def61c5edf9d790e945e8bb4fe7b305.tar.gz", 37 + "hash": "1brljd9744wg8p9v3q39kdys33jb03d27pd0apbg1cz0a2r1wqqi" 26 38 }, 27 39 "zsh-syntax-highlighting": { 28 40 "type": "Git", ··· 32 44 "repo": "zsh-syntax-highlighting" 33 45 }, 34 46 "branch": "master", 35 - "revision": "1386f1213eb0b0589d73cd3cf7c56e6a972a9bfd", 36 - "url": "https://github.com/zsh-users/zsh-syntax-highlighting/archive/1386f1213eb0b0589d73cd3cf7c56e6a972a9bfd.tar.gz", 37 - "hash": "0a39xfwxdq8zmzw8s40fvham7689am1icn03lhdj1882qjb7pb48" 47 + "revision": "5eb677bb0fa9a3e60f0eff031dc13926e093df92", 48 + "url": "https://github.com/zsh-users/zsh-syntax-highlighting/archive/5eb677bb0fa9a3e60f0eff031dc13926e093df92.tar.gz", 49 + "hash": "1x33gk7hhp07jqq7yjvrsp2vmdbxmadlv3335ixx29bc6h8106r9" 38 50 } 39 51 }, 40 52 "version": 3
+1
packages/advcp/default.nix
··· 7 7 stdenv.mkDerivation rec { 8 8 name = "advcp"; 9 9 version = "9.1"; 10 + strictDeps = true; 10 11 11 12 src = fetchurl { 12 13 name = "source-${name}-${version}.tar.xz";
+2 -26
packages/default.nix
··· 1 1 {inputs, ...}: { 2 - _file = ./default.nix; 3 - 4 2 perSystem = { 5 3 system, 6 4 pkgs, ··· 8 6 inputs', 9 7 ... 10 8 }: let 11 - upkgs = inputs'.nixpkgs-unstable.legacyPackages; 9 + upkgs = inputs'.nixpkgs.legacyPackages; 12 10 13 - epkgs = upkgs.extend inputs.emacs.overlay; 14 - chromePkgs = import inputs.master { 11 + chromePkgs = import inputs.nixpkgs { 15 12 inherit system; 16 13 config.allowUnfree = true; 17 14 config.google-chrome.enableWideVine = true; 18 15 }; 19 - 20 - nilBase = 21 - if upkgs.stdenv.isLinux 22 - then inputs'.nil.packages.nil 23 - else upkgs.nil; 24 - 25 - rnil-lsp = upkgs.writeShellScriptBin "rnix-lsp" '' 26 - exec ${nilBase}/bin/nil "$@" 27 - ''; 28 - 29 - nil = upkgs.symlinkJoin { 30 - name = "nil"; 31 - paths = [nilBase rnil-lsp]; 32 - }; 33 16 in { 34 17 packages = lib.mkMerge [ 35 18 { 36 - inherit nil; 37 - 38 19 advcp = upkgs.callPackage ./advcp {}; 39 - "dracula/konsole" = upkgs.callPackage ./dracula/konsole {}; 40 - emacs = epkgs.emacs-unstable; 41 20 "rofi/unicode" = upkgs.callPackage ./rofi-unicode {}; 42 - "zx" = upkgs.nodePackages.zx; 43 - 44 - alejandra = inputs'.alejandra.packages.default; 45 21 } 46 22 (lib.mkIf pkgs.stdenv.isLinux { 47 23 inherit (inputs'.switcher.packages) switcher;
-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 - })
+1
packages/rofi-unicode/default.nix
··· 8 8 stdenvNoCC.mkDerivation (self: { 9 9 pname = "rofiemoji-rofiunicode"; 10 10 version = "${source.rev}"; 11 + strictDeps = true; 11 12 12 13 src = fetchgit { 13 14 inherit (source) rev url sha256;
+4 -6
parts/auxiliary.nix
··· 1 - {self, ...}: { 2 - _file = ./auxiliary.nix; 3 - 1 + _: { 4 2 perSystem = { 5 3 config, 6 4 pkgs, ··· 9 7 system, 10 8 ... 11 9 }: { 12 - formatter = self.packages.${system}.alejandra; 10 + formatter = pkgs.alejandra; 13 11 12 + apps.rotate.meta.description = "rotate keys for sops"; 14 13 apps.rotate.program = let 15 14 sopsrotate = pkgs.writeShellScript "sops-rotate" '' 16 15 file=$1 ··· 30 29 31 30 devShells.default = pkgs.mkShell { 32 31 packages = builtins.attrValues { 33 - inherit (self'.packages) nil alejandra; 34 - inherit (inputs'.unstable.legacyPackages) npins sops age ssh-to-age; 32 + inherit (pkgs) npins sops age ssh-to-age nil alejandra; 35 33 }; 36 34 }; 37 35 };
+3 -4
parts/home_configs.nix
··· 14 14 15 15 packages = builtins.attrValues (builtins.mapAttrs (_: config: config.packageModule) enabledCfgs); 16 16 in { 17 - _file = ./home_configs.nix; 18 - 19 17 options = { 20 18 nobbz.homeConfigurations = lib.mkOption { 21 19 type = lib.types.attrsOf (lib.types.submodule ({ ··· 101 99 [ 102 100 config.entryPoint 103 101 {home = {inherit (config) username homeDirectory;};} 104 - {systemd.user.startServices = "legacy";} 102 + {systemd.user.startServices = "sd-switch";} 103 + {news.display = "silent";} 105 104 inputs.nixos-vscode-server.nixosModules.home 106 105 inputs.sops-nix.homeManagerModules.sops 107 106 ] 108 107 ++ config.modules 109 - ++ builtins.attrValues self.homeModules 108 + ++ builtins.attrValues self.homeManagerModules 110 109 ++ builtins.attrValues self.mixedModules; 111 110 112 111 packageName = "home/config/${name}";
+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 + }
-2
parts/system_configs.nix
··· 11 11 12 12 packages = builtins.attrValues (builtins.mapAttrs (_: config: config.packageModule) cfg); 13 13 in { 14 - _file = ./system_configs.nix; 15 - 16 14 options = { 17 15 nobbz.nixosConfigurations = lib.mkOption { 18 16 type = lib.types.attrsOf (lib.types.submodule ({
+18 -16
secrets/mimas/default.yaml
··· 1 - restic: ENC[AES256_GCM,data:L1S0WEBMbr3gQA==,iv:9NdaTuhLR57mv8OaCSyso9cfr8V1iQNuQuWInKyi3bI=,tag:L2H0EeCxx6hGk85Z+ObShg==,type:str] 2 - traefik: ENC[AES256_GCM,data:MuG+NilIrc8FOh/H5ze81S12rd4ORFaJLVJ4kuDxGjwOhM71muxGw26/NVsUKHPSOL6VLePENZ7fpZ28PuzR1DwQYF4j6Ltlpci7RLAsEKdxYg==,iv:ZL90s3YuBmwafBz7VEwCTr2flnkguUxJgPp9OrnyfGA=,tag:lEkO4UN5s3n3ZUxNwSg7Jw==,type:str] 3 - warden: ENC[AES256_GCM,data:uLWCQ/w0FqyGKvCBp0Z6wpYgvQzZDRYHCBNrKqFA9ykwglPEvN60WnQJdhmLDHpdfeWVSlldkC74m3msQ3SAItYtu8jBN5LJi4ns5gQvbR1PaZ6BnPQnzAYPGEMbKjT9p02OVXs9ZxGExYqn4quZj6auvIl/ZD0OBikP+SSLjtC/2lyCeCOdN0q31xU7dGeEOl+pZp/KxeJIrKl7/vsxLRIhzat6UL2e2mnE/HBrGrxkkvU23/QJChpPoX3gEvnwLFtt0JBh3KCdSVSJ+iBSm+FJ/E6kYeRJ6JHAmXXQZu1tbrzyLoWf2ua26xtYRYL5k9Y5WDIy/otFQnw=,iv:OauSp63ywmrkENIqBVGVQ99Ozyom0o+DfSqYaL46Ujg=,tag:aWpRcFPIcCxW73ztvOk4mw==,type:str] 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] 4 6 sops: 5 7 kms: [] 6 8 gcp_kms: [] ··· 10 12 - recipient: age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 11 13 enc: | 12 14 -----BEGIN AGE ENCRYPTED FILE----- 13 - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFYmVvZm13amgwLzBOSmtE 14 - Q0hrNFFlZ0gwZ2RvTmFDSHgrQVJMMjUwckJVCkxrQWVQVXVCT0d0V0l6WDM5UjEv 15 - RDd6eHBnbHd6ZU51ZzIvQmFXT1VwY00KLS0tIC9EeDJJT0RpWmI4aGw5ek16QVhs 16 - dEtjc2hZM25lY1luOVZwUjVqRWJ4cmsK0w53owK2lhMFRY/NljyTOkeMUgp3Wab/ 17 - 83g/SrFTmdI0rNIHpBAQSEHOYi2J/4O2+BRd8fbtdsFDJsS4A0cOQA== 15 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVRkRBcWlnM25ablJBdit2 16 + b0Y1Zy9PM2FjRmg5ajN0YWpsaitJUStTTXlBCnpuL2wvU0hxZFpDREhiTmhnaFFi 17 + LzkxMmVHYWo4TkZOaStJeHZsK3pIZG8KLS0tIC9DSjUyUVk0SG9mNHd0aGdXN1ow 18 + N2Q4QWk3RU83dUxuSG85V1N5TzFkSVEK58cE6fE6mxjRCgtHRMqqahqMkwYeUnhx 19 + F2Bdg5oPPQxoqIf769fZD9L1y/+LZ6Vi4YhJkjfMVFXk6YtEjKJSmQ== 18 20 -----END AGE ENCRYPTED FILE----- 19 21 - recipient: age10jl78vwyqk622dpn2890l9jl4et3p7lsr8wh8vusem3j8jdxle8qg000qa 20 22 enc: | 21 23 -----BEGIN AGE ENCRYPTED FILE----- 22 - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrS3BlcnAzdkM5MkJMVS9F 23 - dzFvZ3NHZzVrTnNFdlE2Ni9tY1NuYXRhY0dVCmNQVi83dW9ld1JjVnNTdTBaNUVQ 24 - a2tJRlFLRndVQVEzVWhaK0UrVWdyZEUKLS0tIDk4TEVzZllYNEZJNFZyR0dGR0pY 25 - SUl2MVg1dm1DOVhGMkd1bXloZXltQUkKk1p+BMWj7RpRZSNgrGXtf4VS8MveRCrs 26 - qBqMVgAh7GpeSlBZ4Ip5T5b14D3QC08eD8rERJjn+LFUX9pQBjz5SA== 24 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkY3EzZyt1YXFTTlVhK3Rk 25 + djUvWmVjeDBSajlENCtNc0RZMVRVWUVuRWtBCnFpa0NnVjBvb0J2NCtpYitoMngv 26 + WkxNaDNIQnRSSm0vSXF4a1RYcmNsK2MKLS0tIE5zSkExNVVJYkZsV244eElwMTd0 27 + N3ZuTHhVdFo0aGZVMXFlaTdsRi9lRUUK+K5CUVCdjtMVegVydoKRIb6kpPnfBiy1 28 + FxkXAp3a1qU2WqNvXCSO3gtUwYaMG+MPSCWI1gA3oBjGGtTasHyHsQ== 27 29 -----END AGE ENCRYPTED FILE----- 28 - lastmodified: "2024-01-05T08:11:43Z" 29 - mac: ENC[AES256_GCM,data:jYrC74CR9aAMNbaKDKFnwTUusWpIVyh58JswO5hE5HZg0xZvtEi2+fXC+pK/fgdS8ADczYvDXO6SuhJgzLrihecGdpjQFK2HciyULpDOIBNplj06gF0KVn8Wl40gZCph6bjNnUG8rDEFsADjEbwdoW9UWhjcnd4wpDo3eLg93bQ=,iv:fDuFh18JRxyyoxQ/85RIC8DVbxDq3UkBgGlHpcYiJt8=,tag:Yx4EKxW5iGBkbUQkVw87dA==,type:str] 30 + lastmodified: "2025-03-08T10:44:25Z" 31 + mac: ENC[AES256_GCM,data:iKKmalnJnmm8EkDupTPKmKJydLLYkbAabLy5KJdQfKGvRj6vbJAQHZ3u0Pu2TI0oi5Xv3dtPh7ww04kT0Whe1E97p4t3RPyNCCGNqA8OqQiCPDUn6uqTQwOo1//3xIGFnnRC0VSYrQT0rjebbL96RnWE9XF67TefycxIMHusUXU=,iv:FU6VTW2zkEIlH5P/rr58gmuMnz16TCLP+UtEVkiLueg=,tag:uf7I1GwWxXOT190y8Hddow==,type:str] 30 32 pgp: [] 31 33 unencrypted_suffix: _unencrypted 32 - version: 3.8.1 34 + version: 3.9.4
+13 -13
secrets/mimas/nmelzer/default.yaml
··· 1 - rustic: ENC[AES256_GCM,data:QK9mADaNKklucd0=,iv:NHuqnSibmY/RkJrSUWm0TbgG45iSdjso9ABI8SGqUTg=,tag:ndJxlYQ+X0Zb4jIxLRysvw==,type:str] 1 + rustic: ENC[AES256_GCM,data:aYi1wQgLgRL3n40=,iv:NHuqnSibmY/RkJrSUWm0TbgG45iSdjso9ABI8SGqUTg=,tag:k13fNK3kDcylC53d/haqog==,type:str] 2 2 sops: 3 3 kms: [] 4 4 gcp_kms: [] ··· 8 8 - recipient: age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 9 9 enc: | 10 10 -----BEGIN AGE ENCRYPTED FILE----- 11 - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2KzZIbTZ3WlNhZGVSU29v 12 - anBVeHUwZTFHSk9xQ25jY0c2S0VIaGo3aDBjCldGb2JUd1p4SVVqUHJpUGhGKzFX 13 - SS9DNUdXMGdEMFFpYzBlbHJOQ1NTUVUKLS0tIEVYVmNuVUlZN2xUdnhISEMxRncv 14 - MWh4dzd2anJjdHRhZjV1cGRxLzJCTFEKkKpygRo8CQQTQLzFS7wicEfDFSSdbAo9 15 - coSDMYHMVhvIw8PwLCwPjAGXhEYhgIdM/ipv1h/O2oCHIWBFWYh8Ig== 11 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3U1ExOVN2aWVRVnB2M3RR 12 + QmxQNDZnSWVWMW1IZWh5YmFmNTZYbGRzSFVRCjdvSGp1WThzc29aNUZQMHJDMThJ 13 + MXNURHJUVVpDQ1hmUDBFamJ3TnRUSzQKLS0tIExXdWNoRm9aL29nUldQemwxOXdV 14 + aktSY1lQZmxkTThpcU82Q0dwSUUzUmcKm2VCJHEUzjz2vXAJH1wOovNqzK6Hkk2z 15 + hoIQzqgfQL3a4WA1q0Oj+R8wBChuRMUAYW4+TWCIAckKKwLqRyzBcQ== 16 16 -----END AGE ENCRYPTED FILE----- 17 17 - recipient: age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6 18 18 enc: | 19 19 -----BEGIN AGE ENCRYPTED FILE----- 20 - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNaUN1OUkxMFVlVnUrM3Bo 21 - OE1RU2paTkEyUXE1QVc3MXdhRFQrMTVoUEhnCnhsR1hhNnJJMlY3VDNHTEp3L055 22 - eG5TSlU5NXlBWm1FenMvdDcyRk14RTQKLS0tIHlwUXNoMndrUzRjbHNieWJqanRp 23 - aVdOcEpoejR5UklreTVyQjIreERvN1kK93GhDqvbHXZqXCo5L/XhJyEdypSxE5Em 24 - h4Uw3QdvX3wH4hcEVblrkqEh7SjZm90TLmV8Y3depj0URZm9gHqg2g== 20 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSamQ1R0tHZGIxUlN3NWtV 21 + Q1htSVdJMG5rUEN6Rm1QTStONys3YjNiVEdzCmE0bDJCa1VaVTIyK1IvTDBFbVhs 22 + ZWVGSzdwUWpVZTNSYUkvNjNtTERnZHMKLS0tIHRLSnBxTm8rVVo5ME4vS0dKZXF5 23 + MjdaWk9mZEczVGVxZEpnN3pCQTdMOFEKO4oemn8P9PYZVTsJ81oDy17PRAaeu3pn 24 + zxZ5a8/IrS/lZfMJ1vYwlZf0AEgOMTSyjVMNyOkWAgWIq8z1UkrpUA== 25 25 -----END AGE ENCRYPTED FILE----- 26 - lastmodified: "2024-01-05T08:11:43Z" 27 - mac: ENC[AES256_GCM,data:MBNbxnG5Gf9Xd4eaPzHWWAB4SatXkZsGO/PNRsRORe0l3QvDY8c/bnh1l6ImBRW3Z0QxsZot0knXu7w4ZYVFPdvaSLdsb+yT9WeVcrqqz6lFX+3qu/W3iekj/4qKXE553i+dL8w3LzT+2gWtYv4+oTtPQn1iBtcmsYuL1K7kA1s=,iv:3N6vlPOnGiSIA+6cknRom1H0oki0f1xW4z0pCI8pI/U=,tag:BMcV2nm581OoHCp+Okw/Bg==,type:str] 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 28 pgp: [] 29 29 unencrypted_suffix: _unencrypted 30 30 version: 3.8.1
+14 -14
secrets/phoebe/nmelzer/default.yaml
··· 1 - ssh: ENC[AES256_GCM,data:X0m5YkuFHljTCAOOwjdgtYd6PmNyznjPZ95gZWyps7H5drrxiQlt7FiFBvXO5gcggXIkGf2hMCFlfDtNHHlfXjzDLx1bc45lPduuQe53qBVoj1kutFHhJtCj/ttfVcUgHVm65NAWy7gFaccXrY/xcY8HBnOQUbk1TVSIngzIThFFAHvTqMRjuzxEQqpevSloWP/ItJcRqlPt80opCrD8iv0dpOGWRbBMS2p0o8ynFAySmJIs,iv:Z99RVmMuDZvFJP/heCsdxIZd7uV4+lBfBvXMasBb2Yk=,tag:3OJgUL/AWESRHUXlB05gDA==,type:str] 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 2 sops: 3 3 kms: [] 4 4 gcp_kms: [] ··· 8 8 - recipient: age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r 9 9 enc: | 10 10 -----BEGIN AGE ENCRYPTED FILE----- 11 - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArNzkwZkVJc1dDY3VTQXpy 12 - U0xORFhibHNaZkdGbno2c244UkFlZFlOWUUwCkhUUkowemhzN1ZySzRLSDl2aDBS 13 - M0JRTUZVUFIxemZrZEprWmphOGNpNXcKLS0tIEllTjA3SkszajlLV0lobVRmNkpa 14 - V0VZMktqbm5YV2RyWkUrMzFpZUdBd0kKEjwAbf8MUTxY89VPINxOw6mdY66DzUJs 15 - VY7hbMmDZ/9Rw1RFIx93H5U4M435imr+4m3MX4gXO/VGH95RtoFtSQ== 11 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwMnNzT2dFWWVPRjh2QUdF 12 + VUZkUzdsQXRISG9kaHVqSGp2UWhCNlN3cVFJCmtQbE9LelRkbW4yU3ZyWG9MdnZB 13 + b1k1QUwrOXBZQTVoRTArNGFtTEJSU0kKLS0tIG5KS3ZFd0hKMEhsSkV4ck5za2VQ 14 + YzFLSjNUVXNRaklnczVKdGQ4V0JYUE0KGVHj8sWKKvVGwMrYmx0Js1uI1DmD028V 15 + R+Y+p8H766496hBt6Eza6r7JhKtLXR5CrcoItq8m+fWU6lu+ElsnAw== 16 16 -----END AGE ENCRYPTED FILE----- 17 17 - recipient: age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna 18 18 enc: | 19 19 -----BEGIN AGE ENCRYPTED FILE----- 20 - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPQkNSaUhyMEVLN0VwZ3Ax 21 - UkFadjhKaThnYkt6UVA1VUhIeXpPNWpUVkJJCmh4TG80VTRwV2lnTDFRUlNpWERq 22 - cnpKRUltUlB1Rm1hby9lMm1NSlM5SUkKLS0tIFRGOHJvQVVIQnJrNjhobUIwT2FR 23 - b3FRZ1ltcXkyN080UndZT3ZkZVNSRzgKlfe+kFXYc9y7jvGXj7nwVIBrfPQVI8Ke 24 - WXRGvmmcm52dEqbcppcGcNx9u4jckDKiCQ6YeaDR9/U/cyHsincmhg== 20 + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRSTB0dGxWOFhTK0FHcGxI 21 + VkFKV2NkZTlJRVNSZ1dnWVBKQk02YmZ3aERnClZaeTFSYzRJZ3ZWQjNPc1BnanhU 22 + ak1RZ0w0MDExZVlJWVNrYjZxMHZsNEkKLS0tIE9tWHlVMEFpek1VTFdROE8zUFZa 23 + VU9yempBMGVXenkxdkpHZC9YdlFZYm8KsdOmOI4ah0pEjqPt9XnJNxMyFSY4eYsI 24 + UOgJZqRhlG8Y4NL6J1DyJPfeKeIroTAbNoCb65lxWHHWfoPvt3gU3A== 25 25 -----END AGE ENCRYPTED FILE----- 26 - lastmodified: "2024-01-05T08:11:43Z" 27 - mac: ENC[AES256_GCM,data:9NsFvPhM0XZx9+63uY+tt7aoARQkRpLeIupfWBPck+BcgB37u1duvs/YwazCNVBF7y3QF6aNz9WLW4uCmJFyvxhuq6pY+Xf9dM7ccVtLizfUjtgWTn6k6aFbcfJP+BEXKqDZHHCvtg7ixRI7Y8OrkY/wYQwCedihu5k2eCFp4eI=,iv:h4OAZXkxVkljYNtxEmUNHxwomVZ1IXNhVH2Yu2WUTCA=,tag:rnCd14bHerVtk25ARzHBOg==,type:str] 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 28 pgp: [] 29 29 unencrypted_suffix: _unencrypted 30 - version: 3.8.1 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
+8 -8
secrets/users/nmelzer/github
··· 1 1 { 2 - "data": "ENC[AES256_GCM,data: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,iv:+pnvwKJLNUD+0tpxurFocDgK0qOGzVsYkcV6b6KYock=,tag:x+BZqIeR6y/nXuzLBBjq+Q==,type:str]", 2 + "data": "ENC[AES256_GCM,data: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,iv:+pnvwKJLNUD+0tpxurFocDgK0qOGzVsYkcV6b6KYock=,tag:oVCamxWlyuQU7McVwxZUKw==,type:str]", 3 3 "sops": { 4 4 "kms": null, 5 5 "gcp_kms": null, ··· 8 8 "age": [ 9 9 { 10 10 "recipient": "age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r", 11 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3b3RucHhPRXM5aTc1eXgz\nUlM4QnNXdXlvckJCeEh2eWRsT3lnK1dJYXpzCmpzZkc3N1B6Ylc3Qm1Rb0JJQnRI\nNzZmenBLWHhSTk5LLytIWXE4NDhDN0kKLS0tIG10eE9xU0dwK09EaHI0M3Bwb0Ix\nYzlEcm84a1lhUC94dE9oKzcxQTZIMGsK8jfRhXgwa4z5YXoOeicUr1Q9R1BY31nh\nbQl5KF9l7Sy/8fFPWrqI7U4a3KrhBNtZ31uWg//ASFm0OfLnj/F4sA==\n-----END AGE ENCRYPTED FILE-----\n" 11 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOSEw0c0dWY0JhdGpMVFo1\nc2kzQm1FdHZIaEtuRG4zYUIyU0Z0QmVOdVZFCkpNTFJpTi9ha1VFb2l5czJONnl4\na3lYU1VmNmpBNzNBdVZEMjNRVjF0RG8KLS0tIFRhTEs1RFF0cTRnNTJqbDVJajh5\naG5UWExpVVl5YjZKUUQrT3gxR09CbVkKc64s7ROfryegUfEr+lS1KkbUDJo7+hso\nBvdJ4EJqS1Uu6H2XugpwBco640PKknJABrkL68LdUGlsUsITqK/MFQ==\n-----END AGE ENCRYPTED FILE-----\n" 12 12 }, 13 13 { 14 14 "recipient": "age18p8x2cxam2l0trtpyhj4x9amcppp9ruzkqxzgapy9wnfpzl9hgaqlkht86", 15 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDamExODlXKzdGMVVHODJy\nczhLU0pVdkdPd3VPWkloSjZuc1R1UDdNMGc4Cjd1NXAwMnpKM1NCc1hzNk1RY3Ux\nSFp6U2ZmTHRjbzdjeENaWGNYbWVBNlkKLS0tIDROanovTC9SZ2xLaEdlNGxLSXQ2\nY3VvL240aGZxZGtWd015MmcvdXdCQzQKHITzWYR55c03CVXT8bZ/RSuWn7imPBmA\nHEAwngLKSW4YGI95uMgy+fKqPgdwdHAhU0lFKLXBndeUMFKNcs8yxQ==\n-----END AGE ENCRYPTED FILE-----\n" 15 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGOFBxeFNVU1RTSUNCOG1B\nZGhZQm1WSjR1NmsrYkpBd3A0M3liNlNEYXdZCkJKUkp3TGRsMzMrZ2RvU1YxVU0y\nMDJGT0dwQzM3T2pHZFplcFozYi9Pek0KLS0tIFlEb3VuaVJ1QlJPRWlVVDJaMnV4\nQzNhNzBuL1JZeFljb1hwMkp6NE9hY0EKtSZY/B+DbKkDW6cof3sjud77Qz+S6qO4\n81N0I13ywjMmLKLE/eXKEwRXvZkTV8o4AfkZIZo+JPvMgXcujrTFzA==\n-----END AGE ENCRYPTED FILE-----\n" 16 16 }, 17 17 { 18 18 "recipient": "age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6", 19 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOd0EvM1NLQ09ac1BYSmxM\nWHBGdi95d0FJM01TblFqa3h2ck1TTS9aVlNrCjBXTmFMdFI5ZUVidnVIMWxSSTRj\nVVFXYTBnYWVwS0Uvc1cyb1hlZDc1WUUKLS0tIC82RU9ManhDMDBVR2FVa0RJeUxZ\nSERKNG1Va2pnaVhZYXBjcGp4RVNwVWsKaDV4Fh1hP+bU3dQKNr/mQAxX0TmZRyii\nS9Qtv/yxoGmZ5f5qbukOIsgQKQqwaTr45lqJpspMPY/JCMrLs8AcqQ==\n-----END AGE ENCRYPTED FILE-----\n" 19 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKMHA0ZHRjU2tYSEZna2ZV\nUjFTRDdMV1B1Ny9YbGlXVmEyRUNuMlRWSDFjClR6cjhHaHVKRFFGWEJHdERZZDRw\nQU9sVC9SNGZUUGxrVUdJWlVwbGpBa1EKLS0tIHYyeWZtS2ZjWTVJZWExTkJWdzFJ\na3NDMUNhSEtiamhIVUV6T2luNjI0S1UKIVHr+P3jpJY/k44EEE1RYB/PQxI4E3lw\n1DdyulRw0CvhuxVoZsINckTjgNIfRSeJlqS2OYEYfHPvqg2xcBNlGg==\n-----END AGE ENCRYPTED FILE-----\n" 20 20 }, 21 21 { 22 22 "recipient": "age1tf0zelmw4lh9gvkl0qycdk83fut9t4q3tfcdzk8cvlyhjp7z0g2q7hklgq", 23 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTRy9JOFZJZTF0VmZ2OGRQ\nbW5hbWJZVDN1LzNnN29DKy8waGdDaEJjb2tNCkVMMzZwUThXUG1Qblg0Z21iTjVx\nSjdkV1JpbFhMaEF4c21wMWpVdHFkM1UKLS0tIEhJZHFxV3Q1Nk9vbitDSFFXZ1lM\nQTducUpSTkFhV2huZnA5WXhwUldRSm8Kn+5TIEkydl1g5UdGj7/1qxO6WcDDfcLU\nGmZd7M6R2VBnchhPdU5uubmUnJfFFnxtIFH6QJxGp5MMuQE7iK1dew==\n-----END AGE ENCRYPTED FILE-----\n" 23 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArRWhuWVNScC9IK0Vya2oz\nZ1JSRERnSmpJVEVNY3VlWnZLcUFESUxVM2dBCjFSdUtEbTVDZ3V1eERja1hnb09I\nWGNLcmNKcW5wOHFIMjJUWTJrTXh4M2MKLS0tIGI2OFh2ak5PTEV4MFZKWjhIVSsv\nZXA1dFFRY2FjVnI1MnE0TUtJemoxTEkKcCGDk5Mj16JL4/fevQCXYuTdY5ZVE2rb\n7nP+oqXXRTQAMVYsWwWIftNjd2XCM43UkTUKetMktGlcBMd/vNh/Xg==\n-----END AGE ENCRYPTED FILE-----\n" 24 24 }, 25 25 { 26 26 "recipient": "age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna", 27 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwTW9KRElXbmFOWEFOZjBD\nZVRLU2tMRGd5OGRxWWFheVhORFFvckpRRHh3CitJVDNNa2NXSU96N1ZYY2k3TFVn\nVVVjQmtKOUVyMC9ZRWpsTUljejJ1YU0KLS0tIFU3Rk05WnFubzU2QXdyU2ZTcEtq\nV2JYdkhVV3c2YWJEbTVaRmFobVY5SnMKequGw+rgOliLndlArYrR6B2QJfnBRu1U\nJOHOVrp4yKk6xDmvJwS5F+nLhQm2jS7Apzi35QtBpfKeOWkHbT6guA==\n-----END AGE ENCRYPTED FILE-----\n" 27 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1RE0rOU1pYWVQOFU0N3da\nd2NmNjlZVWtEdisvcTVJa2ExRzVsK2lFcDNvCnkzb0dTQ1ZkM085VFpLQ09NZXBR\nd2VKNWtmWVp4YVViV2dpeUJyblBoNHcKLS0tIGUybXNsQ2tsaU81MURmKzJ5YThY\nS280YUMyL2JyK2pHMWlRTnNpSjRqNmsKg80xYn2ZE2zjt/t6pSUpXm0umg1+OM3h\niWJzu2RPayXglUc22hIiC08kahueHA+iJ+OPvMkl+NEM0FBMHotGLA==\n-----END AGE ENCRYPTED FILE-----\n" 28 28 } 29 29 ], 30 - "lastmodified": "2024-01-05T08:11:43Z", 31 - "mac": "ENC[AES256_GCM,data:QIXIgYrq9WbFq5bAtl4bkOhyUtqe+QBW3oVeXeqsaPXc2KggLJTZt1vGxnOZqf94kat/6Fff6uzocVvi4YliPDCYcBqeaC7j0le4WEG37R9f/0vfHGEkjX4dHMUCXoH4KRaCTdiP8KziMhAAjFja3LzyE+nmxP7u9iW7lwzOnJw=,iv:hZVFfIa3Fn0P3uFE8w8PXCY7IWrk9o8c40rynFt5ZBA=,tag:lLYwc1g2+nJTGKZwJCCVKw==,type:str]", 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 32 "pgp": null, 33 33 "unencrypted_suffix": "_unencrypted", 34 34 "version": "3.8.1"
+8 -8
secrets/users/nmelzer/gitlab
··· 1 1 { 2 - "data": "ENC[AES256_GCM,data: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,iv:wutx8cOVSjjC69NzlIrojwRLhs28QvNXRnRJSC6MMb0=,tag:iIdVAlnF3hqwqtNcZqKN1A==,type:str]", 2 + "data": "ENC[AES256_GCM,data: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,iv:wutx8cOVSjjC69NzlIrojwRLhs28QvNXRnRJSC6MMb0=,tag:cPf78d+51Op/58UiaM8IqQ==,type:str]", 3 3 "sops": { 4 4 "kms": null, 5 5 "gcp_kms": null, ··· 8 8 "age": [ 9 9 { 10 10 "recipient": "age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r", 11 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1bXI2UkhFelNNSkEvTHJS\nN1BVSFpPSDViWGE3QitCSm5aV3hxMWg0c1c0Ck1adUtvSVdGMDlFOTVVR1NTTVFH\nWGZiOFZQc3hGNytROWhZbUMrY1ozaUkKLS0tIFR1WWRRQzltQVJPSWhjMC8xUWwx\nUmF3OHMxQnNhMnh4QitLYSs2L1VGdEkK3LIxNohQyG66Nd3KMOKyFNiqBfa0Qy3T\nSjgXLR5EJ01i2QFJHvx02SYvODsbqenOHbS0VI0s54tuTcGjeROZ5g==\n-----END AGE ENCRYPTED FILE-----\n" 11 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJc1N0MUNwVFNlTEdjUElq\nUWlsTG8vc2xQYitYNWlUTlRGRTVLVzRyY1dBCmlMVG9OcUU5bjhzNDhpWStDaWVn\nRTcxZ1QySFhabklhQzJKL3BqSVVydncKLS0tIGhIamdINjdJZERnbXowZTlNRGtY\nOVVJSEZ1Q2NNNXNXV3UrbldUTy8yTlUKeLwquuhjLHDwzzL8JERFELXD9b6HWlKD\n6YXv+mHaeKtcN0y61uzH2O51U13e79ipex9AeYj8YSIZx1DRiJAg5Q==\n-----END AGE ENCRYPTED FILE-----\n" 12 12 }, 13 13 { 14 14 "recipient": "age18p8x2cxam2l0trtpyhj4x9amcppp9ruzkqxzgapy9wnfpzl9hgaqlkht86", 15 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwcElyazI3ZGZxTDZyd2hx\nMW5aVlZnY2ttWHZib1kzZXd5a2M4Zjk5bEU0CmdsaitJZGdGbVdpUlNDcysxdjlK\naEtDeDJNTmxVWllLZUM0SjU3RXhycUkKLS0tIE4rcEhtanZRUHQrZ2dORGxySzZ0\nUUdwY0RXVjhwV0tzQjNzVjEwK1FsdEUKCW/Y1UhhK4X86LG24CJIZXPXHuZkht4o\nHrRedZMKa5c2GCGpxN5oeCkfVhA9hgM6yQIVdAESlVYv3h4hO9VeCg==\n-----END AGE ENCRYPTED FILE-----\n" 15 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlU2tFSTgwSXFyVEo4YVdO\naUx5R2F3UGxhY0RBbStMNDdpMWZCdkVzMEc4CmcwOVVFbDBGRlZDS3dhdGZNNUtI\nWWNCRDRUelhvVzA2ZFIwZ09QYUhZWk0KLS0tIDRORmpMZk5CcDdOL2pvMW51clA2\naFpFS1k2dW9rY1dQR2hwb2FlMWVrREUKL3F0eiR8lKlDfQMYekRvxUo/c/qDVgKJ\nl5+yOsCMh6iu2u696gRcrnzrZ/aX23TJE98ttYS97DeUjUCc0Dpo1w==\n-----END AGE ENCRYPTED FILE-----\n" 16 16 }, 17 17 { 18 18 "recipient": "age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6", 19 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5K1J4K3dIQ01KbUZFem1s\nN0h2NVQ0eEZBekJISExIdFVVYk1GMEdyRTJjCmM3aVFTNXhTQUkvYnpROFdEZE1E\nUlI5ZzY1Qk9GbUVoSENmd3ZuZmFKQ2sKLS0tIEcvRG1OTWdMbzQ3N1VQOUNNaHZp\nRHprN0xyWnZPQlBYczFYb1dOTWJTQ1UKBowFP6F/pz/f5ozX+ZrbT/rA2Vhz/KWS\nHuCndZfghTfKD2RGEHyRT/Orr7Rj+ZEyGOZJaB2tfxQjSCqYyu4o8A==\n-----END AGE ENCRYPTED FILE-----\n" 19 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHcUhZOU9kQ1FkMWY4TkdS\neStwOThKdkpWa04xYUU4MENrbjZRQ29ya3pZCkpqaHRGeVUyeGdDemZUeXNkMlo5\nTkg3dFNlL3c1NWJNS1FzWUJ3b3FSYkkKLS0tIG9aUkxYTTVDRitCWTh1TmRFMXoy\nU3p6RHk4cUVOOTlDamNSZFdIVmc3STQKdvB/aVmyKhVAA+JKT8aQo1VmDa2WhGl7\nzGIGX77gsjDiy9Jb15Z3KWGu4AP+bonUTmTkUWA5Oiqe1rhOe9MDMA==\n-----END AGE ENCRYPTED FILE-----\n" 20 20 }, 21 21 { 22 22 "recipient": "age1tf0zelmw4lh9gvkl0qycdk83fut9t4q3tfcdzk8cvlyhjp7z0g2q7hklgq", 23 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXWHZxSFVJaHN2UUdicVE4\nc25CSGVKVUxVTVN1QjUrRjVoNXMyM0hRZ1hBCjVSK3lMeEdNSlhrbVhVOHZ3VU1w\nN0dMSWZja3dFYjQrWFN0R1hyTEdCY2cKLS0tIHlXbmNuMGUxOE5tUmw2UFFxNlhp\nRHRIZitZUEZ3NmQ3MmFLVUJIaFg1L28KC3oO8D0bEY9LsnattyhpQs0/HPxxtQTa\nGw7tfPR5QV+y7m1VRISdruds3ezayQBhgkv01fFCkvEp8SB+j/JdGg==\n-----END AGE ENCRYPTED FILE-----\n" 23 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaNWhBaWQycm1EZ0JwKzIv\nSit2UjFhNUsrd00wSzhua2xONXZwZlA1WjMwCk80WG5acXNGTkFEdmxyYlRCNlIv\nc05CY0RQM3Z0ZXZNTkswOXVsaVcwS0EKLS0tIHBrNnpZbFRpY1BuMm5ocnlYWXNZ\nTXdBMkhROGxBM0R1MDdPNHhKM1NYYVUKjZaHwqh/0OKB+ybatAfxEF4OmskYW2E9\nYEjuhy9jdcqi2a3hm2bI6rdSCsemAADJPW2PWsqjNc2TB9QeAK9ZgQ==\n-----END AGE ENCRYPTED FILE-----\n" 24 24 }, 25 25 { 26 26 "recipient": "age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna", 27 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKazJxRVN2eWNlLzBIVklq\nTFZhamtCWUE2aEdYMTk4dnRxYkN2MGtiR3pZCjdubEw0RmRKNERYNWVDb0VPSDA4\nMXgya2tYU2ZTQlU2WmsyR3R6MjBJNncKLS0tIHIzR1NLWlJaOHBTeklsSDU2U2V2\najBjV2hUZStmYmJtd1BPYjZIczhWZDAKI/p+UGlPxJ6xZ8CiSJd0rDirr3BdF3+E\nQewJpDAL1uB9PgW44FvTGJZNFYzhO5j+ne1bGDE4FikXD2rgY+O2zA==\n-----END AGE ENCRYPTED FILE-----\n" 27 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTUEJ4ZjV5aUhLNUVxNlZp\nY1N1WUEwNE5odUQ2ZkdqdFV5cjB6WW1LWkRNCndObExzUDB4ZFdsYVVNbUtBbFE2\nSU5kZy9iK3RlY3FLWXFrR1pzZmhYOU0KLS0tIG04dm85SGtMQmZmT2RqTGYyRWlS\nTVhCRVUwWGhUaGdpUExPVjIxUVl1ZzQKkcnzuMCngr9oWFDynRENTlJQEFIbRJV/\nY8THko3rajg5QrIcoDTHeQ85WM6ucapUakAUTbis+Sa9xBoQ2coqDg==\n-----END AGE ENCRYPTED FILE-----\n" 28 28 } 29 29 ], 30 - "lastmodified": "2024-01-05T08:11:43Z", 31 - "mac": "ENC[AES256_GCM,data:ghmebKFDGUPTtWDC9esVRp0SJgCWRzqfkBjf9trmvlyl/NT7AvZCDKC1U/UtJYe9BPBez01cGDzx/bOGpovsZjMEf6mWBiFyVAXLRm209zlGVDuUZQYXAqFymoFNuMQiuhPJJOS/bynhwkAEAsp3jEYklmfEQkDQnYmW7JNlFfw=,iv:rEyAkRv8bTit3BPra0/oFt30uHnwDQQyMnqYo/HaOug=,tag:ZSwgjzm2Z1f/Q0DaFg4yAA==,type:str]", 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 32 "pgp": null, 33 33 "unencrypted_suffix": "_unencrypted", 34 34 "version": "3.8.1"
+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 + }
+8 -8
secrets/users/nmelzer/nobbz_dev
··· 1 1 { 2 - "data": "ENC[AES256_GCM,data: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,iv:iwfQiWkkxmB52x5mVXlhS3pbzKL3/ctoJMctdhHGQuk=,tag:m8/TR6abg/1Ipl00mtZmmA==,type:str]", 2 + "data": "ENC[AES256_GCM,data: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,iv:iwfQiWkkxmB52x5mVXlhS3pbzKL3/ctoJMctdhHGQuk=,tag:VQ0GWz0xyQiCx/WpYq1itA==,type:str]", 3 3 "sops": { 4 4 "kms": null, 5 5 "gcp_kms": null, ··· 8 8 "age": [ 9 9 { 10 10 "recipient": "age1wpwkf2g475umw3wwns57r8ucykvy6lflpc7uphs0mx9exsj04quqpy7t6r", 11 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0ZEF1bHhUb01qbitBWE92\nU1N3Kzl1cnpyZ2MwcW13eExweXZzYWdZV0FBCndqeXRQSmVpRStXU1RaTnEyOE12\nSmxBYVdMMFlOZnVuVDI0d2RyMTNWemMKLS0tIENkSVNTS2R0dEtpVWdPWkI4d2o3\nL2R0aHBCeWtCYkl5U2IrTFZZYk9HRjgKeuxfwNJ6ioWUZJfPEC5dT9FALWHW2aQX\n1UB89WqFlPOWVaDfqodk/13eERyyHXJLWgPhL/ftAlCmq7xJ367cSw==\n-----END AGE ENCRYPTED FILE-----\n" 11 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtQUpwZ2JXYTUybXc5Tm9T\na1p6azYvbno0NzY0UGNrWnNjQUd3SnJMakV3CjVMemhwQ3NmOWFJSGEzQ2ZsL1pF\najgrM2g2THQ2dkxTUUM0QlpnODRjbUkKLS0tIDZKaFYydnZRYWdxZFIzYnNZbjZ3\nWkxPcWdHbm9ZZnZNNVpIQmZ5djVHTGcKAiKFm4r93FBNXxt/jgofvKS3pn0NbdWW\njDacQ7VUubSqpmHax/s/FNV75g5ynIm8ldOJVoW6lgNxPWxcfucTLA==\n-----END AGE ENCRYPTED FILE-----\n" 12 12 }, 13 13 { 14 14 "recipient": "age18p8x2cxam2l0trtpyhj4x9amcppp9ruzkqxzgapy9wnfpzl9hgaqlkht86", 15 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKMFdVTWxwK0drekFHaGZL\nTUVrOHFoTHF2QWRKaFlDMnhnenpYdys0d0FFCnBVekcrQUNZeDA2Vm1lY0k0cEY5\ncm1BTGg4UWFaNS9IenkvbEhiVG9UczQKLS0tIG1IbCttN0pLWUlneUJpSmdDUjhj\nZC85dVRHWnMxd2YxUWV1MW9xY2lpVTgKI1ecaeTwJzDgjt+iux8rnjzLsKxpgAvt\ndHt3F8i9S7HgoWaBon5MTqzMKwwR8QZ2pmqZhB4aoRsfyTnpcn1ryw==\n-----END AGE ENCRYPTED FILE-----\n" 15 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLMU5ycnhZSlJyQ0UrRXVo\naVIra1o2TkRmbTFFMHFzeTN2d1NGQUluTVRzCk4wRm41Sy8rNWh4OXI0eUdKdDhH\nRjZwcE80K1NUbGxubGp1akh1WVFTWU0KLS0tIFZraWFpdmU3dlRCMnVtMHN3RnFD\nYmN5dmIwRUlJQktKTmUzZllTb1lOUTQKkJLBrTeUlPaZ1C/pGWu9WQNFCBgsJVqS\nYnPpsvYJiOE/6WmCzB34OVpO8vdrv1mE5jR/Ila3YQVjBt8JHo7Zqw==\n-----END AGE ENCRYPTED FILE-----\n" 16 16 }, 17 17 { 18 18 "recipient": "age1w6xjgskpxnlpleswumdhtt7x8zx35qn329yz3x7ftqdcmcxrrvnqnuf9d6", 19 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDRG5BZlUreG9hMUpMdk5r\nOWZqUURBTGhrNC9wN3BGYXNmVXRJbGE3UnpRClEvanl0ZGRKZzRWN0tBM0IvUXFF\nUXpDUmlydUUwaUFVdFZBZDJDR0RwVGcKLS0tIHZCd0NBVFhXY1EwNnl4aXh0aUsz\nQzN6d1pjWS9jb3hUOUxGa2Zxdm1aak0K1hr6OIZlgP1hOkWUoBPGLmO3RxYUMq+J\ng9zl9TGWvks9ooUrLZE5RyZmz4LOKrhYVsHcx0qliBbWoNZ5Wmp4Pg==\n-----END AGE ENCRYPTED FILE-----\n" 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 20 }, 21 21 { 22 22 "recipient": "age1tf0zelmw4lh9gvkl0qycdk83fut9t4q3tfcdzk8cvlyhjp7z0g2q7hklgq", 23 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtT1EranB0ZEEyWTU4MXQv\nODFvOVZqekVXYnpQVm5kSXA4eXpFSkEzVVRZCnNsU1Z3Z2R6NXkrNXdGUGY1d2c2\nd2h2ck9ZYk15QTcrdHBoL2lidElJMUkKLS0tIEE1VlR2ZnNGUzNJL0xseTBFRjVY\nbEl0Ry9VSkpQVlhIZEVKVThhUVQwMVkKYB0jDj/SyMOsR39lUqaONd4Hwcx3WeoN\n/hE/un4uYyLjPg1BTwOzmjfRA7tMJenvGsGYJJb1JTWj+CVMxcRelQ==\n-----END AGE ENCRYPTED FILE-----\n" 23 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqVW5aVUVpZk14U1pYK2NJ\nRVpGbGdXVzlLQ25PSWYyWjR6bGRCWkIxM3dVCnlGd1h3Z2pJNmNweTgwRmUyL1Bo\nNVBoaFprQWVUK1pQbi9YOTgreFBpcDgKLS0tIFhCUE5WQ2w4R3J1eXVhSFJEOGRp\nMlZpSnovWnpvc3lGemE3WmJkK2xQWVkKkNZaVbq8X99+MXfei0BzbXBwzibERWvR\nV26mOEEYcfv/3/KqCLOjBVCLEE3RSuB9AtniAAFC6Fj0/jHnMzaghQ==\n-----END AGE ENCRYPTED FILE-----\n" 24 24 }, 25 25 { 26 26 "recipient": "age1vr0uq6mwv844yvm8pe7qxjxpqrekgel3lqfzuuqtfzj0ehz3hphqzsxjna", 27 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVRHlYeTBKc3dTbWZiSEtQ\nRlE2amZCNXBKVzVtM0FDL0RTSHpUQTRjMmdNClkvWG9XQ3UyWmpibXcvejY3aytn\nN3p1YXh4ZDVpemhtY2Qyc3Vhc3ExaEkKLS0tIGJVRmlDOXpISnJwRHdXMlJkdWJ5\nR1orc1dZdFZCdUxxZVdqbExRaUovbTAKkWDi9yQvbyHQ3qSWGlRKea8ZW8W+16Oz\njHbrkJWlloMzUfqOA1i5aj9XoN3a6t5iWJKLjxlekvmO9nIftv/CEA==\n-----END AGE ENCRYPTED FILE-----\n" 27 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQdlIzc3NQM2JkdW1TQzVX\nYVRjR2hEY3NrME9GeHJhbitpQURVbUdoTWlrCm81Wmt5dWpWWlVtaHJKcnNnMVJm\nekZnM0gycDdlZi9ZdUhYMTRpTFhjK28KLS0tIHcrcFQ3SEphOW1oeEsvcDdBUFRI\nU1psVWVldkZ0TXp3QnBmMUxHdm1ocmsKn/oYX+0hYRZvC32KGQ9hNRDMdlxclv5x\nekDM5wPeI9wT/j62bxmykEtNnI40WEpEopz7MSZvRnj6B8zF9boFPw==\n-----END AGE ENCRYPTED FILE-----\n" 28 28 } 29 29 ], 30 - "lastmodified": "2024-01-05T08:11:43Z", 31 - "mac": "ENC[AES256_GCM,data:mOqIA9zbSvNl7jjHxo7YLEBcrrucrlgOtDa4Z9Wc7QR60m58ne8H5Hrudqt68G/DulXxXtxYgeI0q4tBWjlecyFEUYy0NenMQ0282m1IOgM2umWdr4kZHpOO+9OfojdFuM0nGJ6ttxpFWp40BzWo9bU0t9htrgUdoTXoS2XnyOk=,iv:iYRpfJWGPE/+WJQwu9n4VXoXqyywtFg2pXgItt8R83w=,tag:8E5sYSJznl7cNT7KYySKtg==,type:str]", 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 32 "pgp": null, 33 33 "unencrypted_suffix": "_unencrypted", 34 34 "version": "3.8.1"