diff --git a/.forgejo/workflows/update-inputs.yml b/.forgejo/workflows/update-inputs.yml deleted file mode 100644 index c63d914a..00000000 --- a/.forgejo/workflows/update-inputs.yml +++ /dev/null @@ -1,90 +0,0 @@ -name: update-inputs - -on: - schedule: - - cron: "0 6 * * 2,5" # Tue & Fri - workflow_dispatch: - -jobs: - update-flake-lock: - runs-on: nixos - - env: - BASE_BRANCH: main - BRANCH_PREFIX: flake-lock-update - FJ_URL: https://code.oliverdavies.uk - GIT_AUTHOR_EMAIL: flake-bot@local - GIT_AUTHOR_NAME: flake-bot - GIT_COMMITTER_EMAIL: ${{ env.GIT_AUTHOR_EMAIL }} - GIT_COMMITTER_NAME: ${{ env.GIT_AUTHOR_NAME }} - - steps: - - uses: actions/checkout@v3 - with: { fetch-depth: 0 } - - - name: Update inputs & commit - id: bump - run: | - set -o errexit - set -o nounset - set -o pipefail - - BRANCH="${BRANCH_PREFIX}-${GITHUB_RUN_ID}" - git switch -c "$BRANCH" - - BEFORE=$(git rev-parse HEAD) - - # Nix updates inputs and commits if needed - nix flake update --commit-lock-file - - AFTER=$(git rev-parse HEAD) - if [ "$BEFORE" = "$AFTER" ]; then - echo "changed=false" >> "$GITHUB_OUTPUT" - exit 0 - fi - - # ── Grab commit info ──────────────────────────────────────────────── - # Full message - COMMIT_RAW=$(git log -1 --pretty=%B) - - # First line is the short summary; we keep lines AFTER the first blank - COMMIT_BODY=$(printf '%s\n' "$COMMIT_RAW" \ - | sed '1,/^$/d' \ - | sed 's/^• */* /') # nicer Markdown bullet - - # Title becomes first line of the PR - COMMIT_TITLE=$(printf '%s\n' "$COMMIT_RAW" | head -n1) - - # JSON-escape the body so \n etc. are valid JSON - BODY_JSON=$(printf '%s' "$COMMIT_BODY" | jq -Rs .) - - echo "changed=true" >> "$GITHUB_OUTPUT" - echo "branch=$BRANCH" >> "$GITHUB_OUTPUT" - echo "title=$COMMIT_TITLE" >> "$GITHUB_OUTPUT" - echo "body_json=$BODY_JSON" >> "$GITHUB_OUTPUT" - - git push -u origin "$BRANCH" - - - name: Open pull-request - if: steps.bump.outputs.changed == 'true' - env: - TOKEN: ${{ secrets.FLAKE_UPDATE_PAT }} - BRANCH: ${{ steps.bump.outputs.branch }} - TITLE: ${{ steps.bump.outputs.title }} - BODY_JSON: ${{ steps.bump.outputs.body_json }} - run: | - set -o errexit - set -o nounset - - OWNER="${GITHUB_REPOSITORY%%/*}" - REPO="${GITHUB_REPOSITORY#*/}" - - curl -fSs -X POST "$FJ_URL/api/v1/repos/$OWNER/$REPO/pulls" \ - -H "Authorization: token $TOKEN" \ - --json '{ - "base": "'"$BASE_BRANCH"'", - "body": '"$BODY_JSON"', - "draft": false, - "head": "'"$BRANCH"'", - "title": "'"$TITLE"'" - }' diff --git a/.mailmap b/.mailmap index 6350744e..0de08bbe 100644 --- a/.mailmap +++ b/.mailmap @@ -4,4 +4,3 @@ Oliver Davies Oliver Davies Oliver Davies Oliver Davies -Oliver Davies diff --git a/README.md b/README.md deleted file mode 100644 index 7f398fb1..00000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# nix-config - -Originally my `dotfiles` repository, this repository contains my NixOS and Home Manager-based configurations for my personal laptop (`t480`) and home server/homelab (`nixedo`). diff --git a/flake.lock b/flake.lock index ce5e0080..a208c795 100644 --- a/flake.lock +++ b/flake.lock @@ -4,17 +4,15 @@ "inputs": { "darwin": "darwin", "home-manager": "home-manager", - "nixpkgs": [ - "nixpkgs" - ], + "nixpkgs": "nixpkgs", "systems": "systems" }, "locked": { - "lastModified": 1754433428, - "narHash": "sha256-NA/FT2hVhKDftbHSwVnoRTFhes62+7dxZbxj5Gxvghs=", + "lastModified": 1750173260, + "narHash": "sha256-9P1FziAwl5+3edkfFcr5HeGtQUtrSdk/MksX39GieoA=", "owner": "ryantm", "repo": "agenix", - "rev": "9edb1787864c4f59ae5074ad498b6272b3ec308d", + "rev": "531beac616433bac6f9e2a19feb8e99a22a66baf", "type": "github" }, "original": { @@ -23,38 +21,6 @@ "type": "github" } }, - "bop-scripts": { - "flake": false, - "locked": { - "lastModified": 1756931648, - "narHash": "sha256-bfAmJ1IY0B6eNbJvoWkUMQ7Ya4ShrIoVSdQrnE/cn40=", - "owner": "breadonpenguins", - "repo": "scripts", - "rev": "d04bcbe63176e623e1ce8edc4c3840c506a28d96", - "type": "github" - }, - "original": { - "owner": "breadonpenguins", - "repo": "scripts", - "type": "github" - } - }, - "conf-vim": { - "flake": false, - "locked": { - "lastModified": 1507549264, - "narHash": "sha256-AjiTJsoim0BAnyfqk1IQzNsa6jhFM2+A66E7q9sJqz0=", - "owner": "tjdevries", - "repo": "conf.vim", - "rev": "a716df0fd5d7ba558c07dac2e07f05d5eba11afb", - "type": "github" - }, - "original": { - "owner": "tjdevries", - "repo": "conf.vim", - "type": "github" - } - }, "darwin": { "inputs": { "nixpkgs": [ @@ -77,27 +43,6 @@ "type": "github" } }, - "devshell": { - "inputs": { - "nixpkgs": [ - "git-repo-updater", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1741473158, - "narHash": "sha256-kWNaq6wQUbUMlPgw8Y+9/9wP0F8SHkjy24/mN3UAppg=", - "owner": "numtide", - "repo": "devshell", - "rev": "7c9e793ebe66bcba8292989a68c0419b737a22a0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "disko": { "inputs": { "nixpkgs": [ @@ -105,11 +50,11 @@ ] }, "locked": { - "lastModified": 1756733629, - "narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=", + "lastModified": 1750903843, + "narHash": "sha256-Ng9+f0H5/dW+mq/XOKvB9uwvGbsuiiO6HrPdAcVglCs=", "owner": "nix-community", "repo": "disko", - "rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1", + "rev": "83c4da299c1d7d300f8c6fd3a72ac46cb0d59aae", "type": "github" }, "original": { @@ -118,32 +63,35 @@ "type": "github" } }, - "edit-alternate-vim": { + "flake-compat": { "flake": false, "locked": { - "lastModified": 1635180789, - "narHash": "sha256-mEKnqYAhgrdxPRoKf4S4yYecdFIHGg8bDxpqPuC1+S4=", - "owner": "tjdevries", - "repo": "edit_alternate.vim", - "rev": "ef3019115d9bb7ffd691d2859eda213dd99e0b0a", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { - "owner": "tjdevries", - "repo": "edit_alternate.vim", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, "flake-parts": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib" + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] }, "locked": { - "lastModified": 1756770412, - "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", + "lastModified": 1749398372, + "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "4524271976b625a4a605beefd893f270620fd751", + "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", "type": "github" }, "original": { @@ -191,33 +139,6 @@ "type": "github" } }, - "git-repo-updater": { - "inputs": { - "devshell": "devshell", - "flake-parts": [ - "flake-parts" - ], - "import-tree": [ - "import-tree" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1757018109, - "narHash": "sha256-KfRzBPOOM5cf8mFVeWjV7TGa3p+ul/flxnUdwGW4Sds=", - "ref": "refs/heads/main", - "rev": "63235768261976efe0d9c825e69c44fff8c80e5d", - "revCount": 1, - "type": "git", - "url": "https://code.oliverdavies.uk/opdavies/git-repo-updater" - }, - "original": { - "type": "git", - "url": "https://code.oliverdavies.uk/opdavies/git-repo-updater" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -246,11 +167,11 @@ ] }, "locked": { - "lastModified": 1756991914, - "narHash": "sha256-4ve/3ah5H/SpL2m3qmZ9GU+VinQYp2MN1G7GamimTds=", + "lastModified": 1751336185, + "narHash": "sha256-ptnVr2x+sl7cZcTuGx/0BOE2qCAIYHTcgfA+/h60ml0=", "owner": "nix-community", "repo": "home-manager", - "rev": "b08f8737776f10920c330657bee8b95834b7a70f", + "rev": "96354906f58464605ff81d2f6c2ea23211cbf051", "type": "github" }, "original": { @@ -260,21 +181,6 @@ "type": "github" } }, - "import-tree": { - "locked": { - "lastModified": 1752730890, - "narHash": "sha256-GES8fapSLGz36MMPRVNkSUWXUTtqvGQNXHjRmRLfJUY=", - "owner": "vic", - "repo": "import-tree", - "rev": "6ebb8cb87987b20264c09296166543fd3761d274", - "type": "github" - }, - "original": { - "owner": "vic", - "repo": "import-tree", - "type": "github" - } - }, "ixx": { "inputs": { "flake-utils": [ @@ -289,47 +195,27 @@ ] }, "locked": { - "lastModified": 1754860581, - "narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=", + "lastModified": 1748294338, + "narHash": "sha256-FVO01jdmUNArzBS7NmaktLdGA5qA3lUMJ4B7a05Iynw=", "owner": "NuschtOS", "repo": "ixx", - "rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281", + "rev": "cc5f390f7caf265461d4aab37e98d2292ebbdb85", "type": "github" }, "original": { "owner": "NuschtOS", - "ref": "v0.1.1", + "ref": "v0.0.8", "repo": "ixx", "type": "github" } }, - "nix-index-database": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1756612744, - "narHash": "sha256-/glV6VAq8Va3ghIbmhET3S1dzkbZqicsk5h+FtvwiPE=", - "owner": "nix-community", - "repo": "nix-index-database", - "rev": "3fe768e1f058961095b4a0d7a2ba15dc9736bdc6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nix-index-database", - "type": "github" - } - }, "nixos-hardware": { "locked": { - "lastModified": 1756925795, - "narHash": "sha256-kUb5hehaikfUvoJDEc7ngiieX88TwWX/bBRX9Ar6Tac=", + "lastModified": 1750837715, + "narHash": "sha256-2m1ceZjbmgrJCZ2PuQZaK4in3gcg3o6rZ7WK6dr5vAA=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "ba6fab29768007e9f2657014a6e134637100c57d", + "rev": "98236410ea0fe204d0447149537a924fb71a6d4f", "type": "github" }, "original": { @@ -339,44 +225,49 @@ "type": "github" } }, - "nixpkgs": { + "nixos-wsl": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs_2" + }, "locked": { - "lastModified": 1756787288, - "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", + "lastModified": 1749574455, + "narHash": "sha256-fm2/8KPOYvvIAnNVtjDlTt/My00lIbZQ+LMrfQIWVzs=", + "owner": "nix-community", + "repo": "NixOS-WSL", + "rev": "917af390377c573932d84b5e31dd9f2c1b5c0f09", "type": "github" }, "original": { - "owner": "nixos", + "owner": "nix-community", + "ref": "main", + "repo": "NixOS-WSL", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1745391562, + "narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7", + "type": "github" + }, + "original": { + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1754788789, - "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, "nixpkgs-stable": { "locked": { - "lastModified": 1751274312, - "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", + "lastModified": 1751048012, + "narHash": "sha256-MYbotu4UjWpTsq01wglhN5xDRfZYLFtNk7SBY0BcjkU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", + "rev": "a684c58d46ebbede49f280b653b9e56100aa3877", "type": "github" }, "original": { @@ -386,11 +277,57 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1749173751, + "narHash": "sha256-ENY3y3v6S9ZmLDDLI3LUT8MXmfXg/fSt2eA4GCnMVCE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ed29f002b6d6e5e7e32590deb065c34a31dc3e91", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1751271578, + "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1751271578, + "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixvim": { "inputs": { - "flake-parts": [ - "flake-parts" - ], + "flake-parts": "flake-parts", "nixpkgs": [ "nixpkgs" ], @@ -398,11 +335,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1756946299, - "narHash": "sha256-N4PjGA0rittpNZGscKPel+mr/dMcKF73j0yr4rbG3T0=", + "lastModified": 1751144320, + "narHash": "sha256-KJsKiGfkfXFB23V26NQ1p+UPsexI6NKtivnrwSlWWdQ=", "owner": "nix-community", "repo": "nixvim", - "rev": "63496f00c681b3e200bd17878a43ec68b7139a66", + "rev": "ceb52aece5d571b37096945c2815604195a04eb4", "type": "github" }, "original": { @@ -414,16 +351,15 @@ "nur": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": [ - "nixpkgs" - ] + "nixpkgs": "nixpkgs_4", + "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1757050467, - "narHash": "sha256-Rps0Ga0g/TdY49rR2ZRBsdBYybSzPccEsaI9IvwuE98=", + "lastModified": 1751345783, + "narHash": "sha256-83GecBM/Tli7m+tr47S8pKLcAz2HihbXaVRosQiEKSg=", "owner": "nix-community", "repo": "NUR", - "rev": "985abf0197c75dd64c24691a7e5e0acf308d7f20", + "rev": "50fd93fb7d46e97b5dc30909754f597c2b703a29", "type": "github" }, "original": { @@ -442,11 +378,11 @@ ] }, "locked": { - "lastModified": 1755555503, - "narHash": "sha256-WiOO7GUOsJ4/DoMy2IC5InnqRDSo2U11la48vCCIjjY=", + "lastModified": 1749730855, + "narHash": "sha256-L3x2nSlFkXkM6tQPLJP3oCBMIsRifhIDPMQQdHO5xWo=", "owner": "NuschtOS", "repo": "search", - "rev": "6f3efef888b92e6520f10eae15b86ff537e1d2ea", + "rev": "8dfe5879dd009ff4742b668d9c699bc4b9761742", "type": "github" }, "original": { @@ -458,58 +394,14 @@ "root": { "inputs": { "agenix": "agenix", - "bop-scripts": "bop-scripts", - "conf-vim": "conf-vim", "disko": "disko", - "edit-alternate-vim": "edit-alternate-vim", - "flake-parts": "flake-parts", - "git-repo-updater": "git-repo-updater", "home-manager": "home-manager_2", - "import-tree": "import-tree", - "nix-index-database": "nix-index-database", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs", + "nixos-wsl": "nixos-wsl", + "nixpkgs": "nixpkgs_3", "nixpkgs-stable": "nixpkgs-stable", "nixvim": "nixvim", - "nur": "nur", - "rwxrob-dot": "rwxrob-dot", - "standard-vim": "standard-vim", - "vim-heritage": "vim-heritage", - "vim-textobj-xmlattr": "vim-textobj-xmlattr", - "voidrice": "voidrice", - "zet": "zet" - } - }, - "rwxrob-dot": { - "flake": false, - "locked": { - "lastModified": 1751898094, - "narHash": "sha256-kGpHL2l9p/yOtmG+AZvOb0Y5mH1d+Zoh2dd5N3Xjizc=", - "owner": "rwxrob", - "repo": "dot", - "rev": "90794c77061f270078e847af45c376610768c6e2", - "type": "github" - }, - "original": { - "owner": "rwxrob", - "repo": "dot", - "type": "github" - } - }, - "standard-vim": { - "flake": false, - "locked": { - "lastModified": 1539613748, - "narHash": "sha256-9VwkvV1Dv6cE4uDkPp36DozjWJOclDR883yDMYw000E=", - "owner": "tjdevries", - "repo": "standard.vim", - "rev": "b333ef9a9cf6cf66536deda017a542843613fa75", - "type": "github" - }, - "original": { - "owner": "tjdevries", - "repo": "standard.vim", - "type": "github" + "nur": "nur" } }, "systems": { @@ -557,69 +449,26 @@ "type": "github" } }, - "vim-heritage": { - "flake": false, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1716350150, - "narHash": "sha256-YzqP2+Go8bW3heFyzzcS/91LrMkwjpZ89+ptrjjBKrM=", - "owner": "jessarcher", - "repo": "vim-heritage", - "rev": "574baeb0679681a710adce5110a0d8b2ae1c2637", + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", "type": "github" }, "original": { - "owner": "jessarcher", - "repo": "vim-heritage", + "owner": "numtide", + "repo": "treefmt-nix", "type": "github" } - }, - "vim-textobj-xmlattr": { - "flake": false, - "locked": { - "lastModified": 1464940962, - "narHash": "sha256-+91FVP95oh00flINdltqx6qJuijYo56tHIh3J098G2Q=", - "owner": "whatyouhide", - "repo": "vim-textobj-xmlattr", - "rev": "694a297f1d75fd527e87da9769f3c6519a87ebb1", - "type": "github" - }, - "original": { - "owner": "whatyouhide", - "repo": "vim-textobj-xmlattr", - "type": "github" - } - }, - "voidrice": { - "flake": false, - "locked": { - "lastModified": 1744355318, - "narHash": "sha256-9U1Do0w2oT5E6uZxSKoHAzbGbSLQRQlT65KcPGzwhW8=", - "owner": "lukesmithxyz", - "repo": "voidrice", - "rev": "f853f1884a8f0c244765192dc6f5a910a7e2b8e5", - "type": "github" - }, - "original": { - "owner": "lukesmithxyz", - "repo": "voidrice", - "type": "github" - } - }, - "zet": { - "flake": false, - "locked": { - "lastModified": 1758576585, - "narHash": "sha256-hWQE45nFaSN8agYMP8xt5kaUMfBXVj5k9zInZNs/xAI=", - "ref": "refs/heads/main", - "rev": "23505f6c31c7cc903e63621b52b5f92eea1facc5", - "revCount": 35, - "type": "git", - "url": "https://code.oliverdavies.uk/opdavies/zet" - }, - "original": { - "type": "git", - "url": "https://code.oliverdavies.uk/opdavies/zet" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 25b1bf65..a7edbcaf 100644 --- a/flake.nix +++ b/flake.nix @@ -1,106 +1,135 @@ { inputs = { - agenix = { - inputs.nixpkgs.follows = "nixpkgs"; - url = "github:ryantm/agenix"; - }; + agenix.url = "github:ryantm/agenix"; - bop-scripts = { - flake = false; - url = "github:breadonpenguins/scripts"; - }; + disko.inputs.nixpkgs.follows = "nixpkgs"; + disko.url = "github:nix-community/disko"; - conf-vim = { - flake = false; - url = "github:tjdevries/conf.vim"; - }; - - disko = { - inputs.nixpkgs.follows = "nixpkgs"; - url = "github:nix-community/disko"; - }; - - edit-alternate-vim = { - flake = false; - url = "github:tjdevries/edit_alternate.vim"; - }; - - flake-parts.url = "github:hercules-ci/flake-parts"; - - git-repo-updater = { - inputs.flake-parts.follows = "flake-parts"; - inputs.import-tree.follows = "import-tree"; - inputs.nixpkgs.follows = "nixpkgs"; - url = "git+https://code.oliverdavies.uk/opdavies/git-repo-updater"; - }; - - home-manager = { - inputs.nixpkgs.follows = "nixpkgs"; - url = "github:nix-community/home-manager/master"; - }; - - import-tree.url = "github:vic/import-tree"; - - nix-index-database = { - inputs.nixpkgs.follows = "nixpkgs"; - url = "github:nix-community/nix-index-database"; - }; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + home-manager.url = "github:nix-community/home-manager/master"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; - nixvim = { - inputs.flake-parts.follows = "flake-parts"; - inputs.nixpkgs.follows = "nixpkgs"; - url = "github:nix-community/nixvim"; - }; + nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; + + nixvim.inputs.nixpkgs.follows = "nixpkgs"; + nixvim.url = "github:nix-community/nixvim"; nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11"; - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - nur = { - inputs.nixpkgs.follows = "nixpkgs"; - url = "github:nix-community/NUR"; - }; - - rwxrob-dot = { - flake = false; - url = "github:rwxrob/dot"; - }; - - standard-vim = { - flake = false; - url = "github:tjdevries/standard.vim"; - }; - - vim-heritage = { - flake = false; - url = "github:jessarcher/vim-heritage"; - }; - - vim-textobj-xmlattr = { - flake = false; - url = "github:whatyouhide/vim-textobj-xmlattr"; - }; - - voidrice = { - flake = false; - url = "github:lukesmithxyz/voidrice"; - }; - - zet = { - flake = false; - url = "git+https://code.oliverdavies.uk/opdavies/zet"; - }; + nur.url = "github:nix-community/NUR"; }; outputs = - inputs@{ flake-parts, ... }: - flake-parts.lib.mkFlake { inherit inputs; } { - flake = { - overlays = import ./overlays { inherit inputs; }; + { nixpkgs, self, ... }@inputs: + let + inherit (self) outputs; + + system = "x86_64-linux"; + pkgs = import nixpkgs { inherit system; }; + + username = "opdavies"; + + specialArgs = { + inherit + inputs + outputs + self + system + username + ; }; - imports = [ (inputs.import-tree ./modules) ]; + inherit (pkgs) mkShell; + + nixvim = inputs.nixvim.legacyPackages.${system}.makeNixvimWithModule { + inherit pkgs; + + module = import ./modules/home-manager/coding/neovim/config; + }; + in + { + devShells.${system}.default = pkgs.mkShell { + packages = with pkgs; [ + just + lua-language-server + lua54Packages.luacheck + nixd + ]; + }; + + packages.${system} = { + inherit nixvim; + + default = mkShell { buildInputs = with pkgs; [ just ]; }; + }; + + formatter.${system} = pkgs.nixfmt-rfc-style; + + overlays = import ./overlays { inherit inputs; }; + + homeManagerModules.default = import ./modules/home-manager; + + nixosModules.default = import ./modules/nixos; + + nixosConfigurations = { + lemp11 = nixpkgs.lib.nixosSystem { + modules = [ + ./hosts/lemp11/configuration.nix + ]; + + specialArgs = specialArgs // { + hostname = "lemp11"; + stateVersion = "22.11"; + }; + }; + + nixedo = nixpkgs.lib.nixosSystem { + modules = [ + ./hosts/nixedo/configuration.nix + ]; + + specialArgs = specialArgs // { + hostname = "nixedo"; + stateVersion = "24.11"; + }; + }; + + t480 = nixpkgs.lib.nixosSystem { + modules = [ + ./hosts/t480/configuration.nix + ]; + + specialArgs = specialArgs // { + hostname = "t480"; + stateVersion = "22.11"; + }; + }; + + t490 = nixpkgs.lib.nixosSystem { + modules = [ + ./hosts/t490/configuration.nix + ]; + + specialArgs = specialArgs // { + hostname = "t490"; + stateVersion = "22.11"; + }; + }; + + PW05CH3L = nixpkgs.lib.nixosSystem { + inherit system; + + modules = [ + ./hosts/PW05CH3L/configuration.nix + ]; + + specialArgs = specialArgs // { + hostname = "PW05CH3L"; + stateVersion = "22.11"; + }; + }; + }; }; } diff --git a/home-manager/opdavies/nixedo.nix b/home-manager/opdavies/nixedo.nix deleted file mode 100644 index 902a9bfc..00000000 --- a/home-manager/opdavies/nixedo.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs, ... }: - -{ - imports = [ - ./nixedo/email-filters.nix - ]; - - home.packages = with pkgs; [ - import-to-jellyfin - vic - yt-dlp - ]; -} diff --git a/home-manager/opdavies/t480.nix b/home-manager/opdavies/t480.nix deleted file mode 100644 index b4826a3c..00000000 --- a/home-manager/opdavies/t480.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs = { - zsh.shellAliases = - let - inherit (config.xdg.userDirs) documents; - in - { - "wiki-push" = - "rsync -avzP ${documents}/wiki nixedo.oliverdavies.uk:${documents} --delete --delete-after"; - }; - }; - - home.packages = with pkgs; [ - backup-websites - build-glove80 - count-tags - create-script - get-tags - qrencode - mounter - move-firefox-screenshots - set-background - tag-release - time-until - timer - unmounter - update-all-git-repos - vic - ]; - - xdg.configFile."pam-gnupg".text = '' - 098EE055DAD2B9CB68154C6759DD38292D2273B6 - 1E21B58D69FFEFAD077F152A50FEA938A3413F50 - ''; -} diff --git a/home/common/default.nix b/home/common/default.nix new file mode 100644 index 00000000..76b2a760 --- /dev/null +++ b/home/common/default.nix @@ -0,0 +1,7 @@ +{ outputs, ... }: + +{ + imports = [ + outputs.homeManagerModules.default + ]; +} diff --git a/home/opdavies/PW05CH3L.nix b/home/opdavies/PW05CH3L.nix new file mode 100644 index 00000000..b8ce7248 --- /dev/null +++ b/home/opdavies/PW05CH3L.nix @@ -0,0 +1,52 @@ +{ config, options, ... }: + +{ + imports = [ ../common ]; + + cli = { + bookmarkthis.enable = true; + direnv.enable = true; + fzf.enable = true; + + git = { + enable = true; + + user.emailAddress = "oliver.davies@tfw.wales"; + }; + + node.enable = true; + notes.enable = true; + ranger.enable = true; + starship.enable = true; + tmux.enable = true; + + tmux-sessionizer = { + enable = true; + + directories = + let + inherit (config.xdg.userDirs) documents extraConfig; + + repos = extraConfig.XDG_REPOS_DIR; + in + options.cli.tmux-sessionizer.directories.default + ++ [ + repos + "${repos}/*" + documents + ]; + }; + + todos.enable = true; + zsh.enable = true; + }; + + coding = { + neovim.enable = true; + phpactor.enable = true; + }; + + xdg.configFile."pam-gnupg".text = '' + C0D940F9A390F286FCAAE8439D501171E39D0A47 + ''; +} diff --git a/home/opdavies/lemp11.nix b/home/opdavies/lemp11.nix new file mode 100644 index 00000000..925d863d --- /dev/null +++ b/home/opdavies/lemp11.nix @@ -0,0 +1,11 @@ +{ + imports = [ ../common ]; + + cli.zsh.enable = true; + + desktop.media = { + handbrake.enable = true; + makemkv.enable = true; + mpv.enable = true; + }; +} diff --git a/home/opdavies/nixedo.nix b/home/opdavies/nixedo.nix new file mode 100644 index 00000000..e6c8bebd --- /dev/null +++ b/home/opdavies/nixedo.nix @@ -0,0 +1,13 @@ +{ + imports = [ + ../common + + ./nixedo/modules/email-filters.nix + ]; + + cli = { + fzf.enable = true; + starship.enable = true; + zsh.enable = true; + }; +} diff --git a/home-manager/opdavies/nixedo/email-filters.nix b/home/opdavies/nixedo/modules/email-filters.nix similarity index 89% rename from home-manager/opdavies/nixedo/email-filters.nix rename to home/opdavies/nixedo/modules/email-filters.nix index 4cdcb162..4786c6c5 100644 --- a/home-manager/opdavies/nixedo/email-filters.nix +++ b/home/opdavies/nixedo/modules/email-filters.nix @@ -12,7 +12,7 @@ in { options.nixedo.${name} = { configFile = lib.mkOption { - default = "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/${name}/config.lua"; + default = "${config.home.homeDirectory}/Code/${name}/config.lua"; internal = true; }; }; diff --git a/home/opdavies/t480.nix b/home/opdavies/t480.nix new file mode 100644 index 00000000..e1793a92 --- /dev/null +++ b/home/opdavies/t480.nix @@ -0,0 +1,120 @@ +{ config, ... }: + +{ + imports = [ + ../common + ./t480/gammastep.nix + ]; + + cli = { + bluetuith.enable = true; + bookmarkthis.enable = true; + direnv.enable = true; + fzf.enable = true; + + git = { + enable = true; + + user.emailAddress = "oliver@oliverdavies.uk"; + }; + + node.enable = true; + + notes = { + enable = true; + + directory = "${config.xdg.userDirs.documents}/wiki/notes"; + }; + + ranger.enable = true; + sxhkd.enable = true; + starship.enable = true; + tmux.enable = true; + + tmux-sessionizer = { + enable = true; + enableDmenuIntegration = true; + + directories = + let + inherit (config.xdg.userDirs) documents extraConfig; + + repos = extraConfig.XDG_REPOS_DIR; + in + [ + repos + "${repos}/*" + documents + ]; + }; + + todos.enable = true; + zsh.enable = true; + }; + + coding = { + neovim.enable = true; + phpactor.enable = true; + }; + + desktop = { + browsers = { + chromium.enable = true; + + firefox = { + enable = true; + + homepageUrl = "https://nixedo.oliverdavies.uk"; + }; + + qutebrowser.enable = true; + }; + + flameshot.enable = true; + gtk.enable = true; + + media = { + handbrake.enable = true; + makemkv.enable = true; + mpv.enable = true; + }; + + # redshift.enable = true; + }; + + programs = { + dev-commit = { + enable = false; + + repoPaths = + let + personal = "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/personal"; + in + [ + "${personal}/email-filters" + "${personal}/nix-config" + "${personal}/oliverdavies.uk" + "${personal}/opentofu-dns" + ]; + + schedule = { + enable = true; + time = "daily"; + }; + }; + + zsh.shellAliases = + let + inherit (config.xdg.userDirs) documents; + in + { + "wiki-push" = + "rsync -avzP ${documents}/wiki nixedo.oliverdavies.uk:${documents} --delete --delete-after"; + }; + }; + + xdg.configFile."pam-gnupg".text = '' + 098EE055DAD2B9CB68154C6759DD38292D2273B6 + 1E21B58D69FFEFAD077F152A50FEA938A3413F50 + ''; +} diff --git a/home/opdavies/t480/gammastep.nix b/home/opdavies/t480/gammastep.nix new file mode 100644 index 00000000..e95feb1e --- /dev/null +++ b/home/opdavies/t480/gammastep.nix @@ -0,0 +1,4 @@ +{ + services.gammastep.enable = true; + services.gammastep.provider = "geoclue2"; +} diff --git a/home/opdavies/t490.nix b/home/opdavies/t490.nix new file mode 100644 index 00000000..2a89c647 --- /dev/null +++ b/home/opdavies/t490.nix @@ -0,0 +1,3 @@ +{ + imports = [ ../common ]; +} diff --git a/hosts/PW05CH3L/configuration.nix b/hosts/PW05CH3L/configuration.nix new file mode 100644 index 00000000..a6c1b52b --- /dev/null +++ b/hosts/PW05CH3L/configuration.nix @@ -0,0 +1,32 @@ +{ inputs, pkgs, ... }: + +{ + imports = [ + inputs.agenix.nixosModules.default + inputs.disko.nixosModules.disko + inputs.nixos-wsl.nixosModules.default + + ../common + + ../../users/opdavies.nix + ]; + + cli = { + docker.enable = true; + + password-store = { + enable = true; + + extensions = with pkgs.passExtensions; [ + pass-otp + ]; + }; + }; + + wsl = { + enable = true; + defaultUser = "opdavies"; + }; + + home-manager.users.opdavies.home.sessionVariables.WAYLAND_DISPLAY = ""; +} diff --git a/hosts/common/default.nix b/hosts/common/default.nix index 0421aa39..36a5f420 100644 --- a/hosts/common/default.nix +++ b/hosts/common/default.nix @@ -15,6 +15,8 @@ ./users inputs.home-manager.nixosModules.home-manager + + outputs.nixosModules.default ]; nix = { @@ -62,13 +64,21 @@ users."${username}" = import ./home.nix; }; - nixpkgs.overlays = [ - inputs.nur.overlays.default + nixpkgs = { + config = { + allowUnfree = true; - outputs.overlays.additions - outputs.overlays.modifications - outputs.overlays.stable-packages - ]; + permittedInsecurePackages = [ "electron-27.3.11" ]; + }; + + overlays = [ + inputs.nur.overlays.default + + outputs.overlays.additions + outputs.overlays.modifications + outputs.overlays.stable-packages + ]; + }; nix.extraOptions = '' trusted-users = root ${username} diff --git a/hosts/common/home.nix b/hosts/common/home.nix index 1f67d1e1..c2073f9b 100644 --- a/hosts/common/home.nix +++ b/hosts/common/home.nix @@ -9,6 +9,8 @@ let pkgs = import inputs.nixpkgs { inherit system; + config.allowUnfree = true; + overlays = [ outputs.overlays.additions outputs.overlays.stable-packages @@ -25,6 +27,10 @@ let ; in { + imports = [ + outputs.homeManagerModules.default + ]; + home.username = "opdavies"; home.homeDirectory = "/home/${config.home.username}"; diff --git a/hosts/common/users/opdavies.nix b/hosts/common/users/opdavies.nix index 3842a813..556baaca 100644 --- a/hosts/common/users/opdavies.nix +++ b/hosts/common/users/opdavies.nix @@ -1,7 +1,7 @@ -{ config, self, ... }: +{ config, ... }: { users.users.opdavies = { }; - home-manager.users.opdavies = import "${self}/home-manager/opdavies/${config.networking.hostName}.nix"; + home-manager.users.opdavies = import ../../../home/opdavies/${config.networking.hostName}.nix; } diff --git a/hosts/lemp11/configuration.nix b/hosts/lemp11/configuration.nix new file mode 100644 index 00000000..88336c16 --- /dev/null +++ b/hosts/lemp11/configuration.nix @@ -0,0 +1,65 @@ +{ inputs, pkgs, ... }: + +{ + imports = [ + inputs.agenix.nixosModules.default + inputs.nixos-hardware.nixosModules.common-cpu-intel + inputs.nixos-hardware.nixosModules.common-gpu-intel + inputs.nixos-hardware.nixosModules.common-pc-laptop + inputs.nixos-hardware.nixosModules.common-pc-laptop-hdd + inputs.nixos-hardware.nixosModules.system76 + + ../common + ./hardware-configuration.nix + ./programs.nix + ./services.nix + + ../../users/opdavies.nix + ../../users/eric.nix + ]; + + core = { + bluetooth.enable = true; + zram.enable = true; + }; + + desktop.media.makemkv.enable = true; + + nixpad.enable = true; + + # Bootloader. + boot = { + loader = { + systemd-boot = { + enable = true; + configurationLimit = 25; + }; + + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot/efi"; + }; + }; + }; + + systemd.extraConfig = '' + DefaultTimeoutStopSec=10s + ''; + + networking.networkmanager.enable = true; + + security = { + polkit.enable = true; + rtkit.enable = true; + }; + + users.users.eric.packages = with pkgs; [ + git + vscodium + ]; + + environment.systemPackages = with pkgs; [ + fastfetch + htop + ]; +} diff --git a/hosts/lemp11/hardware-configuration.nix b/hosts/lemp11/hardware-configuration.nix new file mode 100644 index 00000000..9cb083b7 --- /dev/null +++ b/hosts/lemp11/hardware-configuration.nix @@ -0,0 +1,50 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ + config, + lib, + modulesPath, + ... +}: + +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot.initrd.availableKernelModules = [ + "xhci_pci" + "thunderbolt" + "nvme" + "usb_storage" + "usbhid" + "sd_mod" + "sdhci_pci" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/e577c869-18a1-4830-9e00-124fcabdab89"; + fsType = "ext4"; + }; + + fileSystems."/boot/efi" = { + device = "/dev/disk/by-uuid/48FE-D346"; + fsType = "vfat"; + }; + + swapDevices = [ { device = "/dev/disk/by-uuid/2dce327b-f18d-4727-a9a2-e79d2b5161f9"; } ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s13f0u1u2u4.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/lemp11/programs.nix b/hosts/lemp11/programs.nix new file mode 100644 index 00000000..4da8fd00 --- /dev/null +++ b/hosts/lemp11/programs.nix @@ -0,0 +1,13 @@ +{ + programs = { + firefox = { + enable = true; + + languagePacks = [ "en-GB" ]; + preferences = { + "intl.accept_languages" = "en-GB, en"; + "intl.regional_prefs.use_os_locales" = true; + }; + }; + }; +} diff --git a/hosts/lemp11/services.nix b/hosts/lemp11/services.nix new file mode 100644 index 00000000..a096651f --- /dev/null +++ b/hosts/lemp11/services.nix @@ -0,0 +1,32 @@ +{ + services = { + auto-cpufreq.enable = true; + gvfs.enable = true; + openssh.enable = true; + power-profiles-daemon.enable = false; + thermald.enable = true; + + pipewire = { + enable = true; + + alsa = { + enable = true; + support32Bit = true; + }; + + pulse.enable = true; + }; + + printing.enable = true; + pulseaudio.enable = false; + + xserver = { + enable = true; + + xkb = { + layout = "gb"; + variant = ""; + }; + }; + }; +} diff --git a/hosts/nixedo/configuration.nix b/hosts/nixedo/configuration.nix index 88d3920c..8395b58b 100644 --- a/hosts/nixedo/configuration.nix +++ b/hosts/nixedo/configuration.nix @@ -19,6 +19,10 @@ ../../users/opdavies.nix ]; + core.openssh.enable = true; + cli.podman.enable = true; + desktop.dconf.enable = true; + # TODO: why didn't it work when adding this to jitsi.nix? nixpkgs.config.permittedInsecurePackages = [ "jitsi-meet-1.0.8043" @@ -27,7 +31,10 @@ services.logind.lidSwitchExternalPower = "ignore"; boot.loader = { - efi.canTouchEfiVariables = true; + efi = { + canTouchEfiVariables = true; + }; + systemd-boot.enable = true; }; diff --git a/hosts/nixedo/hardware-configuration.nix b/hosts/nixedo/hardware-configuration.nix index c2508935..2164da42 100644 --- a/hosts/nixedo/hardware-configuration.nix +++ b/hosts/nixedo/hardware-configuration.nix @@ -1,43 +1,28 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ - config, - lib, - pkgs, - modulesPath, - ... -}: +{ config, lib, pkgs, modulesPath, ... }: { - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ - "xhci_pci" - "thunderbolt" - "nvme" - "usb_storage" - "sd_mod" - ]; + boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; - fileSystems."/" = { - device = "/dev/disk/by-uuid/40649879-4ee6-4668-8257-fe81a7773024"; - fsType = "ext4"; - }; + fileSystems."/" = + { device = "/dev/disk/by-uuid/40649879-4ee6-4668-8257-fe81a7773024"; + fsType = "ext4"; + }; - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/24B1-88CB"; - fsType = "vfat"; - options = [ - "fmask=0077" - "dmask=0077" - ]; - }; + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/24B1-88CB"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; swapDevices = [ ]; diff --git a/hosts/nixedo/homelab.nix b/hosts/nixedo/homelab.nix index 5e747cc9..dd8e92a1 100644 --- a/hosts/nixedo/homelab.nix +++ b/hosts/nixedo/homelab.nix @@ -8,6 +8,7 @@ services = { audiobookshelf.enable = true; + gitea-actions-runner.enable = true; home-assistant.enable = true; homepage-dashboard.enable = true; jitsi.enable = true; @@ -15,7 +16,7 @@ peertube.enable = true; tubearchivist.enable = true; uptime-kuma.enable = true; - vaultwarden.enable = false; + vaultwarden.enable = true; }; }; } diff --git a/hosts/nixedo/modules/acme.nix b/hosts/nixedo/modules/acme.nix index 33979e9c..585bf7fe 100644 --- a/hosts/nixedo/modules/acme.nix +++ b/hosts/nixedo/modules/acme.nix @@ -40,6 +40,7 @@ "rebuilding-symfony" "tailwindcss-demo" "talking-drupal-tailwindcss" + "tome" "tubearchivist" "uptime" "vaultwarden" diff --git a/hosts/nixedo/modules/forgejo.nix b/hosts/nixedo/modules/forgejo.nix index 91a228d6..89da0991 100644 --- a/hosts/nixedo/modules/forgejo.nix +++ b/hosts/nixedo/modules/forgejo.nix @@ -8,14 +8,10 @@ settings = { server = { DOMAIN = "code.oliverdavies.uk"; - LANDING_PAGE = "explore"; ROOT_URL = "https://${config.services.forgejo.settings.server.DOMAIN}"; - SSH_DOMAIN = "ssh.oliverdavies.uk"; }; service.DISABLE_REGISTRATION = true; - - ui.DEFAULT_THEME = "forgejo-auto"; }; }; diff --git a/modules/.keep b/hosts/nixedo/modules/nginx/ports.nix similarity index 100% rename from modules/.keep rename to hosts/nixedo/modules/nginx/ports.nix diff --git a/hosts/nixedo/modules/nginx/sites.nix b/hosts/nixedo/modules/nginx/sites.nix index 3d682ec7..b5841173 100644 --- a/hosts/nixedo/modules/nginx/sites.nix +++ b/hosts/nixedo/modules/nginx/sites.nix @@ -11,8 +11,6 @@ let { inherit port root url; } // overrides; sites = [ - (mkSite "books" {}) - (mkSite "eric" { rootSuffix = "/public"; @@ -21,31 +19,11 @@ let ''; }) - (mkSite "examples" {}) - ] - ++ - map - ( - domain: - mkSite domain { - extraConfig = '' - add_header X-Robots-Tag "noindex, nofollow"; - ''; - } - ) - [ - "bootstrap-with-tailwind" - "florida-drupalcamp-tailwind-css" - "luke" - "phpsw-sculpin-demo" - "rebuilding-acquia" - "rebuilding-bartik" - "rebuilding-bristol-js" - "rebuilding-symfony" - "tailwindcss-demo" - "talking-drupal-tailwindcss" - "wp-tailwind" - "zet" - ]; + (mkSite "luke" { + extraConfig = '' + add_header X-Robots-Tag "noindex, nofollow"; + ''; + }) + ]; in sites diff --git a/hosts/nixedo/modules/nginx/www.oliverdavies.uk/default.nix b/hosts/nixedo/modules/nginx/www.oliverdavies.uk/default.nix index cfae1427..d5b1426f 100644 --- a/hosts/nixedo/modules/nginx/www.oliverdavies.uk/default.nix +++ b/hosts/nixedo/modules/nginx/www.oliverdavies.uk/default.nix @@ -13,7 +13,6 @@ let paths = [ "archive" - "automated-testing" "core" "daily/.+" "examples" @@ -22,8 +21,8 @@ let "rss/bb.xml" "rss/daily.xml" "sites/default/files" - "testing" "themes/custom/opdavies" + "tome-test" ]; port = ports.nginx-website-tome; @@ -79,11 +78,36 @@ in globalRedirect = "www.oliverdavies.uk"; useACMEHost = "oliverdavies.uk"; }; + + "tome.oliverdavies.uk" = { + listen = [ + { + addr = "localhost"; + port = tome.port; + } + ]; + + locations."/".tryFiles = "$uri $uri.html $uri/index.html =404"; + + root = tome.root; + + extraConfig = '' + add_header X-Robots-Tag "noindex, nofollow"; + + port_in_redirect off; + + # Remove trailing slashes. + rewrite ^/(.*)/$ /$1 permanent; + ''; + }; }; - cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466".ingress = { - "oliverdavies.uk" = "http://localhost:${toString port}"; - "www.oliverdavies.uk" = "http://localhost:${toString port}"; + cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466" = { + ingress = { + "oliverdavies.uk" = "http://localhost:${toString port}"; + "tome.oliverdavies.uk" = "http://localhost:${toString tome.port}"; + "www.oliverdavies.uk" = "http://localhost:${toString port}"; + }; }; }; } diff --git a/hosts/nixedo/modules/nginx/www.oliverdavies.uk/redirects.nix b/hosts/nixedo/modules/nginx/www.oliverdavies.uk/redirects.nix index 56bc82e9..7d546067 100644 --- a/hosts/nixedo/modules/nginx/www.oliverdavies.uk/redirects.nix +++ b/hosts/nixedo/modules/nginx/www.oliverdavies.uk/redirects.nix @@ -131,10 +131,6 @@ from = "/ansistrano-slides"; to = "/talks/deploying-php-ansible-ansistrano"; } - { - from = "/archive"; - to = "/blog"; - } { from = "/archive/2022-08-28/how-started-programming"; to = "/daily/2022-08-28/how-started-programming"; @@ -2423,10 +2419,6 @@ from = "/d7"; to = "/drupal7"; } - { - from = "/daily"; - to = "/blog"; - } { from = "/dcbristol-cfp"; to = "https://www.papercall.io/drupalcamp-bristol-2019"; diff --git a/hosts/nixedo/modules/paperless.nix b/hosts/nixedo/modules/paperless.nix index ca58fc15..8735b560 100644 --- a/hosts/nixedo/modules/paperless.nix +++ b/hosts/nixedo/modules/paperless.nix @@ -43,7 +43,10 @@ in enable = true; dataDir = "/mnt/media/${service}"; - domain = "https://${cfg.url}"; + + settings = { + PAPERLESS_URL = "https://${cfg.url}"; + }; }; nginx.virtualHosts."${cfg.url}" = { diff --git a/hosts/nixedo/ports.nix b/hosts/nixedo/ports.nix index e3ceba08..86c6ca23 100644 --- a/hosts/nixedo/ports.nix +++ b/hosts/nixedo/ports.nix @@ -19,10 +19,8 @@ in nginx-website-sculpin = 8095; nginx-website-tome = 8098; - nginx-books = 9002; nginx-bootstrap-with-tailwind = 8081; nginx-eric = 8084; - nginx-examples = 9003; nginx-florida-drupalcamp-tailwind-css = 8083; nginx-luke = 8094; nginx-phpsw-sculpin-demo = 8085; diff --git a/hosts/nixedo/services/default.nix b/hosts/nixedo/services/default.nix index b5a19f88..f813baef 100644 --- a/hosts/nixedo/services/default.nix +++ b/hosts/nixedo/services/default.nix @@ -17,6 +17,7 @@ services = { postgresqlBackup.enable = true; + tailscale.enable = true; }; services.gitea-actions-runner.instances.default = { @@ -29,7 +30,6 @@ gawk gitMinimal gnused - jq nix nodejs wget diff --git a/hosts/nixedo/services/vaultwarden.nix b/hosts/nixedo/services/vaultwarden.nix index b3f697a3..1928cdc4 100644 --- a/hosts/nixedo/services/vaultwarden.nix +++ b/hosts/nixedo/services/vaultwarden.nix @@ -1,7 +1,7 @@ { config, - inputs, lib, + options, ... }: @@ -20,6 +20,26 @@ in default = "${service}.${homelab.domain}"; type = types.str; }; + + homepage.name = mkOption { + default = "Vaultwarden"; + type = types.str; + }; + + homepage.description = mkOption { + default = "Unofficial Bitwarden compatible server written in Rust"; + type = types.str; + }; + + homepage.icon = mkOption { + default = "bitwarden"; + type = types.str; + }; + + homepage.category = mkOption { + default = "Services"; + type = types.str; + }; }; config = mkIf cfg.enable { @@ -27,8 +47,6 @@ in ${service} = { enable = true; - environmentFile = config.age.secrets.vaultwarden-env.path; - config = { DOMAIN = "https://${cfg.url}"; ROCKET_ADDRESS = "127.0.0.1"; @@ -37,17 +55,11 @@ in }; }; - nginx.virtualHosts.${cfg.url} = { - forceSSL = true; - useACMEHost = homelab.domain; - - locations."/" = { - proxyPass = "http://localhost:${toString config.services.${service}.config.ROCKET_PORT}"; - recommendedProxySettings = true; - }; + cloudflared.tunnels.${homelab.cloudflared.tunnelId}.ingress = { + "${cfg.url}" = "http://${config.services.${service}.config.ROCKET_ADDRESS}:${ + toString config.services.${service}.config.ROCKET_PORT + }"; }; }; - - age.secrets.vaultwarden-env.file = "${inputs.self}/secrets/vaultwarden-env.age"; }; } diff --git a/hosts/t480/configuration.nix b/hosts/t480/configuration.nix index 6609ecc7..dd407942 100644 --- a/hosts/t480/configuration.nix +++ b/hosts/t480/configuration.nix @@ -9,39 +9,68 @@ ../common ./hardware-configuration.nix - ./cron.nix - ./neomutt.nix - ./newsboat + ./modules ./secrets.nix - ./xserver.nix + ./services ../../users/opdavies.nix ]; - services = { - auto-cpufreq.enable = true; - geoclue2.enable = true; - gvfs.enable = true; - power-profiles-daemon.enable = false; - printing.enable = true; - pulseaudio.enable = false; - thermald.enable = true; - throttled.enable = true; - upower.enable = true; + services.geoclue2.enable = true; + + cli = { + kanata = { + enable = true; + + devices = [ + "/dev/input/by-path/platform-i8042-serio-0-event-kbd" + ]; + }; + + password-store = { + enable = true; + + extensions = with pkgs.passExtensions; [ + pass-audit + pass-otp + pass-update + ]; + }; + }; + + core = { + bluetooth.enable = true; + openssh.enable = true; + pipewire.enable = true; + xbanish.enable = true; + zram.enable = true; + }; + + desktop = { + dconf.enable = true; + dwm.enable = true; + fonts.enable = true; + media.makemkv.enable = true; + st.enable = true; + thunar.enable = true; }; boot = { loader = { - systemd-boot.enable = true; - systemd-boot.configurationLimit = 10; + systemd-boot = { + enable = true; + configurationLimit = 10; + }; - efi.canTouchEfiVariables = true; + efi = { + canTouchEfiVariables = true; + }; }; }; - systemd.settings.Manager = { - DefaultTimeoutStopSec = "10s"; - }; + systemd.extraConfig = '' + DefaultTimeoutStopSec=10s + ''; networking.networkmanager.enable = true; @@ -66,13 +95,16 @@ abook acpi arandr + backup-websites brightnessctl + build-glove80 cdrkit cpufrequtils + displayselect dvdbackup dvdplusrwtools ffmpegthumbnailer - gimp3 + gimp gtypist hunspellDicts.en-gb-large isync @@ -88,11 +120,16 @@ peek pmutils shotwell + slack stable.gscan2pdf sxiv + tailscale ttyper + upload-to-files xcape xsel yt-dlp + zeroad + zoom-us ]; } diff --git a/hosts/t480/cron.nix b/hosts/t480/modules/cron.nix similarity index 100% rename from hosts/t480/cron.nix rename to hosts/t480/modules/cron.nix diff --git a/hosts/t480/modules/default.nix b/hosts/t480/modules/default.nix new file mode 100644 index 00000000..c5f2ed09 --- /dev/null +++ b/hosts/t480/modules/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./cron.nix + ./neomutt.nix + ./newsboat + ./ollama.nix + ]; +} diff --git a/hosts/t480/neomutt.nix b/hosts/t480/modules/neomutt.nix similarity index 100% rename from hosts/t480/neomutt.nix rename to hosts/t480/modules/neomutt.nix diff --git a/hosts/t480/newsboat/default.nix b/hosts/t480/modules/newsboat/default.nix similarity index 100% rename from hosts/t480/newsboat/default.nix rename to hosts/t480/modules/newsboat/default.nix diff --git a/hosts/t480/newsboat/urls.nix b/hosts/t480/modules/newsboat/urls.nix similarity index 100% rename from hosts/t480/newsboat/urls.nix rename to hosts/t480/modules/newsboat/urls.nix diff --git a/hosts/t480/modules/ollama.nix b/hosts/t480/modules/ollama.nix new file mode 100644 index 00000000..137ad6b6 --- /dev/null +++ b/hosts/t480/modules/ollama.nix @@ -0,0 +1,10 @@ +{ + services = { + ollama = { + enable = false; + acceleration = "rocm"; + }; + + open-webui.enable = false; + }; +} diff --git a/hosts/t480/services/default.nix b/hosts/t480/services/default.nix new file mode 100644 index 00000000..68c40e89 --- /dev/null +++ b/hosts/t480/services/default.nix @@ -0,0 +1,17 @@ +{ + imports = [ + ./xserver.nix + ]; + + services = { + auto-cpufreq.enable = true; + gvfs.enable = true; + power-profiles-daemon.enable = false; + printing.enable = true; + pulseaudio.enable = false; + tailscale.enable = true; + throttled.enable = true; + thermald.enable = true; + upower.enable = true; + }; +} diff --git a/hosts/t480/xserver.nix b/hosts/t480/services/xserver.nix similarity index 100% rename from hosts/t480/xserver.nix rename to hosts/t480/services/xserver.nix diff --git a/hosts/t490/configuration.nix b/hosts/t490/configuration.nix new file mode 100644 index 00000000..fee2d4f1 --- /dev/null +++ b/hosts/t490/configuration.nix @@ -0,0 +1,46 @@ +{ inputs, ... }: + +{ + imports = [ + inputs.agenix.nixosModules.default + inputs.nixos-hardware.nixosModules.common-gpu-intel + inputs.nixos-hardware.nixosModules.lenovo-thinkpad-t490 + + ../common + + ./hardware-configuration.nix + ./hardware.nix + ./services + + ../../users/luke.nix + ../../users/opdavies.nix + ]; + + core = { + bluetooth.enable = true; + zram.enable = true; + }; + + desktop.dconf.enable = true; + + nixpad.enable = true; + + boot = { + loader = { + systemd-boot = { + enable = true; + configurationLimit = 10; + }; + + efi = { + canTouchEfiVariables = true; + }; + }; + }; + + systemd.extraConfig = '' + DefaultTimeoutStopSec=10s + ''; + + networking.networkmanager.enable = true; +} diff --git a/hosts/t490/hardware-configuration.nix b/hosts/t490/hardware-configuration.nix new file mode 100644 index 00000000..944633ab --- /dev/null +++ b/hosts/t490/hardware-configuration.nix @@ -0,0 +1,54 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ + config, + lib, + pkgs, + modulesPath, + ... +}: + +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ + "xhci_pci" + "nvme" + "usb_storage" + "sd_mod" + "rtsx_pci_sdmmc" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/001febe7-57e8-4c9a-bbaf-52c3d8305b63"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/5F0A-3374"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/t490/hardware.nix b/hosts/t490/hardware.nix new file mode 100644 index 00000000..3798ca48 --- /dev/null +++ b/hosts/t490/hardware.nix @@ -0,0 +1,5 @@ +{ + hardware = { + bluetooth.enable = true; + }; +} diff --git a/hosts/t490/services/cron.nix b/hosts/t490/services/cron.nix new file mode 100644 index 00000000..a8872af2 --- /dev/null +++ b/hosts/t490/services/cron.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + services.cron = { + enable = true; + + systemCronJobs = [ + "0 8,20 * * * opdavies ${pkgs.isync}/bin/mbsync -a" + ]; + }; +} diff --git a/hosts/t490/services/default.nix b/hosts/t490/services/default.nix new file mode 100644 index 00000000..ce7ea823 --- /dev/null +++ b/hosts/t490/services/default.nix @@ -0,0 +1,30 @@ +{ + imports = [ + ./cron.nix + ./interception-tools.nix + ./sound.nix + ./udev.nix + ./xserver.nix + ]; + + services = { + auto-cpufreq.enable = true; + + avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; + + blueman.enable = true; + + gvfs.enable = true; + openssh.enable = true; + power-profiles-daemon.enable = false; + printing.enable = true; + pulseaudio.enable = false; + throttled.enable = true; + thermald.enable = true; + upower.enable = true; + }; +} diff --git a/hosts/t490/services/interception-tools.nix b/hosts/t490/services/interception-tools.nix new file mode 100644 index 00000000..96e43b85 --- /dev/null +++ b/hosts/t490/services/interception-tools.nix @@ -0,0 +1,25 @@ +{ pkgs, ... }: + +{ + # Make Caps lock work as an Escape key on press and Ctrl on hold. + services.interception-tools = + let + dfkConfig = pkgs.writeText "dual-function-keys.yaml" '' + MAPPINGS: + - KEY: KEY_CAPSLOCK + TAP: KEY_ESC + HOLD: KEY_LEFTCTRL + ''; + in + { + enable = true; + plugins = pkgs.lib.mkForce [ pkgs.interception-tools-plugins.dual-function-keys ]; + udevmonConfig = '' + - JOB: "${pkgs.interception-tools}/bin/intercept -g $DEVNODE | ${pkgs.interception-tools-plugins.dual-function-keys}/bin/dual-function-keys -c ${dfkConfig} | ${pkgs.interception-tools}/bin/uinput -d $DEVNODE" + DEVICE: + NAME: "AT Translated Set 2 keyboard" + EVENTS: + EV_KEY: [[KEY_CAPSLOCK, KEY_ESC, KEY_LEFTCTRL]] + ''; + }; +} diff --git a/hosts/t490/services/redshift.nix b/hosts/t490/services/redshift.nix new file mode 100644 index 00000000..f7e3bc71 --- /dev/null +++ b/hosts/t490/services/redshift.nix @@ -0,0 +1,31 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.redshift; +in +{ + options.redshift.enable = mkEnableOption "Enable redshift"; + + config = mkIf cfg.enable { + location = { + latitude = 51.48; + longitude = -3.17; + }; + + services.redshift = { + enable = true; + + brightness = { + day = "1"; + night = "1"; + }; + + temperature = { + day = 5500; + night = 3700; + }; + }; + }; +} diff --git a/hosts/t490/services/sound.nix b/hosts/t490/services/sound.nix new file mode 100644 index 00000000..03ff2376 --- /dev/null +++ b/hosts/t490/services/sound.nix @@ -0,0 +1,12 @@ +{ + services.pipewire = { + enable = true; + + alsa = { + enable = true; + support32Bit = true; + }; + + pulse.enable = true; + }; +} diff --git a/hosts/t490/services/udev.nix b/hosts/t490/services/udev.nix new file mode 100644 index 00000000..732ca1d6 --- /dev/null +++ b/hosts/t490/services/udev.nix @@ -0,0 +1,9 @@ +{ + services.udev = { + enable = true; + + extraRules = '' + KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl" + ''; + }; +} diff --git a/hosts/t490/services/xserver.nix b/hosts/t490/services/xserver.nix new file mode 100644 index 00000000..4120a2cf --- /dev/null +++ b/hosts/t490/services/xserver.nix @@ -0,0 +1,10 @@ +{ + services.xserver = { + enable = true; + + xkb = { + layout = "gb"; + variant = ""; + }; + }; +} diff --git a/justfile b/justfile index 660bf9dc..a5e93ac4 100644 --- a/justfile +++ b/justfile @@ -13,7 +13,8 @@ check: nix flake check clean: - nh clean all + nix store optimise --verbose + nix store gc --verbose collect-garbage: nix-collect-garbage -d @@ -29,7 +30,7 @@ test *args: @just _nixos test {{ args }} update: - nix flake update --commit-lock-file + nix flake update _nixos command *args: - nh os {{ command }} . {{ args }} + sudo nixos-rebuild {{ command }} --flake . {{ args }} diff --git a/modules/bluetooth.nix b/modules/bluetooth.nix deleted file mode 100644 index 7fff70cc..00000000 --- a/modules/bluetooth.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.nixos.desktop = { - hardware.bluetooth.enable = true; - - services.blueman.enable = true; - }; -} diff --git a/modules/bluetuith.nix b/modules/bluetuith.nix deleted file mode 100644 index a3ff23db..00000000 --- a/modules/bluetuith.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - pkgs.bluetuith - ]; - - xdg.configFile."bluetuith/bluetuith.conf" = { - text = '' - { - adapter: "" - adapter-states: "" - connect-bdaddr: "" - gsm-apn: "" - gsm-number: "" - - keybindings: { - NavigateDown: j - NavigateUp: k - } - - receive-dir: "" - theme: {} - } - ''; - }; - }; -} diff --git a/modules/bookmarkthis.nix b/modules/bookmarkthis.nix deleted file mode 100644 index 96c7a4eb..00000000 --- a/modules/bookmarkthis.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ lib, ... }: - -{ - flake.modules.homeManager.gui = - { config, pkgs, ... }: - { - options.programs.bookmarkthis.snippetsFile = lib.mkOption { - default = "${config.xdg.dataHome}/snippets.txt"; - type = lib.types.str; - }; - - config = { - home = { - packages = [ - (pkgs.writeShellApplication { - name = "bookmarkthis"; - - text = '' - message() { - if command -v ${lib.getExe pkgs.libnotify} > /dev/null; then - ${lib.getExe pkgs.libnotify} "$1" "$2" - else - echo "$2" - fi - } - - main() { - bookmark="$(xclip -o)" - file="$SNIPPETS_FILE" - - if grep -q "^$bookmark$" "$file"; then - message "Oops." "Already bookmarked." >&2 - - exit 2 - fi - - echo "$bookmark" >> "$file" - - message "Bookmark added!" "$bookmark is now saved to the file." - } - - main - ''; - }) - ]; - - sessionVariables = { - SNIPPETS_FILE = config.programs.bookmarkthis.snippetsFile; - }; - }; - - programs.zsh.zsh-abbr.abbreviations = lib.optionalAttrs (config.programs.zsh.enable) { - "sn" = "${config.home.sessionVariables.EDITOR} $SNIPPETS_FILE"; - }; - }; - }; -} diff --git a/modules/browsers/chromium.nix b/modules/browsers/chromium.nix deleted file mode 100644 index 3a8e7c87..00000000 --- a/modules/browsers/chromium.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.chromium.enable = true; -} diff --git a/modules/browsers/librewolf/enable.nix b/modules/browsers/librewolf/enable.nix deleted file mode 100644 index 3a77d1f0..00000000 --- a/modules/browsers/librewolf/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.librewolf.enable = true; -} diff --git a/modules/browsers/librewolf/extensions.nix b/modules/browsers/librewolf/extensions.nix deleted file mode 100644 index 43e0fb83..00000000 --- a/modules/browsers/librewolf/extensions.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - programs.librewolf.profiles.default.extensions.packages = - with pkgs.nur.repos.rycee.firefox-addons; [ - awesome-rss - bitwarden - darkreader - tree-style-tab - ublock-origin - videospeed - vimium - web-developer - ]; - }; -} diff --git a/modules/browsers/librewolf/languages.nix b/modules/browsers/librewolf/languages.nix deleted file mode 100644 index b84500e2..00000000 --- a/modules/browsers/librewolf/languages.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.librewolf.languagePacks = [ - "en-GB" - ]; -} diff --git a/modules/browsers/librewolf/policies.nix b/modules/browsers/librewolf/policies.nix deleted file mode 100644 index 4b613855..00000000 --- a/modules/browsers/librewolf/policies.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.librewolf.policies = { - CaptivePortal = false; - DisableFirefoxAccounts = true; - DisableFirefoxStudies = true; - DisablePocket = true; - DisableTelemetry = true; - - EnableTrackingProtection = { - Cryptomining = true; - Fingerprinting = true; - Value = true; - }; - - ExtensionSettings = { - "jid1-ZAdIEUB7XOzOJw@jetpack" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/duckduckgo-for-firefox/latest.xpi"; - installation_mode = "force_installed"; - }; - - "uBlock0@raymondhill.net" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; - installation_mode = "force_installed"; - }; - }; - - FirefoxHome = { - Highlights = false; - Pocket = false; - Search = true; - Snippets = false; - SponsoredPocket = false; - SponsoredTopSites = false; - TopSites = true; - }; - - FirefoxSuggest = { - ImproveSuggest = false; - SponsoredSuggestions = false; - WebSuggestions = false; - }; - - NoDefaultBookmarks = true; - OfferToSaveLogins = false; - OfferToSaveLoginsDefault = false; - PasswordManagerEnabled = false; - - Preferences = { - "browser.newtabpage.enabled" = false; - "cookiebanners.service.mode" = 2; # Block cookie banners - "cookiebanners.service.mode.privateBrowsing" = 2; # Block cookie banners in private browsing - "privacy.donottrackheader.enabled" = true; - "privacy.fingerprintingProtection" = true; - "privacy.resistFingerprinting" = true; - "privacy.trackingprotection.emailtracking.enabled" = true; - "privacy.trackingprotection.enabled" = true; - "privacy.trackingprotection.fingerprinting.enabled" = true; - "privacy.trackingprotection.socialtracking.enabled" = true; - }; - - HardwareAcceleration = true; - TranslateEnabled = true; - - UserMessaging = { - ExtensionRecommendations = false; - UrlbarInterventions = false; - SkipOnboarding = true; - }; - }; -} diff --git a/modules/browsers/librewolf/search-engines.nix b/modules/browsers/librewolf/search-engines.nix deleted file mode 100644 index e943506b..00000000 --- a/modules/browsers/librewolf/search-engines.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.librewolf.profiles.default.search.engines = { - # TODO: Drupal.org users. - # TODO: Mastodon. - # TODO: GitHub. - # TODO: Forgejo. - drupal_projects = { - name = "Drupal.org projects"; - urls = [ { template = "https://www.drupal.org/project/{searchTerms}"; } ]; - definedAliases = [ "@dp" ]; - }; - - nixvim = { - name = "Nixvim options search"; - urls = [ { template = "https://nix-community.github.io/nixvim/search/?query={searchTerms}"; } ]; - definedAliases = [ "@nxv" ]; - }; - }; -} diff --git a/modules/browsers/librewolf/search.nix b/modules/browsers/librewolf/search.nix deleted file mode 100644 index 35dbbba8..00000000 --- a/modules/browsers/librewolf/search.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.librewolf.profiles.default.search = { - default = "ddg"; - force = true; - privateDefault = "ddg"; - }; -} diff --git a/modules/browsers/librewolf/settings.nix b/modules/browsers/librewolf/settings.nix deleted file mode 100644 index a7c5f5dd..00000000 --- a/modules/browsers/librewolf/settings.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.librewolf.profiles.default.settings = { - "browser.search.isUS" = false; - "browser.search.region" = "GB"; - "distribution.searchplugins.defaultLocale" = "en-GB"; - "general.useragent.locale" = "en-GB"; - "intl.accept_languages" = "en-GB, en"; - "intl.regional_prefs.use_os_locales" = true; - }; -} diff --git a/modules/browsers/qutebrowser/enable.nix b/modules/browsers/qutebrowser/enable.nix deleted file mode 100644 index a36898ab..00000000 --- a/modules/browsers/qutebrowser/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.qutebrowser.enable = true; -} diff --git a/modules/browsers/qutebrowser/key-bindings.nix b/modules/browsers/qutebrowser/key-bindings.nix deleted file mode 100644 index f825b833..00000000 --- a/modules/browsers/qutebrowser/key-bindings.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ lib, ... }: - -{ - flake.modules.homeManager.gui.programs.qutebrowser.keyBindings.normal = { - "" = "config-cycle colors.webpage.darkmode.enabled true false"; - - "xb" = "config-cycle statusbar.show always never"; - "xt" = "config-cycle tabs.show always never"; - "xx" = lib.mkMerge [ - "config-cycle statusbar.show always never" - "config-cycle tabs.show always never" - ]; - }; -} diff --git a/modules/browsers/qutebrowser/package.nix b/modules/browsers/qutebrowser/package.nix deleted file mode 100644 index c44f8487..00000000 --- a/modules/browsers/qutebrowser/package.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - programs.qutebrowser.package = pkgs.stable.qutebrowser; - }; -} diff --git a/modules/browsers/qutebrowser/search-engines.nix b/modules/browsers/qutebrowser/search-engines.nix deleted file mode 100644 index 5b15d91b..00000000 --- a/modules/browsers/qutebrowser/search-engines.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.qutebrowser.searchEngines = { - dp = "https://www.drupal.org/project/{}"; - du = "https://www.drupal.org/u/{}"; - gh = "https://github.com/search?q={}"; - mn = "https://mynixos.com/search?q={}"; - nx = "https://search.nixos.org/packages?query={}"; - yt = "https://www.youtube.com/results?search_query={}"; - }; -} diff --git a/modules/browsers/qutebrowser/settings.nix b/modules/browsers/qutebrowser/settings.nix deleted file mode 100644 index f14cf732..00000000 --- a/modules/browsers/qutebrowser/settings.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.qutebrowser.settings = { - colors.webpage.darkmode.enabled = true; - }; -} diff --git a/modules/calculator.nix b/modules/calculator.nix deleted file mode 100644 index 41ebe819..00000000 --- a/modules/calculator.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.nixos.pc = - { pkgs, ... }: - { - environment.systemPackages = [ pkgs.bc ]; - }; -} diff --git a/modules/dconf.nix b/modules/dconf.nix deleted file mode 100644 index 2c56e04c..00000000 --- a/modules/dconf.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.pc.programs.dconf.enable = true; -} diff --git a/modules/desktop.nix b/modules/desktop.nix deleted file mode 100644 index eaad4d8e..00000000 --- a/modules/desktop.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, ... }: - -{ - flake.modules.nixos.desktop.imports = with config.flake.modules.nixos; [ - pc - ]; -} diff --git a/modules/dev-commit.nix b/modules/dev-commit.nix deleted file mode 100644 index 352a01ad..00000000 --- a/modules/dev-commit.nix +++ /dev/null @@ -1,83 +0,0 @@ -{ lib, ... }: - -{ - flake.modules.homeManager.base = - { config, pkgs, ... }: - { - options.programs.dev-commit = { - enable = lib.mkEnableOption "Enable dev-commit"; - - repoPaths = lib.mkOption { - default = [ ]; - description = "A list of repository paths that should have automated commits"; - type = lib.types.listOf lib.types.path; - }; - - schedule = lib.mkOption { - type = lib.types.submodule { - options = { - enable = lib.mkEnableOption "Enable automated dev commits with systemd"; - - time = lib.mkOption { - description = '' - Time expression for when to run the dev-commit job. - - This uses systemd's `OnCalendar` syntax. - - Examples: - - "hourly" (once every hour) - - "daily" (once per day at midnight) - - "Mon *-*-01 12:00:00" (every Monday at 12:00 PM) - - See `man systemd.time` for full syntax reference. - ''; - default = "hourly"; - type = lib.types.str; - }; - }; - }; - - default = { - enable = false; - time = "hourly"; - }; - }; - }; - - config = - let - cfg = config.programs.dev-commit; - repoPaths = lib.concatStringsSep ":" cfg.repoPaths; - in - { - home = lib.mkIf cfg.enable { - packages = [ pkgs.dev-commit ]; - - sessionVariables.DEV_COMMIT_PATHS = repoPaths; - }; - - systemd.user = lib.mkIf cfg.schedule.enable { - services.dev-commit = { - Service = { - Environment = [ "DEV_COMMIT_PATHS=${repoPaths}" ]; - ExecStart = "${lib.getExe pkgs.dev-commit}"; - Type = "oneshot"; - }; - - Unit.Description = "dev-commit"; - }; - - timers.dev-commit = { - Install.WantedBy = [ "timers.target" ]; - - Timer = { - OnCalendar = cfg.schedule.time; - Unit = "dev-commit.service"; - }; - - Unit.Description = "Runs automated development commits in select project repositories."; - }; - }; - }; - }; -} diff --git a/modules/direnv/enable.nix b/modules/direnv/enable.nix deleted file mode 100644 index b758eec4..00000000 --- a/modules/direnv/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.direnv.enable = true; -} diff --git a/modules/direnv/nix-direnv.nix b/modules/direnv/nix-direnv.nix deleted file mode 100644 index f3848d08..00000000 --- a/modules/direnv/nix-direnv.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.direnv.nix-direnv.enable = true; -} diff --git a/modules/direnv/silent.nix b/modules/direnv/silent.nix deleted file mode 100644 index 302a19b1..00000000 --- a/modules/direnv/silent.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.direnv.silent = true; -} diff --git a/modules/direnv/zsh.nix b/modules/direnv/zsh.nix deleted file mode 100644 index ca306692..00000000 --- a/modules/direnv/zsh.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.direnv.enableZshIntegration = true; -} diff --git a/modules/displayselect/default.nix b/modules/displayselect/default.nix deleted file mode 100644 index b8b6ad92..00000000 --- a/modules/displayselect/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ - (pkgs.stdenv.mkDerivation { - pname = "displayselect"; - version = "unstable"; - - src = inputs.voidrice; - - dontUnpack = true; - - buildInputs = with pkgs; [ - bash - xorg.xrandr - ]; - - prePatch = '' - cp "$src/.local/bin/displayselect" displayselect - ''; - - patches = [ ./scaling.patch ]; - - installPhase = '' - mkdir -p $out/bin - cp displayselect $out/bin - chmod +x $out/bin/displayselect - ''; - }) - ]; - }; -} diff --git a/modules/dmenu-sys.nix b/modules/dmenu-sys.nix deleted file mode 100644 index 2ccab6e7..00000000 --- a/modules/dmenu-sys.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ - (pkgs.stdenv.mkDerivation rec { - pname = "dmenu_sys"; - version = "unstable"; - - src = inputs.bop-scripts; - - dontUnpack = true; - - buildInputs = with pkgs; [ dmenu ]; - - installPhase = '' - mkdir -p $out/bin - cp $src/${pname} $out/bin - chmod +x $out/bin/${pname} - ''; - }) - ]; - }; -} diff --git a/modules/dmenu-timer.nix b/modules/dmenu-timer.nix deleted file mode 100644 index 7a829d27..00000000 --- a/modules/dmenu-timer.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ - (pkgs.stdenv.mkDerivation rec { - pname = "dmenu_timer"; - version = "unstable"; - - src = inputs.bop-scripts; - - dontUnpack = true; - - buildInputs = with pkgs; [ dmenu ]; - - installPhase = '' - mkdir -p $out/bin - cp $src/${pname} $out/bin - chmod +x $out/bin/${pname} - ''; - }) - ]; - }; -} diff --git a/modules/docker.nix b/modules/docker.nix deleted file mode 100644 index e909e693..00000000 --- a/modules/docker.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ config, lib, ... }: - -{ - flake.modules.nixos.pc = args: { - options.docker.enable = lib.mkEnableOption "Enable Docker"; - - config = lib.mkIf args.config.docker.enable { - virtualisation = { - oci-containers.backend = "docker"; - - docker = { - enable = true; - - autoPrune = { - enable = true; - dates = "weekly"; - }; - }; - }; - - users.users.${config.flake.meta.owner.username}.extraGroups = [ "docker" ]; - }; - }; -} diff --git a/modules/dwm/config.nix b/modules/dwm/config.nix deleted file mode 100644 index 99fd7d0e..00000000 --- a/modules/dwm/config.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - flake.modules.homeManager.gui = - { config, ... }: - { - home = { - file."${config.home.sessionVariables.XINITRC}".source = ./xinitrc; - - sessionVariables.XINITRC = "${config.xdg.configHome}/X11/xinitrc"; - }; - }; -} diff --git a/modules/dwm/dmenu-center-noop.patch b/modules/dwm/dmenu-center-noop.patch deleted file mode 100644 index 9773ce73..00000000 --- a/modules/dwm/dmenu-center-noop.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/dmenu.c b/dmenu.c - -index fd49549..e9e2648 100644 ---- a/dmenu.c -+++ b/dmenu.c -@@ -757,6 +757,8 @@ main(int argc, char *argv[]) - colors[SchemeSel][ColFg] = argv[++i]; - else if (!strcmp(argv[i], "-w")) /* embedding window id */ - embed = argv[++i]; -+ else if (!strcmp(argv[i], "-c")) -+ continue; - else - usage(); - diff --git a/modules/dwm/packages.nix b/modules/dwm/packages.nix deleted file mode 100644 index 0bc07182..00000000 --- a/modules/dwm/packages.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - flake.modules.nixos.pc = - { pkgs, ... }: - { - environment.systemPackages = with pkgs; [ - (dmenu.override { - patches = [ - ./dmenu-center-noop.patch - ]; - }) - - dmenu-bluetooth - dunst - networkmanager_dmenu - poweralertd - slock - xdotool - xwallpaper - ]; - }; -} diff --git a/modules/firmware.nix b/modules/firmware.nix deleted file mode 100644 index cad66d99..00000000 --- a/modules/firmware.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.desktop.services.fwupd.enable = true; -} diff --git a/modules/flameshot/enable.nix b/modules/flameshot/enable.nix deleted file mode 100644 index 721b375e..00000000 --- a/modules/flameshot/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.gui.services.flameshot.enable = true; -} diff --git a/modules/flameshot/settings.nix b/modules/flameshot/settings.nix deleted file mode 100644 index 86629d57..00000000 --- a/modules/flameshot/settings.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ - flake.modules.homeManager.gui = - { config, ... }: - { - services.flameshot.settings.General = { - disabledTrayIcon = false; - saveAfterCopy = true; - savePath = "${config.xdg.userDirs.pictures}/Screenshots"; - showHelp = false; - uiColor = "#60a5fa"; - }; - }; -} diff --git a/modules/fonts.nix b/modules/fonts.nix deleted file mode 100644 index 728ba62f..00000000 --- a/modules/fonts.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - flake.modules.nixos.desktop = - { pkgs, ... }: - { - fonts = { - fontconfig.enable = true; - - packages = with pkgs; [ - nerd-fonts.jetbrains-mono - nerd-fonts.meslo-lg - terminus_font - terminus_font_ttf - ]; - }; - }; -} diff --git a/modules/fzf/enable.nix b/modules/fzf/enable.nix deleted file mode 100644 index 512d9727..00000000 --- a/modules/fzf/enable.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.modules.homeManager.base.programs.fzf = { - enable = true; - enableZshIntegration = true; - }; -} diff --git a/modules/fzf/session-variables.nix b/modules/fzf/session-variables.nix deleted file mode 100644 index cb3e2433..00000000 --- a/modules/fzf/session-variables.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - flake.modules.homeManager.base.home.sessionVariables = { - FZF_DEFAULT_OPTS = "--reverse"; - }; -} diff --git a/modules/games/steam.nix b/modules/games/steam.nix deleted file mode 100644 index faafa311..00000000 --- a/modules/games/steam.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - nixpkgs.allowedUnfreePackages = [ - "steam" - "steam-unwrapped" - ]; - - flake.modules.nixos.desktop.programs.steam.enable = true; -} diff --git a/modules/games/zeroad.nix b/modules/games/zeroad.nix deleted file mode 100644 index c7d5cf6e..00000000 --- a/modules/games/zeroad.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = with pkgs; [ zeroad ]; - }; -} diff --git a/modules/gammastep/enable.nix b/modules/gammastep/enable.nix deleted file mode 100644 index c8b70f14..00000000 --- a/modules/gammastep/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homManager.gui.services.gammastep.enable = true; -} diff --git a/modules/gammastep/provider.nix b/modules/gammastep/provider.nix deleted file mode 100644 index e31c1826..00000000 --- a/modules/gammastep/provider.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homManager.gui.services.gammastep.provider = "geoclue2"; -} diff --git a/modules/git-repo-updater.nix b/modules/git-repo-updater.nix deleted file mode 100644 index e4857610..00000000 --- a/modules/git-repo-updater.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.nixos.pc = - { system, ... }: - { - environment.systemPackages = [ - inputs.git-repo-updater.packages.${system}.default - ]; - }; -} diff --git a/modules/git/aliases.nix b/modules/git/aliases.nix deleted file mode 100644 index ad52e1b7..00000000 --- a/modules/git/aliases.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ - flake.modules.homeManager.base.programs.git.aliases = { - aa = "add --all"; - assume = "update-index --assume-unchanged"; - assumed = "!git ls-files -v | grep '^[hsmrck?]' | cut -c 3-"; - b = "branch"; - blame = "blame -w -C -C -C"; - browse = "!gh repo view --web"; - ca = "commit --amend --verbose"; - car = "commit --amend --no-edit"; - cl = "!hub clone"; - co = "checkout"; - compare = "!hub compare"; - current-branch = "rev-parse --abbrev-ref HEAD"; - dc = "diff --color --word-diff --cached"; - df = "diff --color --word-diff"; - dup = "!git checkout develop && git fetch origin && echo && git sl develop..origin/develop && echo && git pull --quiet && git checkout -"; - fixup = "commit --fixup"; - issues = "!gh issue list --web"; - mup = "!git master-to-main-wrapper checkout %BRANCH% && git fetch origin && echo && git sl %BRANCH%..origin/%BRANCH% && echo && git pull --quiet && git checkout -"; - no-ff = "merge --no-ff"; - pl = "pull"; - prune = "remote prune origin"; - ps = "push"; - pulls = "!gh pr list --web"; - rbc = "rebase --continue"; - rdup = "!git dup && git rebase develop"; - remotes = "remote -v"; - repush = "!git pull --rebase && git push"; - ri = "rebase --interactive"; - rid = "!git rebase -i $(git merge-base develop HEAD)"; - rim = "!git rebase -i $(git master-to-main-wrapper merge-base %BRANCH% HEAD)"; - rip = "!git rebase -i $(git merge-base production HEAD)"; - ris = "!git rebase -i $(git merge-base staging HEAD)"; - riu = "!git rebase -i $(git rev-parse --abbrev-ref --symbolic-full-name @{u})"; - rmup = "!git mup && git master-to-main-wrapper rebase %BRANCH%"; - sl = "log --oneline --decorate -20"; - sla = "log --oneline --decorate --graph --all -20"; - slap = "log --oneline --decorate --graph --all"; - slp = "log --oneline --decorate"; - stash = "stash --included-untracked"; - unassume = "update-index --no-assume-unchanged"; - uncommit = "reset --soft HEAD^"; - unstage = "reset"; - update = "!git fetch --all --jobs=4 --prune --progress && git rebase --autostash --stat"; - upstream = "rev-parse --abbrev-ref --symbolic-full-name @{u}"; - ureset = "!git reset --hard $(git upstream)"; - worktrees = "worktree list"; - }; -} diff --git a/modules/git/default-commit-message.nix b/modules/git/default-commit-message.nix deleted file mode 100644 index dfd1fe90..00000000 --- a/modules/git/default-commit-message.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - flake.modules.homeManager.base = - { config, ... }: - { - home.file."${config.xdg.configHome}/git/message".text = '' - - - # Description - # - # - Why is this change necessary? - # - How does it address the issue? - # - What side effects does this change have? - # - # For breaking changes, uncomment the following line and describe the change: - # - # BREAKING CHANGE: - # - # - # Add any issue IDs or commit SHAs that this commit references: - # - # Refs: - - ''; - }; -} diff --git a/modules/git/defaults.nix b/modules/git/defaults.nix deleted file mode 100644 index 02b8978c..00000000 --- a/modules/git/defaults.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ - flake.modules.homeManager.base = - { config, ... }: - { - programs.git.extraConfig = { - branch = { - autosetupmerge = true; - autosetuprebase = "always"; - sort = "-committerdate"; - }; - - checkout.defaultRemote = "origin"; - color.ui = true; - column.ui = "auto"; - commit.template = "${config.xdg.configHome}/git/message"; - - core = { - editor = "nvim"; - excludesFile = "${config.xdg.configHome}/git/ignore"; - }; - - diff.tool = "vimdiff"; - fetch.prune = true; - gpg.format = "ssh"; - grep.lineNumber = true; - help.autocorrect = "1"; - init.defaultBranch = "main"; - - maintenance = { - auto = false; - strategy = "incremental"; - }; - - merge.ff = "only"; - - push = { - autoSetupRemote = true; - default = "upstream"; - }; - - pull = { - ff = "only"; - rebase = true; - }; - - rebase = { - autosquash = true; - autostash = true; - }; - - user.signingkey = "~/.ssh/id_rsa.pub"; - }; - }; -} diff --git a/modules/git/enable.nix b/modules/git/enable.nix deleted file mode 100644 index da8cc9f0..00000000 --- a/modules/git/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.git.enable = true; -} diff --git a/modules/git/extra-packages.nix b/modules/git/extra-packages.nix deleted file mode 100644 index 6c610608..00000000 --- a/modules/git/extra-packages.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = with pkgs; [ - git-exclude - git-extras - git-graph - git-trim - stable.git-instafix - ]; - }; -} diff --git a/modules/git/ignores.nix b/modules/git/ignores.nix deleted file mode 100644 index 00b04ffc..00000000 --- a/modules/git/ignores.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - flake.modules.homeManager.base.programs.git.ignores = [ - "/.ddev/providers/" - "/.direnv/" - "/.ignored/" - "/.issue-id" - "/.phpactor.json" - "/notes" - "/todo" - ]; -} diff --git a/modules/git/user.nix b/modules/git/user.nix deleted file mode 100644 index bc3f214f..00000000 --- a/modules/git/user.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, ... }: - -{ - flake.modules.homeManager.base.programs.git = { - userName = config.flake.meta.owner.name; - userEmail = config.flake.meta.owner.email; - }; -} diff --git a/modules/git/variables.nix b/modules/git/variables.nix deleted file mode 100644 index e47ccb5f..00000000 --- a/modules/git/variables.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - flake.modules.homeManager.base.home.sessionVariables = { - GIT_INSTAFIX_UPSTREAM = "origin/main"; - }; -} diff --git a/modules/gnupg.nix b/modules/gnupg.nix deleted file mode 100644 index da3edb80..00000000 --- a/modules/gnupg.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - flake.modules = { - nixos.pc = - { pkgs, ... }: - { - security.pam.services.login.gnupg.enable = true; - - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - - pinentryPackage = pkgs.pinentry-qt; - }; - }; - - homeManager.base.home.file.".gnupg/gpg-agent.conf".text = '' - allow-preset-passphrase - default-cache-ttl 600 - max-cache-ttl 7200 - enable-ssh-support - ''; - }; -} diff --git a/modules/gtk/animations.nix b/modules/gtk/animations.nix deleted file mode 100644 index 45d5edac..00000000 --- a/modules/gtk/animations.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.modules.homeManager.gui.gtk = { - gtk3.extraConfig.gtk-enable-animations = false; - gtk4.extraConfig.gtk-enable-animations = false; - }; -} diff --git a/modules/gtk/enable.nix b/modules/gtk/enable.nix deleted file mode 100644 index ceed16d3..00000000 --- a/modules/gtk/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.gui.gtk.enable = true; -} diff --git a/modules/gtk/icon-theme.nix b/modules/gtk/icon-theme.nix deleted file mode 100644 index aed95ddf..00000000 --- a/modules/gtk/icon-theme.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - gtk.iconTheme = { - name = "Arc"; - package = pkgs.arc-icon-theme; - }; - }; -} diff --git a/modules/gtk/theme.nix b/modules/gtk/theme.nix deleted file mode 100644 index 44e42980..00000000 --- a/modules/gtk/theme.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - gtk.theme = { - name = "Arc-Dark"; - package = pkgs.arc-theme; - }; - }; -} diff --git a/modules/handbrake.nix b/modules/handbrake.nix deleted file mode 100644 index 8a8532a9..00000000 --- a/modules/handbrake.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ pkgs.handbrake ]; - }; -} diff --git a/modules/home-manager/base.nix b/modules/home-manager/base.nix deleted file mode 100644 index bbd936b3..00000000 --- a/modules/home-manager/base.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, ... }: - -{ - flake.modules.homeManager.base = args: { - home = { - homeDirectory = "/home/${config.flake.meta.owner.username}"; - username = config.flake.meta.owner.username; - }; - - programs.home-manager.enable = true; - - systemd.user.startServices = "sd-switch"; - }; -} diff --git a/modules/home-manager/cli/bluetuith.nix b/modules/home-manager/cli/bluetuith.nix new file mode 100644 index 00000000..b699183f --- /dev/null +++ b/modules/home-manager/cli/bluetuith.nix @@ -0,0 +1,41 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.cli.bluetuith; +in +{ + options.cli.bluetuith.enable = mkEnableOption "Enable bluetuith"; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + bluetuith + ]; + + xdg.configFile."bluetuith/bluetuith.conf" = { + text = '' + { + adapter: "" + adapter-states: "" + connect-bdaddr: "" + gsm-apn: "" + gsm-number: "" + + keybindings: { + NavigateDown: j + NavigateUp: k + } + + receive-dir: "" + theme: {} + } + ''; + }; + }; +} diff --git a/modules/home-manager/cli/bookmarkthis.nix b/modules/home-manager/cli/bookmarkthis.nix new file mode 100644 index 00000000..f312198e --- /dev/null +++ b/modules/home-manager/cli/bookmarkthis.nix @@ -0,0 +1,68 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + inherit (lib) mkEnableOption mkOption; + + cfg = config.cli.${name}; + name = "bookmarkthis"; +in +{ + options.cli.${name} = { + enable = mkEnableOption "Enable ${name}"; + + snippetsFile = mkOption { + default = "${config.xdg.dataHome}/snippets.txt"; + type = lib.types.str; + }; + }; + + config = lib.mkIf cfg.enable { + home = { + packages = with pkgs; [ + (pkgs.writeShellApplication { + name = "bookmarkthis"; + + text = '' + message() { + if command -v ${lib.getExe libnotify} > /dev/null; then + ${lib.getExe libnotify} "$1" "$2" + else + echo "$2" + fi + } + + main() { + bookmark="$(xclip -o)" + file="$SNIPPETS_FILE" + + if grep -q "^$bookmark$" "$file"; then + message "Oops." "Already bookmarked." >&2 + + exit 2 + fi + + echo "$bookmark" >> "$file" + + message "Bookmark added!" "$bookmark is now saved to the file." + } + + main + ''; + }) + ]; + + sessionVariables = { + SNIPPETS_FILE = cfg.snippetsFile; + }; + }; + + programs.zsh.zsh-abbr.abbreviations = lib.optionalAttrs (config.programs.zsh.enable) { + "sn" = "${config.home.sessionVariables.EDITOR} $SNIPPETS_FILE"; + }; + }; +} diff --git a/modules/home-manager/cli/dev-commit.nix b/modules/home-manager/cli/dev-commit.nix new file mode 100644 index 00000000..823420ed --- /dev/null +++ b/modules/home-manager/cli/dev-commit.nix @@ -0,0 +1,93 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.programs.dev-commit; + repoPaths = concatStringsSep ":" cfg.repoPaths; +in +{ + options.programs.dev-commit = { + enable = mkEnableOption "Enable dev-commit"; + + repoPaths = mkOption { + default = [ ]; + description = "A list of repository paths that should have automated commits"; + type = types.listOf types.path; + }; + + schedule = mkOption { + type = types.submodule { + options = { + enable = mkEnableOption "Enable automated dev commits with systemd"; + + time = mkOption { + description = '' + Time expression for when to run the dev-commit job. + + This uses systemd's `OnCalendar` syntax. + + Examples: + - "hourly" (once every hour) + - "daily" (once per day at midnight) + - "Mon *-*-01 12:00:00" (every Monday at 12:00 PM) + + See `man systemd.time` for full syntax reference. + ''; + default = "hourly"; + type = types.str; + }; + }; + }; + + default = { + enable = false; + time = "hourly"; + }; + }; + }; + + config = mkIf cfg.enable { + home = { + packages = [ + pkgs.dev-commit + ]; + + sessionVariables.DEV_COMMIT_PATHS = repoPaths; + }; + + systemd.user = mkIf cfg.schedule.enable { + services.dev-commit = { + Install.WantedBy = [ "default.target" ]; + + Service = { + Environment = [ + "DEV_COMMIT_PATHS=${repoPaths}" + ]; + + ExecStart = "${lib.getExe pkgs.dev-commit}"; + + Type = "oneshot"; + }; + + Unit.Description = "dev-commit"; + }; + + timers.dev-commit = { + Install.WantedBy = [ "timers.target" ]; + + Timer = { + OnCalendar = cfg.schedule.time; + Unit = "dev-commit.service"; + }; + + Unit.Description = "Runs automated development commits in select project repositories."; + }; + }; + }; +} diff --git a/modules/home-manager/cli/direnv.nix b/modules/home-manager/cli/direnv.nix new file mode 100644 index 00000000..875e27c3 --- /dev/null +++ b/modules/home-manager/cli/direnv.nix @@ -0,0 +1,21 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.cli.direnv; +in +{ + options.cli.direnv.enable = mkEnableOption "Enable direnv"; + + config = mkIf cfg.enable { + programs.direnv = { + enable = true; + enableZshIntegration = true; + + nix-direnv.enable = true; + + silent = true; + }; + }; +} diff --git a/modules/home-manager/cli/fzf.nix b/modules/home-manager/cli/fzf.nix new file mode 100644 index 00000000..2abbe2a1 --- /dev/null +++ b/modules/home-manager/cli/fzf.nix @@ -0,0 +1,21 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.cli.fzf; +in +{ + options.cli.fzf.enable = mkEnableOption "Enable fzf"; + + config = mkIf cfg.enable { + programs.fzf = { + enable = true; + enableZshIntegration = true; + }; + + home.sessionVariables = { + FZF_DEFAULT_OPTS = "--reverse"; + }; + }; +} diff --git a/modules/home-manager/cli/git.nix b/modules/home-manager/cli/git.nix new file mode 100644 index 00000000..0d0ae1a6 --- /dev/null +++ b/modules/home-manager/cli/git.nix @@ -0,0 +1,181 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.cli.git; +in +{ + options.cli.git = { + enable = mkEnableOption "Enable git"; + + user = mkOption { + type = types.submodule { + options = { + emailAddress = mkOption { + description = "User email address."; + type = types.str; + apply = + x: + assert builtins.match "^[^@]+@[^@]+\\.[^@]+$" x != null; + x; + }; + }; + }; + }; + }; + + config = mkIf cfg.enable { + home.file."${config.xdg.configHome}/git/message".text = '' + + + # Description + # + # - Why is this change necessary? + # - How does it address the issue? + # - What side effects does this change have? + # + # For breaking changes, uncomment the following line and describe the change: + # + # BREAKING CHANGE: + # + # + # Add any issue IDs or commit SHAs that this commit references: + # + # Refs: + + ''; + + programs = { + git = { + enable = true; + userName = "Oliver Davies"; + userEmail = cfg.user.emailAddress; + + aliases = { + aa = "add --all"; + assume = "update-index --assume-unchanged"; + assumed = "!git ls-files -v | grep '^[hsmrck?]' | cut -c 3-"; + b = "branch"; + blame = "blame -w -C -C -C"; + browse = "!gh repo view --web"; + ca = "commit --amend --verbose"; + car = "commit --amend --no-edit"; + cl = "!hub clone"; + co = "checkout"; + compare = "!hub compare"; + current-branch = "rev-parse --abbrev-ref HEAD"; + dc = "diff --color --word-diff --cached"; + df = "diff --color --word-diff"; + dup = "!git checkout develop && git fetch origin && echo && git sl develop..origin/develop && echo && git pull --quiet && git checkout -"; + fixup = "commit --fixup"; + issues = "!gh issue list --web"; + mup = "!git master-to-main-wrapper checkout %BRANCH% && git fetch origin && echo && git sl %BRANCH%..origin/%BRANCH% && echo && git pull --quiet && git checkout -"; + no-ff = "merge --no-ff"; + pl = "pull"; + prune = "remote prune origin"; + ps = "push"; + pulls = "!gh pr list --web"; + rbc = "rebase --continue"; + rdup = "!git dup && git rebase develop"; + remotes = "remote -v"; + repush = "!git pull --rebase && git push"; + ri = "rebase --interactive"; + rid = "!git rebase -i $(git merge-base develop HEAD)"; + rim = "!git rebase -i $(git master-to-main-wrapper merge-base %BRANCH% HEAD)"; + rip = "!git rebase -i $(git merge-base production HEAD)"; + ris = "!git rebase -i $(git merge-base staging HEAD)"; + riu = "!git rebase -i $(git rev-parse --abbrev-ref --symbolic-full-name @{u})"; + rmup = "!git mup && git master-to-main-wrapper rebase %BRANCH%"; + sl = "log --oneline --decorate -20"; + sla = "log --oneline --decorate --graph --all -20"; + slap = "log --oneline --decorate --graph --all"; + slp = "log --oneline --decorate"; + stash = "stash --included-untracked"; + unassume = "update-index --no-assume-unchanged"; + uncommit = "reset --soft HEAD^"; + unstage = "reset"; + update = "!git fetch --all --jobs=4 --prune --progress && git rebase --autostash --stat"; + upstream = "rev-parse --abbrev-ref --symbolic-full-name @{u}"; + ureset = "!git reset --hard $(git upstream)"; + worktrees = "worktree list"; + }; + + ignores = [ + "/.ddev/providers/" + "/.direnv/" + "/.ignored/" + "/.issue-id" + "/.phpactor.json" + "/notes" + "/todo" + ]; + + extraConfig = { + branch = { + autosetupmerge = true; + autosetuprebase = "always"; + sort = "-committerdate"; + }; + + checkout.defaultRemote = "origin"; + color.ui = true; + column.ui = "auto"; + commit.template = "${config.xdg.configHome}/git/message"; + + core = { + editor = "nvim"; + excludesFile = "~/.config/git/ignore"; + }; + + diff.tool = "vimdiff"; + fetch.prune = true; + gpg.format = "ssh"; + grep.lineNumber = true; + help.autocorrect = "1"; + init.defaultBranch = "main"; + + maintenance = { + auto = false; + strategy = "incremental"; + }; + + merge.ff = "only"; + + push = { + autoSetupRemote = true; + default = "upstream"; + }; + + pull = { + ff = "only"; + rebase = true; + }; + + rebase = { + autosquash = true; + autostash = true; + }; + + user.signingkey = "~/.ssh/id_rsa.pub"; + }; + }; + }; + + home = { + packages = with pkgs; [ + git-trim + stable.git-instafix + ]; + + sessionVariables = { + GIT_INSTAFIX_UPSTREAM = "origin/main"; + }; + }; + }; +} diff --git a/modules/home-manager/cli/node.nix b/modules/home-manager/cli/node.nix new file mode 100644 index 00000000..b0db6874 --- /dev/null +++ b/modules/home-manager/cli/node.nix @@ -0,0 +1,25 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.cli.node; + + inherit (config.xdg) configHome dataHome stateHome; +in +{ + options.cli.node.enable = mkEnableOption "Enable node"; + + config = mkIf cfg.enable { + xdg.configFile."${config.home.sessionVariables.NPM_CONFIG_USERCONFIG}".text = '' + cache=${configHome}/npm + init-module=${configHome}/npm/config/npm-init.js + logs-dir=${stateHome}/npm/logs + prefix=${dataHome}/npm + ''; + + home.sessionVariables = { + NPM_CONFIG_USERCONFIG = "${configHome}/npm/npmrc"; + }; + }; +} diff --git a/modules/home-manager/cli/notes.nix b/modules/home-manager/cli/notes.nix new file mode 100644 index 00000000..2b2d7b8e --- /dev/null +++ b/modules/home-manager/cli/notes.nix @@ -0,0 +1,37 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.cli.notes; +in +{ + options.cli.notes = { + enable = mkEnableOption "Enable notes"; + + directory = mkOption { + default = "${config.xdg.userDirs.documents}/notes"; + type = types.str; + }; + }; + + config = mkIf cfg.enable { + xdg = { + enable = true; + userDirs.enable = true; + }; + + home = { + packages = with pkgs; [ notes ]; + + sessionVariables = { + NOTES_DIRECTORY = cfg.directory; + }; + }; + }; +} diff --git a/modules/home-manager/cli/ranger.nix b/modules/home-manager/cli/ranger.nix new file mode 100644 index 00000000..7a05fd57 --- /dev/null +++ b/modules/home-manager/cli/ranger.nix @@ -0,0 +1,14 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.cli.ranger; +in +{ + options.cli.ranger.enable = mkEnableOption "Enable ranger"; + + config = mkIf cfg.enable { + programs.ranger.enable = true; + }; +} diff --git a/modules/home-manager/cli/scripts/default.nix b/modules/home-manager/cli/scripts/default.nix new file mode 100644 index 00000000..2da9de18 --- /dev/null +++ b/modules/home-manager/cli/scripts/default.nix @@ -0,0 +1,10 @@ +{ + home = { + sessionPath = [ "$HOME/.local/bin" ]; + + file.".local/bin" = { + source = ./scripts; + recursive = true; + }; + }; +} diff --git a/modules/home-manager/cli/scripts/scripts/create-script b/modules/home-manager/cli/scripts/scripts/create-script new file mode 100755 index 00000000..6d830971 --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/create-script @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +if [[ "$1" == "" ]]; then + echo "Usage: ${0##*/} "; exit 2 +fi + +set -o errexit +set -o nounset +set -o pipefail + +cat > "$1" << EOF +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + + +EOF + +chmod +x "$1" + +$EDITOR "$1"; diff --git a/modules/home-manager/cli/scripts/scripts/git-abort b/modules/home-manager/cli/scripts/scripts/git-abort new file mode 100755 index 00000000..cd7e067c --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/git-abort @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +# Abort a rebase, merge, `am`, a cherry-pick or a revert, depending on the situation. + +if [[ -e .git/CHERRY_PICK_HEAD ]] ; then + exec git cherry-pick --abort "$@" +elif [[ -e .git/REVERT_HEAD ]] ; then + exec git revert --abort "$@" +elif [[ -e .git/rebase-apply/applying ]] ; then + exec git am --abort "$@" +elif [[ -e .git/rebase-apply ]] ; then + exec git rebase --abort "$@" +elif [[ -e .git/rebase-merge ]] ; then + exec git rebase --abort "$@" +elif [[ -e .git/MERGE_MODE ]] ; then + exec git merge --abort "$@" +else + echo git-abort: unknown state + exit 1 +fi diff --git a/modules/home-manager/cli/scripts/scripts/git-bare-clone b/modules/home-manager/cli/scripts/scripts/git-bare-clone new file mode 100755 index 00000000..4db9eaba --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/git-bare-clone @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# Creates a new bare clone of a repository with the bare files within a `.bare` +# directory. It also sets the origin URL so push and pull work as expected. + +if [[ "$1" == "" ]]; then + echo "Usage: ${0##*/} []" + exit 2 +fi + +set -euo pipefail + +repository_url="${1}" +directory="${2:-}" +location=".bare" + +# If no destination directory is specified, get it from the repository URL - the same as "git clone". +if [ -z "${directory}" ]; then + directory="$(basename -s .git "${repository_url}")" +fi + +# Create the parent directory if needed. +mkdir -pv "${directory}" +cd "${directory}" + +git clone --bare "${repository_url}" "${location}" + +# Adjust origin fetch locations. +cd "${location}" +git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" + +# Set .git file contents. +cd .. +echo "gitdir: ./${location}" > .git diff --git a/modules/home-manager/cli/scripts/scripts/git-continue b/modules/home-manager/cli/scripts/scripts/git-continue new file mode 100755 index 00000000..9649ec95 --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/git-continue @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +# Continue a rebase or cherry-pick in the event of conflicts. + +if [[ -e .git/CHERRY_PICK_HEAD ]] ; then + exec git cherry-pick --continue "$@" +elif [[ -e .git/rebase-apply/applying ]] ; then + exec git rebase --continue "$@" +elif [[ -e .git/rebase-apply ]] ; then + exec git rebase --continue "$@" +elif [[ -e .git/rebase-merge ]] ; then + exec git rebase --continue "$@" +else + echo git-abort: unknown state + exit 1 +fi diff --git a/modules/home-manager/cli/scripts/scripts/git-sync b/modules/home-manager/cli/scripts/scripts/git-sync new file mode 100755 index 00000000..ff3775c5 --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/git-sync @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +git fetch --all +git stash +git pull --rebase +git stash pop diff --git a/modules/home-manager/cli/scripts/scripts/git-up b/modules/home-manager/cli/scripts/scripts/git-up new file mode 100755 index 00000000..79f36293 --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/git-up @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# Usage: git up {branch} {remote} + +set -e + +if [[ $# < 1 ]]; then + echo "You must specify a branch name to update" + exit 1 +fi + +BRANCH=$1 +REMOTE=${2:-origin} + +git checkout ${BRANCH} && \ + git fetch ${REMOTE} && \ + echo && \ + git sl ${BRANCH}..${REMOTE}/${BRANCH} && \ + echo && \ + git pull --quiet && \ + git checkout - diff --git a/modules/home-manager/cli/scripts/scripts/import-gzip-database b/modules/home-manager/cli/scripts/scripts/import-gzip-database new file mode 100755 index 00000000..9a6cf7ef --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/import-gzip-database @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +if [[ "$1" == "" ]]; then + echo "Usage: ${0##*/} "; exit 2 +fi + +set -euo pipefail + +filename="${1}" +shift 1 + +pv "${filename}" \ + | zcat \ + | docker compose exec -T "${SERVICE_NAME:-database}" mysql \ + -p"${DB_PASSWORD:-app}" \ + -u"${DB_USER:-app}" \ + "${DB_NAME:-app}" diff --git a/modules/home-manager/cli/scripts/scripts/main-or-master-branch b/modules/home-manager/cli/scripts/scripts/main-or-master-branch new file mode 100755 index 00000000..ed9ffbd3 --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/main-or-master-branch @@ -0,0 +1,10 @@ +#!/bin/zsh + +# Check if we should use the `main` or `master` branch for this repo. +# Prefer `main` to `master`. + +if git show-ref --quiet origin/main || git rev-parse main &>/dev/null; then + echo main +else + echo master +fi \ No newline at end of file diff --git a/modules/home-manager/cli/scripts/scripts/mounter b/modules/home-manager/cli/scripts/scripts/mounter new file mode 100755 index 00000000..60b828eb --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/mounter @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + +lsblk_output="$(lsblk -rpo "uuid,name,type,size,label,mountpoint,mountpoints,fstype" | grep "part" | grep -Ev "/(boot|nix/store)")" +partition_names="$(echo "$lsblk_output" | awk '{ printf "%s (%s)\n", $2, $4 }' )"; + +selected=$(echo "$partition_names" | dmenu -p "Select drive:" | awk '{ print $1 }') +test -n "$selected" +mount_device="$selected" + +if sudo cryptsetup isLuks "$selected"; then + luks_name="usb" + + ${TERMINAL:-st} -n floatterm -g 60x1 -e sudo cryptsetup open "$selected" "$luks_name" + + mount_device="/dev/mapper/$luks_name" + + test -b "/dev/mapper/$luks_name" +fi + +mount_point=$(echo -e "/mnt\n/media\n/run/media/$USER" | dmenu -p "Select mount point:") +test -n "$mount_point" + +sudo mkdir -p "$mount_point" + +if sudo mount "$mount_device" "$mount_point"; then + notify-send "Device mounted" "Mounted $selected at $mount_point." +else + notify-send "Mount failed" "Failed to mount $selected." + + exit 1 +fi + diff --git a/modules/home-manager/cli/scripts/scripts/move-firefox-screenshots b/modules/home-manager/cli/scripts/scripts/move-firefox-screenshots new file mode 100755 index 00000000..d47e522d --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/move-firefox-screenshots @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + +original_directory="${HOME}/Downloads" +new_directory="${HOME}/Pictures/Screenshots" + +find "${original_directory}" -mindepth 1 -maxdepth 1 -type f -name "Screenshot *" \ + -exec mv {} "${new_directory}" \; diff --git a/modules/home-manager/cli/scripts/scripts/new-drupal-module b/modules/home-manager/cli/scripts/scripts/new-drupal-module new file mode 100755 index 00000000..7eeca36b --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/new-drupal-module @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +if [[ "$1" == "" || "$2" == "" ]]; then + echo "Usage: ${0##*/} "; exit 2 +fi + +set -euo pipefail + +machine_name=$1 +module_name=$2 + +git clone https://github.com/opdavies/drupal-module-template \ + --depth=1 \ + "${machine_name}" + +pushd "${machine_name}" +just rename "${module_name}" +rm -fr .git .github justfile phpcs.xml.dist +popd diff --git a/modules/home-manager/cli/scripts/scripts/setbg b/modules/home-manager/cli/scripts/scripts/setbg new file mode 100755 index 00000000..9882de53 --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/setbg @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +xwallpaper --zoom ${XDG_REPOS_DIR}/personal/nix-config/wallpaper/wallpaper.jpg diff --git a/modules/home-manager/cli/scripts/scripts/start-traefik b/modules/home-manager/cli/scripts/scripts/start-traefik new file mode 100755 index 00000000..6bbdb9d9 --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/start-traefik @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset + +cd "${XDG_REPOS_DIR}/traefik-development" + +docker compose up --detach +docker container ps diff --git a/modules/home-manager/cli/scripts/scripts/stop-all-docker-containers b/modules/home-manager/cli/scripts/scripts/stop-all-docker-containers new file mode 100755 index 00000000..69e59a42 --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/stop-all-docker-containers @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Stops all running Docker containers except for the global Traefik proxy. + +set -euo pipefail + +# Show the running containers. +docker container ps + +echo "" + +# Stop the running containers and show any that are still running. +docker container ls | + tail -n +2 | + grep -v traefik-development-reverse-proxy-1 | + awk '{print $1}' | + xargs docker container stop +echo "" +docker container ps diff --git a/modules/home-manager/cli/scripts/scripts/stop-traefik b/modules/home-manager/cli/scripts/scripts/stop-traefik new file mode 100755 index 00000000..813e3c2c --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/stop-traefik @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset + +docker container stop traefik-development-reverse-proxy-1 +docker container ps diff --git a/modules/home-manager/cli/scripts/scripts/tag-release b/modules/home-manager/cli/scripts/scripts/tag-release new file mode 100755 index 00000000..c1899930 --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/tag-release @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -euo pipefail + +commit_sha="${1:-HEAD}" +tag="$(date '+%Y-%m-%d-%H.%M.%S')" + +echo "Tagging commit $(git rev-parse "${commit_sha}") as ${tag}." +echo "" + +git tag "${tag}" "${commit_sha}" diff --git a/modules/home-manager/cli/scripts/scripts/unmounter b/modules/home-manager/cli/scripts/scripts/unmounter new file mode 100755 index 00000000..cc3d5d8b --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/unmounter @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + +lsblk_output="$(lsblk -nrpo "name,type,size,mountpoint")" +mounted_drives="$(echo "$lsblk_output" | awk '($2=="part"||$2="crypt")&&$4!~/\/boot|\/home$|SWAP/&&length($4)>1{printf "%s (%s)\n",$4,$3}')" + +all_unmountable="$(echo "$mounted_drives" | sed "/^$/d;s/ *$//")" +test -n "$all_unmountable" + +selected="$(echo "$all_unmountable" | dmenu -i -p "Unmount which drive?")" +selected="${selected%% *}" +test -n "$selected" + +sudo -A umount -l "/${selected#*/}" +notify-send "Device unmounted" "$selected has been unmounted." + +# Close the selected drive if decrypted. +cryptid="$(echo "$lsblk_output" | grep "/${selected#*/}$")" +cryptid="${cryptid%% *}" +test -b /dev/mapper/"${cryptid##*/}" +sudo -A cryptsetup close "$cryptid" + +notify-send "Device dencryption closed" "Drive is now securely locked again." diff --git a/modules/home-manager/cli/scripts/scripts/update-all-git-repos b/modules/home-manager/cli/scripts/scripts/update-all-git-repos new file mode 100755 index 00000000..b3c4bcd5 --- /dev/null +++ b/modules/home-manager/cli/scripts/scripts/update-all-git-repos @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# Update all top-level Git repository clones within my Code directories to their +# latest version. + +set -o errexit +set -o nounset + +dirs=$(find "$XDG_REPOS_DIR" -mindepth 1 -maxdepth 2 -type d -name .git -not -path '*/*.old/*') + +for dir in $dirs; do + repo_path="${dir%/.git}" + + cd "${repo_path}" + + # If the repo is a bare clone, the commands need to be run within the + # worktree directory. + [[ -f .bare/worktrees/main/gitdir && -d main && -f main/.git ]] && cd main + + echo "Updating $(pwd)" + + # Update the repository. + git fetch --all --jobs=4 --progress --prune || true + git pull --rebase || true +done diff --git a/modules/home-manager/cli/starship.nix b/modules/home-manager/cli/starship.nix new file mode 100644 index 00000000..a3673af6 --- /dev/null +++ b/modules/home-manager/cli/starship.nix @@ -0,0 +1,187 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.cli.starship; +in +{ + options.cli.starship.enable = mkEnableOption "Enable starship"; + + config = mkIf cfg.enable { + programs.starship = + let + inherit (builtins) concatStringsSep; + in + { + enable = true; + enableZshIntegration = true; + + settings = { + add_newline = false; + + # https://starship.rs/config/#prompt + format = concatStringsSep "" [ + "\n" + "$username" + "$hostname" + "$directory" + "$vcsh" + "$git_branch" + "$git_status" + "$git_metrics" + "$docker_context" + "$nodejs" + "$php" + "$terraform" + "$nix_shell" + "$direnv" + "\${custom.mob}" + "$memory_usage" + "$cmd_duration" + "$lua" + "$status" + "$character" + ]; + + cmd_duration.disabled = true; + direnv.disabled = false; + directory.format = "[$path]($style) "; + git_status.disabled = true; + nix_shell.disabled = true; + nodejs.disabled = true; + php.disabled = true; + username.disabled = true; + + custom = { + mob = { + command = "echo $MOB_TIMER_ROOM"; + format = "[($output)]($style) "; + when = "[[ -v MOB_TIMER_ROOM ]]"; + }; + }; + + # https://starship.rs/presets/plain-text + aws.symbol = "aws "; + azure.symbol = "az "; + bun.symbol = "bun "; + c.symbol = "C "; + character = { + success_symbol = "[>](bold green)"; + error_symbol = "[x](bold red)"; + vimcmd_symbol = "[<](bold green)"; + }; + cobol.symbol = "cobol "; + conda.symbol = "conda "; + crystal.symbol = "cr "; + cmake.symbol = "cmake "; + daml.symbol = "daml "; + dart.symbol = "dart "; + deno.symbol = "deno "; + dotnet.symbol = ".NET "; + directory.read_only = " ro"; + docker_context.symbol = "docker "; + elixir.symbol = "exs "; + elm.symbol = "elm "; + fennel.symbol = "fnl "; + fossil_branch.symbol = "fossil "; + gcloud.symbol = "gcp "; + git_branch.symbol = "git "; + git_commit.tag_symbol = " tag "; + git_status = { + ahead = ">"; + behind = "<"; + diverged = "<>"; + renamed = "r"; + deleted = "x"; + }; + gleam.symbol = "gleam "; + golang.symbol = "go "; + gradle.symbol = "gradle "; + guix_shell.symbol = "guix "; + hg_branch.symbol = "hg "; + java.symbol = "java "; + julia.symbol = "jl "; + kotlin.symbol = "kt "; + lua.symbol = "lua "; + nodejs.symbol = "nodejs "; + memory_usage.symbol = "memory "; + meson.symbol = "meson "; + nats.symbol = "nats "; + nim.symbol = "nim "; + nix_shell.symbol = "nix "; + ocaml.symbol = "ml "; + opa.symbol = "opa "; + os.symbols = { + AIX = "aix "; + Alpaquita = "alq "; + AlmaLinux = "alma "; + Alpine = "alp "; + Amazon = "amz "; + Android = "andr "; + Arch = "rch "; + Artix = "atx "; + CentOS = "cent "; + Debian = "deb "; + DragonFly = "dfbsd "; + Emscripten = "emsc "; + EndeavourOS = "ndev "; + Fedora = "fed "; + FreeBSD = "fbsd "; + Garuda = "garu "; + Gentoo = "gent "; + HardenedBSD = "hbsd "; + Illumos = "lum "; + Kali = "kali "; + Linux = "lnx "; + Mabox = "mbox "; + Macos = "mac "; + Manjaro = "mjo "; + Mariner = "mrn "; + MidnightBSD = "mid "; + Mint = "mint "; + NetBSD = "nbsd "; + NixOS = "nix "; + OpenBSD = "obsd "; + OpenCloudOS = "ocos "; + openEuler = "oeul "; + openSUSE = "osuse "; + OracleLinux = "orac "; + Pop = "pop "; + Raspbian = "rasp "; + Redhat = "rhl "; + RedHatEnterprise = "rhel "; + RockyLinux = "rky "; + Redox = "redox "; + Solus = "sol "; + SUSE = "suse "; + Ubuntu = "ubnt "; + Ultramarine = "ultm "; + Unknown = "unk "; + Void = "void "; + Windows = "win "; + }; + package.symbol = "pkg "; + perl.symbol = "pl "; + php.symbol = "php "; + pijul_channel.symbol = "pijul "; + pulumi.symbol = "pulumi "; + purescript.symbol = "purs "; + python.symbol = "py "; + quarto.symbol = "quarto "; + raku.symbol = "raku "; + ruby.symbol = "rb "; + rust.symbol = "rs "; + scala.symbol = "scala "; + spack.symbol = "spack "; + solidity.symbol = "solidity "; + status.symbol = "[x](bold red) "; + sudo.symbol = "sudo "; + swift.symbol = "swift "; + typst.symbol = "typst "; + terraform.symbol = "terraform "; + zig.symbol = "zig "; + }; + }; + }; +} diff --git a/modules/home-manager/cli/sxhkd.nix b/modules/home-manager/cli/sxhkd.nix new file mode 100644 index 00000000..a70a7285 --- /dev/null +++ b/modules/home-manager/cli/sxhkd.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.cli.${service}; + service = "sxhkd"; + + inherit (lib) getExe mkIf mkEnableOption; +in +{ + options.cli.${service} = { + enable = mkEnableOption "Enable ${service}"; + }; + + config = mkIf cfg.enable { + xsession.enable = true; + + services.${service} = { + enable = true; + + keybindings = { + "{_, shift +, super +}XF86MonBrightness{Down,Up}" = "${getExe pkgs.brightnessctl} set {5%-,10%-,10%,+5%,+10%,100%} --quiet"; + "super + x; {1, 2, 3, 4}" = "st {notes, newsboat, nmtui, bluetuith}"; + "super + shift + b" = "/etc/profiles/per-user/opdavies/bin/bookmarkthis"; + "super + shift + i" = "${pkgs.xdotool}/bin/xdotool type $(cat ~/.local/share/snippets.txt | grep -v '^#' | grep -v '^$' | sort | dmenu -i -l 50 | cut -d' ' -f1)"; + "super + shift + p" = "${getExe pkgs.passmenu-otp} -i"; + "@F3" = "${getExe pkgs.displayselect}"; + "@F9" = "/home/opdavies/.local/bin/mounter"; + "@F10" = "/home/opdavies/.local/bin/unmounter"; + }; + }; + }; +} diff --git a/modules/home-manager/cli/tmux-sessionizer.nix b/modules/home-manager/cli/tmux-sessionizer.nix new file mode 100644 index 00000000..97ca9086 --- /dev/null +++ b/modules/home-manager/cli/tmux-sessionizer.nix @@ -0,0 +1,70 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.cli.tmux-sessionizer; +in +{ + options.cli.tmux-sessionizer = { + enable = mkEnableOption "Enable tmux-sessionizer"; + enableDmenuIntegration = mkEnableOption "Enable dmenu integration"; + + directories = mkOption { + default = [ config.home.homeDirectory ]; + type = types.listOf types.str; + description = "List of directories for tmux-sessionizer to use."; + }; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + tmux-sessionizer + ] ++ (optional cfg.enableDmenuIntegration ( + pkgs.writeShellApplication { + name = "tmux-sessionizer-dmenu"; + + text = '' + # shellcheck disable=SC2046 + selected=$(find $(eval echo "$(xargs < "$XDG_CONFIG_HOME/tmux-sessionizer/directories")") -mindepth 1 -maxdepth 1 -type d | dmenu -i -l 20) + + ${pkgs.coreutils}/bin/nohup st -e tmux-sessionizer "$selected" >/dev/null 2>&1 & + ''; + } + )); + + xdg.configFile = { + "tmux-sessionizer/default".source = "${ + pkgs.writeShellApplication { + name = ".tmux-sessionizer"; + + runtimeInputs = with pkgs; [ + tmux + ]; + + text = '' + set +o errexit + set +o nounset + + if [[ "$PWD" == "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/os" || "$PWD" == "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/personal" || "$PWD" == "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/work" ]]; then + clear + + return + fi + + tmux new-window -d -n scratch + nvim . + clear + ''; + } + }/bin/.tmux-sessionizer"; + + "tmux-sessionizer/directories".text = builtins.concatStringsSep "\n" cfg.directories; + }; + }; +} diff --git a/modules/home-manager/cli/tmux.nix b/modules/home-manager/cli/tmux.nix new file mode 100644 index 00000000..fb12514b --- /dev/null +++ b/modules/home-manager/cli/tmux.nix @@ -0,0 +1,97 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.cli.tmux; +in +{ + options.cli.tmux.enable = mkEnableOption "Enable tmux"; + + config = mkIf cfg.enable { + programs.tmux = { + enable = true; + + terminal = "tmux-256color"; + + extraConfig = '' + set-option -g status-keys "vi" + set-option -sa terminal-features "''${TERM}:RGB" + + bind -n S-Left resize-pane -L 2 + bind -n S-Right resize-pane -R 2 + bind -n S-Down resize-pane -D 1 + bind -n S-Up resize-pane -U 1 + + bind -n C-Left resize-pane -L 10 + bind -n C-Right resize-pane -R 10 + bind -n C-Down resize-pane -D 5 + bind -n C-Up resize-pane -U 5 + + # Status line customisation + set-option -g status-left "" + set-option -g status-right " #{session_name}" + set-option -g status-right-length 100 + set-option -g status-style "fg=#7C7D83 bg=default" + set-option -g window-status-activity-style none + set-option -g window-status-current-style "fg=#E9E9EA" + + bind c new-window -c "#{pane_current_path}" + + set -g base-index 1 + set -g pane-base-index 1 + set -g renumber-windows on + + # Break a pane into a new window. + bind-key b break-pane -d + bind-key J command-prompt -p "join pane from: " "join-pane -h -s '%%'" + + bind-key C-j choose-tree + + set-window-option -g mode-keys vi + bind -T copy-mode-vi v send-keys -X begin-selection + bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' + + bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t" + + bind-key K run-shell 'tmux switch-client -n \; kill-session -t "$(tmux display-message -p "#S")" || tmux kill-session' + + # Allow clearing screen with ctrl-l by using C-l + bind C-l send-keys "C-l" + bind C-k send-keys "C-k" + + # Enable mouse support. + setw -g mouse on + + # Remove delay when switching Vim modes. + set -sg escape-time 0 + + set-option -g pane-active-border-style "fg=#1f2335" + set-option -g pane-border-style "fg=#1f2335" + + # Vim-like pane navigation. + bind ^ last-window + bind h select-pane -L + bind j select-pane -D + bind k select-pane -U + bind l select-pane -R + + bind-key -r f run-shell "tmux new-window tmux-sessionizer" + + bind-key -r D new-window -c "#{pane_current_path}" "[[ -e TODO.md ]] && nvim TODO.md || nvim ~/Documents/wiki/todo.txt" + bind-key -r N new-window "notes" + bind-key -r W split-window -h -c ~/Documents/wiki "nvim '+Telescope find_files'" + ''; + + plugins = with pkgs.tmuxPlugins; [ + vim-tmux-navigator + yank + ]; + }; + }; +} diff --git a/modules/home-manager/cli/todos.nix b/modules/home-manager/cli/todos.nix new file mode 100644 index 00000000..e55c7456 --- /dev/null +++ b/modules/home-manager/cli/todos.nix @@ -0,0 +1,36 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + name = "todos"; + cfg = config.cli.${name}; + + inherit (lib) mkOption types; +in +{ + options.cli.${name} = { + enable = lib.mkEnableOption "Enable ${name}"; + + directory = mkOption { + default = "${config.xdg.userDirs.documents}/todos"; + type = types.str; + }; + }; + + config = lib.mkIf cfg.enable { + home = { + packages = with pkgs; [ + todos-add + todos-edit + ]; + + sessionVariables = { + TODOS_DIRECTORY = cfg.directory; + }; + }; + }; +} diff --git a/modules/home-manager/cli/zsh/abbreviations.nix b/modules/home-manager/cli/zsh/abbreviations.nix new file mode 100644 index 00000000..90d1d5ce --- /dev/null +++ b/modules/home-manager/cli/zsh/abbreviations.nix @@ -0,0 +1,165 @@ +{ + cl = "clear"; + cs = "create-script"; + daily = "run create-daily next"; + rst = "rst2pdf"; + st = "source .tmux"; + sz = "source ~/.config/zsh/.zshrc"; + ti = "timer"; + uagr = "update-all-git-repos"; + v = "nvim"; + yt = "yt-dlp"; + + evl = "export-video-list"; + vv = "cat ~/Documents/videos.json"; + + f = "find ."; + fd = "find . -type d"; + fdn = "find . -type d -name"; + ff = "find . -type f"; + ffn = "find . -type f -name"; + + g = "git"; + ga = "git add"; + gan = "git add -N"; + gap = "git add -p"; + gb = "git branch"; + gba = "git branch --all"; + gbl = "git blame"; + gc = "git commit"; + gca = "git commit --amend"; + gcan = "git commit --amend --no-edit"; + gcl = "git clone"; + gcm = "git commit -m"; + gco = "git checkout"; + gcob = "git checkout -b"; + gd = "git diff"; + gds = "git diff --staged"; + gf = "git fetch"; + gfa = "git fetch --all"; + gl = "git log"; + glg = "git log --grep"; + glo = "git log --oneline"; + glog = "git log --oneline --grep"; + glos = "git log --oneline -S"; + gls = "git log -S"; + gm = "git merge"; + gmf = "git merge --ff"; + gmnf = "git merge --no-ff"; + gp = "git push"; + gpa = "git push acquia"; + gpam = "git push acquia main"; + gpap = "git push acquia HEAD:production"; + gpf = "git push --force-with-lease"; + gpfo = "git push --force-with-lease origin"; + gpl = "git pull"; + gplr = "git pull --rebase"; + gpo = "git push origin"; + gpom = "git push origin main"; + gpt = "git push --tags"; + gr = "git rebase"; + gra = "git rebase --abort"; + grc = "git rebase --continue"; + gri = "git rebase -i"; + gs = "git status"; + gsh = "git show"; + gst = "git stash"; + gstp = "git stash pop"; + gt = "git tag"; + + j = "just"; + jb = "just build"; + jt = "just test"; + js = "just switch"; + + # tmux + ta = "tmux attach"; + tl = "tmux list-sessions"; + tk = "tmux kill-session"; + + # Docker and Docker Compose. + dk = "docker"; + dkp = "docker ps"; + dkpa = "docker ps -a"; + dkpaq = "docker ps -a -q"; + dkb = "docker build -t"; + dks = "docker start"; + dkt = "docker stop"; + dkrm = "docker rm"; + dkri = "docker rmi"; + dke = "docker exec -ti"; + dkl = "docker logs -f"; + dki = "docker images"; + dkpu = "docker pull"; + dkph = "docker push"; + dkbnc = "docker build --no-cache -t"; + dkr = "docker run --rm"; + dkrti = "docker run --rm -ti"; + dkc = "docker compose"; + dkcb = "docker compose build"; + dkcu = "docker compose up"; + dkclean = "docker ps -q -a -f status=exited | xargs -r docker rm && docker images -q -f dangling=true | xargs -r docker rmi"; + + # Nix and direnv. + dea = "direnv allow"; + dee = "direnv edit"; + nxf = "nix flake"; + nxfc = "nix flake check"; + nxfs = "nix flake show"; + nxfu = "nix flake update"; + nxr = "nix run nixpkgs#%"; + nxs = "nix shell nixpkgs#%"; + + # run scripts. + r = "run"; + rc = "run composer"; + rcda = "run composer dump-autoload"; + rci = "run composer install"; + rcr = "run composer require"; + rcu = "run composer update"; + rd = "run drush"; + rdce = "run drush config:export -y"; + rdci = "run drush config:import -y"; + rdcr = "run drush cache:rebuild"; + rdscr = "run drush php:script"; + rduli = "run drush uli"; + rdup = "run drush updatedb -y"; + rpub = "run publish"; + rt = "run test"; + + nah = "git reset --hard; git clean -fd"; + wip = "git commit -m wip"; + + dv = "devenv"; + dvi = "devenv info"; + dvp = "devenv processes"; + dvs = "devenv shell"; + dvt = "devenv tasks"; + dvu = "devenv up"; + + c = "composer"; + ci = "composer install"; + cr = "composer require"; + crd = "composer require drupal/%"; + cu = "composer update"; + cul = "composer update --lock"; + cw = "composer why"; + cwn = "composer why-not"; + + d = "drush"; + dce = "drush config:export -y"; + dci = "drush config:import -y"; + dcr = "drush cache:rebuild"; + den = "drush pm:enable -y"; + deu = "drush pm:uninstall"; + dscr = "drush php:script"; + duli = "drush uli"; + dup = "drush updatedb -y"; + + sg = "vendor/bin/sculpin generate"; + sge = "vendor/bin/sculpin generate --env"; + sgs = "vendor/bin/sculpin generate --server"; + sgsp = "vendor/bin/sculpin generate --server --port"; + sgsw = "vendor/bin/sculpin generate --server --watch"; + sgswp = "vendor/bin/sculpin generate --server --watch --port"; +} diff --git a/modules/home-manager/cli/zsh/aliases.nix b/modules/home-manager/cli/zsh/aliases.nix new file mode 100644 index 00000000..304d4b3f --- /dev/null +++ b/modules/home-manager/cli/zsh/aliases.nix @@ -0,0 +1,14 @@ +{ config, ... }: + +{ + "$" = ""; + "-" = "cd -"; + ".." = "cd .."; + "..." = "cd ../.."; + "...." = "cd ../../.."; + "....." = "cd ../../../.."; + run = "./run"; + tag = "tag-release"; + vss = "LC_ALL=C sort --unique ${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/nixos-config/modules/home-manager/cli/neovim/config/spell/en.utf-8.adddotfiles/nvim/spell/en.utf-8.add --output ${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/nixos-config/modules/home-manager/cli/neovim/config/spell/en.utf-8.add"; + wt = "git worktree"; +} diff --git a/modules/zsh/init.nix b/modules/home-manager/cli/zsh/default.nix similarity index 51% rename from modules/zsh/init.nix rename to modules/home-manager/cli/zsh/default.nix index e147ffad..ff44e389 100644 --- a/modules/zsh/init.nix +++ b/modules/home-manager/cli/zsh/default.nix @@ -1,8 +1,46 @@ { - flake.modules.homeManager.base = - { config, pkgs, ... }: - { - programs.zsh.initContent = '' + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.cli.zsh; +in +{ + options.cli.zsh.enable = mkEnableOption "Enable zsh"; + + config = mkIf cfg.enable { + programs.zsh = { + enable = true; + enableCompletion = true; + syntaxHighlighting.enable = true; + + zsh-abbr = { + enable = true; + + abbreviations = import ./abbreviations.nix; + globalAbbreviations = import ./global-abbreviations.nix; + }; + + dotDir = ".config/zsh"; + + shellAliases = (import ./aliases.nix { inherit config; }); + + localVariables = { + ABBR_SET_EXPANSION_CURSOR = 1; + }; + + profileExtra = '' + if [[ -z "$DISPLAY" ]] && [[ "$(tty)" == "/dev/tty1" ]]; then + exec startx &>/dev/null + fi + ''; + + initContent = '' background() { for ((i=2;i<=$#;i++)); do ''${@[1]} ''${@[$i]} &> /dev/null & @@ -18,6 +56,22 @@ git() { case "$1" in + clone) + shift + + local repo_url="$1" + local repo_path="''${2:-}" + + if [ -n "$TARGET_DIR" ]; then + command git clone "$repo_url" "$repo_path" + else + command git clone "$repo_url" + repo_path=$(basename "$repo_url" .git) + fi + + ${pkgs.tmux-sessionizer}/bin/tmux-sessionizer "$repo_path" + ;; + root) shift @@ -44,10 +98,6 @@ command ${pkgs.ttyper}/bin/ttyper --language english1000 --words 50 "''${@}" } - weather() { - curl "https://wttr.in/''$1" - } - yt-dlp() { command yt-dlp --paths ~/Videos "$@" } @@ -61,4 +111,5 @@ setopt pushdminus ''; }; + }; } diff --git a/modules/home-manager/cli/zsh/global-abbreviations.nix b/modules/home-manager/cli/zsh/global-abbreviations.nix new file mode 100644 index 00000000..9faa7408 --- /dev/null +++ b/modules/home-manager/cli/zsh/global-abbreviations.nix @@ -0,0 +1,14 @@ +{ + A1 = "| awk '{print $1}'"; + C = "| xclip -sel clip"; + Fj = "| jq ."; + Fy = "| yq ."; + G = "| grep"; + GH = "| grep HTTP"; + Gi = "| grep -i"; + H2 = "| head -n 20"; + H = "| head"; + L = "| less"; + V = "| nvim -"; + X = "| xargs -I1"; +} diff --git a/modules/home-manager/coding/neovim/config/default.nix b/modules/home-manager/coding/neovim/config/default.nix new file mode 100644 index 00000000..05e2fb0d --- /dev/null +++ b/modules/home-manager/coding/neovim/config/default.nix @@ -0,0 +1,74 @@ +{ pkgs, ... }: + +{ + # TODO: re-add DAP. + # TODO: re-add snippets. + # TODO: re-configure spell. + + imports = [ + ./keymaps.nix + ./options.nix + ./plugins/auto-save.nix + ./plugins/cmp.nix + ./plugins/conform.nix + ./plugins/fidget.nix + ./plugins/fugitive.nix + ./plugins/gitsigns.nix + ./plugins/harpoon.nix + ./plugins/lint.nix + ./plugins/lsp.nix + ./plugins/lualine.nix + ./plugins/luasnip.nix + ./plugins/mini.nix + ./plugins/nvim-autopairs.nix + ./plugins/oil.nix + ./plugins/phpactor.nix + ./plugins/refactoring.nix + ./plugins/telescope.nix + ./plugins/treesitter.nix + ./plugins/undotree.nix + ./plugins/vim-cool.nix + ./plugins/vim-dadbod.nix + ./plugins/vim-highlightedyank.nix + ./plugins/vim-test.nix + ./plugins/web-devicons.nix + ]; + + colorschemes.catppuccin = { + enable = true; + settings.flavour = "mocha"; + }; + + diagnostic.settings = { + signs = true; + underline = false; + update_in_insert = false; + virtual_text = { + enable = true; + spacing = 2; + }; + }; + + extraPackages = with pkgs; [ + nixfmt-rfc-style + stylua + ]; + + filetype = { + extension = { + "neon.dist" = "yaml"; + inc = "php"; + install = "php"; + module = "php"; + neon = "yaml"; + pcss = "scss"; + theme = "php"; + }; + + filename = { + "composer.lock" = "json"; + }; + }; + + globals.mapleader = " "; +} diff --git a/modules/nixvim/keymaps.nix b/modules/home-manager/coding/neovim/config/keymaps.nix similarity index 89% rename from modules/nixvim/keymaps.nix rename to modules/home-manager/coding/neovim/config/keymaps.nix index dc13def0..0c51a5bd 100644 --- a/modules/nixvim/keymaps.nix +++ b/modules/home-manager/coding/neovim/config/keymaps.nix @@ -1,5 +1,5 @@ { - flake.modules.nixvim.custom.keymaps = [ + keymaps = [ { action = "A,"; key = ",,"; @@ -31,10 +31,7 @@ { action = "\"+y"; key = "y"; - mode = [ - "n" - "x" - ]; + mode = ["n" "x"]; } { @@ -51,10 +48,7 @@ { action = ":w"; key = ""; - mode = [ - "i" - "n" - ]; + mode = ["i" "n"]; } { diff --git a/modules/nixvim/options.nix b/modules/home-manager/coding/neovim/config/options.nix similarity index 89% rename from modules/nixvim/options.nix rename to modules/home-manager/coding/neovim/config/options.nix index adfacce9..eaf2a8de 100644 --- a/modules/nixvim/options.nix +++ b/modules/home-manager/coding/neovim/config/options.nix @@ -1,6 +1,5 @@ { - flake.modules.nixvim.custom.opts = { - cmdheight = 0; + opts = { expandtab = true; exrc = true; foldlevel = 1; diff --git a/modules/home-manager/coding/neovim/config/plugins/auto-save.nix b/modules/home-manager/coding/neovim/config/plugins/auto-save.nix new file mode 100644 index 00000000..037f6c42 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/auto-save.nix @@ -0,0 +1,22 @@ +{ + plugins.auto-save.enable = true; + + plugins.auto-save.settings.condition = '' + function(buf) + local excluded_filetypes = { + "harpoon", + "oil", + } + + local excluded_filenames = {} + + if vim.tbl_contains(excluded_filetypes, vim.fn.getbufvar(buf, "&filetype")) + or vim.tbl_contains(excluded_filenames, vim.fn.expand("%:t")) + then + return false + end + + return true + end + ''; +} diff --git a/modules/nixvim/completion/cmp.nix b/modules/home-manager/coding/neovim/config/plugins/cmp.nix similarity index 96% rename from modules/nixvim/completion/cmp.nix rename to modules/home-manager/coding/neovim/config/plugins/cmp.nix index c6d96b43..1c31ec3f 100644 --- a/modules/nixvim/completion/cmp.nix +++ b/modules/home-manager/coding/neovim/config/plugins/cmp.nix @@ -1,5 +1,5 @@ { - flake.modules.nixvim.custom.plugins.cmp = { + plugins.cmp = { enable = true; autoEnableSources = true; @@ -51,6 +51,7 @@ name = "buffer"; keyword_length = 3; } + { name = "calc"; } ]; }; }; diff --git a/modules/home-manager/coding/neovim/config/plugins/conform.nix b/modules/home-manager/coding/neovim/config/plugins/conform.nix new file mode 100644 index 00000000..50dce5af --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/conform.nix @@ -0,0 +1,3 @@ +{ + plugins.conform-nvim.enable = true; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/fidget.nix b/modules/home-manager/coding/neovim/config/plugins/fidget.nix new file mode 100644 index 00000000..b18a7175 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/fidget.nix @@ -0,0 +1,3 @@ +{ + plugins.fidget.enable = true; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/fugitive.nix b/modules/home-manager/coding/neovim/config/plugins/fugitive.nix new file mode 100644 index 00000000..6fc46e10 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/fugitive.nix @@ -0,0 +1,18 @@ +{ config, lib, ... }: + +{ + plugins.fugitive.enable = true; + + keymaps = lib.mkIf config.plugins.fugitive.enable [ + { + key = "gc"; + action = "Git commitK"; + } + + { + # Open the ":Git" window in its own buffer, not a split. + key = "gs"; + action = "0Git"; + } + ]; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/gitsigns.nix b/modules/home-manager/coding/neovim/config/plugins/gitsigns.nix new file mode 100644 index 00000000..c4f7fb4b --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/gitsigns.nix @@ -0,0 +1,45 @@ +{ config, lib, ... }: + +{ + plugins.gitsigns.enable = true; + + keymaps = lib.mkIf config.plugins.gitsigns.enable [ + { + action = "Gitsigns prev_hunk"; + key = "[h"; + } + + { + action = "Gitsigns next_hunk"; + key = "]h"; + } + + { + action = "Gitsigns reset_hunk"; + key = "hr"; + } + + { + action = "Gitsigns reset_buffer"; + key = "hR"; + } + + { + action = "Gitsigns stage_hunk"; + key = "hs"; + mode = ["n" "v"]; + } + + { + action = "Gitsigns stage_buffer"; + key = "hS"; + mode = "n"; + } + + { + action = "Gitsigns undo_stage_hunk"; + key = "hu"; + mode = "x"; + } + ]; +} diff --git a/modules/nixvim/harpoon.nix b/modules/home-manager/coding/neovim/config/plugins/harpoon.nix similarity index 80% rename from modules/nixvim/harpoon.nix rename to modules/home-manager/coding/neovim/config/plugins/harpoon.nix index 830b1f42..95d59718 100644 --- a/modules/nixvim/harpoon.nix +++ b/modules/home-manager/coding/neovim/config/plugins/harpoon.nix @@ -1,3 +1,5 @@ +{ config, lib, ... }: + let leaderBinding = key: command: { key = "${key}"; @@ -6,13 +8,13 @@ let }; in { - flake.modules.nixvim.custom = { - plugins.harpoon = { - enable = true; - enableTelescope = true; - }; + plugins.harpoon = { + enable = true; + enableTelescope = true; + }; - keymaps = [ + keymaps = lib.mkIf config.plugins.harpoon.enable ( + [ { key = "a"; action.__raw = "function() require'harpoon':list():add() end"; @@ -40,6 +42,6 @@ in 8 9 ] - ); - }; + ) + ); } diff --git a/modules/home-manager/coding/neovim/config/plugins/lint.nix b/modules/home-manager/coding/neovim/config/plugins/lint.nix new file mode 100644 index 00000000..ff65a0d2 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/lint.nix @@ -0,0 +1,3 @@ +{ + plugins.lint.enable = true; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/lsp.nix b/modules/home-manager/coding/neovim/config/plugins/lsp.nix new file mode 100644 index 00000000..3f12baed --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/lsp.nix @@ -0,0 +1,21 @@ +{ + plugins.lsp.enable = true; + + plugins.lsp.keymaps = { + diagnostic = { + "dl" = "setqflist"; + }; + + lspBuf = { + "ca" = "code_action"; + "cr" = "rename"; + K = "hover"; + gD = "declaration"; + gT = "type_definition"; + gd = "definition"; + gr = "references"; + }; + }; + + plugins.lsp.servers.phpactor.enable = true; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/lualine.nix b/modules/home-manager/coding/neovim/config/plugins/lualine.nix new file mode 100644 index 00000000..d8de83ad --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/lualine.nix @@ -0,0 +1,11 @@ +{ + plugins.lualine = { + enable = true; + + settings.options = { + component_separators = ""; + icons_enabled = false; + section_separators = ""; + }; + }; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/luasnip.nix b/modules/home-manager/coding/neovim/config/plugins/luasnip.nix new file mode 100644 index 00000000..6dc508db --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/luasnip.nix @@ -0,0 +1,3 @@ +{ + plugins.luasnip.enable = true; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/mini.nix b/modules/home-manager/coding/neovim/config/plugins/mini.nix new file mode 100644 index 00000000..6f05654d --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/mini.nix @@ -0,0 +1,15 @@ +{ + plugins.mini = { + enable = true; + + modules = { + ai = {}; + align = {}; + bracketed = {}; + move = {}; + operators = {}; + splitjoin = {}; + surround = {}; + }; + }; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/nvim-autopairs.nix b/modules/home-manager/coding/neovim/config/plugins/nvim-autopairs.nix new file mode 100644 index 00000000..68209f3f --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/nvim-autopairs.nix @@ -0,0 +1,3 @@ +{ + plugins.nvim-autopairs.enable = true; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/oil.nix b/modules/home-manager/coding/neovim/config/plugins/oil.nix new file mode 100644 index 00000000..bf91a77f --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/oil.nix @@ -0,0 +1,20 @@ +{ config, lib, ... }: + +{ + plugins.oil = { + enable = true; + + settings = { + delete_to_trash = true; + + keymaps."-" = "actions.parent"; + + skip_confirm_for_simple_edits = true; + view_options.show_hidden = true; + }; + }; + + keymaps = lib.mkIf config.plugins.oil.enable [ + { action = "Oil"; key = "-"; } + ]; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/phpactor.nix b/modules/home-manager/coding/neovim/config/plugins/phpactor.nix new file mode 100644 index 00000000..1c4f6387 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/phpactor.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: + +{ + extraPlugins = with pkgs.vimPlugins; [ phpactor ]; + + keymaps = [ + { + key = "pm"; + action = "PhpactorContextMenu"; + } + + { + key = "pn"; + action = "PhpactorClassNew"; + } + ]; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/refactoring.nix b/modules/home-manager/coding/neovim/config/plugins/refactoring.nix new file mode 100644 index 00000000..e696e538 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/refactoring.nix @@ -0,0 +1,47 @@ +{ config, lib, ... }: + +{ + plugins.refactoring = { + enable = true; + enableTelescope = true; + }; + + keymaps = + lib.mkIf config.plugins.refactoring.enable ([ + { + key = "ri"; + action = "Refactor inline_var"; + mode = "n"; + } + + { + key = "re"; + action = "Refactor extract"; + mode = "x"; + } + + { + key = "ri"; + action = "Refactor inline_var"; + mode = "x"; + } + + { + key = "rv"; + action = "Refactor extract_var"; + mode = "x"; + } + ] + ++ lib.optionals (config.plugins.refactoring.enable && config.plugins.refactoring.enableTelescope) [ + { + mode = "n"; + key = "rR"; + action.__raw = '' + function() + require('telescope').extensions.refactoring.refactors() + end + ''; + options.silent = true; + } + ]); +} diff --git a/modules/nixvim/telescope.nix b/modules/home-manager/coding/neovim/config/plugins/telescope.nix similarity index 92% rename from modules/nixvim/telescope.nix rename to modules/home-manager/coding/neovim/config/plugins/telescope.nix index ee59725e..70d49d2b 100644 --- a/modules/nixvim/telescope.nix +++ b/modules/home-manager/coding/neovim/config/plugins/telescope.nix @@ -1,5 +1,5 @@ { - flake.modules.nixvim.custom.plugins.telescope = { + plugins.telescope = { enable = true; extensions = { @@ -29,3 +29,4 @@ settings.pickers.find_files.hidden = true; }; } + diff --git a/modules/home-manager/coding/neovim/config/plugins/treesitter.nix b/modules/home-manager/coding/neovim/config/plugins/treesitter.nix new file mode 100644 index 00000000..fd6647a1 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/treesitter.nix @@ -0,0 +1,47 @@ +{ pkgs, ... }: + +{ + plugins = { + treesitter = { + enable = true; + + grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [ + bash + comment + css + csv + dockerfile + gitattributes + gitignore + go + html + javascript + json + kdl + lua + luadoc + make + markdown + markdown_inline + nix + php + phpdoc + query + rst + scss + sql + terraform + twig + typescript + vim + vimdoc + vue + xml + yaml + ]; + }; + + treesitter-textobjects.enable = true; + }; +} + diff --git a/modules/home-manager/coding/neovim/config/plugins/undotree.nix b/modules/home-manager/coding/neovim/config/plugins/undotree.nix new file mode 100644 index 00000000..4a262eb9 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/undotree.nix @@ -0,0 +1,9 @@ +{ config, lib, ... }: + +{ + plugins.undotree.enable = true; + + keymaps = lib.mkIf config.plugins.undotree.enable [ + { action = "UndotreeToggle"; key = "u"; } + ]; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/vim-cool.nix b/modules/home-manager/coding/neovim/config/plugins/vim-cool.nix new file mode 100644 index 00000000..07431e87 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/vim-cool.nix @@ -0,0 +1,5 @@ +{ pkgs, ... }: + +{ + extraPlugins = with pkgs.vimPlugins; [ vim-cool ]; +} diff --git a/modules/nixvim/vim-dadbod.nix b/modules/home-manager/coding/neovim/config/plugins/vim-dadbod.nix similarity index 72% rename from modules/nixvim/vim-dadbod.nix rename to modules/home-manager/coding/neovim/config/plugins/vim-dadbod.nix index 1ef2050d..13168c91 100644 --- a/modules/nixvim/vim-dadbod.nix +++ b/modules/home-manager/coding/neovim/config/plugins/vim-dadbod.nix @@ -1,5 +1,5 @@ { - flake.modules.nixvim.custom.plugins = { + plugins = { vim-dadbod.enable = true; vim-dadbod-completion.enable = true; vim-dadbod-ui.enable = true; diff --git a/modules/home-manager/coding/neovim/config/plugins/vim-highlightedyank.nix b/modules/home-manager/coding/neovim/config/plugins/vim-highlightedyank.nix new file mode 100644 index 00000000..2ecb38f3 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/vim-highlightedyank.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + extraPlugins = with pkgs.vimPlugins; [ vim-highlightedyank ]; + + extraConfigVim = '' + let g:highlightedyank_highlight_duration = 100 + ''; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/vim-test.nix b/modules/home-manager/coding/neovim/config/plugins/vim-test.nix new file mode 100644 index 00000000..e6e443d4 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/vim-test.nix @@ -0,0 +1,11 @@ +{ config, lib, ... }: + +{ + plugins.vim-test.enable = true; + + keymaps = lib.mkIf config.plugins.vim-test.enable [ + { key = "tf"; action = "TestFile"; } + { key = "tl"; action = "TestLast"; } + { key = "tn"; action = "TestNearest"; } + ]; +} diff --git a/modules/home-manager/coding/neovim/config/plugins/web-devicons.nix b/modules/home-manager/coding/neovim/config/plugins/web-devicons.nix new file mode 100644 index 00000000..927f85e1 --- /dev/null +++ b/modules/home-manager/coding/neovim/config/plugins/web-devicons.nix @@ -0,0 +1,3 @@ +{ + plugins.web-devicons.enable = false; +} diff --git a/modules/home-manager/coding/neovim/default.nix b/modules/home-manager/coding/neovim/default.nix new file mode 100644 index 00000000..66dcb624 --- /dev/null +++ b/modules/home-manager/coding/neovim/default.nix @@ -0,0 +1,30 @@ +{ + config, + inputs, + lib, + ... +}: + +with lib; + +let + cfg = config.coding.neovim; +in +{ + imports = [ + inputs.nixvim.homeManagerModules.nixvim + ]; + + options.coding.neovim.enable = mkEnableOption "Enable neovim"; + + config = mkIf cfg.enable { + programs.nixvim = { + enable = true; + + viAlias = true; + vimAlias = true; + + imports = [ ./config ]; + }; + }; +} diff --git a/modules/phpactor/config/phpactor.yml b/modules/home-manager/coding/phpactor/config/phpactor.yml similarity index 100% rename from modules/phpactor/config/phpactor.yml rename to modules/home-manager/coding/phpactor/config/phpactor.yml diff --git a/modules/phpactor/config/templates/action/SourceCode.php.twig b/modules/home-manager/coding/phpactor/config/templates/action/SourceCode.php.twig similarity index 100% rename from modules/phpactor/config/templates/action/SourceCode.php.twig rename to modules/home-manager/coding/phpactor/config/templates/action/SourceCode.php.twig diff --git a/modules/phpactor/config/templates/collection/SourceCode.php.twig b/modules/home-manager/coding/phpactor/config/templates/collection/SourceCode.php.twig similarity index 100% rename from modules/phpactor/config/templates/collection/SourceCode.php.twig rename to modules/home-manager/coding/phpactor/config/templates/collection/SourceCode.php.twig diff --git a/modules/phpactor/config/templates/default/SourceCode.php.twig b/modules/home-manager/coding/phpactor/config/templates/default/SourceCode.php.twig similarity index 100% rename from modules/phpactor/config/templates/default/SourceCode.php.twig rename to modules/home-manager/coding/phpactor/config/templates/default/SourceCode.php.twig diff --git a/modules/phpactor/config/templates/drupal-functional-test/SourceCode.php.twig b/modules/home-manager/coding/phpactor/config/templates/drupal-functional-test/SourceCode.php.twig similarity index 100% rename from modules/phpactor/config/templates/drupal-functional-test/SourceCode.php.twig rename to modules/home-manager/coding/phpactor/config/templates/drupal-functional-test/SourceCode.php.twig diff --git a/modules/phpactor/config/templates/drupal-kernel-test/SourceCode.php.twig b/modules/home-manager/coding/phpactor/config/templates/drupal-kernel-test/SourceCode.php.twig similarity index 100% rename from modules/phpactor/config/templates/drupal-kernel-test/SourceCode.php.twig rename to modules/home-manager/coding/phpactor/config/templates/drupal-kernel-test/SourceCode.php.twig diff --git a/modules/phpactor/config/templates/drupal-unit-test/SourceCode.php.twig b/modules/home-manager/coding/phpactor/config/templates/drupal-unit-test/SourceCode.php.twig similarity index 100% rename from modules/phpactor/config/templates/drupal-unit-test/SourceCode.php.twig rename to modules/home-manager/coding/phpactor/config/templates/drupal-unit-test/SourceCode.php.twig diff --git a/modules/home-manager/coding/phpactor/default.nix b/modules/home-manager/coding/phpactor/default.nix new file mode 100644 index 00000000..83c229be --- /dev/null +++ b/modules/home-manager/coding/phpactor/default.nix @@ -0,0 +1,17 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.coding.phpactor; +in +{ + options.coding.phpactor.enable = mkEnableOption "Enable phpactor"; + + config = mkIf cfg.enable { + xdg.configFile.phpactor = { + source = ./config; + recursive = true; + }; + }; +} diff --git a/modules/home-manager/core/gnupg.nix b/modules/home-manager/core/gnupg.nix new file mode 100644 index 00000000..84735d28 --- /dev/null +++ b/modules/home-manager/core/gnupg.nix @@ -0,0 +1,8 @@ +{ + home.file.".gnupg/gpg-agent.conf".text = '' + allow-preset-passphrase + default-cache-ttl 600 + max-cache-ttl 7200 + enable-ssh-support + ''; +} diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix new file mode 100644 index 00000000..dd83a2ef --- /dev/null +++ b/modules/home-manager/default.nix @@ -0,0 +1,33 @@ +{ + imports = [ + ./cli/bluetuith.nix + ./cli/bookmarkthis.nix + ./cli/dev-commit.nix + ./cli/direnv.nix + ./cli/fzf.nix + ./cli/git.nix + ./cli/node.nix + ./cli/notes.nix + ./cli/ranger.nix + ./cli/scripts + ./cli/starship.nix + ./cli/sxhkd.nix + ./cli/tmux-sessionizer.nix + ./cli/tmux.nix + ./cli/todos.nix + ./cli/zsh + ./coding/neovim + ./coding/phpactor + ./core/gnupg.nix + ./desktop/browsers/chromium.nix + ./desktop/browsers/firefox.nix + ./desktop/browsers/qutebrowser.nix + ./desktop/flameshot.nix + ./desktop/gtk.nix + ./desktop/media/handbrake.nix + ./desktop/media/makemkv.nix + ./desktop/media/mpv.nix + ./desktop/redshift.nix + ./desktop/screenkey.nix + ]; +} diff --git a/modules/home-manager/desktop/browsers/chromium.nix b/modules/home-manager/desktop/browsers/chromium.nix new file mode 100644 index 00000000..92178ffc --- /dev/null +++ b/modules/home-manager/desktop/browsers/chromium.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: + +let + cfg = config.desktop.browsers.${name}; + name = "chromium"; + + inherit (lib) mkEnableOption mkIf; +in +{ + options.desktop.browsers.${name}.enable = mkEnableOption "Enable ${name}"; + + config = mkIf cfg.enable { + programs.${name}.enable = true; + }; +} diff --git a/modules/home-manager/desktop/browsers/firefox.nix b/modules/home-manager/desktop/browsers/firefox.nix new file mode 100644 index 00000000..4b2b7418 --- /dev/null +++ b/modules/home-manager/desktop/browsers/firefox.nix @@ -0,0 +1,133 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.desktop.browsers.firefox; +in +{ + options.desktop.browsers.firefox = { + enable = mkEnableOption "Enable firefox"; + + homepageUrl = mkOption { + description = "The homepage URL."; + type = types.nullOr types.str; + }; + }; + + config = mkIf cfg.enable { + programs.firefox.enable = false; + + programs.librewolf = { + enable = true; + + languagePacks = [ "en-GB" ]; + + policies = { + CaptivePortal = false; + DisableFirefoxAccounts = true; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + + EnableTrackingProtection = { + Cryptomining = true; + Fingerprinting = true; + Value = true; + }; + + ExtensionSettings = { + "jid1-ZAdIEUB7XOzOJw@jetpack" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/duckduckgo-for-firefox/latest.xpi"; + installation_mode = "force_installed"; + }; + + "uBlock0@raymondhill.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + installation_mode = "force_installed"; + }; + }; + + FirefoxHome = { + Highlights = false; + Pocket = false; + Search = true; + Snippets = false; + SponsoredPocket = false; + SponsoredTopSites = false; + TopSites = true; + }; + + FirefoxSuggest = { + ImproveSuggest = false; + SponsoredSuggestions = false; + WebSuggestions = false; + }; + + NoDefaultBookmarks = true; + OfferToSaveLogins = false; + OfferToSaveLoginsDefault = false; + PasswordManagerEnabled = false; + + Preferences = { + "browser.newtabpage.enabled" = false; + "browser.startup.homepage" = cfg.homepageUrl; + "cookiebanners.service.mode" = 2; # Block cookie banners + "cookiebanners.service.mode.privateBrowsing" = 2; # Block cookie banners in private browsing + "privacy.donottrackheader.enabled" = true; + "privacy.fingerprintingProtection" = true; + "privacy.resistFingerprinting" = true; + "privacy.trackingprotection.emailtracking.enabled" = true; + "privacy.trackingprotection.enabled" = true; + "privacy.trackingprotection.fingerprinting.enabled" = true; + "privacy.trackingprotection.socialtracking.enabled" = true; + }; + + HardwareAcceleration = true; + TranslateEnabled = true; + + UserMessaging = { + ExtensionRecommendations = false; + UrlbarInterventions = false; + SkipOnboarding = true; + }; + }; + + profiles = { + default = { + extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ + awesome-rss + bitwarden + darkreader + onetab + tree-style-tab + ublock-origin + videospeed + vimium + web-developer + ]; + + search = { + default = "ddg"; + force = true; + privateDefault = "ddg"; + }; + + settings = { + "browser.search.isUS" = false; + "browser.search.region" = "GB"; + "distribution.searchplugins.defaultLocale" = "en-GB"; + "general.useragent.locale" = "en-GB"; + "intl.accept_languages" = "en-GB, en"; + "intl.regional_prefs.use_os_locales" = true; + }; + }; + }; + }; + }; +} diff --git a/modules/home-manager/desktop/browsers/qutebrowser.nix b/modules/home-manager/desktop/browsers/qutebrowser.nix new file mode 100644 index 00000000..6f602f9c --- /dev/null +++ b/modules/home-manager/desktop/browsers/qutebrowser.nix @@ -0,0 +1,45 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.desktop.browsers.qutebrowser; +in +{ + options.desktop.browsers.qutebrowser.enable = + mkEnableOption "Enable qutebrowser"; + + config = mkIf cfg.enable { + programs.qutebrowser = { + enable = true; + + package = pkgs.stable.qutebrowser; + + searchEngines = { + dp = "https://www.drupal.org/project/{}"; + du = "https://www.drupal.org/u/{}"; + gh = "https://github.com/search?q={}"; + mn = "https://mynixos.com/search?q={}"; + nx = "https://search.nixos.org/packages?query={}"; + yt = "https://www.youtube.com/results?search_query={}"; + }; + + settings = { + colors.webpage.darkmode.enabled = true; + }; + + keyBindings = { + normal = { + "" = "config-cycle colors.webpage.darkmode.enabled true false"; + + "xb" = "config-cycle statusbar.show always never"; + "xt" = "config-cycle tabs.show always never"; + "xx" = mkMerge [ + "config-cycle statusbar.show always never" + "config-cycle tabs.show always never" + ]; + }; + }; + }; + }; +} diff --git a/modules/home-manager/desktop/flameshot.nix b/modules/home-manager/desktop/flameshot.nix new file mode 100644 index 00000000..f8d51be9 --- /dev/null +++ b/modules/home-manager/desktop/flameshot.nix @@ -0,0 +1,26 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.desktop.flameshot; +in +{ + options.desktop.flameshot.enable = mkEnableOption "Enable flameshot"; + + config = mkIf cfg.enable { + services.flameshot = { + enable = true; + + settings = { + General = { + disabledTrayIcon = false; + saveAfterCopy = true; + savePath = "${config.xdg.userDirs.pictures}/Screenshots"; + showHelp = false; + uiColor = "#60a5fa"; + }; + }; + }; + }; +} diff --git a/modules/home-manager/desktop/gtk.nix b/modules/home-manager/desktop/gtk.nix new file mode 100644 index 00000000..84b2fefc --- /dev/null +++ b/modules/home-manager/desktop/gtk.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.desktop.gtk; +in +{ + options.desktop.gtk.enable = mkEnableOption "Enable gtk"; + + config = mkIf cfg.enable { + gtk = with pkgs; { + enable = true; + + theme = { + name = "Arc-Dark"; + package = arc-theme; + }; + + iconTheme = { + name = "Arc"; + package = arc-icon-theme; + }; + + gtk3.extraConfig.gtk-enable-animations = false; + gtk4.extraConfig.gtk-enable-animations = false; + }; + }; +} diff --git a/modules/home-manager/desktop/media/handbrake.nix b/modules/home-manager/desktop/media/handbrake.nix new file mode 100644 index 00000000..5da7514e --- /dev/null +++ b/modules/home-manager/desktop/media/handbrake.nix @@ -0,0 +1,21 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.desktop.media.handbrake; +in +{ + options.desktop.media.handbrake.enable = mkEnableOption "Enable handbrake"; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + handbrake + ]; + }; +} diff --git a/modules/home-manager/desktop/media/makemkv.nix b/modules/home-manager/desktop/media/makemkv.nix new file mode 100644 index 00000000..5cfa207c --- /dev/null +++ b/modules/home-manager/desktop/media/makemkv.nix @@ -0,0 +1,21 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.desktop.media.makemkv; +in +{ + options.desktop.media.makemkv.enable = mkEnableOption "Enable makemkv"; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + makemkv + ]; + }; +} diff --git a/modules/home-manager/desktop/media/mpv.nix b/modules/home-manager/desktop/media/mpv.nix new file mode 100644 index 00000000..5d0f9570 --- /dev/null +++ b/modules/home-manager/desktop/media/mpv.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.desktop.media.mpv; +in +{ + options.desktop.media.mpv.enable = mkEnableOption "Enable mpv"; + + config = mkIf cfg.enable { + programs.mpv = { + enable = true; + + # https://github.com/mpv-player/mpv/blob/master/etc/input.conf + bindings = { + "DOWN" = "add volume -5"; + "UP" = "add volume 5"; + }; + }; + }; +} diff --git a/modules/home-manager/desktop/redshift.nix b/modules/home-manager/desktop/redshift.nix new file mode 100644 index 00000000..d9f3c529 --- /dev/null +++ b/modules/home-manager/desktop/redshift.nix @@ -0,0 +1,19 @@ +{ config, lib, ... }: + +let + cfg = config.desktop.redshift; + + inherit (lib) mkEnableOption mkIf; +in +{ + options.desktop.redshift = { + enable = mkEnableOption "Enable redshift"; + }; + + config = mkIf cfg.enable { + services.redshift.enable = true; + + services.redshift.latitude = "51.58"; + services.redshift.longitude = "-2.99"; + }; +} diff --git a/modules/home-manager/desktop/screenkey.nix b/modules/home-manager/desktop/screenkey.nix new file mode 100644 index 00000000..ba06a66d --- /dev/null +++ b/modules/home-manager/desktop/screenkey.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ screenkey ]; + + xdg.configFile."screenkey.json".text = builtins.toJSON { + key_mode = "composed"; + mods_mode = "emacs"; + persist = true; + size = "small"; + timeout = 0.25; + }; +} diff --git a/modules/home-manager/nixos.nix b/modules/home-manager/nixos.nix deleted file mode 100644 index f3a55dc4..00000000 --- a/modules/home-manager/nixos.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ - config, - inputs, - lib, - ... -}: - -{ - flake.modules.nixos = { - base = { - imports = [ inputs.home-manager.nixosModules.home-manager ]; - - home-manager = { - extraSpecialArgs.hasGlobalPkgs = true; - useGlobalPkgs = true; - - # https://github.com/nix-community/home-manager/issues/6770 - # useUserPackages = true; - - users.${config.flake.meta.owner.username}.imports = [ - ( - { osConfig, ... }: - - { - home.stateVersion = lib.mkForce osConfig.system.stateVersion; - } - ) - - config.flake.modules.homeManager.base - ]; - }; - }; - - desktop.home-manager.users.${config.flake.meta.owner.username}.imports = [ - config.flake.modules.homeManager.gui - ]; - }; -} diff --git a/modules/hosts/nixedo/gitea-actions-runner.nix b/modules/hosts/nixedo/gitea-actions-runner.nix deleted file mode 100644 index 1c794ee4..00000000 --- a/modules/hosts/nixedo/gitea-actions-runner.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.nixos."nixosConfigurations/nixedo" = - { config, pkgs, ... }: - { - services.gitea-actions-runner.instances.default = { - enable = true; - - hostPackages = with pkgs; [ - bash - coreutils - curl - gawk - gitMinimal - gnused - nix - nodejs - wget - ]; - - labels = [ "nixos:host" ]; - - name = config.networking.hostName; - tokenFile = config.age.secrets.forgejo-runner-token.path; - url = config.services.forgejo.settings.server.ROOT_URL; - }; - - age.secrets.forgejo-runner-token.file = "${inputs.self}/secrets/forgejo-runner-token.age"; - }; -} diff --git a/modules/hosts/nixedo/imports.nix b/modules/hosts/nixedo/imports.nix deleted file mode 100644 index e22a75c4..00000000 --- a/modules/hosts/nixedo/imports.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, ... }: - -{ - flake.modules.nixos."nixosConfigurations/nixedo".imports = with config.flake.modules.nixos; [ - pc - ]; -} diff --git a/modules/hosts/t480/dev-commit.nix b/modules/hosts/t480/dev-commit.nix deleted file mode 100644 index cb6114a4..00000000 --- a/modules/hosts/t480/dev-commit.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, ... }: - -{ - flake.modules.nixos."nixosConfigurations/t480".home-manager.users.${config.flake.meta.owner.username} = - hmArgs: { - programs.dev-commit.enable = true; - - programs.dev-commit.schedule.enable = true; - programs.dev-commit.schedule.time = "daily"; - - programs.dev-commit.repoPaths = - let - repos = "${hmArgs.config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/forgejo/opdavies"; - in - map (name: "${repos}/${name}") [ - "email-filters" - "git-repo-updater" - "nix-config" - "oliverdavies.uk" - "opentofu-dns" - ]; - }; -} diff --git a/modules/hosts/t480/dwm/dwm.nix b/modules/hosts/t480/dwm/dwm.nix deleted file mode 100644 index b6f219f6..00000000 --- a/modules/hosts/t480/dwm/dwm.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.pc.services.xserver.windowManager.dwm.enable = true; -} diff --git a/modules/hosts/t480/dwm/dwmblocks/audio.nix b/modules/hosts/t480/dwm/dwmblocks/audio.nix deleted file mode 100644 index ddefba39..00000000 --- a/modules/hosts/t480/dwm/dwmblocks/audio.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication { - name = "status-audio"; - - runtimeInputs = with pkgs; [ pulseaudio ]; - - text = '' - device="$(pactl list sinks | grep -A2 "$(pactl get-default-sink)" | grep "Description:" | awk '{print $2}')" - - test "$device" == "Dummy" && exit 0 - - echo "$device"; - ''; - }) - ]; - }; -} diff --git a/modules/hosts/t480/dwm/dwmblocks/battery.nix b/modules/hosts/t480/dwm/dwmblocks/battery.nix deleted file mode 100644 index 5abd5630..00000000 --- a/modules/hosts/t480/dwm/dwmblocks/battery.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication { - name = "status-battery"; - - runtimeInputs = with pkgs; [ gawk ]; - - text = '' - percentage=$(battery | grep "percentage:" | awk '{print $2}') - - test "$percentage" == "100%" && exit 0 - - state=$(battery | grep "state:" | awk '{print $2}') - - echo "$percentage ($state)"; - ''; - }) - ]; - }; -} diff --git a/modules/hosts/t480/dwm/dwmblocks/cpu.nix b/modules/hosts/t480/dwm/dwmblocks/cpu.nix deleted file mode 100644 index 9e4f03fa..00000000 --- a/modules/hosts/t480/dwm/dwmblocks/cpu.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication { - name = "status-cpu"; - - runtimeInputs = with pkgs; [ sysstat ]; - - text = '' - mpstat | grep -A 5 "%idle" | tail -n 1 | awk -F " " '{printf "%s%% CPU", 100 - $ 12}' - ''; - }) - ]; - }; -} diff --git a/modules/hosts/t480/dwm/dwmblocks/default.nix b/modules/hosts/t480/dwm/dwmblocks/default.nix deleted file mode 100644 index 67827dd1..00000000 --- a/modules/hosts/t480/dwm/dwmblocks/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ - (pkgs.dwmblocks.override { - conf = '' - static const Block blocks[] = { - {"", "status-audio", 10, 0}, - - {"", "status-network", 10, 0}, - - {"", "status-battery", 60, 0}, - - {"", "free -h | awk '/^Mem/ { printf \"%s/%s RAM\\n\", $3, $2 }' | sed 's/i//g'", 30, 0}, - - {"", "status-cpu", 10, 0}, - - {"", "status-weather", 600, 0}, - - {"", "date '+%a %d %b %Y %H:%M %Z'", 30, 0}, - }; - - static char delim[] = " | "; - static unsigned int delimLen = 5; - ''; - }) - ]; - }; -} diff --git a/modules/hosts/t480/dwm/dwmblocks/network.nix b/modules/hosts/t480/dwm/dwmblocks/network.nix deleted file mode 100644 index bbe262bf..00000000 --- a/modules/hosts/t480/dwm/dwmblocks/network.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication { - name = "status-network"; - - runtimeInputs = with pkgs; [ networkmanager ]; - - text = '' - connected_to="$(nmcli | grep "connected to")" - - network_name="$(echo "$connected_to" | awk '{print $NF}')" - connected_device="$(echo "$connected_to" | cut -d ':' -f 1)" - - ip_address="$(ip a | grep "$connected_device" | grep inet | awk '{print $2}'| cut -d '/' -f 1)" - - echo "$network_name $ip_address" - ''; - }) - ]; - }; -} diff --git a/modules/hosts/t480/dwm/dwmblocks/weather.nix b/modules/hosts/t480/dwm/dwmblocks/weather.nix deleted file mode 100644 index 84d3aee3..00000000 --- a/modules/hosts/t480/dwm/dwmblocks/weather.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication { - name = "status-weather"; - - runtimeInputs = with pkgs; [ curl ]; - - text = '' - out="$(curl -s https://wttr.in/Caerleon?format=%t)" - - [[ "$out" == *"Unknown location"* ]] && exit 1 - - echo "$out" - ''; - }) - ]; - }; -} diff --git a/modules/hosts/t480/fixapost.nix b/modules/hosts/t480/fixapost.nix deleted file mode 100644 index 23cb55fb..00000000 --- a/modules/hosts/t480/fixapost.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication rec { - name = "fixapost"; - - runtimeInputs = [ pkgs.coreutils ]; - - text = builtins.readFile "${inputs.rwxrob-dot}/scripts/${name}"; - }) - ]; - }; -} diff --git a/modules/hosts/t480/heightwidth.nix b/modules/hosts/t480/heightwidth.nix deleted file mode 100644 index 9eb627e1..00000000 --- a/modules/hosts/t480/heightwidth.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication rec { - name = "heightwidth"; - - runtimeInputs = [ pkgs.ffmpeg ]; - - text = builtins.readFile "${inputs.rwxrob-dot}/scripts/${name}"; - }) - ]; - }; -} diff --git a/modules/hosts/t480/imports.nix b/modules/hosts/t480/imports.nix deleted file mode 100644 index 38ca7da8..00000000 --- a/modules/hosts/t480/imports.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ config, ... }: - -{ - flake.modules.nixos."nixosConfigurations/t480".imports = with config.flake.modules.nixos; [ - desktop - ]; -} diff --git a/modules/hosts/t480/kanata/devices.nix b/modules/hosts/t480/kanata/devices.nix deleted file mode 100644 index 635656a2..00000000 --- a/modules/hosts/t480/kanata/devices.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - flake.modules.nixos.pc.services.kanata.devices = [ - "/dev/input/by-path/platform-i8042-serio-0-event-kbd" - ]; -} diff --git a/modules/hosts/t480/kanata/enable.nix b/modules/hosts/t480/kanata/enable.nix deleted file mode 100644 index 6bb8c1e5..00000000 --- a/modules/hosts/t480/kanata/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.pc.services.kanata.enable = true; -} diff --git a/modules/hosts/t480/ollama.nix b/modules/hosts/t480/ollama.nix deleted file mode 100644 index 4ec6407a..00000000 --- a/modules/hosts/t480/ollama.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.desktop.services.ollama.enable = false; -} diff --git a/modules/hosts/t480/open-webui.nix b/modules/hosts/t480/open-webui.nix deleted file mode 100644 index ae6421f8..00000000 --- a/modules/hosts/t480/open-webui.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - nixpkgs.allowedUnfreePackages = [ "open-webui" ]; - - flake.modules.nixos.desktop.services.open-webui.enable = false; -} diff --git a/modules/hosts/t480/password-store.nix b/modules/hosts/t480/password-store.nix deleted file mode 100644 index e40d892b..00000000 --- a/modules/hosts/t480/password-store.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - flake.modules.homeManager.base = - { pkgs, ... }: - { - programs.password-store.extensions = with pkgs.passExtensions; [ - pass-audit - pass-otp - pass-update - ]; - }; -} diff --git a/modules/hosts/t480/slack.nix b/modules/hosts/t480/slack.nix deleted file mode 100644 index 97286f66..00000000 --- a/modules/hosts/t480/slack.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, ... }: - -{ - nixpkgs.allowedUnfreePackages = [ "slack" ]; - - flake.modules.nixos."nixosConfigurations/t480" = - { pkgs, ... }: - { - users.users."${config.flake.meta.owner.username}".packages = [ pkgs.slack ]; - }; -} diff --git a/modules/hosts/t480/zoom.nix b/modules/hosts/t480/zoom.nix deleted file mode 100644 index 6e8251c2..00000000 --- a/modules/hosts/t480/zoom.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, ... }: - -{ - nixpkgs.allowedUnfreePackages = [ "zoom" ]; - - flake.modules.nixos."nixosConfigurations/t480" = - { pkgs, ... }: - { - users.users."${config.flake.meta.owner.username}".packages = [ pkgs.zoom-us ]; - }; -} diff --git a/modules/kanata/config.nix b/modules/kanata/config.nix deleted file mode 100644 index bc73ab3e..00000000 --- a/modules/kanata/config.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - flake.modules.nixos.pc.services.kanata.keyboards.default.config = '' - (defsrc - caps a s d f j k l ; - ) - - (defvar - tap-time 150 - hold-time 200 - hold-time-slow 300 - ) - - (defalias - escctrl (tap-hold 100 100 esc lctl) - a (tap-hold $tap-time $hold-time-slow a lmet) - s (tap-hold $tap-time $hold-time-slow s lalt) - d (tap-hold $tap-time $hold-time d lsft) - f (tap-hold $tap-time $hold-time f lctl) - j (tap-hold $tap-time $hold-time j rctl) - k (tap-hold $tap-time $hold-time k rsft) - l (tap-hold $tap-time $hold-time-slow l ralt) - ; (tap-hold $tap-time $hold-time-slow ; rmet) - ) - - (deflayer base - @escctrl @a @s @d @f @j @k @l @; - ) - ''; -} diff --git a/modules/kanata/devices.nix b/modules/kanata/devices.nix deleted file mode 100644 index 42864248..00000000 --- a/modules/kanata/devices.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ lib, ... }: - -{ - flake.modules.nixos.pc = - { config, ... }: - { - options.services.kanata.devices = lib.mkOption { - default = [ ]; - type = lib.types.listOf lib.types.str; - }; - - config.services.kanata.keyboards.default.devices = config.services.kanata.devices; - }; -} diff --git a/modules/kanata/extra-config.nix b/modules/kanata/extra-config.nix deleted file mode 100644 index b41028a0..00000000 --- a/modules/kanata/extra-config.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.pc.services.kanata.keyboards.default.extraDefCfg = "process-unmapped-keys yes"; -} diff --git a/modules/lynx.nix b/modules/lynx.nix deleted file mode 100644 index 2187eb6c..00000000 --- a/modules/lynx.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - flake.modules.nixos.base = - { pkgs, ... }: - { - environment.systemPackages = with pkgs; [ - lynx - ]; - }; -} diff --git a/modules/makemkv.nix b/modules/makemkv.nix deleted file mode 100644 index a395220c..00000000 --- a/modules/makemkv.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ config, ... }: - -{ - nixpkgs.allowedUnfreePackages = [ "makemkv" ]; - - flake.modules.nixos.desktop = - { pkgs, ... }: - { - boot.kernelModules = [ "sg" ]; - - environment.systemPackages = with pkgs; [ makemkv ]; - - users.users.${config.flake.meta.owner.username}.extraGroups = [ "cdrom" ]; - }; -} diff --git a/modules/meta/dev-shell.nix b/modules/meta/dev-shell.nix deleted file mode 100644 index 89037018..00000000 --- a/modules/meta/dev-shell.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - perSystem = - { pkgs, ... }: - { - devShells.default = pkgs.mkShell { - packages = with pkgs; [ - just - lua-language-server - lua54Packages.luacheck - nixd - ]; - }; - }; -} diff --git a/modules/meta/flake-parts.nix b/modules/meta/flake-parts.nix deleted file mode 100644 index 1a92203d..00000000 --- a/modules/meta/flake-parts.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ inputs, ... }: - -{ - imports = [ - inputs.flake-parts.flakeModules.modules - ]; -} diff --git a/modules/meta/formatting.nix b/modules/meta/formatting.nix deleted file mode 100644 index 3c962b13..00000000 --- a/modules/meta/formatting.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - perSystem = - { pkgs, ... }: - { - formatter = pkgs.nixfmt-rfc-style; - }; -} diff --git a/modules/meta/meta-output.nix b/modules/meta/meta-output.nix deleted file mode 100644 index dbf69e5d..00000000 --- a/modules/meta/meta-output.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ lib, ... }: - -{ - options.flake.meta = lib.mkOption { - type = lib.types.anything; - }; -} diff --git a/modules/meta/systems.nix b/modules/meta/systems.nix deleted file mode 100644 index ce708c68..00000000 --- a/modules/meta/systems.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - systems = [ "x86_64-linux" ]; -} diff --git a/modules/mpv/bindings.nix b/modules/mpv/bindings.nix deleted file mode 100644 index 314514f4..00000000 --- a/modules/mpv/bindings.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - # https://github.com/mpv-player/mpv/blob/master/etc/input.conf - flake.modules.homeManager.gui.programs.mpv.bindings = { - "DOWN" = "add volume -5"; - "UP" = "add volume 5"; - }; -} diff --git a/modules/mpv/enable.nix b/modules/mpv/enable.nix deleted file mode 100644 index 6985bfee..00000000 --- a/modules/mpv/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.gui.programs.mpv.enable = true; -} diff --git a/modules/nix-index.nix b/modules/nix-index.nix deleted file mode 100644 index b1fcf010..00000000 --- a/modules/nix-index.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.homeManager.base = { - imports = [ inputs.nix-index-database.homeModules.nix-index ]; - - programs = { - nix-index.enable = true; - nix-index-database.comma.enable = true; - }; - }; -} diff --git a/modules/nix/utils.nix b/modules/nix/utils.nix deleted file mode 100644 index 9793b4b8..00000000 --- a/modules/nix/utils.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.nh.enable = true; -} diff --git a/modules/nixos-configurations.nix b/modules/nixos-configurations.nix deleted file mode 100644 index 7d091988..00000000 --- a/modules/nixos-configurations.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - config, - inputs, - self, - ... -}: - -{ - flake = - let - inherit (self) outputs; - - specialArgs = { - inherit inputs outputs self; - - system = "x86_64-linux"; - username = "opdavies"; - }; - - mkNixosConfiguration = - { - hostname, - modules ? [ ], - stateVersion ? "22.11", - system ? "x86_64-linux", - }: - inputs.nixpkgs.lib.nixosSystem { - inherit system; - - modules = modules ++ [ - "${self}/hosts/${hostname}/configuration.nix" - ]; - - specialArgs = specialArgs // { - inherit hostname stateVersion system; - }; - }; - in - { - nixosConfigurations = { - nixedo = mkNixosConfiguration rec { - hostname = "nixedo"; - stateVersion = "24.11"; - - modules = [ config.flake.modules.nixos."nixosConfigurations/${hostname}" ]; - }; - - t480 = mkNixosConfiguration rec { - hostname = "t480"; - - modules = [ config.flake.modules.nixos."nixosConfigurations/${hostname}" ]; - }; - }; - }; -} diff --git a/modules/nixos/cli/docker.nix b/modules/nixos/cli/docker.nix new file mode 100644 index 00000000..fc27bcbe --- /dev/null +++ b/modules/nixos/cli/docker.nix @@ -0,0 +1,25 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.cli.docker; +in +{ + options.cli.docker.enable = mkEnableOption "Enable docker"; + + config = mkIf cfg.enable { + virtualisation = { + oci-containers.backend = "docker"; + + docker = { + enable = true; + + autoPrune = { + enable = true; + dates = "weekly"; + }; + }; + }; + }; +} diff --git a/modules/nixos/cli/kanata.nix b/modules/nixos/cli/kanata.nix new file mode 100644 index 00000000..d3e06008 --- /dev/null +++ b/modules/nixos/cli/kanata.nix @@ -0,0 +1,60 @@ +{ config, lib, ... }: + +let + cfg = config.cli.${service}; + service = "kanata"; + + inherit (lib) mkEnableOption mkIf mkOption types; +in +{ + options.cli.${service} = { + enable = mkEnableOption "Enable ${service}"; + + devices = mkOption { + default = []; + type = types.listOf types.str; + }; + }; + + config = mkIf cfg.enable { + services.kanata = { + enable = true; + + keyboards = { + default = { + devices = cfg.devices; + + extraDefCfg = "process-unmapped-keys yes"; + + config = '' + (defsrc + caps a s d f j k l ; + ) + + (defvar + tap-time 150 + hold-time 200 + hold-time-slow 300 + ) + + (defalias + escctrl (tap-hold 100 100 esc lctl) + a (tap-hold $tap-time $hold-time-slow a lmet) + s (tap-hold $tap-time $hold-time-slow s lalt) + d (tap-hold $tap-time $hold-time d lsft) + f (tap-hold $tap-time $hold-time f lctl) + j (tap-hold $tap-time $hold-time j rctl) + k (tap-hold $tap-time $hold-time k rsft) + l (tap-hold $tap-time $hold-time-slow l ralt) + ; (tap-hold $tap-time $hold-time-slow ; rmet) + ) + + (deflayer base + @escctrl @a @s @d @f @j @k @l @; + ) + ''; + }; + }; + }; + }; +} diff --git a/modules/nixos/cli/password-store.nix b/modules/nixos/cli/password-store.nix new file mode 100644 index 00000000..362cc7dd --- /dev/null +++ b/modules/nixos/cli/password-store.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.cli.password-store; +in +{ + options.cli.password-store = { + enable = mkEnableOption "Enable pass"; + + extensions = mkOption { + default = [ ]; + type = types.listOf types.package; + description = "pass extensions to install."; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + (pass.withExtensions (e: with e; cfg.extensions)) + ]; + }; +} diff --git a/modules/nixos/cli/podman.nix b/modules/nixos/cli/podman.nix new file mode 100644 index 00000000..5375ded5 --- /dev/null +++ b/modules/nixos/cli/podman.nix @@ -0,0 +1,25 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.cli.podman; +in +{ + options.cli.podman.enable = mkEnableOption "Enable podman"; + + config = mkIf cfg.enable { + virtualisation = { + oci-containers.backend = "podman"; + + podman = { + enable = true; + + autoPrune = { + enable = true; + dates = "weekly"; + }; + }; + }; + }; +} diff --git a/modules/avahi.nix b/modules/nixos/core/avahi.nix similarity index 76% rename from modules/avahi.nix rename to modules/nixos/core/avahi.nix index 1d5b631e..471b7ca6 100644 --- a/modules/avahi.nix +++ b/modules/nixos/core/avahi.nix @@ -1,5 +1,5 @@ { - flake.modules.nixos.pc.services.avahi = { + services.avahi = { enable = true; nssmdns4 = true; openFirewall = true; diff --git a/modules/nixos/core/bluetooth.nix b/modules/nixos/core/bluetooth.nix new file mode 100644 index 00000000..4a2bfad7 --- /dev/null +++ b/modules/nixos/core/bluetooth.nix @@ -0,0 +1,16 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.core.bluetooth; +in +{ + options.core.bluetooth.enable = mkEnableOption "Enable bluetooth"; + + config = mkIf cfg.enable { + hardware.bluetooth.enable = true; + + services.blueman.enable = true; + }; +} diff --git a/modules/nixos/core/gnupg.nix b/modules/nixos/core/gnupg.nix new file mode 100644 index 00000000..6e918951 --- /dev/null +++ b/modules/nixos/core/gnupg.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: + +{ + security.pam.services.login.gnupg.enable = true; + + programs = { + gnupg.agent = { + enable = true; + enableSSHSupport = true; + + pinentryPackage = pkgs.pinentry-qt; + }; + }; +} diff --git a/modules/nixos/core/openssh.nix b/modules/nixos/core/openssh.nix new file mode 100644 index 00000000..b248ab34 --- /dev/null +++ b/modules/nixos/core/openssh.nix @@ -0,0 +1,23 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.core.openssh; +in +{ + options.core.openssh.enable = mkEnableOption "Enable openssh"; + + config = mkIf cfg.enable { + services.openssh = { + enable = true; + + openFirewall = lib.mkForce true; + + settings = { + PasswordAuthentication = false; + PermitRootLogin = lib.mkForce "no"; + }; + }; + }; +} diff --git a/modules/nixos/core/pipewire.nix b/modules/nixos/core/pipewire.nix new file mode 100644 index 00000000..26e8014b --- /dev/null +++ b/modules/nixos/core/pipewire.nix @@ -0,0 +1,23 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.core.pipewire; +in +{ + options.core.pipewire.enable = mkEnableOption "Enable pipewire"; + + config = mkIf cfg.enable { + services.pipewire = { + enable = true; + + alsa = { + enable = true; + support32Bit = true; + }; + + pulse.enable = true; + }; + }; +} diff --git a/modules/nixos/core/xbanish.nix b/modules/nixos/core/xbanish.nix new file mode 100644 index 00000000..41142461 --- /dev/null +++ b/modules/nixos/core/xbanish.nix @@ -0,0 +1,14 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.core.xbanish; +in +{ + options.core.xbanish.enable = mkEnableOption "Enable xbanish"; + + config = mkIf cfg.enable { + services.xbanish.enable = true; + }; +} diff --git a/modules/nixos/core/zram.nix b/modules/nixos/core/zram.nix new file mode 100644 index 00000000..fe980915 --- /dev/null +++ b/modules/nixos/core/zram.nix @@ -0,0 +1,18 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.core.zram; +in +{ + options.core.zram.enable = mkEnableOption "Enable zram"; + + config = mkIf cfg.enable { + zramSwap = { + enable = true; + algorithm = "zstd"; + memoryPercent = 90; + }; + }; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix new file mode 100644 index 00000000..47599e64 --- /dev/null +++ b/modules/nixos/default.nix @@ -0,0 +1,27 @@ +{ + imports = [ + ./cli/docker.nix + ./cli/kanata.nix + ./cli/podman.nix + ./cli/password-store.nix + + ./core/avahi.nix + ./core/bluetooth.nix + ./core/gnupg.nix + ./core/openssh.nix + ./core/pipewire.nix + ./core/xbanish.nix + ./core/zram.nix + + ./desktop/dconf.nix + ./desktop/dwm + ./desktop/fonts.nix + ./desktop/media + ./desktop/st.nix + ./desktop/thunar.nix + + ./homelab/gitea-actions-runner.nix + + ./nixpad + ]; +} diff --git a/modules/nixos/desktop/dconf.nix b/modules/nixos/desktop/dconf.nix new file mode 100644 index 00000000..ee0c51e7 --- /dev/null +++ b/modules/nixos/desktop/dconf.nix @@ -0,0 +1,14 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.desktop.dconf; +in +{ + options.desktop.dconf.enable = mkEnableOption "Enable dconf"; + + config = mkIf cfg.enable { + programs.dconf.enable = true; + }; +} diff --git a/modules/nixos/desktop/dwm/default.nix b/modules/nixos/desktop/dwm/default.nix new file mode 100644 index 00000000..a58572a6 --- /dev/null +++ b/modules/nixos/desktop/dwm/default.nix @@ -0,0 +1,57 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.desktop.dwm; +in +{ + options.desktop.dwm.enable = mkEnableOption "Enable dwm"; + + config = mkIf cfg.enable { + services = { + dwm-status = { + enable = true; + + settings.order = [ + "audio" + "battery" + "network" + "time" + ]; + }; + + xserver.windowManager.dwm.enable = true; + }; + + systemd.user.services.dwm-status.serviceConfig.Restart = "on-failure"; + + environment.systemPackages = with pkgs; [ + dmenu + dmenu-bluetooth + dunst + networkmanager_dmenu + poweralertd + slock + xdotool + xwallpaper + ]; + + home-manager.users.opdavies = + { config, ... }: + { + home = { + file."${config.home.sessionVariables.XINITRC}".source = ./xinitrc; + + sessionVariables = { + XINITRC = "${config.xdg.configHome}/X11/xinitrc"; + }; + }; + }; + }; +} diff --git a/modules/dwm/xinitrc b/modules/nixos/desktop/dwm/xinitrc similarity index 82% rename from modules/dwm/xinitrc rename to modules/nixos/desktop/dwm/xinitrc index ba020660..5f8cc351 100644 --- a/modules/dwm/xinitrc +++ b/modules/nixos/desktop/dwm/xinitrc @@ -1,8 +1,7 @@ systemctl --user import-environment DISPLAY poweralertd -s & -set-background & -dwmblocks & -gammastep & +setbg & +systemctl --user start dwm-status & sxhkd & diff --git a/modules/nixos/desktop/fonts.nix b/modules/nixos/desktop/fonts.nix new file mode 100644 index 00000000..8c49a2f6 --- /dev/null +++ b/modules/nixos/desktop/fonts.nix @@ -0,0 +1,30 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.desktop.fonts; +in +{ + options.desktop.fonts.enable = mkEnableOption "Enable fonts"; + + config = mkIf cfg.enable { + fonts = { + fontconfig = { + enable = true; + }; + + packages = with pkgs; [ + nerd-fonts.jetbrains-mono + nerd-fonts.meslo-lg + terminus_font + terminus_font_ttf + ]; + }; + }; +} diff --git a/modules/nixos/desktop/media/default.nix b/modules/nixos/desktop/media/default.nix new file mode 100644 index 00000000..2efff1fb --- /dev/null +++ b/modules/nixos/desktop/media/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./makemkv.nix + ]; +} diff --git a/modules/nixos/desktop/media/makemkv.nix b/modules/nixos/desktop/media/makemkv.nix new file mode 100644 index 00000000..2d30d7ea --- /dev/null +++ b/modules/nixos/desktop/media/makemkv.nix @@ -0,0 +1,16 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.desktop.media.makemkv; +in +{ + options.desktop.media.makemkv.enable = mkEnableOption "Enable makemkv"; + + config = mkIf cfg.enable { + boot.kernelModules = [ "sg" ]; + + users.users.opdavies.extraGroups = [ "cdrom" ]; + }; +} diff --git a/modules/nixos/desktop/st.nix b/modules/nixos/desktop/st.nix new file mode 100644 index 00000000..3e0b6d81 --- /dev/null +++ b/modules/nixos/desktop/st.nix @@ -0,0 +1,377 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.desktop.st; +in +{ + options.desktop.st.enable = mkEnableOption "Enable st"; + + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + (st.override { + conf = '' + static char *font = "MesloLGSNerdFontMono:pixelsize=16:antialias=true:autohint=true"; + + int disablebold = 1; + int disableitalic = 1; + int disableroman = 1; + + static int borderpx = 2; + + static char *shell = "/bin/sh"; + char *utmp = NULL; + char *scroll = NULL; + char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; + + char *vtiden = "\033[?6c"; + + static float cwscale = 1.0; + static float chscale = 1.0; + + wchar_t *worddelimiters = L" "; + + static unsigned int doubleclicktimeout = 300; + static unsigned int tripleclicktimeout = 600; + + int allowaltscreen = 1; + + int allowwindowops = 0; + + static double minlatency = 2; + static double maxlatency = 33; + + static unsigned int blinktimeout = 800; + + static unsigned int cursorthickness = 2; + + static int bellvolume = 0; + + char *termname = "st-256color"; + + unsigned int tabspaces = 8; + + static const char *colorname[] = { + "black", + "red3", + "green3", + "yellow3", + "blue2", + "magenta3", + "cyan3", + "gray90", + + "gray50", + "red", + "green", + "yellow", + "#5c5cff", + "magenta", + "cyan", + "white", + + [255] = 0, + + "#cccccc", + "#555555", + "gray90", + "black", + }; + + unsigned int defaultfg = 258; + unsigned int defaultbg = 259; + unsigned int defaultcs = 256; + static unsigned int defaultrcs = 257; + + static unsigned int cursorshape = 2; + + static unsigned int cols = 80; + static unsigned int rows = 24; + + static unsigned int mouseshape = XC_xterm; + static unsigned int mousefg = 7; + static unsigned int mousebg = 0; + + static unsigned int defaultattr = 11; + + static uint forcemousemod = ShiftMask; + + static MouseShortcut mshortcuts[] = { + { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, + { ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} }, + { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, + { ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} }, + { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, + }; + + #define MODKEY Mod1Mask + #define TERMMOD (ControlMask|ShiftMask) + + static Shortcut shortcuts[] = { + { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, + { ControlMask, XK_Print, toggleprinter, {.i = 0} }, + { ShiftMask, XK_Print, printscreen, {.i = 0} }, + { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, + { TERMMOD, XK_Prior, zoom, {.f = +1} }, + { TERMMOD, XK_Next, zoom, {.f = -1} }, + { TERMMOD, XK_Home, zoomreset, {.f = 0} }, + { TERMMOD, XK_C, clipcopy, {.i = 0} }, + { TERMMOD, XK_D, zoom, {.f = -2} }, + { TERMMOD, XK_J, zoom, {.f = -1} }, + { TERMMOD, XK_K, zoom, {.f = +1} }, + { TERMMOD, XK_U, zoom, {.f = +2} }, + { TERMMOD, XK_V, clippaste, {.i = 0} }, + { TERMMOD, XK_Y, selpaste, {.i = 0} }, + { ShiftMask, XK_Insert, selpaste, {.i = 0} }, + { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, + }; + + static KeySym mappedkeys[] = { -1 }; + + static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; + + static Key key[] = { + { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, + { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, + { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, + { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, + { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, + { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, + { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, + { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, + { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, + { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, + { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, + { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, + { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, + { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, + { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, + { XK_KP_End, ControlMask, "\033[J", -1, 0}, + { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_KP_End, ShiftMask, "\033[K", -1, 0}, + { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, + { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, + { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, + { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, + { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, + { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, + { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, + { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, + { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, + { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, + { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, + { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, + { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, + { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, + { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, + { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, + { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, + { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, + { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, + { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, + { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, + { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, + { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, + { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, + { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, + { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, + { XK_Up, ShiftMask|Mod1Mask, "\033[1;4A", 0, 0}, + { XK_Up, ControlMask, "\033[1;5A", 0, 0}, + { XK_Up, ShiftMask|ControlMask, "\033[1;6A", 0, 0}, + { XK_Up, ControlMask|Mod1Mask, "\033[1;7A", 0, 0}, + { XK_Up, ShiftMask|ControlMask|Mod1Mask, "\033[1;8A", 0, 0}, + { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, + { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, + { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, + { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, + { XK_Down, ShiftMask|Mod1Mask, "\033[1;4B", 0, 0}, + { XK_Down, ControlMask, "\033[1;5B", 0, 0}, + { XK_Down, ShiftMask|ControlMask, "\033[1;6B", 0, 0}, + { XK_Down, ControlMask|Mod1Mask, "\033[1;7B", 0, 0}, + { XK_Down, ShiftMask|ControlMask|Mod1Mask, "\033[1;8B", 0, 0}, + { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, + { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, + { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, + { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, + { XK_Left, ShiftMask|Mod1Mask, "\033[1;4D", 0, 0}, + { XK_Left, ControlMask, "\033[1;5D", 0, 0}, + { XK_Left, ShiftMask|ControlMask, "\033[1;6D", 0, 0}, + { XK_Left, ControlMask|Mod1Mask, "\033[1;7D", 0, 0}, + { XK_Left, ShiftMask|ControlMask|Mod1Mask, "\033[1;8D", 0, 0}, + { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, + { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, + { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, + { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, + { XK_Right, ShiftMask|Mod1Mask, "\033[1;4C", 0, 0}, + { XK_Right, ControlMask, "\033[1;5C", 0, 0}, + { XK_Right, ShiftMask|ControlMask, "\033[1;6C", 0, 0}, + { XK_Right, ControlMask|Mod1Mask, "\033[1;7C", 0, 0}, + { XK_Right, ShiftMask|ControlMask|Mod1Mask, "\033[1;8C", 0, 0}, + { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, + { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, + { XK_Return, Mod1Mask, "\033\r", 0, 0}, + { XK_Return, XK_ANY_MOD, "\r", 0, 0}, + { XK_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_Insert, ControlMask, "\033[L", -1, 0}, + { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, + { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, + { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_Delete, ControlMask, "\033[M", -1, 0}, + { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, + { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, + { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, + { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, + { XK_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, + { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, + { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_End, ControlMask, "\033[J", -1, 0}, + { XK_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_End, ShiftMask, "\033[K", -1, 0}, + { XK_End, ShiftMask, "\033[1;2F", +1, 0}, + { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, + { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, + { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_Next, ControlMask, "\033[6;5~", 0, 0}, + { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, + { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, + { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, + { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, + { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, + { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, + { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, + { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, + { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, + { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, + { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, + { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, + { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, + { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, + { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, + { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, + { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, + { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, + { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, + { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, + { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, + { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, + { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, + { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, + { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, + { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, + { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, + { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, + { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, + { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, + { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, + { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, + { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, + { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, + { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, + { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, + { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, + { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, + { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, + { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, + { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, + { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, + { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, + { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, + { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, + { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, + { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, + { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, + { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, + { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, + { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, + { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, + { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, + { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, + { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, + { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, + { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, + { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, + { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, + { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, + { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, + { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, + { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, + { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, + { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, + { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, + { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, + { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, + { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, + { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, + { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, + { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, + { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, + { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, + { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, + { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, + { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, + { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, + { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, + { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, + { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, + { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, + { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, + { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, + { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, + { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, + { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, + }; + + static uint selmasks[] = { + [SEL_RECTANGULAR] = Mod1Mask, + }; + + static char ascii_printable[] = + " !\"#$%&'()*+,-./0123456789:;<=>?" + "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" + "`abcdefghijklmnopqrstuvwxyz{|}~"; + ''; + + patches = [ + (fetchpatch { + name = "disable_bold_italic_fonts"; + url = "https://st.suckless.org/patches/disable_bold_italic_fonts/st-disable-bold-italic-fonts-0.8.2.diff"; + sha256 = "PG96QMqbX3Fr0EvDmF4lm/J3gj18eyBfm1bJ3M7plvQ="; + }) + + (fetchpatch { + name = "anysize"; + url = "https://st.suckless.org/patches/anysize/st-anysize-20220718-baa9357.diff"; + sha256 = "yx9VSwmPACx3EN3CAdQkxeoJKJxQ6ziC9tpBcoWuWHc="; + }) + ]; + }) + ]; + }; +} diff --git a/modules/nixos/desktop/thunar.nix b/modules/nixos/desktop/thunar.nix new file mode 100644 index 00000000..b6b08214 --- /dev/null +++ b/modules/nixos/desktop/thunar.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = config.desktop.thunar; +in +{ + options.desktop.thunar.enable = mkEnableOption "Enable thunar"; + + config = mkIf cfg.enable { + programs.thunar = { + enable = true; + + plugins = with pkgs.xfce; [ + thunar-archive-plugin + ]; + }; + + environment.systemPackages = with pkgs; [ xfce.tumbler ]; + }; +} diff --git a/modules/nixos/homelab/gitea-actions-runner.nix b/modules/nixos/homelab/gitea-actions-runner.nix new file mode 100644 index 00000000..9318e22e --- /dev/null +++ b/modules/nixos/homelab/gitea-actions-runner.nix @@ -0,0 +1,50 @@ +{ + config, + inputs, + lib, + pkgs, + ... +}: + +with lib; + +let + cfg = homelab.services.${service}; + homelab = config.homelab; + service = "gitea-actions-runner"; +in +{ + options.homelab.services.${service} = { + enable = mkEnableOption "Enable ${service}"; + }; + + config = mkIf cfg.enable { + services.${service}.instances.default = { + enable = true; + + hostPackages = with pkgs; [ + bash + coreutils + curl + gawk + gitMinimal + gnused + nix + nodejs + wget + ]; + + labels = [ + "nixos:host" + ]; + + name = config.networking.hostName; + tokenFile = config.age.secrets.forgejo-runner-token.path; + url = config.services.forgejo.settings.server.ROOT_URL; + }; + + age.secrets = { + forgejo-runner-token.file = "${inputs.self}/secrets/forgejo-runner-token.age"; + }; + }; +} diff --git a/modules/nixos/nixpad/default.nix b/modules/nixos/nixpad/default.nix new file mode 100644 index 00000000..ace3213c --- /dev/null +++ b/modules/nixos/nixpad/default.nix @@ -0,0 +1,39 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + cfg = config.nixpad; +in +{ + options.nixpad = { + enable = lib.mkEnableOption "Enable nixpad configuration"; + }; + + config = lib.mkIf cfg.enable { + services.xserver = { + enable = true; + + desktopManager.cinnamon.enable = true; + displayManager.lightdm.enable = true; + }; + + programs = { + firefox.enable = true; + git.enable = true; + }; + + environment.systemPackages = with pkgs; [ + libreoffice + ]; + + nix.gc = { + automatic = true; + dates = "Mon 4:00"; + options = "--delete-older-than 30d"; + }; + }; +} diff --git a/modules/nixvim/aliases.nix b/modules/nixvim/aliases.nix deleted file mode 100644 index e8f6a389..00000000 --- a/modules/nixvim/aliases.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.modules.nixvim.custom = { - viAlias = true; - vimAlias = true; - }; -} diff --git a/modules/nixvim/auto-save.nix b/modules/nixvim/auto-save.nix deleted file mode 100644 index 0844ec58..00000000 --- a/modules/nixvim/auto-save.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - flake.modules.nixvim.custom.plugins.auto-save = { - enable = true; - - settings.condition = '' - function(buf) - local excluded_filetypes = { - "harpoon", - "oil", - } - - local excluded_filenames = {} - - if vim.tbl_contains(excluded_filetypes, vim.fn.getbufvar(buf, "&filetype")) - or vim.tbl_contains(excluded_filenames, vim.fn.expand("%:t")) - then - return false - end - - return true - end - ''; - }; -} diff --git a/modules/nixvim/colorscheme.nix b/modules/nixvim/colorscheme.nix deleted file mode 100644 index 28e04bc8..00000000 --- a/modules/nixvim/colorscheme.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.modules.nixvim.custom.colorschemes.catppuccin = { - enable = true; - settings.flavour = "mocha"; - }; -} diff --git a/modules/nixvim/completion/luasnip.nix b/modules/nixvim/completion/luasnip.nix deleted file mode 100644 index 5b91c029..00000000 --- a/modules/nixvim/completion/luasnip.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - flake.modules.nixvim.custom.plugins = { - cmp_luasnip.enable = true; - - luasnip = { - enable = true; - - fromLua = [ - { - lazyLoad = true; - paths = ./snippets; - } - ]; - }; - }; -} diff --git a/modules/nixvim/completion/snippets/asciidoc.lua b/modules/nixvim/completion/snippets/asciidoc.lua deleted file mode 100644 index 58b94986..00000000 --- a/modules/nixvim/completion/snippets/asciidoc.lua +++ /dev/null @@ -1,10 +0,0 @@ -return { - s("dev", t("__Under development...__")), - - s("source", fmta([[ - [source] - ---- - - ---- - ]], { finish = i(0), options = i(1) })), -} diff --git a/modules/nixvim/completion/snippets/javascript.lua b/modules/nixvim/completion/snippets/javascript.lua deleted file mode 100644 index 4cfb491e..00000000 --- a/modules/nixvim/completion/snippets/javascript.lua +++ /dev/null @@ -1,3 +0,0 @@ -return { - s("log", fmta("console.log(<>);", { i(1, "value") })), -} diff --git a/modules/nixvim/completion/snippets/lua.lua b/modules/nixvim/completion/snippets/lua.lua deleted file mode 100644 index 31406fe7..00000000 --- a/modules/nixvim/completion/snippets/lua.lua +++ /dev/null @@ -1,13 +0,0 @@ -return { - s( - "req", - fmt([[local {} = require "{}"]], { - f(function(import_name) - local parts = vim.split(import_name[1][1], ".", true) - - return parts[#parts] or "" - end, { 1 }), - i(1), - }) - ) -} diff --git a/modules/nixvim/completion/snippets/nix.lua b/modules/nixvim/completion/snippets/nix.lua deleted file mode 100644 index 8e454963..00000000 --- a/modules/nixvim/completion/snippets/nix.lua +++ /dev/null @@ -1,111 +0,0 @@ -return { - s("home_packages", fmta("home.packages = with pkgs; [ <> ];", i(0))), - - s( - "homepage_options", - fmta( - [[ - homepage.name = mkOption { - default = ""; - type = types.str; - }; - - homepage.description = mkOption { - default = ""; - type = types.str; - }; - - homepage.icon = mkOption { - default = ""; - type = types.str; - }; - - homepage.category = mkOption { - default = ""; - type = types.str; - }; - ]], - { - description = i(2), - finish = i(0), - icon = i(3), - name = i(1), - } - ) - ), - - s( - "imports", - fmta( - [[ - { - imports = [ - <> - ]; - } - ]], - { i(0) } - ) - ), - - s( - "new_flake", - fmta( - [[ - { - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - }; - - outputs = - { nixpkgs, ... }: - let - system = "x86_64-linux"; - pkgs = import nixpkgs { inherit system; }; - - inherit (pkgs) mkShell; - in - { - devShells.${system}.default = mkShell { - packages = with pkgs; [ ]; - }; - - formatter.${system} = pkgs.nixfmt-classic; - }; - } - ]], - { inputs = i(1), pkgs = i(2), finish = i(0) } - ) - ), - s( - "new_module", - fmta( - [[ - { config, lib, ... }: - - let - name = ""; - cfg = config..${name}; - in - { - options..${name} = { - enable = lib.mkEnableOption "Enable ${name}"; - }; - - config = lib.mkIf cfg.enable { - - }; - } - ]], - { - finish = i(0), - more_options = i(3), - name = i(1), - namespace = i(2), - }, - { repeat_duplicates = true } - ) - ), - - s("system_packages", fmta("environment.systemPackages = with pkgs; [<>];", i(0))), -} diff --git a/modules/nixvim/completion/snippets/php.lua b/modules/nixvim/completion/snippets/php.lua deleted file mode 100644 index eeb9f5d9..00000000 --- a/modules/nixvim/completion/snippets/php.lua +++ /dev/null @@ -1,55 +0,0 @@ -return { - s("func", fmta("function <>(<>)<> {\n <>\n}<>", { i(1), i(2), i(3), i(4), i(0) })), - - s( - "met", - fmta( - [[ - <> function <>(<>)<> { - <> - }<> - ]], - { c(1, { t "public", t "protected", t "private" }), i(2), i(3), i(4), i(5), i(0) } - ) - ), - - s("pest", fmta("<>('<>', function() {\n <>\n});", { c(1, { t "it", t "test" }), i(2), i(0) })), - - s( - "test", - fmta( - [[ - public function test<>(): void { - <> - }<> - ]], - { i(1), i(2), i(0) } - ) - ), - - s( - "testan", - fmta( - [[ - /** @test */ - public function <>(): void { - <> - }<> - ]], - { i(1), i(2), i(0) } - ) - ), - - s( - "testat", - fmta( - [[ - [#Test] - public function <>(): void { - <> - }<> - ]], - { i(1), i(2), i(0) } - ) - ) -} diff --git a/modules/nixvim/completion/snippets/rst.lua b/modules/nixvim/completion/snippets/rst.lua deleted file mode 100644 index 7964a542..00000000 --- a/modules/nixvim/completion/snippets/rst.lua +++ /dev/null @@ -1,54 +0,0 @@ -local fmta = require("luasnip.extras.fmt").fmta - -local fill_line = function(char) - return function() - local row = vim.api.nvim_win_get_cursor(0)[1] - local lines = vim.api.nvim_buf_get_lines(0, row - 2, row, false) - return string.rep(char, #lines[1]) - end -end - -return { - s("class", t(".. class:: ", i(1))), - - s("footer", t(".. footer:: ", i(1))), - - s("link", t(".. _", i(1), ":")), - - s("raw", t(".. raw:: ", i(1))), - - -- TODO: add an optional new line and ":width" property. - s("image", t(".. image:: ", i(1))), - - s("head", f(fill_line "=", {})), - - s("sub", f(fill_line "-", {})), - - s("subsub", f(fill_line "^", {})), - - -- Add a page break with an optional page template. - s( - "pb", - fmta( - [[ - .. raw:: pdf - - PageBreak<> - ]], - { i(0) } - ) - ), - - -- Add a new speaker note. - s( - "ta", - fmta( - [[ - .. raw:: pdf - - TextAnnotation "<>" - ]], - { i(0) } - ) - ), -} diff --git a/modules/nixvim/completion/snippets/twig.lua b/modules/nixvim/completion/snippets/twig.lua deleted file mode 100644 index a787a544..00000000 --- a/modules/nixvim/completion/snippets/twig.lua +++ /dev/null @@ -1,19 +0,0 @@ -return { - s("do", fmta("{% <> %}<>", { i(1), i(0) })), - s("dump", fmta("{{ dump(<>) }}<>", { i(1), i(0) })), - s("echo", fmta("{{ <> }}<>", { i(1), i(0) })), - - s( - "for", - fmta( - [[ - {% for <> in <> %} - <> - {% endfor %}<> - ]], - { i(1), i(2), i(3), i(0) } - ) - ), - - s("if", fmta("{% if <> %}<>{% endif %}<>", { i(1), i(2), i(0) })), -} diff --git a/modules/nixvim/conform.nix b/modules/nixvim/conform.nix deleted file mode 100644 index 8e7e5c8d..00000000 --- a/modules/nixvim/conform.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixvim.custom.plugins.conform-nvim.enable = true; -} diff --git a/modules/nixvim/diagnostics.nix b/modules/nixvim/diagnostics.nix deleted file mode 100644 index a3758ade..00000000 --- a/modules/nixvim/diagnostics.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - flake.modules.nixvim.custom.diagnostic.settings = { - signs = true; - underline = false; - update_in_insert = false; - - virtual_text = { - enable = true; - spacing = 2; - }; - }; -} diff --git a/modules/nixvim/edit-alternate/config.nix b/modules/nixvim/edit-alternate/config.nix deleted file mode 100644 index 7adefaa0..00000000 --- a/modules/nixvim/edit-alternate/config.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - flake.modules.nixvim.custom.extraConfigLua = '' - local add_rule = function(ft, fn) - vim.fn["edit_alternate#rule#add"](ft, fn) - end - - add_rule("go", function(filename) - return filename:find "_test%.go$" - and filename:gsub("_test%.go$", ".go") - or filename:gsub("%.go$", "_test.go") - end) - - add_rule("php", function(filename) - if filename:find "Test.php$" then - filename = filename:gsub("Test.php$", ".php") - - return filename:find "tests/src/" - and filename:gsub("tests/src/(.-)/", "src/") - or filename:gsub("tests/", "src/") - else - local test_filename = filename:gsub("%.php$", "Test.php") - - if test_filename:find "modules/custom" then - local test_types = { "Functional", "FunctionalJavaScript", "Kernel", "Unit" } - - for _, test_type in ipairs(test_types) do - local candidate = test_filename:gsub("src/", string.format("tests/src/%s/", test_type)) - - if vim.fn.filereadable(candidate) == 1 then - return candidate - end - end - end - - return test_filename - end - end) - - add_rule("ts", function(filename) - return filename:gsub("%.stories.ts$", ".tsx") - end) - - add_rule("tsx", function(filename) - if filename:find("%.stories.tsx$") then - return filename:gsub("%.stories.tsx$", ".tsx") - end - - return filename:gsub("%.tsx$", ".stories.tsx") - end) - - if vim.fn.filereadable "composer.json" == 1 then - add_rule("json", function(filename) - return filename:find "composer.json" and filename:gsub("%.json$", ".lock") or nil - end) - - add_rule("lock", function(filename) - return filename:find "composer.lock" and filename:gsub("%.lock$", ".json") or nil - end) - end - - if vim.fn.filereadable "fractal.config.js" == 1 then - add_rule("twig", function(filename) - return filename:gsub("%.twig$", ".config.yml") - end) - - add_rule("yml", function(filename) - return filename:gsub("%.config.yml$", ".twig") - end) - end - ''; -} diff --git a/modules/nixvim/edit-alternate/extra-plugins.nix b/modules/nixvim/edit-alternate/extra-plugins.nix deleted file mode 100644 index ca795f18..00000000 --- a/modules/nixvim/edit-alternate/extra-plugins.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.nixvim.custom = - { pkgs, ... }: - { - extraPlugins = - let - inherit (pkgs.vimUtils) buildVimPlugin; - in - [ - (buildVimPlugin { - pname = "conf-vim"; - src = inputs.conf-vim; - version = "unstable"; - }) - - (buildVimPlugin { - pname = "edit-alternate-vim"; - src = inputs.edit-alternate-vim; - version = "unstable"; - }) - - (buildVimPlugin { - pname = "standard-vim"; - src = inputs.standard-vim; - version = "unstable"; - }) - ]; - }; -} diff --git a/modules/nixvim/edit-alternate/keymaps.nix b/modules/nixvim/edit-alternate/keymaps.nix deleted file mode 100644 index fa375bab..00000000 --- a/modules/nixvim/edit-alternate/keymaps.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - flake.modules.nixvim.custom.keymaps = [ - { - action = "EditAlternate"; - key = "ea"; - mode = "n"; - } - ]; -} diff --git a/modules/nixvim/extra-packages.nix b/modules/nixvim/extra-packages.nix deleted file mode 100644 index 33f7d8f1..00000000 --- a/modules/nixvim/extra-packages.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - flake.modules.nixvim.custom = - { pkgs, ... }: - { - extraPackages = with pkgs; [ - nixfmt-rfc-style - stylua - ]; - }; -} diff --git a/modules/nixvim/fidget.nix b/modules/nixvim/fidget.nix deleted file mode 100644 index 05124ce7..00000000 --- a/modules/nixvim/fidget.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixvim.custom.plugins.fidget.enable = true; -} diff --git a/modules/nixvim/filetypes.nix b/modules/nixvim/filetypes.nix deleted file mode 100644 index bfdc4ca9..00000000 --- a/modules/nixvim/filetypes.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - flake.modules.nixvim.custom.filetype = { - extension = { - "neon.dist" = "yaml"; - inc = "php"; - install = "php"; - module = "php"; - neon = "yaml"; - pcss = "scss"; - theme = "php"; - }; - - filename = { - "composer.lock" = "json"; - }; - }; -} diff --git a/modules/nixvim/flake-outputs.nix b/modules/nixvim/flake-outputs.nix deleted file mode 100644 index 2705d5c8..00000000 --- a/modules/nixvim/flake-outputs.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ config, ... }: - -{ - perSystem = - { inputs', pkgs, ... }: - { - packages.neovim = inputs'.nixvim.legacyPackages.makeNixvimWithModule { - inherit pkgs; - - module = config.flake.modules.nixvim.custom; - }; - }; -} diff --git a/modules/nixvim/ftplugin/asciidoc.nix b/modules/nixvim/ftplugin/asciidoc.nix deleted file mode 100644 index 33a44bc6..00000000 --- a/modules/nixvim/ftplugin/asciidoc.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ lib, ... }: - -{ - flake.modules.nixvim.custom = - { pkgs, ... }: - { - extraFiles."after/ftplugin/asciidoc.lua".text = '' - vim.opt_local.linebreak = true - vim.opt_local.makeprg = "${lib.getExe pkgs.asciidoctor} %" - vim.opt_local.spell = true - - -- Convert lines into a list. - vim.keymap.set("n", "l", "vip:norm I* ") - vim.keymap.set("v", "l", ":norm I* ") - ''; - }; -} diff --git a/modules/nixvim/ftplugin/gitcommit.nix b/modules/nixvim/ftplugin/gitcommit.nix deleted file mode 100644 index 9475a398..00000000 --- a/modules/nixvim/ftplugin/gitcommit.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - flake.modules.nixvim.custom.extraFiles."after/ftplugin/gitcommit.lua".text = - # lua - '' - vim.opt_local.colorcolumn = "50,72" - vim.opt_local.spell = true - vim.opt_local.textwidth = 72 - ''; -} diff --git a/modules/nixvim/ftplugin/go.nix b/modules/nixvim/ftplugin/go.nix deleted file mode 100644 index 21abe049..00000000 --- a/modules/nixvim/ftplugin/go.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - flake.modules.nixvim.custom = { - extraFiles."after/ftplugin/go.lua".text = - # lua - '' - vim.opt.makeprg = "go run %" - ''; - }; -} diff --git a/modules/nixvim/ftplugin/just.nix b/modules/nixvim/ftplugin/just.nix deleted file mode 100644 index c9c4517c..00000000 --- a/modules/nixvim/ftplugin/just.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - flake.modules.nixvim.custom = { - extraFiles."after/ftplugin/just.lua".text = - # lua - '' - local opt = vim.opt_local - - opt.shiftwidth = 4 - ''; - }; -} diff --git a/modules/nixvim/ftplugin/markdown.nix b/modules/nixvim/ftplugin/markdown.nix deleted file mode 100644 index 9cd1f1ed..00000000 --- a/modules/nixvim/ftplugin/markdown.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - flake.modules.nixvim.custom = { - plugins.cmp-path.enable = true; - - extraFiles."after/ftplugin/markdown.lua".text = - # lua - '' - local opt = vim.opt_local - - opt.spell = true - opt.wrap = true - - local cmp = require "cmp" - local sources = cmp.get_config().sources - - -- TODO: confirm these aren't aleady in the list of sources to avoid duplicate suggestions. - table.insert(sources, { name = "path" }) - - cmp.setup.buffer { sources = sources } - ''; - }; -} diff --git a/modules/nixvim/ftplugin/php.nix b/modules/nixvim/ftplugin/php.nix deleted file mode 100644 index e531157e..00000000 --- a/modules/nixvim/ftplugin/php.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - flake.modules.nixvim.custom = { - extraFiles."after/ftplugin/php.lua".text = - # lua - '' - vim.opt_local.makeprg = "php %"; - ''; - }; -} diff --git a/modules/nixvim/fugitive.nix b/modules/nixvim/fugitive.nix deleted file mode 100644 index ac800972..00000000 --- a/modules/nixvim/fugitive.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - flake.modules.nixvim.custom = { - plugins.fugitive.enable = true; - - keymaps = [ - { - key = "gc"; - action = "Git commitK"; - } - - { - # Open the ":Git" window in its own buffer, not a split. - key = "gs"; - action = "0Git"; - } - ]; - }; -} diff --git a/modules/nixvim/gitsigns.nix b/modules/nixvim/gitsigns.nix deleted file mode 100644 index 60609c35..00000000 --- a/modules/nixvim/gitsigns.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - flake.modules.nixvim.custom = { - plugins.gitsigns.enable = true; - - keymaps = [ - { - action = "Gitsigns prev_hunk"; - key = "[h"; - } - - { - action = "Gitsigns next_hunk"; - key = "]h"; - } - - { - action = "Gitsigns reset_hunk"; - key = "hr"; - } - - { - action = "Gitsigns reset_buffer"; - key = "hR"; - } - - { - action = "Gitsigns stage_hunk"; - key = "hs"; - mode = [ - "n" - "v" - ]; - } - - { - action = "Gitsigns stage_buffer"; - key = "hS"; - mode = "n"; - } - - { - action = "Gitsigns undo_stage_hunk"; - key = "hu"; - mode = "x"; - } - ]; - }; -} diff --git a/modules/nixvim/leader.nix b/modules/nixvim/leader.nix deleted file mode 100644 index 36b9eff9..00000000 --- a/modules/nixvim/leader.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.modules.nixvim.custom.globals = { - mapleader = " "; - maplocalleader = " "; - }; -} diff --git a/modules/nixvim/lint.nix b/modules/nixvim/lint.nix deleted file mode 100644 index 60b766e6..00000000 --- a/modules/nixvim/lint.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixvim.custom.plugins.lint.enable = true; -} diff --git a/modules/nixvim/lsp.nix b/modules/nixvim/lsp.nix deleted file mode 100644 index efd9d4d1..00000000 --- a/modules/nixvim/lsp.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - flake.modules.nixvim.custom.plugins.lsp = { - enable = true; - - keymaps = { - diagnostic = { - "dl" = "setqflist"; - }; - - lspBuf = { - "ca" = "code_action"; - "cr" = "rename"; - K = "hover"; - gD = "declaration"; - gT = "type_definition"; - gd = "definition"; - gr = "references"; - }; - }; - - servers.phpactor.enable = true; - }; -} diff --git a/modules/nixvim/lsp/bash.nix b/modules/nixvim/lsp/bash.nix deleted file mode 100644 index 5b4fe0d7..00000000 --- a/modules/nixvim/lsp/bash.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixvim.custom.lsp.servers.bashls.enable = true; -} diff --git a/modules/nixvim/lsp/css.nix b/modules/nixvim/lsp/css.nix deleted file mode 100644 index df60f599..00000000 --- a/modules/nixvim/lsp/css.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.modules.nixvim.custom.lsp.servers = { - cssls.enable = true; - tailwindcss.enable = true; - }; -} diff --git a/modules/nixvim/lsp/go.nix b/modules/nixvim/lsp/go.nix deleted file mode 100644 index 56dd395b..00000000 --- a/modules/nixvim/lsp/go.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixvim.custom.lsp.servers.gopls.enable = true; -} diff --git a/modules/nixvim/lsp/html.nix b/modules/nixvim/lsp/html.nix deleted file mode 100644 index 6cc1f44e..00000000 --- a/modules/nixvim/lsp/html.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixvim.custom.lsp.servers.html.enable = true; -} diff --git a/modules/nixvim/lsp/javascript.nix b/modules/nixvim/lsp/javascript.nix deleted file mode 100644 index 148adb94..00000000 --- a/modules/nixvim/lsp/javascript.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.modules.nixvim.custom.plugins = { - lsp.servers.eslint.enable = true; - typescript-tools.enable = true; - }; -} diff --git a/modules/nixvim/lsp/lua.nix b/modules/nixvim/lsp/lua.nix deleted file mode 100644 index 7fb31f17..00000000 --- a/modules/nixvim/lsp/lua.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixvim.custom.lsp.servers.lua_ls.enable = true; -} diff --git a/modules/nixvim/lsp/nix.nix b/modules/nixvim/lsp/nix.nix deleted file mode 100644 index a3e698cd..00000000 --- a/modules/nixvim/lsp/nix.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixvim.custom.lsp.servers.nixd.enable = true; -} diff --git a/modules/nixvim/lsp/php.nix b/modules/nixvim/lsp/php.nix deleted file mode 100644 index 6a22484a..00000000 --- a/modules/nixvim/lsp/php.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixvim.custom.lsp.servers.phpactor.enable = true; -} diff --git a/modules/nixvim/make.nix b/modules/nixvim/make.nix deleted file mode 100644 index 1a533b9a..00000000 --- a/modules/nixvim/make.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - flake.modules.nixvim.custom = - { pkgs, ... }: - { - extraPackages = with pkgs; [ gnumake ]; - - keymaps = [ - { - action = "make"; - key = "r"; - } - ]; - }; -} diff --git a/modules/nixvim/mini.nix b/modules/nixvim/mini.nix deleted file mode 100644 index e9b66a30..00000000 --- a/modules/nixvim/mini.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - flake.modules.nixvim.custom.plugins.mini = { - enable = true; - - modules = { - ai = { }; - align = { }; - bracketed = { }; - move = { }; - operators = { }; - splitjoin = { }; - surround = { }; - }; - }; -} diff --git a/modules/nixvim/oil.nix b/modules/nixvim/oil.nix deleted file mode 100644 index 2a022eea..00000000 --- a/modules/nixvim/oil.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - flake.modules.nixvim.custom = { - plugins.oil = { - enable = true; - - settings = { - delete_to_trash = true; - - keymaps."-" = "actions.parent"; - - skip_confirm_for_simple_edits = true; - view_options.show_hidden = true; - }; - }; - - keymaps = [ - { - action = "Oil"; - key = "-"; - } - ]; - }; -} diff --git a/modules/nixvim/phpactor.nix b/modules/nixvim/phpactor.nix deleted file mode 100644 index d40f8a1f..00000000 --- a/modules/nixvim/phpactor.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - flake.modules.nixvim.custom = - { pkgs, ... }: - { - extraPlugins = with pkgs.vimPlugins; [ phpactor ]; - - keymaps = [ - { - key = "pm"; - action = "PhpactorContextMenu"; - } - - { - key = "pn"; - action = "PhpactorClassNew"; - } - ]; - }; -} diff --git a/modules/nixvim/refactoring.nix b/modules/nixvim/refactoring.nix deleted file mode 100644 index f59f9a9c..00000000 --- a/modules/nixvim/refactoring.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ config, lib, ... }: - -{ - flake.modules.nixvim.custom = { - plugins.refactoring = { - enable = true; - enableTelescope = true; - }; - - keymaps = [ - { - key = "ri"; - action = "Refactor inline_var"; - mode = "n"; - } - - { - key = "re"; - action = "Refactor extract"; - mode = "x"; - } - - { - key = "ri"; - action = "Refactor inline_var"; - mode = "x"; - } - - { - key = "rv"; - action = "Refactor extract_var"; - mode = "x"; - } - ]; - # ++ - # lib.optionals - # ( - # config.flake.modules.nixvim.custom.plugins.refactoring.enable - # && config.flake.modules.nixvim.custom.plugins.refactoring.enableTelescope - # ) - # [ - # { - # mode = "n"; - # key = "rR"; - # action.__raw = '' - # function() - # require('telescope').extensions.refactoring.refactors() - # end - # ''; - # options.silent = true; - # } - # ]; - }; -} diff --git a/modules/nixvim/spell/en.utf-8.add b/modules/nixvim/spell/en.utf-8.add deleted file mode 100644 index 6d36619c..00000000 --- a/modules/nixvim/spell/en.utf-8.add +++ /dev/null @@ -1,132 +0,0 @@ -ANP -AWS -Acquia -Ansible -Appnovation -Architected -BAU -Behat -Bitbucket -Bluecheese -BrumPHP -CMSes -CTI -Cachix -Centarro -CiviCRM -Configs -D7 -DDEV -DevOps -DigitalOcean -Drupal -Drupal's -DrupalCamp -DrupalCon -DrupalEasy -Drupaler -Drush -FPM -FTSE -GitLab -Gitea -HDN -HashiCorp -Hetzner -Homelab -Immich -InvalidArgumentException -Inviqa -JSON -Jellyfin -Kickstart -Lando -Laravel -Linode -Magento -MariaDB -Microserve -Mischa -MySQL -NGINX -Neovim -Netlify -Nginx -NixOS -NodeInterface -Nomensa -OpenID -OpenTofu -PDOException -PHPDoc -PHPStan -PHPUnit -Packagist -PhpStorm -PostBuilder -PostNodeRepository -Pulumi -S3 -SHA -SQLSTATE -SQLite -SSO -Sculpin -Silex -SimpleTest -Sylius -Symfony -TODO -TermInterface -Themers -Traefik -TypeScript -Ubercart -VSCode -Vaultwarden -WCAG -WSL -Wellbeing -ZSH -Zellij -Zettelkasten -architected -assertContainsOnlyInstancesOf -assertSame -bootcamp -contrib -devenv -dotfiles -drupal -eCommerce -foreach -getPost -ghostty -hotfix -isNotPublished -isPublished -localhost -macOS -mentees -nixpkgs -nodeStorage -opdavies -osCommerce -param -reStructuredText -rebase -rebasing -roadmapping -rst2pdf -rwxrob -src -stylesheet -stylesheets -testbot -tmux -url -vhost -wildcard -worktree -worktrees -www diff --git a/modules/nixvim/templates/default.nix b/modules/nixvim/templates/default.nix deleted file mode 100644 index 753b600a..00000000 --- a/modules/nixvim/templates/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - flake.modules.nixvim.custom.autoCmd = [ - { - event = "BufNewFile"; - pattern = [ "*.php" ]; - command = "0r ${./php}"; - } - ]; -} diff --git a/modules/nixvim/templates/php b/modules/nixvim/templates/php deleted file mode 100644 index 174d7fd7..00000000 --- a/modules/nixvim/templates/php +++ /dev/null @@ -1,3 +0,0 @@ -UndotreeToggle"; - key = "u"; - } - ]; - }; -} diff --git a/modules/nixvim/use-in-home.nix b/modules/nixvim/use-in-home.nix deleted file mode 100644 index 991fca81..00000000 --- a/modules/nixvim/use-in-home.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ config, inputs, lib, ... }: - -{ - flake.modules.homeManager.base = - hmArgs@{ pkgs, ... }: - let - # Ideally: - # nixvim = self.packages.${pkgs.system}.nixvim; - # but https://github.com/danth/stylix/pull/415#issuecomment-2832398958 - neovim = inputs.nixvim.legacyPackages.${pkgs.system}.makeNixvimWithModule { - inherit pkgs; - - extraSpecialArgs.homeConfig = hmArgs.config; - - module = config.flake.modules.nixvim.custom; - }; - in - { - home = { - packages = [ neovim ]; - sessionVariables.EDITOR = lib.mkForce (lib.getExe neovim); - }; - }; -} diff --git a/modules/nixvim/vim-cool.nix b/modules/nixvim/vim-cool.nix deleted file mode 100644 index 1a02189e..00000000 --- a/modules/nixvim/vim-cool.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.nixvim.custom = - { pkgs, ... }: - { - extraPlugins = [ pkgs.vimPlugins.vim-cool ]; - }; -} diff --git a/modules/nixvim/vim-heritage.nix b/modules/nixvim/vim-heritage.nix deleted file mode 100644 index 2ff64c26..00000000 --- a/modules/nixvim/vim-heritage.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.nixvim.custom = - { pkgs, ... }: - { - extraPlugins = [ - (pkgs.vimUtils.buildVimPlugin { - src = inputs.vim-heritage; - pname = "vim-heritage"; - version = "unstable"; - }) - ]; - - keymaps = [ - # https://github.com/jessarcher/vim-heritage/blob/574baeb0679681a710adce5110a0d8b2ae1c2637/README.md#L28-L33 - { - action = ":edit %:h/"; - key = "gf"; - mode = "n"; - options.silent = true; - } - ]; - }; -} diff --git a/modules/nixvim/vim-highlightedyank.nix b/modules/nixvim/vim-highlightedyank.nix deleted file mode 100644 index ee937da9..00000000 --- a/modules/nixvim/vim-highlightedyank.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - flake.modules.nixvim.custom = - { pkgs, ... }: - { - extraPlugins = [ pkgs.vimPlugins.vim-highlightedyank ]; - - extraConfigVim = '' - let g:highlightedyank_highlight_duration = 100 - ''; - }; -} diff --git a/modules/nixvim/vim-test.nix b/modules/nixvim/vim-test.nix deleted file mode 100644 index 5ec7a29c..00000000 --- a/modules/nixvim/vim-test.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - flake.modules.nixvim.custom = { - plugins.vim-test.enable = true; - - keymaps = [ - { - key = "tf"; - action = "TestFile"; - } - { - key = "tl"; - action = "TestLast"; - } - { - key = "tn"; - action = "TestNearest"; - } - ]; - }; -} diff --git a/modules/nixvim/vim-textobj-xmlattr.nix b/modules/nixvim/vim-textobj-xmlattr.nix deleted file mode 100644 index 6cdd4812..00000000 --- a/modules/nixvim/vim-textobj-xmlattr.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ inputs, ... }: - -{ - flake.modules.nixvim.custom = - { pkgs, ... }: - { - extraPlugins = with pkgs.vimPlugins; [ - vim-textobj-user - - (pkgs.vimUtils.buildVimPlugin { - src = inputs.vim-textobj-xmlattr; - pname = "vim-textobj-xmlattr"; - version = "unstable"; - }) - ]; - }; -} diff --git a/modules/nixvim/web-devicons.nix b/modules/nixvim/web-devicons.nix deleted file mode 100644 index 56591499..00000000 --- a/modules/nixvim/web-devicons.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixvim.custom.plugins.web-devicons.enable = false; -} diff --git a/modules/node.nix b/modules/node.nix deleted file mode 100644 index 55ec9367..00000000 --- a/modules/node.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - flake.modules.homeManager.base = - { config, ... }: - let - inherit (config.xdg) configHome dataHome stateHome; - in - { - xdg.configFile."${config.home.sessionVariables.NPM_CONFIG_USERCONFIG}".text = '' - cache=${configHome}/npm - init-module=${configHome}/npm/config/npm-init.js - logs-dir=${stateHome}/npm/logs - prefix=${dataHome}/npm - ''; - - home.sessionVariables = { - NPM_CONFIG_USERCONFIG = "${configHome}/npm/npmrc"; - }; - }; -} diff --git a/modules/notes/xdg.nix b/modules/notes/xdg.nix deleted file mode 100644 index f0daba22..00000000 --- a/modules/notes/xdg.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.modules.homeManager.base.xdg = { - enable = true; - userDirs.enable = true; - }; -} diff --git a/modules/ollama/acceleration.nix b/modules/ollama/acceleration.nix deleted file mode 100644 index f79fd202..00000000 --- a/modules/ollama/acceleration.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.desktop.services.ollama.acceleration = "rocm"; -} diff --git a/modules/ollama/models.nix b/modules/ollama/models.nix deleted file mode 100644 index 4df7a39a..00000000 --- a/modules/ollama/models.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - flake.modules.nixos.desktop.services.ollama.loadModels = [ - "dimavz/whisper-tiny" - ]; -} diff --git a/modules/openssh/enable.nix b/modules/openssh/enable.nix deleted file mode 100644 index 278ab317..00000000 --- a/modules/openssh/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.pc.services.openssh.enable = true; -} diff --git a/modules/openssh/firewall.nix b/modules/openssh/firewall.nix deleted file mode 100644 index c8b4e8b5..00000000 --- a/modules/openssh/firewall.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ lib, ... }: - -{ - flake.modules.nixos.pc.services.openssh.openFirewall = lib.mkForce true; -} diff --git a/modules/openssh/settings.nix b/modules/openssh/settings.nix deleted file mode 100644 index d1a976f7..00000000 --- a/modules/openssh/settings.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ lib, ... }: - -{ - flake.modules.nixos.pc.services.openssh.settings = { - PasswordAuthentication = false; - PermitRootLogin = lib.mkForce "no"; - }; -} diff --git a/modules/owner.nix b/modules/owner.nix deleted file mode 100644 index 5634a0c8..00000000 --- a/modules/owner.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, lib, ... }: - -{ - flake = { - meta.owner = { - email = "oliver@oliverdavies.uk"; - name = "Oliver Davies"; - username = "opdavies"; - }; - - modules = { - nixos.base = { - users.users.${config.flake.meta.owner.username} = { - isNormalUser = true; - initialPassword = lib.mkForce ""; - extraGroups = [ "input" ]; - }; - - nix.settings.trusted-users = [ config.flake.meta.owner.username ]; - }; - }; - }; -} diff --git a/modules/password-store/enable.nix b/modules/password-store/enable.nix deleted file mode 100644 index e5022dee..00000000 --- a/modules/password-store/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.password-store.enable = true; -} diff --git a/modules/password-store/package.nix b/modules/password-store/package.nix deleted file mode 100644 index 781a0e5d..00000000 --- a/modules/password-store/package.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ lib, ... }: - -{ - flake.modules.homeManager.base = - { config, pkgs, ... }: - { - options.programs.password-store.extensions = lib.mkOption { - default = [ ]; - type = lib.types.listOf lib.types.package; - description = "pass extensions to install."; - }; - - config.programs.password-store.package = pkgs.pass.withExtensions ( - e: with e; config.programs.password-store.extensions - ); - }; -} diff --git a/modules/password-store/settings.nix b/modules/password-store/settings.nix deleted file mode 100644 index e4dd4374..00000000 --- a/modules/password-store/settings.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.homeManager.base = - { config, ... }: - { - programs.password-store.settings.PASSWORD_STORE_DIR = "${config.xdg.dataHome}/pass"; - }; -} diff --git a/modules/pc.nix b/modules/pc.nix deleted file mode 100644 index 6df7746c..00000000 --- a/modules/pc.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ config, ... }: - -{ - flake.modules.nixos.pc.imports = with config.flake.modules.nixos; [ base ]; -} diff --git a/modules/phpactor/phpactor.nix b/modules/phpactor/phpactor.nix deleted file mode 100644 index a3583515..00000000 --- a/modules/phpactor/phpactor.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.modules.homeManager.base.xdg.configFile.phpactor = { - source = ./config; - recursive = true; - }; -} diff --git a/modules/podman.nix b/modules/podman.nix deleted file mode 100644 index afd3c670..00000000 --- a/modules/podman.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ config, ... }: - -{ - flake.modules.nixos.pc = { - virtualisation = { - oci-containers.backend = "podman"; - - podman = { - enable = true; - dockerCompat = true; - }; - }; - - users.users.${config.flake.meta.owner.username}.extraGroups = [ "podman" ]; - }; -} diff --git a/modules/ranger.nix b/modules/ranger.nix deleted file mode 100644 index c6e1085e..00000000 --- a/modules/ranger.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.ranger.enable = true; -} diff --git a/modules/redshift.nix b/modules/redshift.nix deleted file mode 100644 index da5c942d..00000000 --- a/modules/redshift.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - flake.modules.homeManager.gui.services.redshift = { - enable = true; - - latitude = "51.58"; - longitude = "-2.99"; - }; -} diff --git a/modules/scripts/add-weight.nix b/modules/scripts/add-weight.nix deleted file mode 100644 index cb884e97..00000000 --- a/modules/scripts/add-weight.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ withSystem, ... }: - -let - name = "add-weight"; -in -{ - perSystem = - psArgs@{ pkgs, ... }: - { - packages.${name} = pkgs.writeShellApplication { - inherit name; - - runtimeInputs = with pkgs; [ - coreutils - psArgs.config.packages.today2 - psArgs.config.packages.weight - ]; - - text = '' - echo "$(today2),$1" >> "$XDG_DOCUMENTS_DIR/wiki/2-areas/health-fitness/weight.csv" - - weight - ''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - }; -} diff --git a/modules/scripts/battery.nix b/modules/scripts/battery.nix deleted file mode 100644 index ac1eae3c..00000000 --- a/modules/scripts/battery.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication { - name = "battery"; - - runtimeInputs = with pkgs; [ upower ]; - - text = '' - upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep -E 'state|to full|percentage' - ''; - }) - ]; - }; -} diff --git a/modules/scripts/build-adoc.nix b/modules/scripts/build-adoc.nix deleted file mode 100644 index 703adf51..00000000 --- a/modules/scripts/build-adoc.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication { - name = "build-adoc"; - - runtimeInputs = with pkgs; [ - asciidoctor-with-extensions - ]; - - excludeShellChecks = [ "SC2034" ]; - - text = '' - ls book - - echo "" - - date=$(date '+%Y-%m-%d %H:%M:%S') - - echo "The current date is $date." - - pwd=$(pwd) - parent=$(basename "$(dirname "$pwd")") - name=$(basename "$pwd") - - echo "The parent directory is $parent." - echo "The current directory is $name." - - echo "" - echo "Generating the HTML..." - asciidoctor \ - -D book \ - -a "date=$date" \ - -o index.html \ - ./book/index.adoc - - echo "" - echo "Generating the EPUB..." - asciidoctor-epub3 \ - -D book \ - -a "date=$date" \ - -o "$parent-$name.epub" \ - ./book/index.adoc - - echo "" - echo "Generating the PDF..." - asciidoctor-pdf \ - -D book \ - -a "date=$date" \ - -o "$parent-$name.pdf" \ - ./book/index.adoc - - echo "" - - ls book - ''; - }) - ]; - }; -} diff --git a/modules/scripts/build.nix b/modules/scripts/build.nix deleted file mode 100644 index c04f4664..00000000 --- a/modules/scripts/build.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication { - name = "build"; - - text = '' - test -r book/index.adoc && exec build-adoc "$@" - test -x build && exec ./build "$@" - ''; - }) - ]; - }; -} diff --git a/modules/scripts/clone.nix b/modules/scripts/clone.nix deleted file mode 100644 index 36d1574d..00000000 --- a/modules/scripts/clone.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ withSystem, ... }: - -{ - perSystem = - psArgs@{ pkgs, ... }: - { - packages.clone = pkgs.writeShellApplication { - name = "clone"; - - runtimeInputs = with pkgs; [ - git - psArgs.config.packages.tmux-sessionizer - ]; - - text = '' - repo_url="$1" - repo_url="''${repo_url%.git}" - - if [[ "$repo_url" =~ ^(git@|https://|ssh://forgejo@)?([^:/]+)[:/](.*)/(.*)$ ]]; then - domain="''${BASH_REMATCH[2]}" - - if [[ "$domain" == "ssh.oliverdavies.uk" ]]; then - domain="code.oliverdavies.uk" - fi - - user="''${BASH_REMATCH[3]}" - name="''${BASH_REMATCH[4]}" - - user_path="$XDG_REPOS_DIR/$domain/$user" - repo_path="$user_path/$name" - - [[ -d "$repo_path" ]] && tmux-sessionizer "$repo_path" && exit 0 - - mkdir -pv "$repo_path" - - git clone "$repo_url" "$repo_path" - - tmux-sessionizer "$repo_path" - else - exit 1 - fi - ''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.clone)) - ]; - }; -} diff --git a/modules/scripts/git-save.nix b/modules/scripts/git-save.nix deleted file mode 100644 index 423144b1..00000000 --- a/modules/scripts/git-save.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication { - name = "git-save"; - - runtimeInputs = with pkgs; [ git ]; - - text = '' - git status - git add . - git commit -s -m "Automated commit" - git push - ''; - }) - ]; - }; -} diff --git a/modules/scripts/hnow.nix b/modules/scripts/hnow.nix deleted file mode 100644 index 58650c03..00000000 --- a/modules/scripts/hnow.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ lib, withSystem, ... }: - -let - name = "hnow"; -in -{ - perSystem = - psArgs@{ pkgs, ... }: - let - now = withSystem pkgs.system (psArgs: psArgs.config.packages.now); - in - { - packages.${name} = pkgs.writeShellApplication { - inherit name; - - runtimeInputs = [ - psArgs.config.packages.now - ]; - - text = '' - # Based on https://github.com/rwxrob/dot/blob/main/scripts/hnow. - - echo "== $(${lib.getExe now} "$*")" - ''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - }; -} diff --git a/modules/scripts/now.nix b/modules/scripts/now.nix deleted file mode 100644 index 94ad3d31..00000000 --- a/modules/scripts/now.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ withSystem, ... }: - -let - name = "now"; -in -{ - perSystem = - { pkgs, ... }: - { - packages.${name} = pkgs.writeShellApplication { - inherit name; - - runtimeInputs = with pkgs; [ coreutils ]; - - text = '' - # Based on https://github.com/rwxrob/dot/blob/main/scripts/now. - - out=$(date "+%A, %B %e, %Y, %R %Z" "-d ''${*:-now}") - - echo "''${out// / }" - ''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - }; -} diff --git a/modules/scripts/onchange.nix b/modules/scripts/onchange.nix deleted file mode 100644 index 78e36bf4..00000000 --- a/modules/scripts/onchange.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ withSystem, ... }: - -let - name = "onchange"; -in -{ - perSystem = - { pkgs, ... }: - with pkgs; - { - packages.${name} = writeShellApplication { - inherit name; - - runtimeInputs = [ - coreutils - entr - ]; - - text = '' - PATTERN="$1" - shift 1 - - find . -path "$PATTERN" -type f | entr -cs "$@" - ''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - }; -} diff --git a/modules/scripts/open-repo-url.nix b/modules/scripts/open-repo-url.nix deleted file mode 100644 index 35e5b5f0..00000000 --- a/modules/scripts/open-repo-url.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ withSystem, ... }: - -let - name = "open-repo-url"; -in -{ - perSystem = - { pkgs, ... }: - { - packages.${name} = pkgs.writeShellApplication { - inherit name; - - runtimeInputs = with pkgs; [ coreutils git ]; - - text = '' - repo_url=$(git remote get-url origin | sed -E 's#(git|forgejo)@([A-Za-z0-9.-]+):#https://\2/#;s#.git$##') - - repo_url="''${repo_url//ssh.oliverdavies.uk/code.oliverdavies.uk}" - - xdg-open "$repo_url" - ''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - }; -} diff --git a/modules/scripts/ppp.nix b/modules/scripts/ppp.nix deleted file mode 100644 index 17cba13a..00000000 --- a/modules/scripts/ppp.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ inputs, withSystem, ... }: - -let - name = "ppp"; -in -{ - perSystem = - { pkgs, ... }: - { - packages.${name} = pkgs.writeShellApplication { - inherit name; - - runtimeInputs = with pkgs; [ coreutils ]; - - text = builtins.readFile "${inputs.rwxrob-dot}/scripts/${name}"; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - }; -} diff --git a/modules/scripts/preview.nix b/modules/scripts/preview.nix deleted file mode 100644 index 7a77187b..00000000 --- a/modules/scripts/preview.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (pkgs.writeShellApplication { - name = "preview"; - - runtimeInputs = with pkgs.nodePackages; [ browser-sync ]; - - text = '' - # Based on https://github.com/rwxrob/dot/blob/main/scripts/preview. - - browser-sync start \ - --ignore '**/.*' \ - --no-notify \ - --no-open \ - --no-ui \ - -sw - ''; - }) - ]; - }; -} diff --git a/modules/scripts/ptest.nix b/modules/scripts/ptest.nix deleted file mode 100644 index a0cfa6eb..00000000 --- a/modules/scripts/ptest.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ withSystem, ... }: - -let - name = "ptest"; -in -{ - perSystem = - psArgs@{ pkgs, ... }: - with pkgs; - { - packages.${name} = writeShellApplication { - inherit name; - - runtimeInputs = [ - psArgs.config.packages.onchange - ]; - - text = '' - command="phpunit" - args=("--colors") - - bin="vendor/bin" - - if [[ -x "$bin/pest" ]]; then - command="pest" - args=() - fi - - onchange "**/*.php" \ - "$bin/$command ''${args[*]} $*" - ''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - }; -} diff --git a/modules/scripts/tmux-sessionizer/default.nix b/modules/scripts/tmux-sessionizer/default.nix deleted file mode 100644 index 8f4513b5..00000000 --- a/modules/scripts/tmux-sessionizer/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - flake.modules.homeManager.base = - { config, pkgs, ... }: - { - home.file.".tmux-sessionizer".source = "${ - pkgs.writeShellApplication { - name = ".tmux-sessionizer"; - - runtimeInputs = with pkgs; [ - tmux - ]; - - text = '' - set +o errexit - set +o nounset - - if [[ "$PWD" == "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/os" || "$PWD" == "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/personal" || "$PWD" == "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/work" ]]; then - clear - - return - fi - - tmux new-window -d -n scratch - nvim . - clear - ''; - } - }/bin/.tmux-sessionizer"; - }; -} diff --git a/modules/scripts/tmux-sessionizer/package.nix b/modules/scripts/tmux-sessionizer/package.nix deleted file mode 100644 index 7c0cfb9c..00000000 --- a/modules/scripts/tmux-sessionizer/package.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ withSystem, ... }: - -{ - perSystem = - { pkgs, ... }: - { - packages.tmux-sessionizer = pkgs.writeShellApplication { - name = "tmux-sessionizer"; - - runtimeInputs = with pkgs; [ - coreutils - fzf - tmux - ]; - - text = '' - set -euo pipefail - - # Based on https://github.com/jessarcher/dotfiles/blob/master/scripts/t - # and https://github.com/ThePrimeagen/tmux-sessionizer. - - has_session() { - tmux list-sessions | grep -q "^$1:" - } - - hydrate() { - if [ -f "$2/.tmux-sessionizer" ]; then - tmux send-keys -t "$1" "source $2/.tmux-sessionizer" c-M - elif [ -f "$HOME/.tmux-sessionizer" ]; then - tmux send-keys -t "$1" "source $HOME/.tmux-sessionizer" c-M - fi - } - - is_tmux_running() { - tmux_running=$(pgrep tmux) - - if [[ -z ''${TMUX:-} ]] && [[ -z $tmux_running ]]; then - return 1 - fi - - return 0 - } - - switch_to() { - tmux attach-session -t "$1" || tmux switch-client -t "$1" - } - - if [[ $# -eq 1 ]]; then - selected=$1 - else - items=$( - find "$HOME/Code" -maxdepth 3 -mindepth 1 -type d - find "$HOME/Documents" -maxdepth 1 -mindepth 1 -type d - find "$HOME/tmp" -maxdepth 1 -type d - ) - - selected=$(echo "$items" | sed "s|^$HOME/||" | sort | fzf) - [[ $selected ]] && selected="$HOME/$selected" - fi - - if [[ -z $selected ]]; then - exit 0 - fi - - selected_name=$(basename "$selected" | tr . _) - - if ! is_tmux_running; then - tmux new-session -ds "$selected_name" -c "$selected" - hydrate "$selected_name" "$selected" - fi - - if ! has_session "$selected_name"; then - tmux new-session -ds "$selected_name" -c "$selected" - hydrate "$selected_name" "$selected" - fi - - switch_to "$selected_name" - ''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.tmux-sessionizer)) - ]; - }; -} diff --git a/modules/scripts/today.nix b/modules/scripts/today.nix deleted file mode 100644 index 1abbee1f..00000000 --- a/modules/scripts/today.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ withSystem, ... }: - -let - name = "today"; -in -{ - perSystem = - { pkgs, ... }: - { - packages.${name} = pkgs.writeShellApplication { - inherit name; - - runtimeInputs = with pkgs; [ coreutils ]; - - text = ''date "+%x"''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - }; -} diff --git a/modules/scripts/today2.nix b/modules/scripts/today2.nix deleted file mode 100644 index 90a76c59..00000000 --- a/modules/scripts/today2.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ withSystem, ... }: - -let - name = "today2"; -in -{ - perSystem = - { pkgs, ... }: - { - packages.${name} = pkgs.writeShellApplication { - inherit name; - - runtimeInputs = with pkgs; [ coreutils ]; - - text = ''date "+%F"''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - }; -} diff --git a/modules/scripts/todo.nix b/modules/scripts/todo.nix deleted file mode 100644 index 22c4c0c4..00000000 --- a/modules/scripts/todo.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ withSystem, ... }: - -let - name = "todo"; -in -{ - perSystem = - { pkgs, ... }: - { - packages.${name} = pkgs.writeShellApplication { - inherit name; - - runtimeInputs = with pkgs; [ coreutils ]; - - text = ''"$EDITOR" +3 "$TODO_FILE"''; - }; - }; - - flake.modules.homeManager.base = - { config, pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - - home.sessionVariables.TODO_FILE = "${config.home.sessionVariables.WIKI_DIRECTORY}/todo.adoc"; - }; -} diff --git a/modules/scripts/weight.nix b/modules/scripts/weight.nix deleted file mode 100644 index 4c63f47c..00000000 --- a/modules/scripts/weight.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ withSystem, ... }: - -let - name = "weight"; -in -{ - perSystem = - { pkgs, ... }: - { - packages.${name} = pkgs.writeShellApplication { - inherit name; - - runtimeInputs = with pkgs; [ - coreutils - ]; - - text = ''tail "$XDG_DOCUMENTS_DIR/wiki/2-areas/health-fitness/weight.csv"''; - }; - }; - - flake.modules.homeManager.base = - { pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - }; -} diff --git a/modules/scripts/zet.nix b/modules/scripts/zet.nix deleted file mode 100644 index 4630d2fb..00000000 --- a/modules/scripts/zet.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ inputs, withSystem, ... }: - -let - name = "zet"; -in -{ - perSystem = - { pkgs, ... }: - { - packages.${name} = pkgs.writeShellApplication { - inherit name; - - bashOptions = [ "pipefail" ]; - - runtimeInputs = with pkgs; [ - bashInteractive - coreutils - fzf - git - ]; - - text = builtins.readFile "${inputs.zet}/${name}"; - }; - }; - - flake.modules.homeManager.base = - { config, pkgs, ... }: - { - home.packages = [ - (withSystem pkgs.system (psArgs: psArgs.config.packages.${name})) - ]; - - home.sessionVariables = { - ZET_DIR = "${config.xdg.userDirs.documents}/zet"; - }; - }; -} diff --git a/modules/sound/pipewire/alsa.nix b/modules/sound/pipewire/alsa.nix deleted file mode 100644 index 929b07c4..00000000 --- a/modules/sound/pipewire/alsa.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.modules.nixos.desktop.services.pipewire.alsa = { - enable = true; - support32Bit = true; - }; -} diff --git a/modules/sound/pipewire/enable.nix b/modules/sound/pipewire/enable.nix deleted file mode 100644 index 3160292b..00000000 --- a/modules/sound/pipewire/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.pc.services.pipewire.enable = true; -} diff --git a/modules/sound/pipewire/pulse.nix b/modules/sound/pipewire/pulse.nix deleted file mode 100644 index c3ee1c25..00000000 --- a/modules/sound/pipewire/pulse.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.pc.services.pipewire.pulse.enable = true; -} diff --git a/modules/st.nix b/modules/st.nix deleted file mode 100644 index 09d393dd..00000000 --- a/modules/st.nix +++ /dev/null @@ -1,365 +0,0 @@ -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - home.packages = with pkgs; [ - (st.override { - conf = '' - static char *font = "MesloLGSNerdFontMono:pixelsize=16:antialias=true:autohint=true"; - - int disablebold = 1; - int disableitalic = 1; - int disableroman = 1; - - static int borderpx = 2; - - static char *shell = "/bin/sh"; - char *utmp = NULL; - char *scroll = NULL; - char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; - - char *vtiden = "\033[?6c"; - - static float cwscale = 1.0; - static float chscale = 1.0; - - wchar_t *worddelimiters = L" "; - - static unsigned int doubleclicktimeout = 300; - static unsigned int tripleclicktimeout = 600; - - int allowaltscreen = 1; - - int allowwindowops = 0; - - static double minlatency = 2; - static double maxlatency = 33; - - static unsigned int blinktimeout = 800; - - static unsigned int cursorthickness = 2; - - static int bellvolume = 0; - - char *termname = "st-256color"; - - unsigned int tabspaces = 8; - - static const char *colorname[] = { - "black", - "red3", - "green3", - "yellow3", - "blue2", - "magenta3", - "cyan3", - "gray90", - - "gray50", - "red", - "green", - "yellow", - "#5c5cff", - "magenta", - "cyan", - "white", - - [255] = 0, - - "#cccccc", - "#555555", - "gray90", - "black", - }; - - unsigned int defaultfg = 258; - unsigned int defaultbg = 259; - unsigned int defaultcs = 256; - static unsigned int defaultrcs = 257; - - static unsigned int cursorshape = 2; - - static unsigned int cols = 80; - static unsigned int rows = 24; - - static unsigned int mouseshape = XC_xterm; - static unsigned int mousefg = 7; - static unsigned int mousebg = 0; - - static unsigned int defaultattr = 11; - - static uint forcemousemod = ShiftMask; - - static MouseShortcut mshortcuts[] = { - { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, - { ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} }, - { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, - { ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} }, - { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, - }; - - #define MODKEY Mod1Mask - #define TERMMOD (ControlMask|ShiftMask) - - static Shortcut shortcuts[] = { - { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, - { ControlMask, XK_Print, toggleprinter, {.i = 0} }, - { ShiftMask, XK_Print, printscreen, {.i = 0} }, - { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, - { TERMMOD, XK_Prior, zoom, {.f = +1} }, - { TERMMOD, XK_Next, zoom, {.f = -1} }, - { TERMMOD, XK_Home, zoomreset, {.f = 0} }, - { TERMMOD, XK_C, clipcopy, {.i = 0} }, - { TERMMOD, XK_D, zoom, {.f = -2} }, - { TERMMOD, XK_J, zoom, {.f = -1} }, - { TERMMOD, XK_K, zoom, {.f = +1} }, - { TERMMOD, XK_U, zoom, {.f = +2} }, - { TERMMOD, XK_V, clippaste, {.i = 0} }, - { TERMMOD, XK_Y, selpaste, {.i = 0} }, - { ShiftMask, XK_Insert, selpaste, {.i = 0} }, - { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, - }; - - static KeySym mappedkeys[] = { -1 }; - - static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; - - static Key key[] = { - { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, - { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, - { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, - { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, - { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, - { XK_KP_End, ControlMask, "\033[J", -1, 0}, - { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_KP_End, ShiftMask, "\033[K", -1, 0}, - { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, - { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, - { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, - { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, - { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, - { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, - { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, - { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, - { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, - { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, - { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, - { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, - { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, - { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, - { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, - { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, - { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, - { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, - { XK_Up, ShiftMask|Mod1Mask, "\033[1;4A", 0, 0}, - { XK_Up, ControlMask, "\033[1;5A", 0, 0}, - { XK_Up, ShiftMask|ControlMask, "\033[1;6A", 0, 0}, - { XK_Up, ControlMask|Mod1Mask, "\033[1;7A", 0, 0}, - { XK_Up, ShiftMask|ControlMask|Mod1Mask, "\033[1;8A", 0, 0}, - { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, - { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, - { XK_Down, ShiftMask|Mod1Mask, "\033[1;4B", 0, 0}, - { XK_Down, ControlMask, "\033[1;5B", 0, 0}, - { XK_Down, ShiftMask|ControlMask, "\033[1;6B", 0, 0}, - { XK_Down, ControlMask|Mod1Mask, "\033[1;7B", 0, 0}, - { XK_Down, ShiftMask|ControlMask|Mod1Mask, "\033[1;8B", 0, 0}, - { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, - { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, - { XK_Left, ShiftMask|Mod1Mask, "\033[1;4D", 0, 0}, - { XK_Left, ControlMask, "\033[1;5D", 0, 0}, - { XK_Left, ShiftMask|ControlMask, "\033[1;6D", 0, 0}, - { XK_Left, ControlMask|Mod1Mask, "\033[1;7D", 0, 0}, - { XK_Left, ShiftMask|ControlMask|Mod1Mask, "\033[1;8D", 0, 0}, - { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, - { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, - { XK_Right, ShiftMask|Mod1Mask, "\033[1;4C", 0, 0}, - { XK_Right, ControlMask, "\033[1;5C", 0, 0}, - { XK_Right, ShiftMask|ControlMask, "\033[1;6C", 0, 0}, - { XK_Right, ControlMask|Mod1Mask, "\033[1;7C", 0, 0}, - { XK_Right, ShiftMask|ControlMask|Mod1Mask, "\033[1;8C", 0, 0}, - { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, - { XK_Return, Mod1Mask, "\033\r", 0, 0}, - { XK_Return, XK_ANY_MOD, "\r", 0, 0}, - { XK_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_Insert, ControlMask, "\033[L", -1, 0}, - { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_Delete, ControlMask, "\033[M", -1, 0}, - { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, - { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, - { XK_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_End, ControlMask, "\033[J", -1, 0}, - { XK_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_End, ShiftMask, "\033[K", -1, 0}, - { XK_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, - { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_Next, ControlMask, "\033[6;5~", 0, 0}, - { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, - { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, - { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, - { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, - { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, - { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, - { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, - { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, - { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, - { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, - { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, - { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, - { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, - { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, - { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, - { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, - { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, - { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, - { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, - { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, - { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, - { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, - { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, - { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, - { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, - { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, - { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, - { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, - { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, - { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, - { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, - { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, - { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, - { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, - { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, - { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, - { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, - { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, - { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, - { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, - { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, - { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, - { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, - { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, - { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, - { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, - { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, - { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, - { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, - { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, - { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, - { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, - { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, - { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, - { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, - { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, - { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, - { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, - { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, - { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, - { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, - { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, - { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, - { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, - { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, - { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, - { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, - { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, - { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, - { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, - { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, - { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, - { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, - { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, - { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, - { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, - { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, - { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, - { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, - { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, - { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, - { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, - { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, - { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, - { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, - { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, - }; - - static uint selmasks[] = { - [SEL_RECTANGULAR] = Mod1Mask, - }; - - static char ascii_printable[] = - " !\"#$%&'()*+,-./0123456789:;<=>?" - "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" - "`abcdefghijklmnopqrstuvwxyz{|}~"; - ''; - - patches = [ - (fetchpatch { - name = "disable_bold_italic_fonts"; - url = "https://st.suckless.org/patches/disable_bold_italic_fonts/st-disable-bold-italic-fonts-0.8.2.diff"; - sha256 = "PG96QMqbX3Fr0EvDmF4lm/J3gj18eyBfm1bJ3M7plvQ="; - }) - - (fetchpatch { - name = "anysize"; - url = "https://st.suckless.org/patches/anysize/st-anysize-20220718-baa9357.diff"; - sha256 = "yx9VSwmPACx3EN3CAdQkxeoJKJxQ6ziC9tpBcoWuWHc="; - }) - ]; - }) - ]; - }; -} diff --git a/modules/starship/format.nix b/modules/starship/format.nix deleted file mode 100644 index eeed3818..00000000 --- a/modules/starship/format.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ lib, ... }: - -{ - # https://starship.rs/config/#prompt - flake.modules.homeManager.base.programs.starship.settings.format = lib.concatStringsSep "" [ - "\n" - "$username" - "$hostname" - "$directory" - "$vcsh" - "$git_branch" - "$git_status" - "$git_metrics" - "$docker_context" - "$nodejs" - "$php" - "$terraform" - "$nix_shell" - "$direnv" - "\${custom.mob}" - "$memory_usage" - "$cmd_duration" - "$lua" - "$status" - "$character" - ]; -} diff --git a/modules/starship/mob.nix b/modules/starship/mob.nix deleted file mode 100644 index fd59ab88..00000000 --- a/modules/starship/mob.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.homeManager.base.programs.starship.settings.custom.mob = { - command = "echo $MOB_TIMER_ROOM"; - format = "[($output)]($style) "; - when = "[[ -v MOB_TIMER_ROOM ]]"; - }; -} diff --git a/modules/starship/newline.nix b/modules/starship/newline.nix deleted file mode 100644 index 80920b5a..00000000 --- a/modules/starship/newline.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.starship.settings.add_newline = false; -} diff --git a/modules/starship/settings.nix b/modules/starship/settings.nix deleted file mode 100644 index 26b1efe7..00000000 --- a/modules/starship/settings.nix +++ /dev/null @@ -1,133 +0,0 @@ -{ - flake.modules.homeManager.base.programs.starship.settings = { - cmd_duration.disabled = true; - direnv.disabled = false; - directory.format = "[$path]($style) "; - git_status.disabled = true; - nix_shell.disabled = true; - nodejs.disabled = true; - php.disabled = true; - username.disabled = true; - - # https://starship.rs/presets/plain-text - aws.symbol = "aws "; - azure.symbol = "az "; - bun.symbol = "bun "; - c.symbol = "C "; - character = { - success_symbol = "[>](bold green)"; - error_symbol = "[x](bold red)"; - vimcmd_symbol = "[<](bold green)"; - }; - cobol.symbol = "cobol "; - conda.symbol = "conda "; - crystal.symbol = "cr "; - cmake.symbol = "cmake "; - daml.symbol = "daml "; - dart.symbol = "dart "; - deno.symbol = "deno "; - dotnet.symbol = ".NET "; - directory.read_only = " ro"; - docker_context.symbol = "docker "; - elixir.symbol = "exs "; - elm.symbol = "elm "; - fennel.symbol = "fnl "; - fossil_branch.symbol = "fossil "; - gcloud.symbol = "gcp "; - git_branch.symbol = "git "; - git_commit.tag_symbol = " tag "; - git_status = { - ahead = ">"; - behind = "<"; - diverged = "<>"; - renamed = "r"; - deleted = "x"; - }; - gleam.symbol = "gleam "; - golang.symbol = "go "; - gradle.symbol = "gradle "; - guix_shell.symbol = "guix "; - hg_branch.symbol = "hg "; - java.symbol = "java "; - julia.symbol = "jl "; - kotlin.symbol = "kt "; - lua.symbol = "lua "; - nodejs.symbol = "nodejs "; - memory_usage.symbol = "memory "; - meson.symbol = "meson "; - nats.symbol = "nats "; - nim.symbol = "nim "; - nix_shell.symbol = "nix "; - ocaml.symbol = "ml "; - opa.symbol = "opa "; - os.symbols = { - AIX = "aix "; - Alpaquita = "alq "; - AlmaLinux = "alma "; - Alpine = "alp "; - Amazon = "amz "; - Android = "andr "; - Arch = "rch "; - Artix = "atx "; - CentOS = "cent "; - Debian = "deb "; - DragonFly = "dfbsd "; - Emscripten = "emsc "; - EndeavourOS = "ndev "; - Fedora = "fed "; - FreeBSD = "fbsd "; - Garuda = "garu "; - Gentoo = "gent "; - HardenedBSD = "hbsd "; - Illumos = "lum "; - Kali = "kali "; - Linux = "lnx "; - Mabox = "mbox "; - Macos = "mac "; - Manjaro = "mjo "; - Mariner = "mrn "; - MidnightBSD = "mid "; - Mint = "mint "; - NetBSD = "nbsd "; - NixOS = "nix "; - OpenBSD = "obsd "; - OpenCloudOS = "ocos "; - openEuler = "oeul "; - openSUSE = "osuse "; - OracleLinux = "orac "; - Pop = "pop "; - Raspbian = "rasp "; - Redhat = "rhl "; - RedHatEnterprise = "rhel "; - RockyLinux = "rky "; - Redox = "redox "; - Solus = "sol "; - SUSE = "suse "; - Ubuntu = "ubnt "; - Ultramarine = "ultm "; - Unknown = "unk "; - Void = "void "; - Windows = "win "; - }; - package.symbol = "pkg "; - perl.symbol = "pl "; - php.symbol = "php "; - pijul_channel.symbol = "pijul "; - pulumi.symbol = "pulumi "; - purescript.symbol = "purs "; - python.symbol = "py "; - quarto.symbol = "quarto "; - raku.symbol = "raku "; - ruby.symbol = "rb "; - rust.symbol = "rs "; - scala.symbol = "scala "; - spack.symbol = "spack "; - solidity.symbol = "solidity "; - status.symbol = "[x](bold red) "; - sudo.symbol = "sudo "; - swift.symbol = "swift "; - typst.symbol = "typst "; - terraform.symbol = "terraform "; - zig.symbol = "zig "; - }; -} diff --git a/modules/starship/shlvl.nix b/modules/starship/shlvl.nix deleted file mode 100644 index bceec83b..00000000 --- a/modules/starship/shlvl.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - flake.modules.homeManager.base.programs.starship.settings.shlvl = { - disabled = false; - style = "bold red"; - symbol = ""; - threshold = 2; - }; -} diff --git a/modules/starship/starship.nix b/modules/starship/starship.nix deleted file mode 100644 index 5839e22c..00000000 --- a/modules/starship/starship.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.starship.enable = true; -} diff --git a/modules/starship/zsh.nix b/modules/starship/zsh.nix deleted file mode 100644 index f9114042..00000000 --- a/modules/starship/zsh.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.starship.enableZshIntegration = true; -} diff --git a/modules/sudo.nix b/modules/sudo.nix deleted file mode 100644 index 7f70c7c6..00000000 --- a/modules/sudo.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ config, ... }: - -{ - flake.modules.nixos.pc = { - security.sudo-rs.enable = true; - - users.users.${config.flake.meta.owner.username}.extraGroups = [ "wheel" ]; - }; -} diff --git a/modules/sxhkd/enable.nix b/modules/sxhkd/enable.nix deleted file mode 100644 index 1712708b..00000000 --- a/modules/sxhkd/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.gui.services.sxhkd.enable = true; -} diff --git a/modules/sxhkd/keybindings.nix b/modules/sxhkd/keybindings.nix deleted file mode 100644 index 67338e12..00000000 --- a/modules/sxhkd/keybindings.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ lib, ... }: - -{ - flake.modules.homeManager.gui = - { pkgs, ... }: - { - services.sxhkd.keybindings = { - "@F10" = "/home/opdavies/.local/bin/unmounter"; - "@F3" = "displayselect"; - "@F9" = "/home/opdavies/.local/bin/mounter"; - "super + BackSpace" = "dmenu_sys"; - "super + shift + b" = "/etc/profiles/per-user/opdavies/bin/bookmarkthis"; - "super + shift + i" = - "${pkgs.xdotool}/bin/xdotool type $(cat ~/.local/share/snippets.txt | grep -v '^#' | grep -v '^$' | sort | dmenu -i -l 50 | cut -d' ' -f1)"; - "super + shift + p" = "${lib.getExe pkgs.passmenu-otp} -i"; - "super + x; {1, 2, 3, 4}" = "st {notes, newsboat, nmtui, bluetuith}"; - "{_, shift +, super +}XF86MonBrightness{Down,Up}" = - "${lib.getExe pkgs.brightnessctl} set {5%-,10%-,10%,+5%,+10%,100%} --quiet"; - }; - }; -} diff --git a/modules/tailscale.nix b/modules/tailscale.nix deleted file mode 100644 index d239c83e..00000000 --- a/modules/tailscale.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.pc.services.tailscale.enable = true; -} diff --git a/modules/thunar/enable.nix b/modules/thunar/enable.nix deleted file mode 100644 index 5ac63555..00000000 --- a/modules/thunar/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.pc.nixos.programs.thunar.enable = true; -} diff --git a/modules/thunar/extra-packages.nix b/modules/thunar/extra-packages.nix deleted file mode 100644 index 036a7ff1..00000000 --- a/modules/thunar/extra-packages.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.pc.nixos = - { pkgs, ... }: - { - environment.systemPackages = with pkgs; [ xfce.tumbler ]; - }; -} diff --git a/modules/thunar/plugins.nix b/modules/thunar/plugins.nix deleted file mode 100644 index 5df3e2ab..00000000 --- a/modules/thunar/plugins.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - flake.modules.pc.nixos = - { pkgs, ... }: - { - programs.thunar.plugins = with pkgs.xfce; [ - thunar-archive-plugin - ]; - }; -} diff --git a/modules/tmux/enable.nix b/modules/tmux/enable.nix deleted file mode 100644 index a4a47b08..00000000 --- a/modules/tmux/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.tmux.enable = true; -} diff --git a/modules/tmux/extra-config.nix b/modules/tmux/extra-config.nix deleted file mode 100644 index 78f0d208..00000000 --- a/modules/tmux/extra-config.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - flake.modules.homeManager.base.programs.tmux.extraConfig = '' - set-option -g status-keys "vi" - set-option -sa terminal-features "''${TERM}:RGB" - - bind -n S-Left resize-pane -L 2 - bind -n S-Right resize-pane -R 2 - bind -n S-Down resize-pane -D 1 - bind -n S-Up resize-pane -U 1 - - bind -n C-Left resize-pane -L 10 - bind -n C-Right resize-pane -R 10 - bind -n C-Down resize-pane -D 5 - bind -n C-Up resize-pane -U 5 - - # Status line customisation - set-option -g status-position top - set-option -g status-left "" - set-option -g status-right " #{session_name}" - set-option -g status-right-length 100 - set-option -g status-style "fg=#7C7D83 bg=default" - set-option -g window-status-activity-style none - - bind c new-window -c "#{pane_current_path}" - - set -g base-index 1 - set -g pane-base-index 1 - set -g renumber-windows on - - # Break a pane into a new window. - bind-key b break-pane -d - bind-key J command-prompt -p "join pane from: " "join-pane -h -s '%%'" - - bind-key C-j choose-tree - - set-window-option -g mode-keys vi - bind -T copy-mode-vi v send-keys -X begin-selection - bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' - - bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t" - - bind-key K run-shell 'tmux switch-client -n \; kill-session -t "$(tmux display-message -p "#S")" || tmux kill-session' - - # Allow clearing screen with ctrl-l by using C-l - bind C-l send-keys "C-l" - bind C-k send-keys "C-k" - - # Enable mouse support. - setw -g mouse on - - # Remove delay when switching Vim modes. - set -sg escape-time 0 - - set-option -g pane-active-border-style "fg=#1f2335" - set-option -g pane-border-style "fg=#1f2335" - - # Vim-like pane navigation. - bind ^ last-window - bind h select-pane -L - bind j select-pane -D - bind k select-pane -U - bind l select-pane -R - - bind-key -r f run-shell "tmux new-window tmux-sessionizer" - - bind-key -r D new-window -c "#{pane_current_path}" "[[ -e TODO.md ]] && nvim TODO.md || nvim ~/Documents/wiki/todo.txt" - bind-key -r W split-window -h -c ~/Documents/wiki "nvim '+Telescope find_files'" - ''; -} diff --git a/modules/tmux/plugins.nix b/modules/tmux/plugins.nix deleted file mode 100644 index 3e7d723d..00000000 --- a/modules/tmux/plugins.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.homeManager.base = - { pkgs, ... }: - { - programs.tmux.plugins = with pkgs.tmuxPlugins; [ yank ]; - }; -} diff --git a/modules/tmux/terminal.nix b/modules/tmux/terminal.nix deleted file mode 100644 index 0edf3248..00000000 --- a/modules/tmux/terminal.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.tmux.terminal = "tmux-256color"; -} diff --git a/modules/unfree-packages.nix b/modules/unfree-packages.nix deleted file mode 100644 index 40f0f8a2..00000000 --- a/modules/unfree-packages.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ config, lib, ... }: - -{ - options.nixpkgs.allowedUnfreePackages = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ ]; - }; - - config.flake = { - modules = - let - predicate = pkg: builtins.elem (lib.getName pkg) config.nixpkgs.allowedUnfreePackages; - in - { - nixos.base.nixpkgs.config.allowUnfreePredicate = predicate; - - homeManager.base = args: { - nixpkgs.config = lib.mkIf (!(args.hasGlobalPkgs or false)) { - allowUnfreePredicate = predicate; - }; - }; - }; - - meta.nixpkgs.allowedUnfreePackages = config.nixpkgs.allowedUnfreePackages; - }; -} diff --git a/modules/wiki.nix b/modules/wiki.nix deleted file mode 100644 index b5276c2e..00000000 --- a/modules/wiki.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.homeManager.base = - { config, ...}: - { - home.sessionVariables.WIKI_DIRECTORY = "${config.xdg.userDirs.documents}/wiki"; - }; -} diff --git a/modules/xbanish.nix b/modules/xbanish.nix deleted file mode 100644 index 5ebb30b0..00000000 --- a/modules/xbanish.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.nixos.pc.services.xbanish.enable = true; -} diff --git a/modules/xsession.nix b/modules/xsession.nix deleted file mode 100644 index 5fdf17bf..00000000 --- a/modules/xsession.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.gui.xsession.enable = true; -} diff --git a/modules/zram.nix b/modules/zram.nix deleted file mode 100644 index 3ca702ff..00000000 --- a/modules/zram.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.nixos.pc.zramSwap = { - enable = true; - algorithm = "zstd"; - memoryPercent = 90; - }; -} diff --git a/modules/zsh/abbreviations/abbreviations.nix b/modules/zsh/abbreviations/abbreviations.nix deleted file mode 100644 index 95022561..00000000 --- a/modules/zsh/abbreviations/abbreviations.nix +++ /dev/null @@ -1,172 +0,0 @@ -{ - nixpkgs.allowedUnfreePackages = [ - "zsh-abbr" - ]; - - flake.modules.homeManager.base.programs.zsh.zsh-abbr.abbreviations = { - cl = "clear"; - cs = "create-script"; - daily = "run create-daily next"; - gru = "git-repo-updater"; - rst = "rst2pdf"; - st = "source .tmux"; - sz = "source ~/.config/zsh/.zshrc"; - ti = "timer"; - uagr = "update-all-git-repos"; - v = "nvim"; - yt = "yt-dlp"; - - evl = "export-video-list"; - vv = "cat ~/Documents/videos.json"; - - f = "find ."; - fd = "find . -type d"; - fdn = "find . -type d -name"; - ff = "find . -type f"; - ffn = "find . -type f -name"; - - g = "git"; - ga = "git add"; - gan = "git add -N"; - gap = "git add -p"; - gb = "git branch"; - gba = "git branch --all"; - gbl = "git blame"; - gc = "git commit"; - gca = "git commit --amend"; - gcan = "git commit --amend --no-edit"; - gcl = "git clone"; - gcm = "git commit -m"; - gco = "git checkout"; - gcob = "git checkout -b"; - gd = "git diff"; - gds = "git diff --staged"; - gf = "git fetch"; - gfa = "git fetch --all"; - gl = "git log"; - glg = "git log --grep"; - glo = "git log --oneline"; - glog = "git log --oneline --grep"; - glos = "git log --oneline -S"; - gls = "git log -S"; - gm = "git merge"; - gmf = "git merge --ff"; - gmnf = "git merge --no-ff"; - gp = "git push"; - gpa = "git push acquia"; - gpam = "git push acquia main"; - gpap = "git push acquia HEAD:production"; - gpf = "git push --force-with-lease"; - gpfo = "git push --force-with-lease origin"; - gpl = "git pull"; - gplr = "git pull --rebase"; - gpo = "git push origin"; - gpom = "git push origin main"; - gpt = "git push --tags"; - gr = "git rebase"; - gra = "git rebase --abort"; - grc = "git rebase --continue"; - gri = "git rebase -i"; - gs = "git status"; - gsh = "git show"; - gst = "git stash"; - gstp = "git stash pop"; - gt = "git tag"; - - j = "just"; - jb = "just build"; - jt = "just test"; - js = "just switch"; - - # tmux - ta = "tmux attach"; - tl = "tmux list-sessions"; - tk = "tmux kill-session"; - - # Docker and Docker Compose. - dk = "docker"; - dkp = "docker ps"; - dkpa = "docker ps -a"; - dkpaq = "docker ps -a -q"; - dkb = "docker build -t"; - dks = "docker start"; - dkt = "docker stop"; - dkrm = "docker rm"; - dkri = "docker rmi"; - dke = "docker exec -ti"; - dkl = "docker logs -f"; - dki = "docker images"; - dkpu = "docker pull"; - dkph = "docker push"; - dkbnc = "docker build --no-cache -t"; - dkr = "docker run --rm"; - dkrti = "docker run --rm -ti"; - dkc = "docker compose"; - dkcb = "docker compose build"; - dkcu = "docker compose up"; - dkclean = "docker ps -q -a -f status=exited | xargs -r docker rm && docker images -q -f dangling=true | xargs -r docker rmi"; - - # Nix and direnv. - dea = "direnv allow"; - dee = "direnv edit"; - nxf = "nix flake"; - nxfc = "nix flake check"; - nxfs = "nix flake show"; - nxfu = "nix flake update"; - nxr = "nix run nixpkgs#%"; - nxs = "nix shell nixpkgs#%"; - - # run scripts. - r = "run"; - rc = "run composer"; - rcda = "run composer dump-autoload"; - rci = "run composer install"; - rcr = "run composer require"; - rcu = "run composer update"; - rd = "run drush"; - rdce = "run drush config:export -y"; - rdci = "run drush config:import -y"; - rdcr = "run drush cache:rebuild"; - rdscr = "run drush php:script"; - rduli = "run drush uli"; - rdup = "run drush updatedb -y"; - rpub = "run publish"; - rt = "run test"; - - nah = "git reset --hard; git clean -fd"; - wip = "git commit -m wip"; - - dv = "devenv"; - dvi = "devenv info"; - dvp = "devenv processes"; - dvs = "devenv shell"; - dvt = "devenv tasks"; - dvu = "devenv up"; - - c = "composer"; - ci = "composer install"; - cr = "composer require"; - crd = "composer require drupal/%"; - cu = "composer update"; - cul = "composer update --lock"; - cw = "composer why"; - cwn = "composer why-not"; - - d = "drush"; - dce = "drush config:export -y"; - dci = "drush config:import -y"; - dcr = "drush cache:rebuild"; - den = "drush pm:enable -y"; - deu = "drush pm:uninstall"; - dscr = "drush php:script"; - duli = "drush uli"; - dup = "drush updatedb -y"; - - sg = "vendor/bin/sculpin generate"; - sge = "vendor/bin/sculpin generate --env"; - sgs = "vendor/bin/sculpin generate --server"; - sgsp = "vendor/bin/sculpin generate --server --port"; - sgsw = "vendor/bin/sculpin generate --server --watch"; - sgswp = "vendor/bin/sculpin generate --server --watch --port"; - }; -} diff --git a/modules/zsh/abbreviations/enable.nix b/modules/zsh/abbreviations/enable.nix deleted file mode 100644 index ae3da6f2..00000000 --- a/modules/zsh/abbreviations/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.zsh.zsh-abbr.enable = true; -} diff --git a/modules/zsh/abbreviations/global-abbreviations.nix b/modules/zsh/abbreviations/global-abbreviations.nix deleted file mode 100644 index b416083a..00000000 --- a/modules/zsh/abbreviations/global-abbreviations.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - flake.modules.homeManager.base.programs.zsh.zsh-abbr.globalAbbreviations = { - A1 = "| awk '{print $1}'"; - C = "| xclip -sel clip"; - Fj = "| jq ."; - Fy = "| yq ."; - G = "| grep"; - GH = "| grep HTTP"; - Gi = "| grep -i"; - H2 = "| head -n 20"; - H = "| head"; - L = "| less"; - V = "| nvim -"; - X = "| xargs -I1"; - }; -} diff --git a/modules/zsh/aliases.nix b/modules/zsh/aliases.nix deleted file mode 100644 index e89f1515..00000000 --- a/modules/zsh/aliases.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - flake.modules.homeManager.base = - { config, ... }: - { - programs.zsh.shellAliases = { - "$" = ""; - "-" = "cd -"; - ".." = "cd .."; - "..." = "cd ../.."; - "...." = "cd ../../.."; - "....." = "cd ../../../.."; - chmox = "chmod +x"; - run = "./run"; - tag = "tag-release"; - vss = "LC_ALL=C sort --unique ${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/nixos-config/modules/home-manager/cli/neovim/config/spell/en.utf-8.adddotfiles/nvim/spell/en.utf-8.add --output ${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/nixos-config/modules/home-manager/cli/neovim/config/spell/en.utf-8.add"; - wt = "git worktree"; - }; - }; -} diff --git a/modules/zsh/completion.nix b/modules/zsh/completion.nix deleted file mode 100644 index f9859c29..00000000 --- a/modules/zsh/completion.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.zsh.enableCompletion = true; -} diff --git a/modules/zsh/dot-dir.nix b/modules/zsh/dot-dir.nix deleted file mode 100644 index 83e5f2e1..00000000 --- a/modules/zsh/dot-dir.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.homeManager.base = - { config, ... }: - { - programs.zsh.dotDir = "${config.xdg.configHome}/zsh"; - }; -} diff --git a/modules/zsh/enable.nix b/modules/zsh/enable.nix deleted file mode 100644 index d9319f31..00000000 --- a/modules/zsh/enable.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.zsh.enable = true; -} diff --git a/modules/zsh/profile.nix b/modules/zsh/profile.nix deleted file mode 100644 index 318d562c..00000000 --- a/modules/zsh/profile.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - flake.modules.homeManager.base.programs.zsh.profileExtra = '' - if [[ -z "$DISPLAY" ]] && [[ "$(tty)" == "/dev/tty1" ]]; then - exec startx &>/dev/null - fi - ''; -} diff --git a/modules/zsh/syntax-highlighting.nix b/modules/zsh/syntax-highlighting.nix deleted file mode 100644 index 0fa884df..00000000 --- a/modules/zsh/syntax-highlighting.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.zsh.syntaxHighlighting.enable = true; -} diff --git a/modules/zsh/variables.nix b/modules/zsh/variables.nix deleted file mode 100644 index 886b3ba2..00000000 --- a/modules/zsh/variables.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - flake.modules.homeManager.base.programs.zsh.localVariables = { - ABBR_SET_EXPANSION_CURSOR = 1; - }; -} diff --git a/modules/zsh/vi-mode.nix b/modules/zsh/vi-mode.nix deleted file mode 100644 index 79e609be..00000000 --- a/modules/zsh/vi-mode.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - flake.modules.homeManager.base.programs.zsh.defaultKeymap = "viins"; -} diff --git a/notes.txt b/notes.txt deleted file mode 100644 index e01d0f67..00000000 --- a/notes.txt +++ /dev/null @@ -1,6 +0,0 @@ -Running Neovim as a package: - -nix run .#neovim -nix run git+https://code.oliverdavies.uk/opdavies/nix-config#neovim - -nixos-rebuild --flake .#nixedo --target-host 192.168.1.116 --sudo test diff --git a/overlays/default.nix b/overlays/default.nix index 17308ce2..07f3a2ac 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -3,8 +3,8 @@ { additions = final: prev: - import ../packages { - inherit inputs prev; + import ../pkgs { + inherit prev; pkgs = final; }; diff --git a/overlays/mods/dwm/default.nix b/overlays/mods/dwm/default.nix index 67b3117c..3250bd4f 100644 --- a/overlays/mods/dwm/default.nix +++ b/overlays/mods/dwm/default.nix @@ -6,7 +6,7 @@ in prev.dwm.override { conf = '' #define BROWSER "${lib.getExe prev.librewolf}" - #define TERMINAL "/etc/profiles/per-user/opdavies/bin/st" + #define TERMINAL "/run/current-system/sw/bin/st" static const unsigned int borderpx = 1; static const unsigned int snap = 32; @@ -112,6 +112,8 @@ prev.dwm.override { ''; patches = with prev; [ + ./restartsig.patch + (fetchpatch { name = "preserveonrestart"; url = "https://dwm.suckless.org/patches/preserveonrestart/dwm-preserveonrestart-6.3.diff"; diff --git a/overlays/mods/dwm/restartsig.patch b/overlays/mods/dwm/restartsig.patch new file mode 100644 index 00000000..fe73b937 --- /dev/null +++ b/overlays/mods/dwm/restartsig.patch @@ -0,0 +1,108 @@ +diff --git a/config.def.h b/config.def.h +index 9efa774..3e9f854 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -95,6 +95,7 @@ static const Key keys[] = { + TAGKEYS( XK_8, 7) + TAGKEYS( XK_9, 8) + { MODKEY|ShiftMask, XK_q, quit, {0} }, ++ { MODKEY|ControlMask|ShiftMask, XK_q, quit, {1} }, + }; + + /* button definitions */ +diff --git a/dwm.1 b/dwm.1 +index ddc8321..7b6cadb 100644 +--- a/dwm.1 ++++ b/dwm.1 +@@ -142,6 +142,9 @@ Add/remove all windows with nth tag to/from the view. + .TP + .B Mod1\-Shift\-q + Quit dwm. ++.TP ++.B Mod1\-Control\-Shift\-q ++Restart dwm. + .SS Mouse commands + .TP + .B Mod1\-Button1 +@@ -155,6 +158,13 @@ Resize focused window while dragging. Tiled windows will be toggled to the float + .SH CUSTOMIZATION + dwm is customized by creating a custom config.h and (re)compiling the source + code. This keeps it fast, secure and simple. ++.SH SIGNALS ++.TP ++.B SIGHUP - 1 ++Restart the dwm process. ++.TP ++.B SIGTERM - 15 ++Cleanly terminate the dwm process. + .SH SEE ALSO + .BR dmenu (1), + .BR st (1) +diff --git a/dwm.c b/dwm.c +index 1443802..d183e80 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -204,6 +204,8 @@ static void setmfact(const Arg *arg); + static void setup(void); + static void seturgent(Client *c, int urg); + static void showhide(Client *c); ++static void sighup(int unused); ++static void sigterm(int unused); + static void spawn(const Arg *arg); + static void tag(const Arg *arg); + static void tagmon(const Arg *arg); +@@ -259,6 +261,7 @@ static void (*handler[LASTEvent]) (XEvent *) = { + [UnmapNotify] = unmapnotify + }; + static Atom wmatom[WMLast], netatom[NetLast]; ++static int restart = 0; + static int running = 1; + static Cur *cursor[CurLast]; + static Clr **scheme; +@@ -1257,6 +1260,7 @@ propertynotify(XEvent *e) + void + quit(const Arg *arg) + { ++ if(arg->i) restart = 1; + running = 0; + } + +@@ -1552,6 +1556,9 @@ setup(void) + /* clean up any zombies (inherited from .xinitrc etc) immediately */ + while (waitpid(-1, NULL, WNOHANG) > 0); + ++ signal(SIGHUP, sighup); ++ signal(SIGTERM, sigterm); ++ + /* init screen */ + screen = DefaultScreen(dpy); + sw = DisplayWidth(dpy, screen); +@@ -1643,6 +1650,20 @@ showhide(Client *c) + } + } + ++void ++sighup(int unused) ++{ ++ Arg a = {.i = 1}; ++ quit(&a); ++} ++ ++void ++sigterm(int unused) ++{ ++ Arg a = {.i = 0}; ++ quit(&a); ++} ++ + void + spawn(const Arg *arg) + { +@@ -2158,6 +2179,7 @@ main(int argc, char *argv[]) + #endif /* __OpenBSD__ */ + scan(); + run(); ++ if(restart) execvp(argv[0], argv); + cleanup(); + XCloseDisplay(dpy); + return EXIT_SUCCESS; diff --git a/packages/_timer.nix b/packages/_timer.nix deleted file mode 100644 index 6dd00e3b..00000000 --- a/packages/_timer.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "_timer"; - - runtimeInputs = with pkgs; [ - coreutils - libnotify - ]; - - text = '' - mins=$1 - message=''${2:-Time out!} - - sleep $((mins * 60)) - - notify-send -t 0 "''${message}" "Your timer of $mins min is over" -u normal - ''; -} diff --git a/packages/backup-websites.nix b/packages/backup-websites.nix deleted file mode 100644 index fd7828df..00000000 --- a/packages/backup-websites.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ pkgs, ... }: - -pkgs.writeShellApplication { - name = "backup-websites"; - - runtimeInputs = with pkgs; [ rsync ]; - - text = '' - backup_path="''$HOME/server-backup" - - mkdir -p "''$backup_path" - - rsync -avzP nixedo.oliverdavies.uk:/var/www/vhosts/ "''$backup_path" --delete-after - ''; -} diff --git a/packages/count-tags.nix b/packages/count-tags.nix deleted file mode 100755 index c5e046fa..00000000 --- a/packages/count-tags.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "count-tags"; - - runtimeInputs = with pkgs; [ - coreutils - get-tags - ]; - - text = '' - get-tags "''${1:-}" | wc -l - ''; -} diff --git a/packages/create-script.nix b/packages/create-script.nix deleted file mode 100755 index 840018fd..00000000 --- a/packages/create-script.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "create-script"; - - text = '' - cat > "$1" << EOF - #!/usr/bin/env bash - - set -euo pipefail - - - EOF - - chmod +x "$1" - - $EDITOR "$1"; - ''; -} diff --git a/packages/default.nix b/packages/default.nix deleted file mode 100644 index 418c1638..00000000 --- a/packages/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - inputs, - pkgs, - prev, - ... -}: - -let - inherit (pkgs) callPackage; - - vimPlugins = callPackage ./vim-plugins { }; -in -{ - _timer = callPackage ./_timer.nix { }; - backup-websites = callPackage ./backup-websites.nix { }; - build-glove80 = callPackage ./build-glove80.nix { }; - count-tags = callPackage ./count-tags.nix { }; - create-script = callPackage ./create-script.nix { }; - dev-commit = callPackage ./dev-commit.nix { }; - get-tags = callPackage ./get-tags.nix { }; - git-exclude = callPackage ./git-exclude.nix { }; - git-graph = callPackage ./git-graph.nix { }; - import-to-jellyfin = callPackage ./import-to-jellyfin.nix { }; - mounter = callPackage ./mounter.nix { }; - move-firefox-screenshots = callPackage ./move-firefox-screenshots.nix { }; - passmenu-otp = callPackage ./passmenu-otp.nix { }; - set-background = callPackage ./set-background.nix { }; - tag-release = callPackage ./tag-release.nix { }; - time-until = callPackage ./time-until.nix { }; - timer = callPackage ./timer.nix { }; - tmux-sessionizer = callPackage ./tmux-sessionizer { }; - unmounter = callPackage ./unmounter.nix { }; - update-all-git-repos = callPackage ./update-all-git-repos.nix { }; - vic = callPackage ./vic.nix { inherit inputs; }; - - vimPlugins = prev.vimPlugins // vimPlugins; -} diff --git a/packages/dev-commit.nix b/packages/dev-commit.nix deleted file mode 100644 index e71aa095..00000000 --- a/packages/dev-commit.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ pkgs, ... }: - -pkgs.writeShellApplication { - name = "dev-commit"; - - runtimeInputs = with pkgs; [ - coreutils - git - logger - openssh - ]; - - text = '' - IFS=':' read -ra repos <<< "$DEV_COMMIT_PATHS" - - for repo in "''${repos[@]}"; do - logger "Processing repository: $repo" - - pushd "$repo" > /dev/null 2>&1 - - if [[ -n $(git status --porcelain) ]]; then - logger "Changes detected in $repo" - - git status --short | while read -r line; do - logger "Changed file: $line" - done - - git add . - - if git commit -m "Automated dev commit"; then - logger "Commit successful in $repo" - - if git push; then - logger "Push successful in $repo" - else - logger "Push failed in $repo" - fi - else - logger "No changes to commit in $repo" - fi - else - logger "No changes in $repo" - fi - - popd > /dev/null 2>&1 - done - ''; -} diff --git a/packages/get-tags.nix b/packages/get-tags.nix deleted file mode 100755 index ac27898d..00000000 --- a/packages/get-tags.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "get-tags"; - - runtimeInputs = with pkgs; [ git ]; - - text = '' - if [[ "$#" -gt 0 ]]; then - git tag | grep "$*" - exit 0 - fi - - git tag - ''; -} diff --git a/packages/git-exclude.nix b/packages/git-exclude.nix deleted file mode 100644 index 45e3cbdb..00000000 --- a/packages/git-exclude.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "git-exclude"; - - runtimeInputs = with pkgs; [ git ]; - - text = '' - # Based on https://github.com/jfly/snow/blob/fb727b39736666f54908f4dc7c83dd6284607c5a/machines/pattern/homies/bin/git-exclude. - - root=$(git rev-parse --show-toplevel) - rel=$(realpath --relative-to "$root" .) - - # For some reason, ignore rules like "./.envrc" don't seem to work, but - # "/.envrc" does. :shrug: - if [ "$rel" = "." ]; then - rel="" - fi - - for item in "$@"; do - echo "''${rel}/$item" >> "$root/.git/info/exclude" - done - ''; -} diff --git a/packages/git-graph.nix b/packages/git-graph.nix deleted file mode 100644 index 4e719bc5..00000000 --- a/packages/git-graph.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "git-graph"; - - runtimeInputs = with pkgs; [ git ]; - - text = '' - # Based on https://github.com/sdaschner/dotfiles/blob/master/bin/git-graph. - - git log \ - --abbrev-commit \ - --all \ - --graph \ - --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%ae>%Creset" - ''; -} diff --git a/packages/import-to-jellyfin.nix b/packages/import-to-jellyfin.nix deleted file mode 100644 index 11bcb7c0..00000000 --- a/packages/import-to-jellyfin.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "import-to-jellyfin"; - - runtimeInputs = with pkgs; [ coreutils ]; - - text = '' - source_path="/home/opdavies/import" - - mapfile -t files < <(find "$source_path" -type f -name "*.mp4") - - for filepath in "''${files[@]}"; do - echo "Moving $filepath..." - - filename="$(basename "$filepath")" - filename_without_extension="''${filename%.mp4}" - - destination_path="/mnt/media/jellyfin/Movies/$filename_without_extension" - mkdir -p "$destination_path" - - mv "$source_path/$filename" "$destination_path" - done - - chown -R jellyfin:media /mnt/media/jellyfin - ''; -} diff --git a/packages/mounter.nix b/packages/mounter.nix deleted file mode 100755 index df0e0982..00000000 --- a/packages/mounter.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "mounter"; - - runtimeInputs = with pkgs; [ - cryptsetup - dmenu - gawk - libnotify - util-linux - ]; - - text = '' - lsblk_output="$(lsblk -rpo "uuid,name,type,size,label,mountpoint,mountpoints,fstype" | grep "part" | grep -Ev "/(boot|nix/store)")" - partition_names="$(echo "$lsblk_output" | awk '{ printf "%s (%s)\n", $2, $4 }' )"; - - selected=$(echo "$partition_names" | dmenu -p "Select drive:" | awk '{ print $1 }') - test -n "$selected" - mount_device="$selected" - - if sudo cryptsetup isLuks "$selected"; then - luks_name="usb" - - ${"TERMINAL:-st"} -n floatterm -g 60x1 -e sudo cryptsetup open "$selected" "$luks_name" - - mount_device="/dev/mapper/$luks_name" - - test -b "/dev/mapper/$luks_name" - fi - - mount_point=$(echo -e "/mnt\n/media\n/run/media/$USER" | dmenu -p "Select mount point:") - test -n "$mount_point" - - sudo mkdir -p "$mount_point" - - if sudo mount "$mount_device" "$mount_point"; then - notify-send "Device mounted" "Mounted $selected at $mount_point." - else - notify-send "Mount failed" "Failed to mount $selected." - - exit 1 - fi - ''; -} diff --git a/packages/move-firefox-screenshots.nix b/packages/move-firefox-screenshots.nix deleted file mode 100755 index 8f544f30..00000000 --- a/packages/move-firefox-screenshots.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "move-firefox-screenshots"; - - runtimeInputs = with pkgs; [ findutils ]; - - text = '' - original_directory="''${HOME}/Downloads" - new_directory="''${HOME}/Pictures/Screenshots" - - find "''${original_directory}" -mindepth 1 -maxdepth 1 -type f -name "Screenshot *" \ - -exec mv {} "''${new_directory}" \; - ''; -} diff --git a/packages/set-background.nix b/packages/set-background.nix deleted file mode 100644 index 8bd581f8..00000000 --- a/packages/set-background.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs, writeShellApplication }: - -writeShellApplication { - name = "set-background"; - - runtimeInputs = with pkgs; [ xwallpaper ]; - - text = '' - xwallpaper --zoom "''${XDG_REPOS_DIR}/personal/nix-config/wallpaper/wallpaper.jpg" - ''; -} diff --git a/packages/tag-release.nix b/packages/tag-release.nix deleted file mode 100644 index 0bd612b6..00000000 --- a/packages/tag-release.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ git, writeShellApplication }: - -writeShellApplication { - name = "tag-release"; - - runtimeInputs = [ git ]; - - text = '' - commit_sha="''${1:-HEAD}" - tag="$(date '+%Y-%m-%d-%H.%M.%S')" - - echo "Tagging commit $(git rev-parse "''${commit_sha}") as ''${tag}." - echo "" - - git tag "''${tag}" "''${commit_sha}" - ''; -} diff --git a/packages/time-until.nix b/packages/time-until.nix deleted file mode 100644 index 82e1c821..00000000 --- a/packages/time-until.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "time-until"; - - runtimeInputs = with pkgs; [ bc ]; - - text = '' - # Based on https://github.com/sdaschner/dotfiles/blob/master/bin/time-until. - set +o nounset - - if [[ "$1" == "" ]]; then - echo "Usage: ''${0##*/} " - echo " Example: ''${0##*/} 'tomorrow 06:00'" - exit 2 - fi - - set -o nounset - - secsUntil=$(( $(date +%s -d "$*") - $( date +%s ) )) - minutesUntil=$(bc <<< "scale=1; $secsUntil/60") - hoursUntil=$(bc <<< "scale=2; $secsUntil/3600") - date=$(date -d "$*") - - echo "$hoursUntil hours (or $minutesUntil mins) until $date" - ''; -} diff --git a/packages/timer.nix b/packages/timer.nix deleted file mode 100644 index 8580c10c..00000000 --- a/packages/timer.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "timer"; - - runtimeInputs = with pkgs; [ - _timer - coreutils - systemdMinimal - ]; - - text = '' - mins=$1 - message="''${2:-}" - - nohup _timer "$mins" "$message" &> /dev/null & - - echo "timer started for $mins min" - echo "timer started for $mins min, message: '$message'" | systemd-cat -t timer - ''; -} diff --git a/packages/unmounter.nix b/packages/unmounter.nix deleted file mode 100755 index 51e5d967..00000000 --- a/packages/unmounter.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "unmounter"; - - runtimeInputs = with pkgs; [ - cryptsetup - dmenu - gawk - libnotify - util-linux - ]; - - text = '' - lsblk_output="$(lsblk -nrpo "name,type,size,mountpoint")" - mounted_drives="$(echo "$lsblk_output" | awk '($2=="part"||$2="crypt")&&$4!~/\/boot|\/home$|SWAP/&&length($4)>1{printf "%s (%s)\n",$4,$3}')" - - all_unmountable="$(echo "$mounted_drives" | sed "/^$/d;s/ *$//")" - test -n "$all_unmountable" - - selected="$(echo "$all_unmountable" | dmenu -i -p "Unmount which drive?")" - selected="''${selected%% *}" - test -n "$selected" - - sudo -A umount -l "/''${selected#*/}" - notify-send "Device unmounted" "$selected has been unmounted." - - # Close the selected drive if decrypted. - cryptid="$(echo "$lsblk_output" | grep "/''${selected#*/}$")" - cryptid="''${cryptid%% *}" - test -b /dev/mapper/"''${cryptid##*/}" - sudo -A cryptsetup close "$cryptid" - - notify-send "Device dencryption closed" "Drive is now securely locked again." - ''; -} diff --git a/packages/update-all-git-repos.nix b/packages/update-all-git-repos.nix deleted file mode 100755 index 1ef76bf2..00000000 --- a/packages/update-all-git-repos.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ pkgs }: - -pkgs.writeShellApplication { - name = "update-all-git-repos"; - - runtimeInputs = with pkgs; [ - findutils - git - ]; - - text = '' - # Update all top-level Git repository clones within my Code directories to their - # latest version. - - dirs=$(find "$XDG_REPOS_DIR" -mindepth 2 -maxdepth 3 -type d -name .git -not -path '*/*.old/*') - - for dir in $dirs; do - repo_path="''${dir%/.git}" - - cd "''${repo_path}" - - # If the repo is a bare clone, the commands need to be run within the - # worktree directory. - [[ -f .bare/worktrees/main/gitdir && -d main && -f main/.git ]] && cd main - - echo "Updating $(pwd)" - - # Update the repository. - git fetch --all --jobs=4 --progress --prune - git pull --rebase - done - ''; -} diff --git a/packages/vic.nix b/packages/vic.nix deleted file mode 100755 index 312f8467..00000000 --- a/packages/vic.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ inputs, pkgs }: - -pkgs.writeShellApplication rec { - name = "vic"; - - runtimeInputs = with pkgs; [ neovim tmux ]; - - text = builtins.readFile "${inputs.rwxrob-dot}/scripts/${name}"; -} diff --git a/packages/vim-plugins/vim-plugins.json b/packages/vim-plugins/vim-plugins.json deleted file mode 100644 index 75a148c3..00000000 --- a/packages/vim-plugins/vim-plugins.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "vim-textobj-indent": { - "owner": "kana", - "repo": "vim-textobj-indent", - "rev": "deb76867c302f933c8f21753806cbf2d8461b548", - "version": "0.0.6", - "hash": "sha256-oFzUPG+IOkbKZ2gU/kduQ3G/LsLDlEjFhRP0BHBE+1Q=" - } -} - diff --git a/pkgs/backup-websites.nix b/pkgs/backup-websites.nix new file mode 100644 index 00000000..d70cd8b7 --- /dev/null +++ b/pkgs/backup-websites.nix @@ -0,0 +1,13 @@ +{ lib, pkgs, ... }: + +pkgs.writeShellApplication { + name = "backup-websites"; + + text = '' + backup_path="''${HOME}/server-backup" + + mkdir -p "''${backup_path}" + + ${lib.getExe pkgs.rsync} -avzP nixedo.local:/var/www/vhosts/ "''${backup_path}" --delete-after + ''; +} diff --git a/packages/build-glove80.nix b/pkgs/build-glove80.nix similarity index 100% rename from packages/build-glove80.nix rename to pkgs/build-glove80.nix diff --git a/pkgs/default.nix b/pkgs/default.nix new file mode 100644 index 00000000..72ce4ae8 --- /dev/null +++ b/pkgs/default.nix @@ -0,0 +1,21 @@ +{ pkgs, prev, ... }: + +let + inherit (pkgs) callPackage; + + vimPlugins = callPackage ./vim-plugins { }; +in +{ + backup-websites = callPackage ./backup-websites.nix { }; + build-glove80 = callPackage ./build-glove80.nix { }; + dev-commit = callPackage ./dev-commit.nix { }; + displayselect = callPackage ./displayselect { }; + notes = callPackage ./notes { }; + passmenu-otp = callPackage ./passmenu-otp.nix { }; + todos-add = callPackage ./todos/todos-add.nix { }; + todos-edit = callPackage ./todos/todos-edit.nix { }; + tmux-sessionizer = callPackage ./tmux-sessionizer { }; + upload-to-files = callPackage ./upload-to-files.nix { }; + + vimPlugins = prev.vimPlugins // vimPlugins; +} diff --git a/pkgs/dev-commit.nix b/pkgs/dev-commit.nix new file mode 100644 index 00000000..dfe4336a --- /dev/null +++ b/pkgs/dev-commit.nix @@ -0,0 +1,26 @@ +{ pkgs, ... }: + +pkgs.writeShellApplication { + name = "dev-commit"; + + runtimeInputs = with pkgs; [ + coreutils + git + openssh + ]; + + text = '' + IFS=':' read -ra repos <<< "$DEV_COMMIT_PATHS" + + for repo in "''${repos[@]}"; do + echo "Processing $repo" + pushd "$repo" + + git add . + git commit -m "Automated dev commit" || true + git push + + popd + done + ''; +} diff --git a/pkgs/displayselect/default.nix b/pkgs/displayselect/default.nix new file mode 100644 index 00000000..f81f217e --- /dev/null +++ b/pkgs/displayselect/default.nix @@ -0,0 +1,32 @@ +{ pkgs, ... }: + +pkgs.stdenv.mkDerivation { + pname = "displayselect"; + version = "unstable-2024-05-11"; + + src = builtins.fetchurl { + url = "https://raw.githubusercontent.com/lukesmithxyz/voidrice/97687287bdfd332398b82a196b5f1feaec73f1d7/.local/bin/displayselect"; + sha256 = "sha256:11r561pfhb48a3xmi42zzvpljahnwlfad9rz8qmmp64dhz1f2vp0"; + }; + + dontUnpack = true; + + buildInputs = with pkgs; [ + bash + xorg.xrandr + ]; + + prePatch = '' + cp $src displayselect + ''; + + patches = [ ./scaling.patch ]; + + installPhase = '' + mkdir -p $out/bin + cp displayselect $out/bin + chmod +x $out/bin/displayselect + ''; + + meta.mainProgram = "displayselect"; +} diff --git a/modules/displayselect/scaling.patch b/pkgs/displayselect/scaling.patch similarity index 100% rename from modules/displayselect/scaling.patch rename to pkgs/displayselect/scaling.patch diff --git a/pkgs/notes/change-filename-format.patch b/pkgs/notes/change-filename-format.patch new file mode 100644 index 00000000..6baea3be --- /dev/null +++ b/pkgs/notes/change-filename-format.patch @@ -0,0 +1,13 @@ +diff --git a/notes b/notes +index 3351903..34364bf 100755 +--- a/notes ++++ b/notes +@@ -14,7 +14,7 @@ set -e + readonly NOTES_DIRECTORY="${NOTES_DIRECTORY:-${HOME}/notes}" + readonly NOTES_EDITOR="${EDITOR}" + +-readonly NOTES_FILE="$(date +%Y-%m).txt" ++readonly NOTES_FILE="$(date +%Y-%m-%d).txt" + readonly NOTES_PATH="${NOTES_DIRECTORY}/${NOTES_FILE}" + + if [ ! -d "${NOTES_DIRECTORY}" ]; then diff --git a/pkgs/notes/default.nix b/pkgs/notes/default.nix new file mode 100644 index 00000000..bf70b196 --- /dev/null +++ b/pkgs/notes/default.nix @@ -0,0 +1,27 @@ +{ pkgs, ... }: + +with pkgs; + +stdenv.mkDerivation rec { + pname = "notes"; + version = "unstable-2024-12-07"; + + src = fetchFromGitHub { + owner = "nickjj"; + repo = "notes"; + rev = "f4f0aab865c19132484a2c3998cd984bdb3b9514"; + sha256 = "sha256-y5SkS+22tW9wf3gH26NHSnrnJ0rkBWSgKvansP8Hlbg="; + }; + + buildInputs = [ bash ]; + + patches = [ + ./change-filename-format.patch + ]; + + installPhase = '' + mkdir -p $out/bin + cp notes $out/bin/notes + chmod +x $out/bin/notes + ''; +} diff --git a/packages/passmenu-otp.nix b/pkgs/passmenu-otp.nix similarity index 100% rename from packages/passmenu-otp.nix rename to pkgs/passmenu-otp.nix diff --git a/pkgs/tmux-sessionizer/default.nix b/pkgs/tmux-sessionizer/default.nix new file mode 100644 index 00000000..aeb12dca --- /dev/null +++ b/pkgs/tmux-sessionizer/default.nix @@ -0,0 +1,40 @@ +{ pkgs, ... }: + +with pkgs; + +stdenv.mkDerivation { + pname = "tmux-sessionizer"; + version = "unstable-2024-10-30"; + + src = fetchFromGitHub { + owner = "theprimeagen"; + repo = "tmux-sessionizer"; + rev = "6ebd16e2e30a8c0ebd77f0c2ce18cb46db8397fa"; + sha256 = "bZXt9TyMU1Ed/WR0/ahMQ4oyIi6yXLKnXKYPPNBt/s4="; + }; + + buildInputs = [ + bash + fzf + tmux + ]; + + patches = [ + ./move-default-script.patch + + (fetchpatch { + name = "feat: Made folders more dynamic"; + url = "https://patch-diff.githubusercontent.com/raw/ThePrimeagen/tmux-sessionizer/pull/2.patch"; + sha256 = "sha256-4/4rzve49T3FHnl9WWUPJVcb0NQojMQjIVnEZGwVAsY="; + }) + + ./shorten-suggested-paths.patch + ./sort-suggestions.patch + ]; + + installPhase = '' + mkdir -p $out/bin + cp tmux-sessionizer $out/bin/tmux-sessionizer + chmod +x $out/bin/tmux-sessionizer + ''; +} diff --git a/pkgs/tmux-sessionizer/move-default-script.patch b/pkgs/tmux-sessionizer/move-default-script.patch new file mode 100644 index 00000000..6922915e --- /dev/null +++ b/pkgs/tmux-sessionizer/move-default-script.patch @@ -0,0 +1,15 @@ +diff --git a/tmux-sessionizer b/tmux-sessionizer +index fa1bec5..536d4b0 100755 +--- a/tmux-sessionizer ++++ b/tmux-sessionizer +@@ -14,8 +14,8 @@ has_session() { + hydrate() { + if [ -f $2/.tmux-sessionizer ]; then + tmux send-keys -t $1 "source $2/.tmux-sessionizer" c-M +- elif [ -f $HOME/.tmux-sessionizer ]; then +- tmux send-keys -t $1 "source $HOME/.tmux-sessionizer" c-M ++ elif [ -f "$XDG_CONFIG_HOME/tmux-sessionizer/default" ]; then ++ tmux send-keys -t $1 "source $XDG_CONFIG_HOME/tmux-sessionizer/default" c-M + fi + } + diff --git a/pkgs/tmux-sessionizer/shorten-suggested-paths.patch b/pkgs/tmux-sessionizer/shorten-suggested-paths.patch new file mode 100644 index 00000000..067cbe64 --- /dev/null +++ b/pkgs/tmux-sessionizer/shorten-suggested-paths.patch @@ -0,0 +1,22 @@ +diff --git a/tmux-sessionizer b/tmux-sessionizer +index 8fa4153..3e607d7 100755 +--- a/tmux-sessionizer ++++ b/tmux-sessionizer +@@ -22,13 +22,16 @@ hydrate() { + if [[ $# -eq 1 ]]; then + selected=$1 + else +- selected=$(find $(eval echo $(xargs < "$XDG_CONFIG_HOME/tmux-sessionizer/directories")) -mindepth 1 -maxdepth 1 -type d | fzf) ++ selected=$(find $(eval echo $(xargs < "$XDG_CONFIG_HOME/tmux-sessionizer/directories")) -mindepth 1 -maxdepth 1 -type d | sed "s|$HOME/||" | fzf) + fi + + if [[ -z $selected ]]; then + exit 0 + fi + ++# Add Home path back. ++selected="$HOME/$selected" ++ + selected_name=$(basename "$selected" | tr . _) + tmux_running=$(pgrep tmux) + diff --git a/pkgs/tmux-sessionizer/sort-suggestions.patch b/pkgs/tmux-sessionizer/sort-suggestions.patch new file mode 100644 index 00000000..c2d33126 --- /dev/null +++ b/pkgs/tmux-sessionizer/sort-suggestions.patch @@ -0,0 +1,13 @@ +diff --git a/tmux-sessionizer b/tmux-sessionizer +index 3e607d7..27729b1 100755 +--- a/tmux-sessionizer ++++ b/tmux-sessionizer +@@ -22,7 +22,7 @@ hydrate() { + if [[ $# -eq 1 ]]; then + selected=$1 + else +- selected=$(find $(eval echo $(xargs < "$XDG_CONFIG_HOME/tmux-sessionizer/directories")) -mindepth 1 -maxdepth 1 -type d | sed "s|$HOME/||" | fzf) ++ selected=$(find $(eval echo $(xargs < "$XDG_CONFIG_HOME/tmux-sessionizer/directories")) -mindepth 1 -maxdepth 1 -type d | sed "s|$HOME/||" | sort | fzf) + fi + + if [[ -z $selected ]]; then diff --git a/pkgs/todos/todos-add.nix b/pkgs/todos/todos-add.nix new file mode 100644 index 00000000..a5df60ac --- /dev/null +++ b/pkgs/todos/todos-add.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +pkgs.writeShellApplication { + name = "todos-add"; + + text = '' + TODOS_DIRECTORY="''${TODOS_DIRECTORY:-"$XDG_DOCUMENTS_DIR/todos"}" + export TODOS_DIRECTORY + + echo "$*" >> "$TODOS_DIRECTORY/$(date +%Y-%m-%d).txt" + ''; +} + diff --git a/pkgs/todos/todos-edit.nix b/pkgs/todos/todos-edit.nix new file mode 100644 index 00000000..43d3c829 --- /dev/null +++ b/pkgs/todos/todos-edit.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +pkgs.writeShellApplication { + name = "todos-edit"; + + text = '' + TODOS_DIRECTORY="''${TODOS_DIRECTORY:-"$XDG_DOCUMENTS_DIR/todos"}" + export TODOS_DIRECTORY + + "$EDITOR" "$TODOS_DIRECTORY/$(date +%Y-%m-%d).txt"; + ''; +} diff --git a/pkgs/upload-to-files.nix b/pkgs/upload-to-files.nix new file mode 100644 index 00000000..ea6a680e --- /dev/null +++ b/pkgs/upload-to-files.nix @@ -0,0 +1,11 @@ +{ pkgs }: + +with pkgs; + +writeShellApplication { + name = "upload-to-files"; + + text = '' + ${pkgs.rsync}/bin/rsync -avz --info=progress2 "$1" ssh.oliverdavies.uk:/var/www/vhosts/files.oliverdavies.uk + ''; +} diff --git a/packages/vim-plugins/default.nix b/pkgs/vim-plugins/default.nix similarity index 100% rename from packages/vim-plugins/default.nix rename to pkgs/vim-plugins/default.nix diff --git a/pkgs/vim-plugins/vim-plugins.json b/pkgs/vim-plugins/vim-plugins.json new file mode 100644 index 00000000..4916878c --- /dev/null +++ b/pkgs/vim-plugins/vim-plugins.json @@ -0,0 +1,18 @@ +{ + "vim-textobj-indent": { + "owner": "kana", + "repo": "vim-textobj-indent", + "rev": "deb76867c302f933c8f21753806cbf2d8461b548", + "version": "0.0.6", + "hash": "sha256-oFzUPG+IOkbKZ2gU/kduQ3G/LsLDlEjFhRP0BHBE+1Q=" + }, + + "vim-textobj-xmlattr": { + "owner": "whatyouhide", + "repo": "vim-textobj-xmlattr", + "rev": "694a297f1d75fd527e87da9769f3c6519a87ebb1", + "version": "unstable-2016-06-03", + "hash": "sha256-+91FVP95oh00flINdltqx6qJuijYo56tHIh3J098G2Q=" + } +} + diff --git a/secrets.nix b/secrets.nix index 23e41540..ad7e8bd6 100644 --- a/secrets.nix +++ b/secrets.nix @@ -1,5 +1,6 @@ let hosts = { + lemp11 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEZ+ljJKd6uqdAk+fqxwtObI4Stab2N9Bjo4QFHY/v8n"; nixedo = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILvtcGJnc94k6wCPfvK9oBvGey0WWVCR8IYSqg5vqage"; t480 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILvtcGJnc94k6wCPfvK9oBvGey0WWVCR8IYSqg5vqage"; }; @@ -12,29 +13,22 @@ in "secrets/cloudflare.age".publicKeys = [ hosts.nixedo hosts.t480 - ] - ++ [ users.opdavies ]; + ] ++ [ users.opdavies ]; "secrets/cloudflared-credentials.age".publicKeys = [ hosts.nixedo - ] - ++ [ users.opdavies ]; + ] ++ [ users.opdavies ]; "secrets/forgejo-runner-token.age".publicKeys = [ hosts.nixedo - ] - ++ [ users.opdavies ]; + ] ++ [ users.opdavies ]; "secrets/peertube-env.age".publicKeys = [ hosts.nixedo - ] - ++ [ users.opdavies ]; + ] ++ [ users.opdavies ]; "secrets/tubearchivist-env.age".publicKeys = [ hosts.nixedo hosts.t480 - ] - ++ [ users.opdavies ]; - - "secrets/vaultwarden-env.age".publicKeys = [ hosts.nixedo ] ++ [ users.opdavies ]; + ] ++ [ users.opdavies ]; } diff --git a/secrets/vaultwarden-env.age b/secrets/vaultwarden-env.age deleted file mode 100644 index 522a87d7..00000000 Binary files a/secrets/vaultwarden-env.age and /dev/null differ diff --git a/todo.txt b/todo.txt index 9fb12d75..fd592bcc 100644 --- a/todo.txt +++ b/todo.txt @@ -1,18 +1 @@ -Configure external hard drives on nixedo. - -server: -jellyfin -immich -tubearchivist -websites -forgejo - -Create a Home Manager module for bluetuith. -Enable tree-fmt - -Error detected while processing BufWritePost Autocommands for "*": -Error running vale: ENOENT: no such file or directory - -Re-add spellfile - -Re-add low battery notifications. +Re-configure diagnostic output in neovim. diff --git a/users/eric.nix b/users/eric.nix new file mode 100644 index 00000000..66e1c15e --- /dev/null +++ b/users/eric.nix @@ -0,0 +1,12 @@ +let + username = "eric"; +in +{ + users.users.${username} = { + description = "Eric Davies"; + extraGroups = [ ]; + initialPassword = "eric"; + isNormalUser = true; + packages = [ ]; + }; +} diff --git a/users/luke.nix b/users/luke.nix new file mode 100644 index 00000000..fb413562 --- /dev/null +++ b/users/luke.nix @@ -0,0 +1,12 @@ +let + username = "luke"; +in +{ + users.users.${username} = { + description = "Luke Davies"; + extraGroups = [ ]; + initialPassword = username; + isNormalUser = true; + packages = [ ]; + }; +} diff --git a/users/opdavies.nix b/users/opdavies.nix index 613290c5..38efaeaa 100644 --- a/users/opdavies.nix +++ b/users/opdavies.nix @@ -13,13 +13,17 @@ with lib; initialPassword = "opdavies"; isNormalUser = true; - extraGroups = [ - "networkmanager" - "wheel" - ]; + extraGroups = + [ + "networkmanager" + "wheel" + ] + ++ optional config.cli.docker.enable "docker" + ++ optional config.cli.podman.enable "podman"; packages = with pkgs; [ - magic-wormhole + comma + qrencode ]; openssh.authorizedKeys.keys = [ diff --git a/wallpaper/wallpaper.jpg b/wallpaper/wallpaper.jpg index 9c54212d..75d60ad7 100644 Binary files a/wallpaper/wallpaper.jpg and b/wallpaper/wallpaper.jpg differ