Personal Nix flake
nixos home-manager nix
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: Merge pull request #20 from lpchaim/develop

chore: Merge branch 'develop' into main

authored by

Luna Perroni and committed by
GitHub
db71605a 9854fd03

+945 -774
+20 -64
.github/workflows/build.yml
··· 7 7 - main 8 8 - develop 9 9 paths: 10 - - '.github/actions/**' 11 - - '.github/workflows/**' 12 - - 'assets/**' 13 10 - 'flake.nix' 14 11 - 'flake.lock' 15 12 - 'nix/**' 16 - - 'secrets/**' 17 13 18 14 concurrency: 19 - group: ${{ github.workflow }}-${{ github.ref }} 15 + group: ${{ github.workflow }}-${{ github.ref_name }} 20 16 cancel-in-progress: true 21 17 22 18 jobs: ··· 24 20 name: Build inventory 25 21 runs-on: ubuntu-latest 26 22 outputs: 27 - packages: ${{ steps.matrix.outputs.packages }} 28 - devShells: ${{ steps.matrix.outputs.devShells }} 29 - homeConfigurations: ${{ steps.matrix.outputs.homeConfigurations }} 30 - nixosConfigurations: ${{ steps.matrix.outputs.nixosConfigurations }} 23 + x86_64-linux: ${{ steps.matrix.outputs.x86_64-linux }} 24 + aarch64-linux: ${{ steps.matrix.outputs.aarch64-linux }} 31 25 steps: 32 26 - uses: actions/checkout@v4 33 - - uses: ./.github/actions/nix-setup 27 + - name: Setup Nix 28 + uses: ./.github/actions/nix-setup 34 29 with: 35 30 cachixAuthToken: ${{ secrets.CACHIX_AUTH_TOKEN }} 36 - - id: matrix 31 + - name: Generate build matrix 32 + id: matrix 37 33 run: | 38 34 { 39 - echo "packages=$(nix run .#generate-ci-matrix -- --system x86_64-linux --output packages)" 40 - echo "devShells=$(nix run .#generate-ci-matrix -- --system x86_64-linux --output devShells)" 41 - echo "homeConfigurations=$(nix run .#generate-ci-matrix -- --system x86_64-linux --output homeConfigurations)" 42 - echo "nixosConfigurations=$(nix run .#generate-ci-matrix -- --system x86_64-linux --output nixosConfigurations)" 35 + echo "x86_64-linux=$(nix run .#generate-ci-matrix -- --system x86_64-linux --branch "$GITHUB_REF_NAME" --flatten)" 36 + echo "aarch64-linux=$(nix run .#generate-ci-matrix -- --system aarch64-linux --branch "$GITHUB_REF_NAME" --flatten)" 43 37 } >> "$GITHUB_OUTPUT" 44 38 45 - build-packages: 46 - name: Build packages 47 - needs: inventory 48 - if: ${{ toJSON(fromJSON(needs.inventory.outputs.packages)) != '[]' }} 49 - strategy: 50 - matrix: 51 - include: ${{ fromJSON(needs.inventory.outputs.packages) }} 52 - fail-fast: false 53 - runs-on: ubuntu-latest 54 - steps: 55 - - uses: actions/checkout@v4 56 - - uses: ./.github/actions/qemu-setup 57 - if: ${{ matrix.system != 'x86_64-linux' }} 58 - - uses: ./.github/actions/nix-setup 59 - with: 60 - cachixAuthToken: ${{ secrets.CACHIX_AUTH_TOKEN }} 61 - system: ${{ matrix.system }} 62 - - run: | 63 - nix build ${{ matrix.derivation }} 64 - 65 - build-devshells: 66 - name: Build development shells 39 + build-x86_64-linux: 40 + name: Build ${{ matrix.output }}.${{ matrix.name }} 67 41 needs: inventory 68 - if: ${{ toJSON(fromJSON(needs.inventory.outputs.devShells)) != '[]' }} 42 + if: ${{ toJSON(fromJSON(needs.inventory.outputs.x86_64-linux)) != '[]' }} 69 43 strategy: 70 44 matrix: 71 - include: ${{ fromJSON(needs.inventory.outputs.devShells) }} 45 + include: ${{ fromJSON(needs.inventory.outputs.x86_64-linux) }} 72 46 fail-fast: false 73 47 runs-on: ubuntu-latest 74 48 steps: 75 49 - uses: actions/checkout@v4 76 - - uses: ./.github/actions/qemu-setup 77 - if: ${{ matrix.system != 'x86_64-linux' }} 78 50 - uses: ./.github/actions/nix-setup 79 51 with: 80 52 cachixAuthToken: ${{ secrets.CACHIX_AUTH_TOKEN }} 81 - system: ${{ matrix.system }} 53 + makeSpace: ${{ matrix.output == 'nixosConfigurations' }} 82 54 - run: | 83 55 nix build ${{ matrix.derivation }} 84 56 85 - build-homes: 86 - name: Build standalone home configurations 57 + build-aarch64-linux: 58 + name: Build ${{ matrix.output }}.${{ matrix.name }} 87 59 needs: inventory 88 - if: ${{ toJSON(fromJSON(needs.inventory.outputs.homeConfigurations)) != '[]' }} 60 + if: ${{ toJSON(fromJSON(needs.inventory.outputs.aarch64-linux)) != '[]' }} 89 61 strategy: 90 62 matrix: 91 - include: ${{ fromJSON(needs.inventory.outputs.homeConfigurations) }} 63 + include: ${{ fromJSON(needs.inventory.outputs.aarch64-linux) }} 92 64 fail-fast: false 93 - runs-on: ubuntu-latest 65 + runs-on: ubuntu-24.04-arm 94 66 steps: 95 67 - uses: actions/checkout@v4 96 - - uses: ./.github/actions/qemu-setup 97 - if: ${{ matrix.system != 'x86_64-linux' }} 98 68 - uses: ./.github/actions/nix-setup 99 69 with: 100 70 cachixAuthToken: ${{ secrets.CACHIX_AUTH_TOKEN }} 101 - system: ${{ matrix.system }} 102 - makeSpace: true 71 + makeSpace: ${{ matrix.output == 'nixosConfigurations' }} 103 72 - run: | 104 73 nix build ${{ matrix.derivation }} 105 - 106 - build-raspberrypi: 107 - name: Build raspberrypi 108 - runs-on: ubuntu-24.04-arm 109 - steps: 110 - - uses: actions/checkout@v4 111 - - uses: ./.github/actions/nix-setup 112 - with: 113 - cachixAuthToken: ${{ secrets.CACHIX_AUTH_TOKEN }} 114 - system: aarch64-linux 115 - makeSpace: true 116 - - run: | 117 - nix build .#nixosConfigurations.raspberrypi.config.system.build.toplevel
+3 -6
.github/workflows/check.yml
··· 6 6 branches: 7 7 - main 8 8 - develop 9 + - update-flake-inputs 9 10 paths: 10 - - '.github/actions/**' 11 - - '.github/workflows/**' 12 - - 'assets/**' 13 11 - 'flake.nix' 14 12 - 'flake.lock' 15 13 - 'nix/**' 16 - - 'secrets/**' 17 14 18 15 concurrency: 19 - group: ${{ github.workflow }}-${{ github.ref }} 16 + group: ${{ github.workflow }}-${{ github.ref_name }} 20 17 cancel-in-progress: true 21 18 22 19 jobs: ··· 29 26 with: 30 27 cachixAuthToken: ${{ secrets.CACHIX_AUTH_TOKEN }} 31 28 - run: | 32 - nix flake check --all-systems . 29 + nix flake check --all-systems --keep-going .
+35 -61
.github/workflows/update-flake.yml
··· 1 - name: Update flake inputs 1 + name: Update 2 2 3 3 on: 4 4 workflow_dispatch: 5 5 schedule: 6 - - cron: "0 0 * * SAT" 6 + - cron: "0 7 * * SAT" 7 + 8 + concurrency: 9 + group: ${{ github.workflow }}-${{ github.ref_name }} 10 + cancel-in-progress: true 11 + 12 + permissions: 13 + contents: write 14 + pull-requests: write 7 15 8 16 jobs: 9 17 update: 10 - name: Update flake 18 + name: Update flake inputs 11 19 runs-on: ubuntu-latest 12 20 steps: 13 21 - name: Checkout repository 14 22 uses: actions/checkout@v4 15 - - uses: ./.github/actions/qemu-setup 23 + with: 24 + ref: develop 16 25 - uses: ./.github/actions/nix-setup 17 26 with: 18 27 cachixAuthToken: ${{ secrets.CACHIX_AUTH_TOKEN }} 19 28 - name: Update flake inputs 29 + id: update 20 30 run: | 21 - nix flake update \ 22 - > update.stdout \ 23 - 2> update.stderr 24 - cat <<EOF >> "$GITHUB_STEP_SUMMARY" 25 - ## Update 26 - 27 - ### Output 28 - \`\`\`sh 29 - $(cat update.stdout) 30 - \`\`\` 31 - 32 - ### Warnings 33 - \`\`\`sh 34 - $(cat update.stderr) 35 - \`\`\` 36 - EOF 31 + set -o pipefail 32 + nix flake update 2>&1 \ 33 + | tee -a "$GITHUB_STEP_SUMMARY" ./update.out 37 34 - name: Run flake checks 35 + id: check 38 36 run: | 39 - nix flake check --all-systems \ 40 - > check.stdout \ 41 - 2> check.stderr 42 - cat <<EOF >> "$GITHUB_STEP_SUMMARY" 43 - --- 44 - ## Check 45 - 46 - ### Output 47 - \`\`\`sh 48 - $(cat check.stdout) 49 - \`\`\` 50 - 51 - ### Warnings 52 - \`\`\`sh 53 - $(cat check.stderr) 54 - \`\`\` 55 - EOF 37 + set -o pipefail 38 + nix flake check --all-systems --keep-going 2>&1 \ 39 + | tee -a "$GITHUB_STEP_SUMMARY" ./check.out 56 40 - name: Build PR body 57 41 id: vars 58 42 run: | 59 43 { 60 44 echo 'PR_BODY<<EOF' 61 45 cat <<GHO 62 - ### Updated inputs 63 - <details open> 64 - \`\`\`sh 65 - $(cat update.stdout) 66 - \`\`\` 67 - </details> 68 - 69 - ### Check results 70 - 71 - <details open> 46 + ### Update output 72 47 \`\`\`sh 73 - $(cat check.stdout) 48 + $(cat update.out) 74 49 \`\`\` 75 - </details> 76 50 77 - <details> 78 - <summary>Warnings</summary> 51 + ### Check output 79 52 \`\`\`sh 80 - $(cat check.stderr) 53 + $(cat check.out) 81 54 \`\`\` 82 - </details> 83 55 GHO 84 56 echo EOF 85 57 } >> "$GITHUB_OUTPUT" 86 - rm ./update.{stdout,stderr} 87 - rm ./check.{stdout,stderr} 58 + rm ./update.out 59 + rm ./check.out 88 60 - name: Create PR 89 - uses: technote-space/create-pr-action@v2 61 + uses: peter-evans/create-pull-request@v8 90 62 with: 91 - COMMIT_MESSAGE: 'chore: Update flake inputs' 92 - PR_TITLE: 'chore: Update flake inputs' 93 - PR_BRANCH_NAME: update-flake-inputs 94 - PR_BODY: ${{ steps.vars.outputs.PR_BODY }} 95 - GITHUB_TOKEN: ${{ secrets.GHA_TOKEN }} 63 + branch: update-flake-inputs 64 + add-paths: | 65 + ./flake.lock 66 + commit-message: 'chore: Update flake inputs' 67 + title: 'chore: Update flake inputs' 68 + body: ${{ steps.vars.outputs.PR_BODY }} 69 + delete-branch: true
+121 -133
flake.lock
··· 20 20 ] 21 21 }, 22 22 "locked": { 23 - "lastModified": 1769428758, 24 - "narHash": "sha256-0G/GzF7lkWs/yl82bXuisSqPn6sf8YGTnbEdFOXvOfU=", 23 + "lastModified": 1770411700, 24 + "narHash": "sha256-VpeOlyospHF+vxE+xEGEy0utMN0d/FUDvD2dOg9ZiIo=", 25 25 "owner": "hyprwm", 26 26 "repo": "aquamarine", 27 - "rev": "def5e74c97370f15949a67c62e61f1459fcb0e15", 27 + "rev": "b91f570bb7885df9e4a512d6e95a13960a5bdca0", 28 28 "type": "github" 29 29 }, 30 30 "original": { ··· 110 110 "quickshell": "quickshell" 111 111 }, 112 112 "locked": { 113 - "lastModified": 1769733078, 114 - "narHash": "sha256-Cu5b3bq8MoU8cZNjmjYM5mGF0G3CY2JmCfWj+gmNOqQ=", 113 + "lastModified": 1770527631, 114 + "narHash": "sha256-QFZAXF80GUrgdmgjMLPzhGOqjiRk4ukCEkpr0dehdnk=", 115 115 "owner": "caelestia-dots", 116 116 "repo": "shell", 117 - "rev": "39e38e8e76bd1f60970775d112f77dfc9781f82d", 117 + "rev": "5b2e1a6231af24472fb8ff3bfa7183a4f63c6ba7", 118 118 "type": "github" 119 119 }, 120 120 "original": { ··· 134 134 ] 135 135 }, 136 136 "locked": { 137 - "lastModified": 1769226332, 138 - "narHash": "sha256-JKD9M2+/J4e6nRtcY2XRfpLlOHaGXT4aUHyIG/20qlw=", 137 + "lastModified": 1770345569, 138 + "narHash": "sha256-aXzEWD44Htg0kHdrT/j2Odxt1EXqdJR9s8fDpEAEZtY=", 139 139 "owner": "caelestia-dots", 140 140 "repo": "cli", 141 - "rev": "52a3a3c50ef55e3561057e8a74c85cf16f83039f", 141 + "rev": "2395347d36dc12c4ad7471bcec030d75538c128c", 142 142 "type": "github" 143 143 }, 144 144 "original": { ··· 149 149 }, 150 150 "crane": { 151 151 "locked": { 152 - "lastModified": 1769287525, 153 - "narHash": "sha256-gABuYA6BzoRMLuPaeO5p7SLrpd4qExgkwEmYaYQY4bM=", 152 + "lastModified": 1770419512, 153 + "narHash": "sha256-o8Vcdz6B6bkiGUYkZqFwH3Pv1JwZyXht3dMtS7RchIo=", 154 154 "owner": "ipetkov", 155 155 "repo": "crane", 156 - "rev": "0314e365877a85c9e5758f9ea77a9972afbb4c21", 156 + "rev": "2510f2cbc3ccd237f700bb213756a8f35c32d8d7", 157 157 "type": "github" 158 158 }, 159 159 "original": { ··· 328 328 "nixpkgs-lib": "nixpkgs-lib" 329 329 }, 330 330 "locked": { 331 - "lastModified": 1768135262, 332 - "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", 331 + "lastModified": 1769996383, 332 + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", 333 333 "owner": "hercules-ci", 334 334 "repo": "flake-parts", 335 - "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", 335 + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", 336 336 "type": "github" 337 337 }, 338 338 "original": { ··· 346 346 "nixpkgs-lib": "nixpkgs-lib_2" 347 347 }, 348 348 "locked": { 349 - "lastModified": 1768135262, 350 - "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", 349 + "lastModified": 1769996383, 350 + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", 351 351 "owner": "hercules-ci", 352 352 "repo": "flake-parts", 353 - "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", 353 + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", 354 354 "type": "github" 355 355 }, 356 356 "original": { ··· 388 388 ] 389 389 }, 390 390 "locked": { 391 - "lastModified": 1768135262, 392 - "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", 391 + "lastModified": 1769996383, 392 + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", 393 393 "owner": "hercules-ci", 394 394 "repo": "flake-parts", 395 - "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", 395 + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", 396 396 "type": "github" 397 397 }, 398 398 "original": { ··· 445 445 }, 446 446 "flake-parts_7": { 447 447 "inputs": { 448 - "nixpkgs-lib": "nixpkgs-lib_3" 448 + "nixpkgs-lib": [ 449 + "wayland-pipewire-idle-inhibit", 450 + "nixpkgs" 451 + ] 449 452 }, 450 453 "locked": { 451 454 "lastModified": 1768135262, ··· 517 520 "nixpkgs": "nixpkgs" 518 521 }, 519 522 "locked": { 520 - "lastModified": 1769069492, 521 - "narHash": "sha256-Efs3VUPelRduf3PpfPP2ovEB4CXT7vHf8W+xc49RL/U=", 523 + "lastModified": 1770726378, 524 + "narHash": "sha256-kck+vIbGOaM/dHea7aTBxdFYpeUl/jHOy5W3eyRvVx8=", 522 525 "owner": "cachix", 523 526 "repo": "git-hooks.nix", 524 - "rev": "a1ef738813b15cf8ec759bdff5761b027e3e1d23", 527 + "rev": "5eaaedde414f6eb1aea8b8525c466dc37bba95ae", 525 528 "type": "github" 526 529 }, 527 530 "original": { ··· 673 676 ] 674 677 }, 675 678 "locked": { 676 - "lastModified": 1769872935, 677 - "narHash": "sha256-07HMIGQ/WJeAQJooA7Kkg1SDKxhAiV6eodvOwTX6WKI=", 679 + "lastModified": 1770654520, 680 + "narHash": "sha256-mg5WZMIPGsFu9MxSrUcuJUPMbfMsF77el5yb/7rc10k=", 678 681 "owner": "nix-community", 679 682 "repo": "home-manager", 680 - "rev": "f4ad5068ee8e89e4a7c2e963e10dd35cd77b37b7", 683 + "rev": "6c4fdbe1ad198fac36c320fd45c5957324a80b8e", 681 684 "type": "github" 682 685 }, 683 686 "original": { ··· 731 734 ] 732 735 }, 733 736 "locked": { 734 - "lastModified": 1769284023, 735 - "narHash": "sha256-xG34vwYJ79rA2wVC8KFuM8r36urJTG6/csXx7LiiSYU=", 737 + "lastModified": 1770511807, 738 + "narHash": "sha256-suKmSbSk34uPOJDTg/GbPrKEJutzK08vj0VoTvAFBCA=", 736 739 "owner": "hyprwm", 737 740 "repo": "hyprgraphics", 738 - "rev": "13c536659d46893596412d180449353a900a1d31", 741 + "rev": "7c75487edd43a71b61adb01cae8326d277aab683", 739 742 "type": "github" 740 743 }, 741 744 "original": { ··· 761 764 "xdph": "xdph" 762 765 }, 763 766 "locked": { 764 - "lastModified": 1769866762, 765 - "narHash": "sha256-RlZMgFz666Bc5ZxLUd+poTfs5RBIVKawuNRSkf5MyJ4=", 767 + "lastModified": 1770736405, 768 + "narHash": "sha256-eY9jsbDAnDPXWeTkeCm9jqwp1RcaikiBizzA/+M8jOQ=", 766 769 "ref": "refs/heads/main", 767 - "rev": "db6114c6c53edc4a60695a12d7f857308b6cd6cd", 768 - "revCount": 6852, 770 + "rev": "5b6c42ca70c3fbc0986760c2d0be8ab7c8b833b9", 771 + "revCount": 6879, 769 772 "submodules": true, 770 773 "type": "git", 771 774 "url": "https://github.com/hyprwm/Hyprland" ··· 991 994 ] 992 995 }, 993 996 "locked": { 994 - "lastModified": 1766253372, 995 - "narHash": "sha256-1+p4Kw8HdtMoFSmJtfdwjxM4bPxDK9yg27SlvUMpzWA=", 997 + "lastModified": 1770139857, 998 + "narHash": "sha256-bCqxcXjavgz5KBJ/1CBLqnagMMf9JvU1m9HmYVASKoc=", 996 999 "owner": "hyprwm", 997 1000 "repo": "hyprutils", 998 - "rev": "51a4f93ce8572e7b12b7284eb9e6e8ebf16b4be9", 1001 + "rev": "9038eec033843c289b06b83557a381a2648d8fa5", 999 1002 "type": "github" 1000 1003 }, 1001 1004 "original": { ··· 1016 1019 ] 1017 1020 }, 1018 1021 "locked": { 1019 - "lastModified": 1763640274, 1020 - "narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=", 1022 + "lastModified": 1770501770, 1023 + "narHash": "sha256-NWRM6+YxTRv+bT9yvlhhJ2iLae1B1pNH3mAL5wi2rlQ=", 1021 1024 "owner": "hyprwm", 1022 1025 "repo": "hyprwayland-scanner", 1023 - "rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671", 1026 + "rev": "0bd8b6cde9ec27d48aad9e5b4deefb3746909d40", 1024 1027 "type": "github" 1025 1028 }, 1026 1029 "original": { ··· 1045 1048 ] 1046 1049 }, 1047 1050 "locked": { 1048 - "lastModified": 1769202094, 1049 - "narHash": "sha256-gdJr/vWWLRW85ucatSjoBULPB2dqBJd/53CZmQ9t91Q=", 1051 + "lastModified": 1770203293, 1052 + "narHash": "sha256-PR/KER+yiHabFC/h1Wjb+9fR2Uy0lWM3Qld7jPVaWkk=", 1050 1053 "owner": "hyprwm", 1051 1054 "repo": "hyprwire", 1052 - "rev": "a45ca05050d22629b3c7969a926d37870d7dd75c", 1055 + "rev": "37bc90eed02b0c8b5a77a0b00867baf3005cfb98", 1053 1056 "type": "github" 1054 1057 }, 1055 1058 "original": { ··· 1064 1067 "nixpkgs": "nixpkgs_3" 1065 1068 }, 1066 1069 "locked": { 1067 - "lastModified": 1769857393, 1068 - "narHash": "sha256-3sgdsShDEyA/Jd+VKS8cI2GYHfkS482zH80QcXBF77E=", 1070 + "lastModified": 1770656651, 1071 + "narHash": "sha256-p0bV6EkZZRHyPm3ZJfo0txhuhy9gSfEAzzFc3zG1iLA=", 1069 1072 "owner": "Jovian-Experiments", 1070 1073 "repo": "Jovian-NixOS", 1071 - "rev": "91d6a007c918d3e862ec2418babfe271a4f7bfaa", 1074 + "rev": "2a3cd5fe86931bb928d56c11857d2f825014b852", 1072 1075 "type": "github" 1073 1076 }, 1074 1077 "original": { ··· 1087 1090 "rust-overlay": "rust-overlay" 1088 1091 }, 1089 1092 "locked": { 1090 - "lastModified": 1769417433, 1091 - "narHash": "sha256-0WZ7I/N9InaBHL96/qdiJxg8mqFW3vRla8Z062JmQFE=", 1093 + "lastModified": 1770734117, 1094 + "narHash": "sha256-PNXSnK507MRj+hYMgnUR7InNJzVCmOfsjHV4YXZgpwQ=", 1092 1095 "owner": "nix-community", 1093 1096 "repo": "lanzaboote", 1094 - "rev": "1902463415745b992dbaf301b2a35a1277be1584", 1097 + "rev": "2038a9a19adb886eccba775321b055fdbdc5029d", 1095 1098 "type": "github" 1096 1099 }, 1097 1100 "original": { ··· 1139 1142 "nixpkgs": "nixpkgs_4" 1140 1143 }, 1141 1144 "locked": { 1142 - "lastModified": 1769826495, 1143 - "narHash": "sha256-jyfGSLu7TjgwaZb7wgUJnAEtcoksqG4f0LORh4JBcdM=", 1145 + "lastModified": 1770691919, 1146 + "narHash": "sha256-e3G2ebDGaMfNCeRRSFQivSC+iWktI7a37AEzZ9I+JZA=", 1144 1147 "owner": "fufexan", 1145 1148 "repo": "nix-gaming", 1146 - "rev": "84471e0ca212961bd297a2b9017582041c903ddd", 1149 + "rev": "6cc488d4779f9dd15dd4831e97b15d2432ae761b", 1147 1150 "type": "github" 1148 1151 }, 1149 1152 "original": { ··· 1203 1206 ] 1204 1207 }, 1205 1208 "locked": { 1206 - "lastModified": 1765267181, 1207 - "narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=", 1209 + "lastModified": 1770315571, 1210 + "narHash": "sha256-hy0gcAgAcxrnSWKGuNO+Ob0x6jQ2xkR6hoaR0qJBHYs=", 1208 1211 "owner": "nix-community", 1209 1212 "repo": "nix-index-database", 1210 - "rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f", 1213 + "rev": "2684bb8080a6f2ca5f9d494de5ef875bc1c4ecdb", 1211 1214 "type": "github" 1212 1215 }, 1213 1216 "original": { ··· 1240 1243 "poetry2nix": "poetry2nix" 1241 1244 }, 1242 1245 "locked": { 1243 - "lastModified": 1769698402, 1244 - "narHash": "sha256-ezfDf3CznyjmYq78qxBaztwStX9ZiZyfYgS77KS8S1E=", 1246 + "lastModified": 1770561559, 1247 + "narHash": "sha256-PYhVfRFFEeosp8A5Uv4P91naCatxnYDazMJxLfA42UA=", 1245 1248 "owner": "jooooscha", 1246 1249 "repo": "nixpkgs-vim-extra-plugins", 1247 - "rev": "939f47664e43ba633f27a99c010c6dff173ae1a4", 1250 + "rev": "858a3c39a11791ad4d6fbc1657a777f731bc95a9", 1248 1251 "type": "github" 1249 1252 }, 1250 1253 "original": { ··· 1255 1258 }, 1256 1259 "nixpkgs": { 1257 1260 "locked": { 1258 - "lastModified": 1764947035, 1259 - "narHash": "sha256-EYHSjVM4Ox4lvCXUMiKKs2vETUSL5mx+J2FfutM7T9w=", 1261 + "lastModified": 1770073757, 1262 + "narHash": "sha256-Vy+G+F+3E/Tl+GMNgiHl9Pah2DgShmIUBJXmbiQPHbI=", 1260 1263 "owner": "NixOS", 1261 1264 "repo": "nixpkgs", 1262 - "rev": "a672be65651c80d3f592a89b3945466584a22069", 1265 + "rev": "47472570b1e607482890801aeaf29bfb749884f6", 1263 1266 "type": "github" 1264 1267 }, 1265 1268 "original": { ··· 1303 1306 }, 1304 1307 "nixpkgs-lib": { 1305 1308 "locked": { 1306 - "lastModified": 1765674936, 1307 - "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", 1309 + "lastModified": 1769909678, 1310 + "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", 1308 1311 "owner": "nix-community", 1309 1312 "repo": "nixpkgs.lib", 1310 - "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", 1313 + "rev": "72716169fe93074c333e8d0173151350670b824c", 1311 1314 "type": "github" 1312 1315 }, 1313 1316 "original": { ··· 1318 1321 }, 1319 1322 "nixpkgs-lib_2": { 1320 1323 "locked": { 1321 - "lastModified": 1765674936, 1322 - "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", 1324 + "lastModified": 1769909678, 1325 + "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", 1323 1326 "owner": "nix-community", 1324 1327 "repo": "nixpkgs.lib", 1325 - "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", 1326 - "type": "github" 1327 - }, 1328 - "original": { 1329 - "owner": "nix-community", 1330 - "repo": "nixpkgs.lib", 1331 - "type": "github" 1332 - } 1333 - }, 1334 - "nixpkgs-lib_3": { 1335 - "locked": { 1336 - "lastModified": 1765674936, 1337 - "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", 1338 - "owner": "nix-community", 1339 - "repo": "nixpkgs.lib", 1340 - "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", 1328 + "rev": "72716169fe93074c333e8d0173151350670b824c", 1341 1329 "type": "github" 1342 1330 }, 1343 1331 "original": { ··· 1388 1376 }, 1389 1377 "nixpkgs_2": { 1390 1378 "locked": { 1391 - "lastModified": 1769461804, 1392 - "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", 1379 + "lastModified": 1770562336, 1380 + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", 1393 1381 "owner": "NixOS", 1394 1382 "repo": "nixpkgs", 1395 - "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", 1383 + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", 1396 1384 "type": "github" 1397 1385 }, 1398 1386 "original": { ··· 1404 1392 }, 1405 1393 "nixpkgs_3": { 1406 1394 "locked": { 1407 - "lastModified": 1769018530, 1408 - "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=", 1395 + "lastModified": 1770562336, 1396 + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", 1409 1397 "owner": "NixOS", 1410 1398 "repo": "nixpkgs", 1411 - "rev": "88d3861acdd3d2f0e361767018218e51810df8a1", 1399 + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", 1412 1400 "type": "github" 1413 1401 }, 1414 1402 "original": { ··· 1420 1408 }, 1421 1409 "nixpkgs_4": { 1422 1410 "locked": { 1423 - "lastModified": 1769268028, 1424 - "narHash": "sha256-mAdJpV0e5IGZjnE4f/8uf0E4hQR7ptRP00gnZKUOdMo=", 1411 + "lastModified": 1770537093, 1412 + "narHash": "sha256-pF1quXG5wsgtyuPOHcLfYg/ft/QMr8NnX0i6tW2187s=", 1425 1413 "owner": "NixOS", 1426 1414 "repo": "nixpkgs", 1427 - "rev": "ab9fbbcf4858bd6d40ba2bbec37ceb4ab6e1f562", 1415 + "rev": "fef9403a3e4d31b0a23f0bacebbec52c248fbb51", 1428 1416 "type": "github" 1429 1417 }, 1430 1418 "original": { ··· 1452 1440 }, 1453 1441 "nixpkgs_6": { 1454 1442 "locked": { 1455 - "lastModified": 1769461804, 1456 - "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", 1443 + "lastModified": 1770562336, 1444 + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", 1457 1445 "owner": "nixos", 1458 1446 "repo": "nixpkgs", 1459 - "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", 1447 + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", 1460 1448 "type": "github" 1461 1449 }, 1462 1450 "original": { ··· 1475 1463 "systems": "systems_4" 1476 1464 }, 1477 1465 "locked": { 1478 - "lastModified": 1769644746, 1479 - "narHash": "sha256-1X9o0GjCzku03magX4pM+1OZXA0aUTN7KvEReZ9t3OU=", 1466 + "lastModified": 1770630823, 1467 + "narHash": "sha256-5SEmOnJ61vmbap39vzWEsCX5UQ+3Ul8J4mXWKdqSn3w=", 1480 1468 "owner": "nix-community", 1481 1469 "repo": "nixvim", 1482 - "rev": "3c27e1b35ca0fee6a89bfc20840654361ffe888d", 1470 + "rev": "6acc964664ac916c64fe4e394edd467af4d90790", 1483 1471 "type": "github" 1484 1472 }, 1485 1473 "original": { ··· 1494 1482 "nixpkgs": "nixpkgs_6" 1495 1483 }, 1496 1484 "locked": { 1497 - "lastModified": 1769908319, 1498 - "narHash": "sha256-MgbQWNECn2vwtl9yRWiz1RVRtMjRsd9fcgRheKZofp8=", 1485 + "lastModified": 1770758031, 1486 + "narHash": "sha256-YEq6M9OOEOl7l2zr/YjOi2UnuQZZ02HvXebpWGpkEHM=", 1499 1487 "owner": "nix-community", 1500 1488 "repo": "NUR", 1501 - "rev": "aaa64e7ec904ac38da40a7366a23bdc74897a849", 1489 + "rev": "6701aa01b90606ab75078c1910bb991b8e7a389b", 1502 1490 "type": "github" 1503 1491 }, 1504 1492 "original": { ··· 1568 1556 ] 1569 1557 }, 1570 1558 "locked": { 1571 - "lastModified": 1769069492, 1572 - "narHash": "sha256-Efs3VUPelRduf3PpfPP2ovEB4CXT7vHf8W+xc49RL/U=", 1559 + "lastModified": 1769939035, 1560 + "narHash": "sha256-Fok2AmefgVA0+eprw2NDwqKkPGEI5wvR+twiZagBvrg=", 1573 1561 "owner": "cachix", 1574 1562 "repo": "pre-commit-hooks.nix", 1575 - "rev": "a1ef738813b15cf8ec759bdff5761b027e3e1d23", 1563 + "rev": "a8ca480175326551d6c4121498316261cbb5b260", 1576 1564 "type": "github" 1577 1565 }, 1578 1566 "original": { ··· 1591 1579 ] 1592 1580 }, 1593 1581 "locked": { 1594 - "lastModified": 1769069492, 1595 - "narHash": "sha256-Efs3VUPelRduf3PpfPP2ovEB4CXT7vHf8W+xc49RL/U=", 1582 + "lastModified": 1769939035, 1583 + "narHash": "sha256-Fok2AmefgVA0+eprw2NDwqKkPGEI5wvR+twiZagBvrg=", 1596 1584 "owner": "cachix", 1597 1585 "repo": "git-hooks.nix", 1598 - "rev": "a1ef738813b15cf8ec759bdff5761b027e3e1d23", 1586 + "rev": "a8ca480175326551d6c4121498316261cbb5b260", 1599 1587 "type": "github" 1600 1588 }, 1601 1589 "original": { ··· 1612 1600 ] 1613 1601 }, 1614 1602 "locked": { 1615 - "lastModified": 1768985439, 1616 - "narHash": "sha256-qkU4r+l+UPz4dutMMRZSin64HuVZkEv9iFpu9yMWVY0=", 1603 + "lastModified": 1769593411, 1604 + "narHash": "sha256-WW00FaBiUmQyxvSbefvgxIjwf/WmRrEGBbwMHvW/7uQ=", 1617 1605 "ref": "refs/heads/master", 1618 - "rev": "191085a8821b35680bba16ce5411fc9dbe912237", 1619 - "revCount": 731, 1606 + "rev": "1e4d804e7f3fa7465811030e8da2bf10d544426a", 1607 + "revCount": 732, 1620 1608 "type": "git", 1621 1609 "url": "https://git.outfoxxed.me/outfoxxed/quickshell" 1622 1610 }, ··· 1692 1680 ] 1693 1681 }, 1694 1682 "locked": { 1695 - "lastModified": 1769309768, 1696 - "narHash": "sha256-AbOIlNO+JoqRJkK1VrnDXhxuX6CrdtIu2hSuy4pxi3g=", 1683 + "lastModified": 1770520253, 1684 + "narHash": "sha256-6rWuHgSENXKnC6HGGAdRolQrnp/8IzscDn7FQEo1uEQ=", 1697 1685 "owner": "oxalica", 1698 1686 "repo": "rust-overlay", 1699 - "rev": "140c9dc582cb73ada2d63a2180524fcaa744fad5", 1687 + "rev": "ebb8a141f60bb0ec33836333e0ca7928a072217f", 1700 1688 "type": "github" 1701 1689 }, 1702 1690 "original": { ··· 1712 1700 ] 1713 1701 }, 1714 1702 "locked": { 1715 - "lastModified": 1769469829, 1716 - "narHash": "sha256-wFcr32ZqspCxk4+FvIxIL0AZktRs6DuF8oOsLt59YBU=", 1703 + "lastModified": 1770683991, 1704 + "narHash": "sha256-xVfPvXDf9QN3Eh9dV+Lw6IkWG42KSuQ1u2260HKvpnc=", 1717 1705 "owner": "Mic92", 1718 1706 "repo": "sops-nix", 1719 - "rev": "c5eebd4eb2e3372fe12a8d70a248a6ee9dd02eff", 1707 + "rev": "8b89f44c2cc4581e402111d928869fe7ba9f7033", 1720 1708 "type": "github" 1721 1709 }, 1722 1710 "original": { ··· 1733 1721 "systems": "systems_5" 1734 1722 }, 1735 1723 "locked": { 1736 - "lastModified": 1769316930, 1737 - "narHash": "sha256-4EOGHYLpIscwr+6drHE28Qj7NDjjowp2Vd8QkXjdBBE=", 1724 + "lastModified": 1770528352, 1725 + "narHash": "sha256-KO51BALxgLUlhg1CqQgA3Rj8vgAcDvoLxzNLTxD65cc=", 1738 1726 "owner": "Gerg-L", 1739 1727 "repo": "spicetify-nix", 1740 - "rev": "b2ce438f386943ef611e196a178af2d79042903b", 1728 + "rev": "9f4ab243968118026f4ff82f7ce41d30319e2bf0", 1741 1729 "type": "github" 1742 1730 }, 1743 1731 "original": { ··· 1748 1736 }, 1749 1737 "stable": { 1750 1738 "locked": { 1751 - "lastModified": 1751274312, 1752 - "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", 1739 + "lastModified": 1770617025, 1740 + "narHash": "sha256-1jZvgZoAagZZB6NwGRv2T2ezPy+X6EFDsJm+YSlsvEs=", 1753 1741 "owner": "NixOS", 1754 1742 "repo": "nixpkgs", 1755 - "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", 1743 + "rev": "2db38e08fdadcc0ce3232f7279bab59a15b94482", 1756 1744 "type": "github" 1757 1745 }, 1758 1746 "original": { 1759 1747 "owner": "NixOS", 1760 - "ref": "nixos-24.11", 1748 + "ref": "nixos-25.11", 1761 1749 "repo": "nixpkgs", 1762 1750 "type": "github" 1763 1751 } ··· 1783 1771 "tinted-zed": "tinted-zed" 1784 1772 }, 1785 1773 "locked": { 1786 - "lastModified": 1769888473, 1787 - "narHash": "sha256-4KWbaJwaYnZ60bFyTudZYAKskjr7Sa17R3/yh+oXS7w=", 1774 + "lastModified": 1770587906, 1775 + "narHash": "sha256-N9ZTG3ia7l4iQO+9JlOj+sX4yu6gl7a3aozrlhSIJwQ=", 1788 1776 "owner": "danth", 1789 1777 "repo": "stylix", 1790 - "rev": "ae5c0239ae4f82a8c7e33ad8a456535d5a9ba813", 1778 + "rev": "72e6483a88d51471a6c55e1d43e7ed2bc47a76a4", 1791 1779 "type": "github" 1792 1780 }, 1793 1781 "original": { ··· 2005 1993 }, 2006 1994 "unstable": { 2007 1995 "locked": { 2008 - "lastModified": 1769461804, 2009 - "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", 1996 + "lastModified": 1770562336, 1997 + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", 2010 1998 "owner": "NixOS", 2011 1999 "repo": "nixpkgs", 2012 - "rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d", 2000 + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", 2013 2001 "type": "github" 2014 2002 }, 2015 2003 "original": { ··· 2029 2017 "treefmt-nix": "treefmt-nix" 2030 2018 }, 2031 2019 "locked": { 2032 - "lastModified": 1769898065, 2033 - "narHash": "sha256-4CufIBpWILFST5mLlwJ1Kdh4dL6e7sFOBmIRWkX/cqI=", 2020 + "lastModified": 1770348283, 2021 + "narHash": "sha256-//G3QRfA5gF5ktos3D/mIxGb9nnEMBxlH1Pga2tNTFo=", 2034 2022 "owner": "rafaelrc7", 2035 2023 "repo": "wayland-pipewire-idle-inhibit", 2036 - "rev": "83597b6cd1cd7945857e32b32eb9dbf67afd7a2c", 2024 + "rev": "675a182a46cd82f9b3ec58abad3f6c5ee1537e98", 2037 2025 "type": "github" 2038 2026 }, 2039 2027 "original": {
+8 -6
flake.nix
··· 6 6 {inherit inputs;} 7 7 ({flake-parts-lib, ...}: let 8 8 inherit (flake-parts-lib) importApply; 9 - importApply' = path: importApply path {inherit inputs systems;}; 9 + import' = path: import path {inherit inputs;}; 10 + importApply' = path: importApply path {inherit inputs;}; 10 11 systems = ["aarch64-linux" "x86_64-linux"]; 11 12 in { 12 13 inherit systems; 13 14 imports = [ 15 + (importApply' ./nix/flakeModules) 14 16 (importApply' ./nix/apps) 15 - (importApply' ./nix/modules) 16 17 (importApply' ./nix/overlays) 17 18 (importApply' ./nix/packages) 18 - (importApply' ./nix/scripts) 19 + (importApply' ./nix/legacyPackages) 19 20 (importApply' ./nix/shells) 20 21 ]; 21 22 perSystem = { ··· 31 32 }; 32 33 }; 33 34 flake = { 34 - lib = import ./nix/lib {inherit inputs;}; 35 + inherit systems; 36 + lib = import' ./nix/lib; 35 37 schemas = 36 38 inputs.flake-schemas.schemas 37 - // (import ./nix/schemas {inherit inputs systems;}); 39 + // (import' ./nix/schemas); 38 40 }; 39 41 }); 40 42 41 43 inputs = { 42 44 # Nixpkgs 43 45 nixpkgs.follows = "unstable"; 44 - stable.url = "github:NixOS/nixpkgs/nixos-24.11"; 46 + stable.url = "github:NixOS/nixpkgs/nixos-25.11"; 45 47 unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; 46 48 nixpkgs-schemas.url = "github:DeterminateSystems/nix-src/flake-schemas"; 47 49 nixpkgs-hare.url = "github:lpchaim/nixpkgs/update-hare";
-2
nix/apps/assets.nix
··· 2 2 inherit (inputs) self; 3 3 in { 4 4 perSystem = { 5 - config, 6 5 inputs', 7 6 lib, 8 - system, 9 7 pkgs, 10 8 ... 11 9 }: {
+26 -67
nix/apps/ci.nix
··· 1 - { 2 - inputs, 3 - systems, 4 - ... 5 - }: { 6 - perSystem = { 7 - self', 8 - config, 9 - lib, 10 - system, 11 - ... 12 - }: let 13 - inherit systems; 14 - inherit (inputs) self; 1 + {...}: { 2 + perSystem = {self', ...}: let 15 3 inherit (self'.legacyPackages) pkgs; 16 4 in { 17 - apps.generate-ci-matrix = let 18 - getOutputInfo = mkDerivationPath: output: 19 - lib.mapAttrsToList 20 - (name: subject: { 21 - inherit name; 22 - derivation = lib.escapeShellArg (mkDerivationPath name); 23 - system = subject.system or subject.pkgs.stdenv.hostPlatform.system; 24 - }) 25 - output; 26 - getNestedOutputInfo = mkDerivationPath: output: 27 - lib.concatMap (system: getOutputInfo (mkDerivationPath system) output.${system}) 28 - systems; 29 - ciInfo = let 30 - standaloneHomeConfigurations = 31 - lib.filterAttrs 32 - (name: _: let 33 - parts = lib.splitString "@" name; 34 - host = lib.last parts; 35 - in 36 - !(self.nixosConfigurations ? ${host})) 37 - self.homeConfigurations; 38 - in { 39 - homeConfigurations = 40 - getOutputInfo 41 - (name: ''.#homeConfigurations."${name}".activationPackage'') 42 - standaloneHomeConfigurations; 43 - nixosConfigurations = 44 - getOutputInfo 45 - (name: ''.#nixosConfigurations."${name}".config.system.build.toplevel'') 46 - self.nixosConfigurations; 47 - packages = 48 - getNestedOutputInfo 49 - (_: name: ''.#"${name}"'') 50 - self.packages; 51 - devShells = 52 - getNestedOutputInfo 53 - (system: name: ''.#devShells.${system}."${name}"'') 54 - self.devShells; 55 - }; 56 - ciInfoFile = 57 - ciInfo 58 - |> builtins.toJSON 59 - |> (pkgs.writeText "ci-info"); 5 + apps.generate-ci-matrix = { 60 6 program = 61 7 pkgs.writers.writeNuBin 62 8 "cimatrix" ··· 66 12 def main [ 67 13 --system: string = all # Filter by system 68 14 --output: string = all # Only include the specified output 15 + --branch: string # Only include the specified branch 16 + --flatten # Output a single list 69 17 ]: nothing -> string { 70 - open "${ciInfoFile}" 18 + open "${self'.legacyPackages.ciMatrix}" 71 19 | from json 72 20 | if $system != all { 73 - transpose 74 - | where { get column1 | columns | 'system' in $in } 75 - | update column1 { where system == $system } 76 - | transpose --header-row --as-record 77 - } else $in 21 + filter-records { where system == $system } 22 + } else $in 23 + | if $branch != null { 24 + filter-records { where branch == $branch } 25 + } else $in 78 26 | if $output != all { 79 - get --optional $output | default [] 80 - } else $in 27 + get --optional $output | default [] 28 + } else $in 29 + | if $flatten { 30 + items { |output, $cols| 31 + $cols 32 + | insert output $output 33 + } 34 + | flatten 35 + } else $in 81 36 | to json --raw 82 37 } 38 + 39 + def filter-records [where]: record -> record { 40 + transpose 41 + | update column1 $where 42 + | transpose --header-row --as-record 43 + } 83 44 ''; 84 - in { 85 - inherit program; 86 45 meta.description = "Generates a GitHub Actions build matrix"; 87 46 }; 88 47 };
+1 -1
nix/apps/default.nix
··· 1 1 args: { 2 2 imports = [ 3 3 ./assets.nix 4 - (import ./ci.nix args) 4 + ./ci.nix 5 5 ]; 6 6 }
+5 -1
nix/home/configs/cheina@pc082.nix
··· 11 11 }; 12 12 13 13 my = { 14 - cli.enable = true; 14 + ci.build = true; 15 15 cli.git.enable = true; 16 16 cli.hishtory.enable = false; 17 17 de.gnome.theming.enableGnomeShellTheme = false; 18 + development.nixd.lsp.enable = false; 19 + wayland.enable = true; 18 20 profiles = { 19 21 standalone = true; 20 22 }; 21 23 }; 24 + 25 + home.sessionVariables.XDEBUG_MODE = "off"; 22 26 23 27 home.packages = [ 24 28 (pkgs.writeShellScriptBin "dev2beta" ''
+2
nix/home/configs/lpchaim.nix
··· 1 1 { 2 2 inputs, 3 3 lib, 4 + osConfig ? {}, 4 5 ... 5 6 }: let 6 7 inherit (inputs.self.lib.config) name; ··· 9 10 username = "${name.user}"; 10 11 homeDirectory = "/home/${username}"; 11 12 stateVersion = lib.mkDefault (lib.versions.majorMinor lib.version); 13 + uid = osConfig.users.extraUsers.lpchaim.uid or null; 12 14 }; 13 15 }
+9 -1
nix/home/modules/bars/dank-material-shell/default.nix
··· 13 13 options.my.bars.dank-material-shell.enable = lib.mkEnableOption "Dank material shell"; 14 14 15 15 config = lib.mkIf (cfg.enable) { 16 + stylix.targets.dank-material-shell.enable = false; 17 + 16 18 programs.dank-material-shell = { 17 19 enable = true; 18 20 enableAudioWavelength = true; ··· 23 25 enableVPN = false; 24 26 25 27 # See https://raw.githubusercontent.com/AvengeMedia/DankMaterialShell/refs/heads/master/quickshell/Common/settings/SettingsSpec.js 26 - settings = import ./settings.nix; 28 + settings = 29 + (import ./settings.nix) 30 + // { 31 + currentThemeName = lib.mkDefault "purple"; 32 + currentThemeCategory = lib.mkDefault "generic"; 33 + customThemeFile = lib.mkDefault ""; 34 + }; 27 35 28 36 # See https://raw.githubusercontent.com/AvengeMedia/DankMaterialShell/refs/heads/master/quickshell/Common/settings/SessionSpec.js 29 37 session =
+5 -2
nix/home/modules/bars/dank-material-shell/session.nix
··· 39 39 "nightModeLocationProvider": "", 40 40 "pinnedApps": [], 41 41 "hiddenTrayIds": [ 42 - "steam", 43 - "KDE Connect Indicator" 42 + "chrome_status_icon_1", 43 + "KDE Connect Indicator", 44 + "openrgb", 45 + "spotify-client", 46 + "steam" 44 47 ], 45 48 "recentColors": [], 46 49 "showThirdPartyPlugins": false,
+23 -18
nix/home/modules/bars/dank-material-shell/settings.nix
··· 323 323 "osdPowerProfileEnabled": false, 324 324 "osdAudioOutputEnabled": true, 325 325 "powerActionConfirm": true, 326 - "powerActionHoldDuration": 1, 326 + "powerActionHoldDuration": 0.25, 327 327 "powerMenuActions": [ 328 328 "reboot", 329 329 "logout", ··· 374 374 "innerPadding": 5, 375 375 "leftWidgets": [ 376 376 { 377 - "id": "clock", 377 + "clockCompactMode": false, 378 378 "enabled": true, 379 - "clockCompactMode": false 379 + "id": "clock" 380 380 }, 381 381 { 382 - "id": "weather", 383 - "enabled": true 382 + "enabled": true, 383 + "id": "weather" 384 384 }, 385 385 { 386 - "id": "focusedWindow", 387 - "enabled": true 386 + "enabled": true, 387 + "id": "focusedWindow" 388 388 } 389 389 ], 390 390 "maximizeDetection": true, ··· 396 396 "position": 0, 397 397 "rightWidgets": [ 398 398 { 399 + "id": "music", 399 400 "enabled": true, 400 - "id": "systemTray" 401 + "mediaSize": 1 402 + }, 403 + { 404 + "id": "systemTray", 405 + "enabled": true 401 406 }, 402 407 { 408 + "id": "cpuUsage", 403 409 "enabled": true, 404 - "id": "clipboard" 410 + "minimumWidth": true 405 411 }, 406 412 { 407 - "enabled": true, 408 - "id": "cpuUsage", 409 - "minimumWidth": false 413 + "id": "clipboard", 414 + "enabled": true 410 415 }, 411 416 { 412 - "enabled": true, 413 - "id": "notificationButton" 417 + "id": "notificationButton", 418 + "enabled": true 414 419 }, 415 420 { 416 - "enabled": true, 417 - "id": "battery" 421 + "id": "battery", 422 + "enabled": true 418 423 }, 419 424 { 425 + "id": "controlCenterButton", 420 426 "enabled": true, 421 - "id": "controlCenterButton", 422 427 "showAudioPercent": false, 423 428 "showBrightnessIcon": false, 424 429 "showBrightnessPercent": false ··· 429 434 ], 430 435 "shadowIntensity": 0, 431 436 "showOnLastDisplay": true, 432 - "spacing": 4, 437 + "spacing": 5, 433 438 "squareCorners": false, 434 439 "transparency": 1, 435 440 "visible": true,
+10
nix/home/modules/ci/default.nix
··· 1 + {lib, ...}: { 2 + options.my.ci = { 3 + build = lib.mkEnableOption "building on CI pipeline"; 4 + branches = lib.mkOption { 5 + description = "Branches to build for"; 6 + type = with lib.types; listOf singleLineStr; 7 + default = ["main"]; 8 + }; 9 + }; 10 + }
+1 -3
nix/home/modules/cli/atuin/default.nix
··· 7 7 }: let 8 8 cfg = config.my.cli.atuin; 9 9 in { 10 - options.my.cli.atuin.enable = 11 - lib.mkEnableOption "atuin" 12 - // {default = config.my.cli.enable;}; 10 + options.my.cli.atuin.enable = lib.mkEnableOption "atuin"; 13 11 config = lib.mkIf cfg.enable { 14 12 programs.mcfly.enable = lib.mkForce false; 15 13 programs.atuin = {
-26
nix/home/modules/cli/default.nix
··· 1 1 { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - inherit (lib) mkDefault mkEnableOption mkIf; 7 - cfg = config.my.cli; 8 - in { 9 2 imports = [ 10 3 ./atuin 11 4 ./editors ··· 20 13 ./zellij 21 14 ./zsh 22 15 ]; 23 - 24 - options.my.cli.enable = mkEnableOption "cli modules"; 25 - 26 - config.my.cli = mkIf cfg.enable { 27 - editors.enable = mkDefault true; 28 - essentials.enable = mkDefault true; 29 - fish.enable = mkDefault true; 30 - git = { 31 - enable = mkDefault true; 32 - lazygit.enable = mkDefault true; 33 - }; 34 - hishtory.enable = mkDefault false; 35 - nushell.enable = mkDefault true; 36 - starship.enable = mkDefault true; 37 - tealdeer.enable = mkDefault true; 38 - tmux.enable = mkDefault false; 39 - zellij.enable = mkDefault true; 40 - zsh.enable = mkDefault true; 41 - }; 42 16 }
+14 -11
nix/home/modules/cli/editors/default.nix
··· 4 4 ... 5 5 }: let 6 6 cfg = config.my.cli.editors; 7 - inherit (cfg) enable; 8 7 in { 9 8 imports = [ 10 9 ./helix ··· 12 11 ]; 13 12 14 13 options.my.cli.editors = { 15 - enable = lib.mkEnableOption "editors" // {default = config.my.cli.enable;}; 16 - kakoune.enable = lib.mkEnableOption "kakoune" // {default = enable;}; 17 - vim.enable = lib.mkEnableOption "vim" // {default = enable;}; 14 + kakoune.enable = lib.mkEnableOption "kakoune"; 15 + vim.enable = lib.mkEnableOption "vim"; 18 16 }; 19 17 20 - config = lib.mkIf cfg.enable { 21 - programs = { 22 - kakoune.enable = cfg.kakoune.enable; 23 - vim.enable = cfg.vim.enable; 24 - }; 25 - home.sessionVariables.EDITOR = "hx"; 26 - }; 18 + config = lib.mkMerge [ 19 + (lib.mkIf cfg.kakoune.enable { 20 + programs.kakoune = { 21 + enable = true; 22 + }; 23 + }) 24 + (lib.mkIf cfg.vim.enable { 25 + programs.vim = { 26 + enable = true; 27 + }; 28 + }) 29 + ]; 27 30 }
+41 -32
nix/home/modules/cli/editors/helix/default.nix
··· 5 5 }: let 6 6 cfg = config.my.cli.editors.helix; 7 7 in { 8 - options.my.cli.editors.helix.enable = 9 - lib.mkEnableOption "helix" 10 - // {default = config.my.cli.editors.enable;}; 8 + options.my.cli.editors.helix.enable = lib.mkEnableOption "helix"; 9 + 11 10 config = lib.mkIf cfg.enable { 12 11 programs.helix = { 13 12 enable = true; ··· 17 16 bufferline = "always"; 18 17 color-modes = true; 19 18 line-number = "relative"; 19 + cursor-shape = { 20 + insert = "bar"; 21 + normal = "block"; 22 + select = "block"; 23 + }; 24 + file-picker = { 25 + hidden = false; 26 + }; 27 + indent-guides = { 28 + render = false; 29 + character = "╎"; 30 + skip-levels = 1; 31 + }; 32 + search = { 33 + smart-case = true; 34 + wrap-around = true; 35 + }; 36 + statusline = { 37 + left = ["mode" "spinner" "file-name"]; 38 + center = ["version-control"]; 39 + right = ["diagnostics" "selections" "position" "total-line-numbers" "file-encoding"]; 40 + }; 20 41 }; 21 - editor.cursor-shape = { 22 - insert = "bar"; 23 - normal = "block"; 24 - select = "block"; 25 - }; 26 - editor.indent-guides = { 27 - render = false; 28 - character = "╎"; 29 - skip-levels = 1; 30 - }; 31 - editor.search = { 32 - smart-case = true; 33 - wrap-around = true; 34 - }; 35 - editor.statusline = { 36 - left = ["mode" "spinner" "file-name"]; 37 - center = ["version-control"]; 38 - right = ["diagnostics" "selections" "position" "total-line-numbers" "file-encoding"]; 39 - }; 40 - keys.normal = { 41 - "A-f" = "file_picker_in_current_buffer_directory"; 42 - "A-ç" = "switch_to_uppercase"; 43 - "ç" = "switch_to_lowercase"; 44 - }; 45 - keys.normal.space = { 46 - "y" = ":clipboard-yank-join"; 47 - }; 48 - keys.select.space = { 49 - "y" = ":clipboard-yank-join"; 42 + keys = rec { 43 + normal = { 44 + "A-ç" = "switch_to_uppercase"; 45 + "ç" = "switch_to_lowercase"; 46 + "A-w" = "move_next_sub_word_start"; 47 + "A-b" = "move_prev_sub_word_start"; 48 + "A-e" = "move_next_sub_word_end"; 49 + space = { 50 + "A-f" = "file_picker_in_current_buffer_directory"; 51 + }; 52 + }; 53 + select = { 54 + inherit (normal) space; 55 + "A-w" = "extend_next_sub_word_start"; 56 + "A-b" = "extend_prev_sub_word_start"; 57 + "A-e" = "extend_next_sub_word_end"; 58 + }; 50 59 }; 51 60 }; 52 61 };
+1 -3
nix/home/modules/cli/editors/neovim/default.nix
··· 9 9 ./treesitter.nix 10 10 ]; 11 11 12 - options.my.cli.editors.neovim.enable = 13 - lib.mkEnableOption "neovim" 14 - // {default = config.my.cli.editors.enable;}; 12 + options.my.cli.editors.neovim.enable = lib.mkEnableOption "neovim"; 15 13 16 14 config = lib.mkIf cfg.enable { 17 15 programs.nixvim = {
-11
nix/home/modules/cli/essentials/default.nix
··· 58 58 CARAPACE_BRIDGES = "zsh,fish,bash,inshellisense"; 59 59 MANPAGER = "${lib.getExe pkgs.bat} --language man --plain"; 60 60 }; 61 - shellAliases = { 62 - gco = "git checkout"; 63 - gd = "git diff"; 64 - gds = "git diff --staged"; 65 - gl = "git log"; 66 - glg = "git log --graph"; 67 - gp = "git pull"; 68 - gs = "git switch"; 69 - gsc = "git switch --create"; 70 - gst = "git status"; 71 - }; 72 61 }; 73 62 74 63 programs.${shell}.enable = config.programs ? "${shell}";
+15 -1
nix/home/modules/cli/git/default.nix
··· 9 9 in { 10 10 options.my.cli.git = { 11 11 enable = lib.mkEnableOption "git"; 12 + aliases.enable = lib.mkEnableOption "git aliases" // {default = cfg.enable;}; 13 + delta.enable = lib.mkEnableOption "delta diffs for git" // {default = cfg.enable;}; 12 14 lazygit.enable = lib.mkEnableOption "lazygit" // {default = cfg.enable;}; 13 15 }; 14 16 15 17 config = lib.mkIf cfg.enable { 16 18 programs = { 17 - delta = { 19 + delta = lib.mkIf cfg.delta.enable { 18 20 enable = true; 19 21 enableGitIntegration = true; 20 22 }; ··· 30 32 }; 31 33 }; 32 34 lazygit.enable = cfg.lazygit.enable; 35 + }; 36 + 37 + home.shellAliases = lib.mkIf cfg.aliases.enable { 38 + gco = "git checkout"; 39 + gd = "git diff"; 40 + gds = "git diff --staged"; 41 + gl = "git log"; 42 + glg = "git log --graph"; 43 + gp = "git pull"; 44 + gs = "git switch"; 45 + gsc = "git switch --create"; 46 + gst = "git status"; 33 47 }; 34 48 }; 35 49 }
+9 -5
nix/home/modules/cli/starship/default.nix
··· 16 16 php.symbol = " "; 17 17 }; 18 18 }; 19 - home.file.${config.programs.starship.configPath}.source = 19 + home.file.${config.programs.starship.configPath}.source = let 20 + settingsFile = 21 + config.programs.starship.settings 22 + |> builtins.toJSON 23 + |> pkgs.writeText "starship-settings"; 24 + in 20 25 lib.mkForce 21 26 (pkgs.runCommand 22 27 "starship-settings" 23 - {buildInputs = [pkgs.nushell pkgs.starship];} 28 + {buildInputs = with pkgs; [nushell starship];} 24 29 '' 25 30 nu --commands " 26 31 starship preset nerd-font-symbols 27 32 | from toml 28 33 | merge deep ( 29 - open ${pkgs.writeText "starship-settings" (builtins.toJSON config.programs.starship.settings)} 34 + open '${settingsFile}' 30 35 | from json 31 36 ) 32 37 | to toml 33 - " \ 34 - > $out 38 + " > $out 35 39 ''); 36 40 }; 37 41 }
+5 -10
nix/home/modules/de/hyprland/binds/default.nix
··· 58 58 "$mod" = "SUPER"; 59 59 bind = 60 60 [ 61 - "$mod, T, exec, kitty" 62 - "$mod ALT, T, exec, wezterm" 63 - "$mod, B, exec, firefox" 64 61 "$mod, E, exec, nautilus" 65 62 "CTRL ALT, L, exec, ${config.services.hypridle.settings.general.lock_cmd}" 66 63 "$mod, F11, exec, pidof grimblast || grimblast copy output --notify" ··· 108 105 ++ (makeDirectionalBinds "movefocus" []) 109 106 ++ (makeDirectionalBinds "movewindoworgroup" ["SHIFT"]) 110 107 ++ (makeWorkspaceBinds "workspace" []) 111 - ++ (makeWorkspaceBinds "movetoworkspace" ["SHIFT"]); 108 + ++ (makeWorkspaceBinds "movetoworkspace" ["SHIFT"]) 109 + ++ (lib.optional config.programs.firefox.enable "$mod, B, exec, firefox") 110 + ++ (lib.optional config.programs.kitty.enable "$mod, T, exec, kitty") 111 + ++ (lib.optional config.programs.wezterm.enable "$mod ALT, T, exec, wezterm"); 112 + 112 113 binde = [ 113 114 "$mod CTRL, H, resizeactive, -10 0" 114 115 "$mod CTRL, L, resizeactive, 10 0" ··· 124 125 swallow_regex = "^(kitty|wezterm)"; 125 126 }; 126 127 }; 127 - }; 128 - 129 - programs = { 130 - firefox.enable = true; 131 - kitty.enable = true; 132 - wezterm.enable = true; 133 128 }; 134 129 135 130 home.packages = with pkgs; [
+6 -5
nix/home/modules/de/hyprland/default.nix
··· 37 37 systemd.variables = ["--all"]; 38 38 settings = { 39 39 exec-once = [ 40 - "hypridle" 41 - "hyprpaper" 42 40 "[workspace 10 silent] steam -silent" 43 41 "[workspace 10 silent] openrgb --startminimized" 44 42 ]; ··· 83 81 "fade, 1, 2, easeinout" 84 82 "border, 1, 2, easeinout" 85 83 "borderangle, 1, 2, easeinout" 86 - "workspaces, 1, 4, easeinout" 84 + "workspaces, 1, 3, easeinout, slide" 85 + "specialWorkspace, 1, 3, easeinout, slidevert -50%" 87 86 ]; 88 87 }; 89 88 dwindle = { ··· 123 122 "XCURSOR_SIZE,32" 124 123 "HYPRCURSOR_SIZE,32" 125 124 ]; 126 - monitor = [",highrr,auto,1"]; 125 + monitor = [ 126 + ",highrr,auto,1,vrr,2" 127 + "eDP-1,highrr,auto,1,vrr,2" 128 + ]; 127 129 opengl.nvidia_anti_flicker = true; 128 130 windowrule = let 129 131 mkAutoFloatRule = args: ··· 241 243 packages = with pkgs; [ 242 244 brightnessctl 243 245 hyprcursor 244 - hyprpaper 245 246 hyprpicker 246 247 wlinhibit 247 248 ];
+11 -5
nix/home/modules/de/hyprland/hypridle/default.nix
··· 7 7 cfg = config.my.de.hyprland.hypridle; 8 8 in { 9 9 options.my.de.hyprland.hypridle = { 10 - enable = lib.mkEnableOption "Hypridle"; 10 + enable = 11 + lib.mkEnableOption "Hypridle" 12 + // {default = config.my.de.hyprland.enable;}; 11 13 lockCmd = lib.mkOption { 12 14 description = "Command to lock the screen"; 13 15 type = lib.types.nullOr lib.types.str; ··· 16 18 }; 17 19 18 20 config = lib.mkIf cfg.enable { 21 + assertions = [ 22 + { 23 + assertion = config.services.hypridle.settings.general.lock_cmd != null; 24 + message = "config.services.hypridle.settings.general.lock_cmd must be set for hypridle to work properly"; 25 + } 26 + ]; 27 + 19 28 services.hypridle = { 20 - enable = 21 - if (cfg.lockCmd == null) 22 - then (throw "config.services.hypridle.settings.general.lock_cmd must be set") 23 - else true; 29 + enable = true; 24 30 settings = { 25 31 general = { 26 32 lock_cmd = cfg.lockCmd;
+33 -6
nix/home/modules/default.nix
··· 4 4 ... 5 5 }: let 6 6 inherit (inputs) self; 7 - inherit (lib) mkDefault; 8 7 in { 9 8 imports = 10 9 (with inputs; [ ··· 21 20 ++ [ 22 21 "${self}/nix/shared" 23 22 ./bars 23 + ./ci 24 24 ./cli 25 25 ./de 26 + ./development 26 27 ./gui 27 28 ./misc 28 29 ./nix 29 - ./profiles 30 30 ./scripts 31 31 ./security 32 + ./ssh 32 33 ./syncthing 33 34 ./theming 35 + ./wayland 36 + ../profiles 34 37 ]; 35 38 36 39 my = { 37 - cli.enable = mkDefault true; 38 - nix.enable = mkDefault true; 39 - scripts.enable = mkDefault true; 40 + cli = { 41 + atuin.enable = true; 42 + editors = { 43 + helix.enable = lib.mkDefault true; 44 + kakoune.enable = lib.mkDefault true; 45 + vim.enable = lib.mkDefault true; 46 + }; 47 + essentials.enable = lib.mkDefault true; 48 + fish.enable = lib.mkDefault true; 49 + git.enable = lib.mkDefault true; 50 + nushell.enable = lib.mkDefault true; 51 + starship.enable = lib.mkDefault true; 52 + tealdeer.enable = lib.mkDefault true; 53 + zellij.enable = lib.mkDefault true; 54 + zsh.enable = lib.mkDefault true; 55 + }; 56 + development = { 57 + nixd.enable = lib.mkDefault true; 58 + }; 59 + nix.enable = lib.mkDefault true; 60 + scripts.enable = lib.mkDefault true; 61 + security.enable = lib.mkDefault true; 62 + ssh.enable = lib.mkDefault true; 63 + }; 64 + 65 + programs = { 66 + helix.defaultEditor = lib.mkDefault true; 67 + home-manager.enable = lib.mkDefault true; 40 68 }; 41 69 42 - programs.home-manager.enable = lib.mkDefault true; 43 70 systemd.user.startServices = "sd-switch"; 44 71 }
+5
nix/home/modules/development/default.nix
··· 1 + { 2 + imports = [ 3 + ./nixd.nix 4 + ]; 5 + }
+53
nix/home/modules/development/nixd.nix
··· 1 + { 2 + inputs, 3 + config, 4 + lib, 5 + osConfig ? {}, 6 + pkgs, 7 + ... 8 + }: let 9 + cfg = config.my.development.nixd; 10 + isNixos = osConfig != {}; 11 + in { 12 + options.my.development.nixd = { 13 + enable = lib.mkEnableOption "nixd"; 14 + lsp.enable = lib.mkEnableOption "nixd LSP" // {default = cfg.enable;}; 15 + }; 16 + 17 + config = lib.mkMerge [ 18 + (lib.mkIf cfg.enable { 19 + home.packages = [pkgs.nixd-lix]; 20 + }) 21 + (lib.mkIf (cfg.lsp.enable && config.programs.helix.enable) { 22 + programs.helix = { 23 + languages = { 24 + language = [ 25 + { 26 + name = "nix"; 27 + language-servers = lib.mkBefore ["nixd"]; 28 + } 29 + ]; 30 + language-server.nixd = { 31 + command = "${lib.getExe pkgs.nixd-lix}"; 32 + args = ["--semantic-tokens=true"]; 33 + config.nixd = let 34 + inherit (inputs.self.lib.config) flake; 35 + inherit (pkgs.stdenv.hostPlatform) system; 36 + inherit (config.home) username; 37 + absoluteFlakePath = builtins.replaceStrings ["~"] [config.home.homeDirectory] flake.path; 38 + getFlake = ''builtins.getFlake "${absoluteFlakePath}"''; 39 + hostName = osConfig.networking.hostName or "desktop"; 40 + hostConfig = ''(${getFlake}).nixosConfigurations.${hostName}''; 41 + homeConfig = ''(${getFlake}).homeConfigurations."${username}@${hostName}"''; 42 + in { 43 + nixpkgs.expr = "(${getFlake}).legacyPackages.${system}.pkgs"; 44 + options = 45 + {home-manager.expr = "${homeConfig}.options";} 46 + // lib.optionalAttrs isNixos {nixos.expr = "${hostConfig}.options";}; 47 + }; 48 + }; 49 + }; 50 + }; 51 + }) 52 + ]; 53 + }
+60 -53
nix/home/modules/gui/default.nix
··· 11 11 imports = [ 12 12 ./chromium.nix 13 13 ./firefox.nix 14 + ./kitty.nix 14 15 ./mangohud.nix 16 + ./media.nix 15 17 ]; 16 18 17 19 options.my.gui.enable = lib.mkEnableOption "gui apps"; 18 20 19 - config = lib.mkIf cfg.enable (lib.mkMerge [ 20 - { 21 - home.packages = with pkgs; [ 22 - libreoffice-qt6-fresh 23 - obsidian 24 - pavucontrol 25 - qbittorrent 26 - signal-desktop 27 - vesktop 28 - zapzap 29 - ]; 21 + config = lib.mkIf cfg.enable { 22 + assertions = [ 23 + { 24 + assertion = osConfig == {} || osConfig.hardware.graphics.enable; 25 + message = "config.my.gui.enable is useless without graphics"; 26 + } 27 + ]; 28 + 29 + home.packages = with pkgs; [ 30 + libreoffice-qt6-fresh 31 + obsidian 32 + pavucontrol 33 + qbittorrent 34 + signal-desktop 35 + vesktop 36 + ]; 37 + 38 + home.file = let 39 + inherit (inputs.self.lib.config) profilePicture wallpaper; 40 + in { 41 + "${config.home.homeDirectory}/.face".source = profilePicture; 42 + "${config.xdg.userDirs.pictures}/Wallpapers/${baseNameOf wallpaper}".source = wallpaper; 43 + }; 30 44 31 - home.file = let 32 - inherit (inputs.self.lib.config) profilePicture wallpaper; 33 - in { 34 - "${config.home.homeDirectory}/.face".source = profilePicture; 35 - "${config.xdg.userDirs.pictures}/Wallpapers/${builtins.baseNameOf wallpaper}".source = wallpaper; 45 + programs = { 46 + vscode = { 47 + enable = true; 48 + package = pkgs.vscode.fhs; 49 + profiles.default.enableExtensionUpdateCheck = true; 50 + mutableExtensionsDir = true; 36 51 }; 52 + wezterm.enable = true; 53 + }; 37 54 38 - programs = { 39 - vscode = { 40 - enable = true; 41 - package = pkgs.vscode.fhs; 42 - profiles.default.enableExtensionUpdateCheck = true; 43 - mutableExtensionsDir = true; 44 - }; 55 + services = { 56 + kdeconnect = lib.mkIf (osConfig != {}) { 57 + inherit (osConfig.programs.kdeconnect) package; 58 + enable = true; 59 + indicator = true; 60 + }; 61 + nextcloud-client = { 62 + enable = false; 63 + startInBackground = true; 45 64 }; 46 - 47 - services = { 48 - kdeconnect = lib.mkIf (osConfig != {}) { 49 - inherit (osConfig.programs.kdeconnect) package; 50 - enable = true; 51 - indicator = true; 52 - }; 53 - nextcloud-client = { 54 - enable = false; 55 - startInBackground = true; 56 - }; 57 - trayscale = { 58 - enable = true; 59 - hideWindow = true; 60 - }; 65 + trayscale = { 66 + enable = true; 67 + hideWindow = true; 61 68 }; 69 + }; 62 70 63 - xdg.mime.enable = true; 64 - xdg.systemDirs.data = [ 65 - "${config.home.homeDirectory}/.nix-profile/share/applications" 66 - ]; 71 + xdg.mime.enable = true; 72 + xdg.systemDirs.data = [ 73 + "${config.home.homeDirectory}/.nix-profile/share/applications" 74 + ]; 67 75 68 - services.flatpak = { 69 - overrides.global.Environment.XCURSOR_PATH = "/run/host/user-share/icons:/run/host/share/icons"; 70 - packages = [ 71 - "com.fightcade.Fightcade" 72 - "com.github.tchx84.Flatseal" 73 - ]; 74 - uninstallUnmanaged = false; 75 - update.auto.enable = true; 76 - }; 77 - } 78 - ]); 76 + services.flatpak = { 77 + overrides.global.Environment.XCURSOR_PATH = "/run/host/user-share/icons:/run/host/share/icons"; 78 + packages = [ 79 + "com.fightcade.Fightcade" 80 + "com.github.tchx84.Flatseal" 81 + ]; 82 + uninstallUnmanaged = false; 83 + update.auto.enable = true; 84 + }; 85 + }; 79 86 }
+15
nix/home/modules/gui/kitty.nix
··· 1 + { 2 + config, 3 + lib, 4 + ... 5 + }: let 6 + cfg = config.my.gui.kitty; 7 + in { 8 + options.my.gui.kitty.enable = 9 + lib.mkEnableOption "kitty" 10 + // {default = config.my.gui.enable;}; 11 + 12 + config = lib.mkIf cfg.enable { 13 + programs.kitty.enable = true; 14 + }; 15 + }
+1 -5
nix/home/modules/gui/mangohud.nix
··· 11 11 // { 12 12 default = 13 13 config.my.gui.enable 14 - && ( 15 - (osConfig == {}) 16 - || !(osConfig ? jovian) 17 - || !osConfig.jovian.steam.enable 18 - ); 14 + && !(osConfig.jovian.steam.enable or false); 19 15 }; 20 16 21 17 config = lib.mkIf cfg.enable {
+2 -3
nix/home/modules/misc/llm/default.nix
··· 9 9 inherit (inputs.nix-std.lib) serde; 10 10 inherit (lib) mkIf mkEnableOption mkOption; 11 11 cfg = config.my.misc.llm; 12 - defaultEnable = {default = cfg.enable;}; 13 12 in { 14 13 options.my.misc.llm = { 15 14 enable = mkEnableOption "LLM tools"; ··· 19 18 default = "tinyllama"; 20 19 }; 21 20 ollama = { 22 - enable = mkEnableOption "ollama configuration" // defaultEnable; 21 + enable = mkEnableOption "ollama configuration" // {default = cfg.enable;}; 23 22 url = mkOption { 24 23 description = "The URL of the ollama server"; 25 24 type = lib.types.str; ··· 32 31 }; 33 32 }; 34 33 smartcat = { 35 - enable = mkEnableOption "smartcat" // defaultEnable; 34 + enable = mkEnableOption "smartcat" // {default = cfg.enable;}; 36 35 model = mkOption { 37 36 description = "Which model to use"; 38 37 type = lib.types.str;
-6
nix/home/modules/profiles/apps/default.nix
··· 1 - { 2 - imports = [ 3 - ./gui.nix 4 - ./media.nix 5 - ]; 6 - }
-12
nix/home/modules/profiles/apps/gui.nix
··· 1 - { 2 - config, 3 - lib, 4 - ... 5 - }: let 6 - cfg = config.my.profiles.apps.gui; 7 - in { 8 - options.my.profiles.apps.gui = lib.mkEnableOption "GUI apps profile"; 9 - config = lib.mkIf cfg { 10 - my.gui.enable = true; 11 - }; 12 - }
+3 -3
nix/home/modules/profiles/apps/media.nix nix/home/modules/gui/media.nix
··· 6 6 ... 7 7 }: let 8 8 inherit (pkgs.stdenv.hostPlatform) system; 9 - cfg = config.my.profiles.apps.media; 9 + cfg = config.my.gui.media; 10 10 in { 11 - options.my.profiles.apps.media = lib.mkEnableOption "media profile"; 12 - config = lib.mkIf cfg { 11 + options.my.gui.media.enable = lib.mkEnableOption "gui media apps" // {default = config.my.gui.enable;}; 12 + config = lib.mkIf cfg.enable { 13 13 programs = { 14 14 mpv.enable = true; 15 15 spicetify = let
nix/home/modules/profiles/de/default.nix nix/home/profiles/de/default.nix
nix/home/modules/profiles/de/gnome.nix nix/home/profiles/de/gnome.nix
nix/home/modules/profiles/de/hyprland.nix nix/home/profiles/de/hyprland.nix
-2
nix/home/modules/profiles/default.nix nix/home/profiles/default.nix
··· 1 1 { 2 2 imports = [ 3 - ./apps 4 3 ./de 5 4 ./graphical.nix 6 5 ./llm 7 6 ./standalone.nix 8 - ./wayland.nix 9 7 ]; 10 8 }
+1 -4
nix/home/modules/profiles/graphical.nix nix/home/profiles/graphical.nix
··· 12 12 config = lib.mkIf cfg { 13 13 my = { 14 14 bars.dank-material-shell.enable = true; 15 - profiles = { 16 - apps.gui = true; 17 - apps.media = true; 18 - }; 15 + gui.enable = true; 19 16 }; 20 17 }; 21 18 }
nix/home/modules/profiles/llm/default.nix nix/home/profiles/llm/default.nix
nix/home/modules/profiles/llm/high.nix nix/home/profiles/llm/high.nix
nix/home/modules/profiles/llm/low.nix nix/home/profiles/llm/low.nix
nix/home/modules/profiles/llm/mid.nix nix/home/profiles/llm/mid.nix
nix/home/modules/profiles/standalone.nix nix/home/profiles/standalone.nix
-22
nix/home/modules/profiles/wayland.nix
··· 1 - { 2 - config, 3 - lib, 4 - osConfig ? {}, 5 - pkgs, 6 - ... 7 - }: let 8 - cfg = config.my.profiles.wayland; 9 - in { 10 - options.my.profiles.wayland = 11 - lib.mkEnableOption "wayland profile" 12 - // {default = osConfig.my.profiles.wayland or false;}; 13 - config = lib.mkIf cfg { 14 - home.packages = [pkgs.wl-clipboard]; 15 - home.sessionVariables.NIXOS_OZONE_WL = "1"; 16 - 17 - services.cliphist = { 18 - enable = true; 19 - allowImages = true; 20 - }; 21 - }; 22 - }
+13 -17
nix/home/modules/scripts/default.nix
··· 5 5 pkgs, 6 6 ... 7 7 }: let 8 - inherit (lib) getExe; 9 8 inherit (pkgs.stdenv.hostPlatform) system; 10 9 cfg = config.my.scripts; 11 10 in { ··· 13 12 enable = lib.mkEnableOption "scripts"; 14 13 byName = lib.mkOption { 15 14 default = inputs.self.legacyPackages.${system}.scripts; 15 + }; 16 + packages = lib.mkOption { 17 + default = builtins.attrValues cfg.byName; 16 18 }; 17 19 }; 18 20 config = lib.mkIf cfg.enable { 19 - home.packages = builtins.attrValues cfg.byName; 20 - home.file = 21 + home.packages = cfg.packages; 22 + home.file = let 23 + inherit (inputs.self.lib) carapaceSpecFromNuScript; 24 + specPath = ".config/carapace/specs"; 25 + in 21 26 lib.mkIf config.programs.carapace.enable 22 27 ( 23 28 cfg.byName 24 - |> (lib.filterAttrs (_: script: lib.strings.hasInfix "/bin/nu" script.interpreter)) 25 - |> (lib.concatMapAttrs 26 - (name: script: { 27 - ".config/carapace/specs/${name}.yaml".source = 28 - pkgs.runCommand 29 - "nushell-carapace-spec-${name}" 30 - {buildInputs = [cfg.byName.nu-generate-carapace-spec cfg.byName.nu-inspect];} 31 - '' 32 - cat '${getExe script}' \ 33 - | nu-inspect --name $name \ 34 - | nu-generate-carapace-spec \ 35 - > $out 36 - ''; 37 - })) 29 + |> lib.filterAttrs (_: script: lib.strings.hasInfix "/bin/nu" script.interpreter) 30 + |> lib.concatMapAttrs 31 + (name: script: { 32 + "${specPath}/${name}.yaml".source = carapaceSpecFromNuScript script; 33 + }) 38 34 ); 39 35 }; 40 36 }
+1 -1
nix/home/modules/security/default.nix
··· 10 10 options.my.security = { 11 11 enable = 12 12 lib.mkEnableOption "security settings" 13 - // {default = osConfig.my.security.enable or true;}; 13 + // {default = osConfig.my.security.enable or false;}; 14 14 }; 15 15 config = lib.mkIf cfg.enable { 16 16 home.packages =
+32
nix/home/modules/ssh/default.nix
··· 1 + { 2 + config, 3 + lib, 4 + osConfig ? {}, 5 + ... 6 + }: let 7 + cfg = config.my.ssh; 8 + in { 9 + options.my.ssh.enable = 10 + lib.mkEnableOption "SSH tweaks" 11 + // {default = osConfig.my.ssh.enable or false;}; 12 + 13 + config = lib.mkIf cfg.enable { 14 + programs.ssh = { 15 + enable = true; 16 + enableDefaultConfig = false; 17 + matchBlocks = { 18 + "*" = { 19 + addKeysToAgent = "yes"; 20 + identitiesOnly = false; 21 + identityFile = [ 22 + "~/.ssh/id_rsa" 23 + ]; 24 + }; 25 + }; 26 + }; 27 + 28 + services.ssh-agent = { 29 + enable = true; 30 + }; 31 + }; 32 + }
+2 -2
nix/home/modules/theming/default.nix
··· 6 6 }: let 7 7 matchTheme = theme: 8 8 config.stylix.base16Scheme 9 - |> builtins.toString 10 - |> (builtins.match "^.*/themes/.*${theme}.*$"); 9 + |> toString 10 + |> builtins.match "^.*/themes/.*${theme}.*$"; 11 11 in 12 12 lib.mkIf config.stylix.enable (lib.mkMerge [ 13 13 {
+22
nix/home/modules/wayland/default.nix
··· 1 + { 2 + config, 3 + lib, 4 + osConfig ? {}, 5 + pkgs, 6 + ... 7 + }: let 8 + cfg = config.my.wayland; 9 + in { 10 + options.my.wayland.enable = 11 + lib.mkEnableOption "wayland tweaks" 12 + // {default = osConfig.my.wayland.enable or false;}; 13 + config = lib.mkIf cfg.enable { 14 + home.packages = [pkgs.wl-clipboard]; 15 + home.sessionVariables.NIXOS_OZONE_WL = "1"; 16 + 17 + services.cliphist = { 18 + enable = true; 19 + allowImages = true; 20 + }; 21 + }; 22 + }
+76
nix/legacyPackages/ciMatrix.nix
··· 1 + {inputs, ...}: let 2 + inherit (inputs) self; 3 + inherit (self) systems; 4 + in { 5 + perSystem = { 6 + lib, 7 + pkgs, 8 + ... 9 + }: let 10 + getOutputInfo = mkDerivationPath: output: 11 + lib.mapAttrsToList (name: drv: { 12 + inherit name; 13 + derivation = 14 + name 15 + |> lib.strings.escapeNixIdentifier 16 + |> mkDerivationPath 17 + |> lib.escapeShellArg; 18 + system = drv.system or drv.pkgs.stdenv.hostPlatform.system; 19 + branch = drv.config.my.ci.branches or []; 20 + }) 21 + output; 22 + getPerSystemOutputInfo = mkDerivationPath: output: 23 + lib.concatMap (system: getOutputInfo (mkDerivationPath system) output.${system}) 24 + systems; 25 + filterToBuild = lib.filterAttrs (_: drv: drv.config.my.ci.build or false); 26 + filterPerSystemToBuild = lib.filterAttrsRecursive ( 27 + name: drv: 28 + !(lib.isDerivation drv) 29 + || ( 30 + (name != "default") 31 + && ( 32 + ((drv.passthru.my.ci.build or false) == true) 33 + || (builtins.elem drv.system (drv.passthru.my.ci.buildFor or [])) 34 + ) 35 + ) 36 + ); 37 + spreadBranchOrDefault = defaultBranches: infos: 38 + lib.concatMap 39 + (info: (lib.concatMap 40 + (branch: [(info // {inherit branch;})]) 41 + ( 42 + if (builtins.length info.branch > 0) 43 + then info.branch 44 + else defaultBranches 45 + ))) 46 + infos; 47 + ciInfo = { 48 + homeConfigurations = 49 + self.homeConfigurations 50 + |> lib.filterAttrs (_: home: home._module.specialArgs.osConfig == {}) # Standalone only 51 + |> filterToBuild 52 + |> getOutputInfo (name: ".#homeConfigurations.${name}.activationPackage") 53 + |> spreadBranchOrDefault []; 54 + nixosConfigurations = 55 + self.nixosConfigurations 56 + |> filterToBuild 57 + |> getOutputInfo (name: ".#nixosConfigurations.${name}.config.system.build.toplevel") 58 + |> spreadBranchOrDefault []; 59 + packages = 60 + self.packages 61 + |> filterPerSystemToBuild 62 + |> getPerSystemOutputInfo (system: name: ".#packages.${system}.${name}") 63 + |> spreadBranchOrDefault ["main" "develop"]; 64 + devShells = 65 + self.devShells 66 + |> filterPerSystemToBuild 67 + |> getPerSystemOutputInfo (system: name: ".#devShells.${system}.${name}") 68 + |> spreadBranchOrDefault ["main" "develop"]; 69 + }; 70 + in { 71 + legacyPackages.ciMatrix = 72 + ciInfo 73 + |> builtins.toJSON 74 + |> pkgs.writeText "ci-matrix"; 75 + }; 76 + }
+6
nix/legacyPackages/default.nix
··· 1 + args: { 2 + imports = [ 3 + ./ciMatrix.nix 4 + ./scripts 5 + ]; 6 + }
+18
nix/legacyPackages/scripts/default.nix
··· 1 + args: let 2 + inherit ((import ../../lib args).loaders) loadNonDefault; 3 + in { 4 + # For reasons beyond my understanding, removing an argument from the attribute 5 + # set here stops it from propagating to the loaded files even if the whole 6 + # systemArgs is used as an argument 7 + perSystem = { 8 + self', 9 + pkgs, 10 + ... 11 + } @ systemArgs: { 12 + legacyPackages = let 13 + scripts = loadNonDefault ./. systemArgs; 14 + in 15 + scripts # Provide them at the top level as well so they're more convenient to run 16 + // {inherit scripts;}; 17 + }; 18 + }
+1 -2
nix/lib/config.nix
··· 3 3 filter = prefix: (name: type: type == "regular" && lib.strings.hasPrefix prefix name); 4 4 assetWithPrefix = prefix: 5 5 (builtins.readDir assets) 6 - |> (lib.filterAttrs (filter prefix)) 6 + |> lib.filterAttrs (filter prefix) 7 7 |> builtins.attrNames 8 8 |> builtins.head 9 9 |> (x: assets + /${x}); ··· 19 19 nix = { 20 20 pkgs.config = { 21 21 allowUnfree = true; 22 - permittedInsecurePackages = ["electron-27.3.11" "qtwebengine-5.15.19"]; 23 22 }; 24 23 settings = { 25 24 accept-flake-config = true;
+18
nix/lib/default.nix
··· 20 20 drivers = config.services.xserver.videoDrivers or []; 21 21 in 22 22 builtins.elem "nvidia" drivers; 23 + carapaceSpecFromNuScript = script: let 24 + inherit (script) name system; 25 + inherit (inputs.self.legacyPackages.${system}) scripts pkgs; 26 + in 27 + pkgs.runCommand 28 + "nushell-carapace-spec-${name}" 29 + { 30 + buildInputs = with scripts; [ 31 + nu-generate-carapace-spec 32 + nu-inspect 33 + ]; 34 + } 35 + '' 36 + cat '${lib.getExe script}' \ 37 + | nu-inspect --name '${name}' \ 38 + | nu-generate-carapace-spec \ 39 + > $out 40 + ''; 23 41 }
+34 -30
nix/lib/loaders.nix
··· 21 21 ( 22 22 path 23 23 |> builtins.readDir 24 - |> (builtins.mapAttrs (name: type: 24 + |> builtins.mapAttrs (name: type: 25 25 if (type == "directory" && builtins.pathExists (path + /${name}/default.nix)) 26 26 then (path + /${name}/default.nix) 27 - else (path + /${name}))) 28 - |> (lib.concatMapAttrs (name: path: {${lib.removeSuffix ".nix" name} = path;})) 27 + else (path + /${name})) 28 + |> lib.concatMapAttrs (name: path: {${lib.removeSuffix ".nix" name} = path;}) 29 29 )) 30 - |> (attr: builtins.removeAttrs attr ["default" "default.nix"]) 31 - |> (lib.filterAttrsRecursive (_: path: filterFn path)); 30 + |> (attr: removeAttrs attr ["default" "default.nix"]) 31 + |> lib.filterAttrsRecursive (_: path: filterFn path); 32 32 33 33 # Lists files as paths 34 34 list = { ··· 37 37 recursive ? false, 38 38 }: 39 39 read {inherit path recursive;} 40 - |> (lib.collect builtins.isPath) 41 - |> (builtins.filter (path: 40 + |> lib.collect builtins.isPath 41 + |> builtins.filter (path: 42 42 path 43 - |> builtins.toString 44 - |> filterFn)) 45 - |> (builtins.map ( 43 + |> toString 44 + |> filterFn) 45 + |> map ( 46 46 path: 47 47 path 48 - |> builtins.toString 49 - |> (lib.removeSuffix "/default.nix") 48 + |> toString 49 + |> lib.removeSuffix "/default.nix" 50 50 |> (x: /. + x) 51 - )); 51 + ); 52 52 53 53 # Lists files ending in default.nix 54 54 listDefault = path: ··· 84 84 importDefault = path: args: 85 85 path 86 86 |> listDefault 87 - |> (builtins.map (path: import path args)); 87 + |> map (path: import path args); 88 88 89 89 # Imports modules not ending in default.nix 90 90 importNonDefault = path: args: 91 91 path 92 92 |> listNonDefault 93 - |> (builtins.map (path: import path args)); 93 + |> map (path: import path args); 94 94 95 95 # Loads modules while preserving directory structure 96 96 load = { 97 97 path, 98 98 args, 99 99 filterFn ? (x: true), 100 - loader ? inputs.haumea.lib.loaders.default, 101 100 }: 102 - path 103 - |> (path: 104 - inputs.haumea.lib.load { 105 - inherit loader; 106 - src = path; 107 - inputs = args; 108 - }) 109 - |> (attr: builtins.removeAttrs attr ["default"]); 101 + read { 102 + inherit path filterFn; 103 + recursive = true; 104 + } 105 + |> lib.mapAttrsRecursiveCond 106 + builtins.isAttrs 107 + (_: x: let 108 + mod = import x; 109 + in 110 + if builtins.isAttrs mod 111 + then mod 112 + else mod args) 113 + |> (attr: removeAttrs attr ["default"]); 110 114 111 115 # Loads files ending in default.nix while preserving directory structure 112 116 loadDefault = path: args: 113 117 load { 114 - inherit args path; 118 + inherit path args; 115 119 filterFn = lib.hasSuffix "default.nix"; 116 120 }; 117 121 118 122 # Loads files not ending in default.nix while preserving directory structure 119 123 loadNonDefault = path: args: 120 124 load { 121 - inherit args path; 125 + inherit path args; 122 126 filterFn = path: ! (lib.hasSuffix "default.nix" path); 123 127 }; 124 128 ··· 130 134 inherit path; 131 135 filterFn = lib.hasSuffix "default.nix"; 132 136 }) 133 - |> (builtins.mapAttrs (_: path: 134 - lib.callPackageWith (builtins.removeAttrs pkgs ["root"]) path {})); 137 + |> builtins.mapAttrs (_: path: 138 + lib.callPackageWith (removeAttrs pkgs ["root"]) path {}); 135 139 136 140 # Runs callPackage on files not ending in default.nix, always recursive 137 141 callPackageNonDefault = path: pkgs: ··· 141 145 inherit path; 142 146 filterFn = path: ! (lib.hasSuffix "default.nix" path); 143 147 }) 144 - |> (builtins.mapAttrs (_: path: 145 - lib.callPackageWith (builtins.removeAttrs pkgs ["root"]) path {})); 148 + |> builtins.mapAttrs (_: path: 149 + lib.callPackageWith (removeAttrs pkgs ["root"]) path {}); 146 150 }
+2 -2
nix/lib/storage/default.nix
··· 4 4 5 5 mkSafePath = path: 6 6 path 7 - |> (lib.strings.removePrefix "/") 8 - |> (builtins.replaceStrings ["/"] ["-"]); 7 + |> lib.strings.removePrefix "/" 8 + |> builtins.replaceStrings ["/"] ["-"]; 9 9 }
nix/modules/default.nix nix/flakeModules/default.nix
+3 -3
nix/modules/ezConfigs.nix nix/flakeModules/ezConfigs.nix
··· 17 17 hosts = 18 18 configurationsDirectory 19 19 |> builtins.readDir 20 - |> (lib.filterAttrs (_: type: type == "directory")) 21 - |> (lib.concatMapAttrs (name: _: { 20 + |> lib.filterAttrs (_: type: type == "directory") 21 + |> lib.concatMapAttrs (name: _: { 22 22 ${name}.userHomeModules = ["lpchaim"]; 23 - })); 23 + }); 24 24 }; 25 25 home = { 26 26 configurationsDirectory = "${root}/home/configs";
+1 -7
nix/modules/gitHooks.nix nix/flakeModules/gitHooks.nix
··· 3 3 inputs.git-hooks-nix.flakeModule 4 4 ]; 5 5 6 - perSystem = { 7 - config, 8 - system, 9 - pkgs, 10 - self', 11 - ... 12 - }: let 6 + perSystem = {self', ...}: let 13 7 inherit (self'.legacyPackages) pkgs; 14 8 in { 15 9 pre-commit = {
nix/modules/just.nix nix/flakeModules/just.nix
+2
nix/nixos/configs/desktop/default.nix
··· 7 7 ]; 8 8 9 9 my = { 10 + ci.build = true; 10 11 gaming.enable = true; 11 12 networking.tailscale.trusted = true; 12 13 profiles = { ··· 15 16 hardware.rgb = true; 16 17 de.gnome = true; 17 18 de.hyprland = true; 19 + graphical = true; 18 20 }; 19 21 }; 20 22
+2
nix/nixos/configs/laptop/default.nix
··· 7 7 ]; 8 8 9 9 my = { 10 + ci.build = true; 10 11 gaming.steam.enable = true; 11 12 networking.tailscale.trusted = true; 12 13 profiles = { ··· 14 15 hardware.cpu.intel = true; 15 16 de.gnome = true; 16 17 de.hyprland = true; 18 + graphical = true; 17 19 }; 18 20 }; 19 21
+4 -3
nix/nixos/configs/raspberrypi/default.nix
··· 10 10 ./storage.nix 11 11 ]; 12 12 13 - my.profiles.graphical = false; 14 - my.security.u2f.relaxed = true; 13 + my = { 14 + ci.build = true; 15 + security.u2f.relaxed = true; 16 + }; 15 17 16 - hardware.graphics.enable = false; 17 18 boot.kernelPackages = pkgs.linuxPackages_latest; 18 19 nixpkgs.hostPlatform = "aarch64-linux"; 19 20
+2 -1
nix/nixos/configs/steamdeck/default.nix
··· 17 17 gaming.enable = false; 18 18 gaming.steam.enable = true; 19 19 security.u2f.relaxed = true; 20 + kernel.enable = false; 20 21 profiles = { 21 - kernel = false; 22 22 de.gnome = true; 23 + graphical = true; 23 24 }; 24 25 }; 25 26
+10
nix/nixos/modules/ci/default.nix
··· 1 + {lib, ...}: { 2 + options.my.ci = { 3 + build = lib.mkEnableOption "building on CI pipeline"; 4 + branches = lib.mkOption { 5 + description = "Branches to build for"; 6 + type = with lib.types; listOf singleLineStr; 7 + default = ["main"]; 8 + }; 9 + }; 10 + }
+11 -8
nix/nixos/modules/default.nix
··· 22 22 ++ [ 23 23 "${self}/nix/shared" 24 24 ./boot 25 + ./ci 25 26 ./desktop 26 27 ./gaming 27 28 ./hardware 28 29 ./kdeconnect 30 + ./kernel 29 31 ./locale 30 32 ./networking 31 33 ./nix 32 - ./profiles 34 + ./pipewire 33 35 ./programs 34 36 ./secrets 35 37 ./secureboot ··· 39 41 ./syncthing 40 42 ./tailscale 41 43 ./theming 44 + ./users 45 + ./virtualization 46 + ./wayland 42 47 ./zram 48 + ../profiles 43 49 ]; 44 50 45 51 my = { 52 + kernel.enable = mkDefault true; 46 53 networking.tailscale.enable = mkDefault true; 47 54 nix.enable = mkDefault true; 55 + pipewire.enable = mkDefault true; 48 56 security.enable = mkDefault true; 57 + ssh.enable = mkDefault true; 49 58 theming.enable = mkDefault true; 59 + users.enable = mkDefault true; 50 60 zram.enable = mkDefault true; 51 - profiles = { 52 - graphical = mkDefault true; 53 - wayland = mkDefault config.my.profiles.graphical; 54 - pipewire = mkDefault true; 55 - kernel = mkDefault true; 56 - users = mkDefault true; 57 - }; 58 61 }; 59 62 60 63 environment.systemPackages = with pkgs; [
+4 -3
nix/nixos/modules/gaming/obs.nix
··· 10 10 enable = 11 11 lib.mkEnableOption "OBS" 12 12 // {default = config.my.gaming.enable;}; 13 - enableVirtualWebcam = lib.mkEnableOption "OBS virtual webcam"; 13 + enableVirtualCamera = lib.mkEnableOption "OBS virtual webcam"; 14 14 }; 15 15 16 16 config = lib.mkMerge [ 17 17 (lib.mkIf cfg.enable { 18 18 programs.obs-studio = { 19 19 enable = true; 20 - enableVirtualCamera = true; 21 20 plugins = with pkgs.obs-studio-plugins; [ 22 21 input-overlay 23 22 obs-pipewire-audio-capture ··· 28 27 ]; 29 28 }; 30 29 }) 31 - (lib.mkIf (cfg.enable && cfg.enableVirtualWebcam) { 30 + (lib.mkIf (cfg.enable && cfg.enableVirtualCamera) { 31 + programs.obs-studio.enableVirtualCamera = true; 32 + 32 33 boot.extraModulePackages = with config.boot.kernelPackages; [ 33 34 v4l2loopback 34 35 ];
-7
nix/nixos/modules/profiles/de/default.nix
··· 1 - { 2 - imports = [ 3 - ./gnome.nix 4 - ./hyprland.nix 5 - ./plasma.nix 6 - ]; 7 - }
nix/nixos/modules/profiles/de/gnome.nix nix/nixos/profiles/de/gnome.nix
-9
nix/nixos/modules/profiles/de/hyprland.nix nix/nixos/profiles/de/hyprland.nix
··· 9 9 in { 10 10 options.my.profiles.de.hyprland = lib.mkEnableOption "hyprland profile"; 11 11 config = lib.mkIf cfg { 12 - my.profiles = { 13 - pipewire = true; 14 - wayland = true; 15 - }; 16 - 17 12 programs.hyprland = { 18 13 enable = true; 19 14 xwayland.enable = true; 20 - }; 21 - hardware.graphics = { 22 - enable = true; 23 - enable32Bit = true; 24 15 }; 25 16 security = { 26 17 pam.services.hyprlock = {};
nix/nixos/modules/profiles/de/plasma.nix nix/nixos/profiles/de/plasma.nix
-13
nix/nixos/modules/profiles/default.nix
··· 1 - { 2 - imports = [ 3 - ./de 4 - ./formfactor 5 - ./graphical.nix 6 - ./hardware 7 - ./kernel.nix 8 - ./pipewire.nix 9 - ./users.nix 10 - ./virtualisation.nix 11 - ./wayland.nix 12 - ]; 13 - }
nix/nixos/modules/profiles/formfactor/default.nix nix/nixos/profiles/formfactor/default.nix
+3 -2
nix/nixos/modules/profiles/formfactor/desktop.nix nix/nixos/profiles/formfactor/desktop.nix
··· 9 9 in { 10 10 options.my.profiles.formfactor.desktop = lib.mkEnableOption "desktop profile"; 11 11 config = lib.mkIf cfg { 12 - my.gaming.obs.enableVirtualWebcam = true; 12 + my = { 13 + gaming.obs.enableVirtualCamera = true; 14 + }; 13 15 14 16 environment.systemPackages = with pkgs; [ 15 17 piper ··· 23 25 24 26 boot.kernelPackages = pkgs.linuxPackages_zen; 25 27 26 - hardware.graphics.enable = true; 27 28 hardware.keyboard.qmk.enable = true; 28 29 29 30 networking.firewall.allowedTCPPorts = [5900]; # Default VNC port
+2 -1
nix/nixos/modules/profiles/formfactor/laptop.nix nix/nixos/profiles/formfactor/laptop.nix
··· 8 8 in { 9 9 options.my.profiles.formfactor.laptop = lib.mkEnableOption "laptop profile"; 10 10 config = lib.mkIf cfg { 11 - hardware.graphics.enable = true; 12 11 hardware.sensor.iio.enable = true; 13 12 14 13 powerManagement.enable = true; 14 + 15 + programs.iio-hyprland.enable = config.programs.hyprland.enable; 15 16 16 17 services = { 17 18 auto-cpufreq = {
+4
nix/nixos/modules/profiles/graphical.nix nix/nixos/profiles/graphical.nix
··· 7 7 in { 8 8 options.my.profiles.graphical = lib.mkEnableOption "graphical profile"; 9 9 config = lib.mkIf cfg { 10 + my = { 11 + wayland.enable = true; 12 + }; 13 + 10 14 boot.plymouth.enable = true; 11 15 hardware = { 12 16 graphics.enable = true;
nix/nixos/modules/profiles/hardware/cpu/default.nix nix/nixos/profiles/hardware/cpu/default.nix
nix/nixos/modules/profiles/hardware/cpu/intel.nix nix/nixos/profiles/hardware/cpu/intel.nix
nix/nixos/modules/profiles/hardware/default.nix nix/nixos/profiles/hardware/default.nix
nix/nixos/modules/profiles/hardware/gpu/default.nix nix/nixos/profiles/hardware/gpu/default.nix
nix/nixos/modules/profiles/hardware/gpu/nvidia.nix nix/nixos/profiles/hardware/gpu/nvidia.nix
nix/nixos/modules/profiles/hardware/rgb.nix nix/nixos/profiles/hardware/rgb.nix
+3 -3
nix/nixos/modules/profiles/kernel.nix nix/nixos/modules/kernel/default.nix
··· 4 4 pkgs, 5 5 ... 6 6 }: let 7 - cfg = config.my.profiles.kernel; 7 + cfg = config.my.kernel; 8 8 in { 9 - options.my.profiles.kernel = lib.mkEnableOption "kernel profile"; 10 - config = lib.mkIf cfg { 9 + options.my.kernel.enable = lib.mkEnableOption "kernel tweaks"; 10 + config = lib.mkIf cfg.enable { 11 11 boot = lib.mkIf (!(config ? jovian)) { 12 12 kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; 13 13 kernelModules = [
+3 -3
nix/nixos/modules/profiles/pipewire.nix nix/nixos/modules/pipewire/default.nix
··· 4 4 lib, 5 5 ... 6 6 }: let 7 - cfg = config.my.profiles.pipewire; 7 + cfg = config.my.pipewire; 8 8 in { 9 - options.my.profiles.pipewire = lib.mkEnableOption "pipewire profile"; 10 - config = lib.mkIf cfg { 9 + options.my.pipewire.enable = lib.mkEnableOption "pipewire tweaks"; 10 + config = lib.mkIf cfg.enable { 11 11 hardware.enableAllFirmware = true; 12 12 security.rtkit.enable = true; 13 13 services.pipewire = {
+3 -3
nix/nixos/modules/profiles/users.nix nix/nixos/modules/users/default.nix
··· 10 10 }: let 11 11 inherit (inputs.self.lib.config) name shell; 12 12 userName = name.user; 13 - cfg = config.my.profiles.users; 13 + cfg = config.my.users; 14 14 in { 15 - options.my.profiles.users = lib.mkEnableOption "users profile"; 16 - config = lib.mkIf cfg { 15 + options.my.users.enable = lib.mkEnableOption "user tweaks"; 16 + config = lib.mkIf cfg.enable { 17 17 users = let 18 18 defaults = { 19 19 isNormalUser = true;
-21
nix/nixos/modules/profiles/virtualisation.nix
··· 1 - { 2 - config, 3 - lib, 4 - pkgs, 5 - ... 6 - }: let 7 - cfg = config.my.profiles.virtualisation; 8 - in { 9 - options.my.profiles.virtualisation = lib.mkEnableOption "virtualisation profile"; 10 - config = lib.mkIf cfg { 11 - environment.systemPackages = with pkgs; [ 12 - distrobox 13 - ]; 14 - virtualisation = { 15 - docker = { 16 - enable = true; 17 - enableOnBoot = true; 18 - }; 19 - }; 20 - }; 21 - }
+10 -5
nix/nixos/modules/profiles/wayland.nix nix/nixos/modules/wayland/default.nix
··· 6 6 pkgs, 7 7 ... 8 8 }: let 9 - cfg = config.my.profiles.wayland; 9 + cfg = config.my.wayland; 10 10 in { 11 - options.my.profiles.wayland = 12 - lib.mkEnableOption "wayland profile" 13 - // {default = config.my.profiles.graphical;}; 14 - config = lib.mkIf cfg { 11 + options.my.wayland.enable = lib.mkEnableOption "wayland tweaks"; 12 + config = lib.mkIf cfg.enable { 13 + assertions = [ 14 + { 15 + assertion = config.hardware.graphics.enable; 16 + message = "config.my.wayland.enable is useless without graphics"; 17 + } 18 + ]; 19 + 15 20 services.displayManager.gdm.wayland = true; 16 21 programs.xwayland.enable = true; 17 22
-6
nix/nixos/modules/security/default.nix
··· 58 58 }; 59 59 }; 60 60 }; 61 - programs = { 62 - gnupg.agent = { 63 - enable = true; 64 - enableSSHSupport = true; 65 - }; 66 - }; 67 61 services = { 68 62 pcscd.enable = true; 69 63 udev = {
+2
nix/nixos/modules/ssh/default.nix
··· 13 13 allowSFTP = true; 14 14 openFirewall = true; 15 15 settings = { 16 + AddKeysToAgent = lib.mkDefault true; 17 + AllowAgentForwarding = lib.mkDefault false; 16 18 PasswordAuthentication = lib.mkDefault false; 17 19 PermitRootLogin = lib.mkDefault "no"; 18 20 };
+3 -2
nix/nixos/modules/tailscale/default.nix
··· 39 39 ++ lib.optionals cfg.trusted ["trusted"]; 40 40 formattedTags = 41 41 tags 42 - |> (map (it: "tag:${it}")) 43 - |> (builtins.concatStringsSep ","); 42 + |> map (it: "tag:${it}") 43 + |> builtins.concatStringsSep ","; 44 44 in { 45 45 inherit (cfg) authKeyParameters; 46 46 enable = true; ··· 60 60 openFirewall = true; 61 61 useRoutingFeatures = "both"; 62 62 }; 63 + systemd.services.tailscaled.restartIfChanged = false; 63 64 }; 64 65 }
+21
nix/nixos/modules/virtualization/default.nix
··· 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 6 + }: let 7 + cfg = config.my.virtualisation; 8 + in { 9 + options.my.virtualisation.enable = lib.mkEnableOption "virtualisation tweaks"; 10 + config = lib.mkIf cfg.enable { 11 + environment.systemPackages = with pkgs; [ 12 + distrobox 13 + ]; 14 + virtualisation = { 15 + docker = { 16 + enable = true; 17 + enableOnBoot = true; 18 + }; 19 + }; 20 + }; 21 + }
+21
nix/nixos/profiles/de/default.nix
··· 1 + { 2 + config, 3 + lib, 4 + ... 5 + }: let 6 + cfg = config.my.profiles.de; 7 + in { 8 + assertions = 9 + cfg 10 + |> lib.filterAttrs (_: enabled: enabled) 11 + |> lib.mapAttrsToList (name: _: { 12 + assertion = config.hardware.graphics.enable; 13 + message = "config.my.profiles.de.${name} is useless without graphics"; 14 + }); 15 + 16 + imports = [ 17 + ./gnome.nix 18 + ./hyprland.nix 19 + ./plasma.nix 20 + ]; 21 + }
+8
nix/nixos/profiles/default.nix
··· 1 + { 2 + imports = [ 3 + ./de 4 + ./formfactor 5 + ./graphical.nix 6 + ./hardware 7 + ]; 8 + }
+31 -1
nix/overlays/lix.nix
··· 1 1 # As instructed on https://lix.systems/add-to-config/ 2 - {inputs, ...}: final: prev: { 2 + {...}: final: prev: let 3 + inherit (prev) lib; 4 + in { 3 5 inherit 4 6 (prev.lixPackageSets.stable) 5 7 nixpkgs-review ··· 7 9 nix-fast-build 8 10 colmena 9 11 ; 12 + 13 + # Adapted from https://github.com/nix-community/nixd/issues/704#issuecomment-3688024705 14 + nixd-lix = prev.symlinkJoin { 15 + name = "nixd-lix"; 16 + 17 + inherit (prev.nixd) meta; 18 + 19 + paths = [prev.nixd]; 20 + 21 + preferLocalBuild = true; 22 + 23 + nativeBuildInputs = [ 24 + prev.makeWrapper 25 + ]; 26 + 27 + postBuild = '' 28 + wrapProgram $out/bin/nixd \ 29 + --prefix PATH ":" ${lib.makeBinPath [prev.nix]} \ 30 + --run ${ 31 + lib.escapeShellArg 32 + # sh 33 + '' 34 + export NIX_CONFIG="$(${lib.getExe prev.gnused} -E 's/ pipe-operator( |$)/ pipe-operators\1/' /etc/nix/nix.conf) 35 + $NIX_CONFIG" 36 + '' 37 + } 38 + ''; 39 + }; 10 40 }
+5
nix/overlays/packages.nix
··· 1 + {inputs, ...}: final: prev: let 2 + inherit (inputs) self; 3 + inherit (prev.stdenv.hostPlatform) system; 4 + in 5 + self.packages.${system} or {}
+12 -11
nix/packages/default.nix
··· 1 - {...}: let 2 - inherit (import ../lib) mkPkgs; 1 + args: let 2 + inherit ((import ../lib args).loaders) callPackageDefault callPackageNonDefault; 3 3 in { 4 4 perSystem = { 5 5 inputs', 6 6 self', 7 7 lib, 8 - system, 9 8 ... 10 9 }: let 11 10 inherit (self'.legacyPackages) pkgs; 11 + callPackage = lib.callPackageWith pkgs; 12 12 in { 13 - packages = let 14 - callPackage = lib.callPackageWith pkgs; 15 - in { 16 - lichen = 17 - callPackage 18 - ./lichen/package.nix 19 - {inherit (inputs'.nixpkgs-hare.legacyPackages) hare hareHook;}; 20 - }; 13 + packages = 14 + (callPackageDefault ./. pkgs) 15 + // (callPackageNonDefault ./. pkgs) 16 + // { 17 + lichen = 18 + callPackage 19 + ./lichen/package.nix 20 + {inherit (inputs'.nixpkgs-hare.legacyPackages) hare hareHook;}; 21 + }; 21 22 }; 22 23 }
+2
nix/packages/lichen/package.nix
··· 83 83 platforms = lib.platforms.unix; 84 84 mainProgram = "lcc"; 85 85 }; 86 + 87 + passthru.my.ci.buildFor = ["x86_64-linux"]; 86 88 })
-15
nix/scripts/default.nix
··· 1 - args: let 2 - inherit ((import ../lib args).loaders) loadNonDefault; 3 - in { 4 - perSystem = { 5 - self', 6 - pkgs, 7 - ... 8 - } @ systemArgs: { 9 - legacyPackages = let 10 - scripts = loadNonDefault ./. systemArgs; 11 - in 12 - scripts # Provide them at the top level as well so they're more convenient to run 13 - // {inherit scripts;}; 14 - }; 15 - }
nix/scripts/lastdl.nix nix/legacyPackages/scripts/lastdl.nix
nix/scripts/leastspaces.nix nix/legacyPackages/scripts/leastspaces.nix
nix/scripts/nu-generate-carapace-spec.nix nix/legacyPackages/scripts/nu-generate-carapace-spec.nix
nix/scripts/nu-generate-manpage.nix nix/legacyPackages/scripts/nu-generate-manpage.nix
nix/scripts/nu-inspect.nix nix/legacyPackages/scripts/nu-inspect.nix
nix/scripts/nu-parse-help.nix nix/legacyPackages/scripts/nu-parse-help.nix
-1
nix/shells/default.nix
··· 9 9 10 10 perSystem = { 11 11 config, 12 - pkgs, 13 12 self', 14 13 ... 15 14 }: {
+2
nix/shells/nix.nix
··· 2 2 perSystem = {pkgs, ...}: { 3 3 make-shells.nix = { 4 4 additionalArguments.meta.description = "Nix development environment"; 5 + additionalArguments.passthru.my.ci.buildFor = ["x86_64-linux"]; 5 6 packages = with pkgs; [ 6 7 age 7 8 alejandra 8 9 nil 10 + nixd 9 11 nixpkgs-fmt 10 12 sops 11 13 ssh-to-age
+2 -2
nix/shells/rust.nix
··· 4 4 additionalArguments.meta.description = "For building Rust projects"; 5 5 packages = with pkgs; [ 6 6 cargo 7 + libx11 7 8 openssl 8 9 pkg-config 10 + rust-analyzer 9 11 rustc 10 12 rustfmt 11 13 rustPackages.clippy 12 - rust-analyzer 13 14 vscode-extensions.vadimcn.vscode-lldb 14 - xorg.libX11 15 15 ]; 16 16 env.RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc; 17 17 };