Compare commits
1 commit
main
...
flake-lock
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60764623a4 |
91 changed files with 1852 additions and 965 deletions
90
.forgejo/workflows/update-inputs.yml
Normal file
90
.forgejo/workflows/update-inputs.yml
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
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"'"
|
||||||
|
}'
|
||||||
212
flake.lock
generated
212
flake.lock
generated
|
|
@ -10,11 +10,11 @@
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762618334,
|
"lastModified": 1754433428,
|
||||||
"narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=",
|
"narHash": "sha256-NA/FT2hVhKDftbHSwVnoRTFhes62+7dxZbxj5Gxvghs=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "fcdea223397448d35d9b31f798479227e80183f6",
|
"rev": "9edb1787864c4f59ae5074ad498b6272b3ec308d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -26,11 +26,11 @@
|
||||||
"bop-scripts": {
|
"bop-scripts": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762468291,
|
"lastModified": 1760234399,
|
||||||
"narHash": "sha256-kvhro91rmPgSX8LYLTsesLJlOlKp1YJsIg9e+Cb9u6o=",
|
"narHash": "sha256-SpQ4TMOsYCr9EoCdUZ1GeX5cOoPHfxEYyRakYznc91w=",
|
||||||
"owner": "breadonpenguins",
|
"owner": "breadonpenguins",
|
||||||
"repo": "scripts",
|
"repo": "scripts",
|
||||||
"rev": "c1c94c3f4b89076dc8f788fae12f639dda663ddb",
|
"rev": "1396a09a206dbd6f9a08ffa7a5603e6d55ae5f00",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -39,6 +39,22 @@
|
||||||
"type": "github"
|
"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": {
|
"darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -82,24 +98,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devshell_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs_2"
|
|
||||||
},
|
|
||||||
"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": {
|
"disko": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -107,11 +105,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762276996,
|
"lastModified": 1758287904,
|
||||||
"narHash": "sha256-TtcPgPmp2f0FAnc+DMEw4ardEgv1SGNR3/WFGH0N19M=",
|
"narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "af087d076d3860760b3323f6b583f4d828c1ac17",
|
"rev": "67ff9807dd148e704baadbd4fd783b54282ca627",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -120,16 +118,32 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"edit-alternate-vim": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1635180789,
|
||||||
|
"narHash": "sha256-mEKnqYAhgrdxPRoKf4S4yYecdFIHGg8bDxpqPuC1+S4=",
|
||||||
|
"owner": "tjdevries",
|
||||||
|
"repo": "edit_alternate.vim",
|
||||||
|
"rev": "ef3019115d9bb7ffd691d2859eda213dd99e0b0a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tjdevries",
|
||||||
|
"repo": "edit_alternate.vim",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762440070,
|
"lastModified": 1759362264,
|
||||||
"narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=",
|
"narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8",
|
"rev": "758cf7296bee11f1706a574c77d072b8a7baa881",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -195,13 +209,13 @@
|
||||||
"narHash": "sha256-DpZgkdZELTZ/F/O+Xgj81E+01S5Zp2JCMa8zruEZe9o=",
|
"narHash": "sha256-DpZgkdZELTZ/F/O+Xgj81E+01S5Zp2JCMa8zruEZe9o=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "19591ad8e1f3c261e84b487307c8534dd67a3707",
|
"rev": "19591ad8e1f3c261e84b487307c8534dd67a3707",
|
||||||
"revCount": 37,
|
"revCount": 1,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.oliverdavies.uk/opdavies/git-repo-updater"
|
"url": "https://code.oliverdavies.uk/opdavies/git-repo-updater"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.oliverdavies.uk/opdavies/git-repo-updater"
|
"url": "https://code.oliverdavies.uk/opdavies/git-repo-updater"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
|
|
@ -232,11 +246,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762721397,
|
"lastModified": 1760662441,
|
||||||
"narHash": "sha256-E428EuouA4nFTNlLuqlL4lVR78X+EbBIqDqsBFnB79w=",
|
"narHash": "sha256-mlDqR1Ntgs9uYYEAUR1IhamKBO0lxoNS4zGLzEZaY0A=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "b8645b18b0f5374127bbade6de7381ef0b3d5720",
|
"rev": "722792af097dff5790f1a66d271a47759f477755",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -248,11 +262,11 @@
|
||||||
},
|
},
|
||||||
"import-tree": {
|
"import-tree": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762327901,
|
"lastModified": 1752730890,
|
||||||
"narHash": "sha256-AJ96FNj50DU0bTyIzAPkPOjCZTHqjURVjok8qoXvmqM=",
|
"narHash": "sha256-GES8fapSLGz36MMPRVNkSUWXUTtqvGQNXHjRmRLfJUY=",
|
||||||
"owner": "vic",
|
"owner": "vic",
|
||||||
"repo": "import-tree",
|
"repo": "import-tree",
|
||||||
"rev": "90fa129798be99cde036b78658e89475710966a1",
|
"rev": "6ebb8cb87987b20264c09296166543fd3761d274",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -296,11 +310,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762660502,
|
"lastModified": 1760241904,
|
||||||
"narHash": "sha256-C9F1C31ys0V7mnp4EcDy7L1cLZw/sCTEXqqTtGnvu08=",
|
"narHash": "sha256-OD7QnaGEVNdukYEbJbUNWPsvnDrpbZOZxVIk6Pt9Jhw=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "15c5451c63f4c612874a43846bfe3fa828b03eee",
|
"rev": "c9f5ea45f25652ec2f771f9426ccacb21cbbaeaa",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -311,11 +325,11 @@
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762463231,
|
"lastModified": 1760106635,
|
||||||
"narHash": "sha256-hv1mG5j5PTbnWbtHHomzTus77pIxsc4x8VrMjc7+/YE=",
|
"narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "52113c4f5cfd1e823001310e56d9c8d0699a6226",
|
"rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -327,11 +341,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762596750,
|
"lastModified": 1760524057,
|
||||||
"narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=",
|
"narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e",
|
"rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -343,11 +357,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761765539,
|
"lastModified": 1754788789,
|
||||||
"narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=",
|
"narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "719359f4562934ae99f5443f20aa06c2ffff91fc",
|
"rev": "a73b9c743612e4244d865a2fdee11865283c04e6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -372,22 +386,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1722073938,
|
|
||||||
"narHash": "sha256-OpX0StkL8vpXyWOGUD6G+MA26wAXK6SpT94kLJXo6B4=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "e36e9f57337d0ff0cf77aceb58af4c805472bfae",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixvim": {
|
"nixvim": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": [
|
"flake-parts": [
|
||||||
|
|
@ -400,11 +398,11 @@
|
||||||
"systems": "systems_3"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762691346,
|
"lastModified": 1760616351,
|
||||||
"narHash": "sha256-dyYnqvYrgViB22inBqNern/XSWtOiweP8NTfJQJeTis=",
|
"narHash": "sha256-z6+MKQBXfeZTdUK+PXbmBydaUuJK+k3iFnTanRvdkXg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "faf1fb4b7cd069ce44469e45c3259b7bcf106f81",
|
"rev": "5275e258bf89e4947409ba36e362031ca491c67c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -421,11 +419,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762724684,
|
"lastModified": 1760680674,
|
||||||
"narHash": "sha256-B24ywaTUd9BYkK3qHfl0MubCLnO4Bk8cRSQmIvfofco=",
|
"narHash": "sha256-NSyVsKRZ/yhj4pj70lWRz4Iz7YEEEgHBAuTinyWZLcU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "efc27c839b15d0ff15d58fb09035a93dea7f85f5",
|
"rev": "e48730db08cb5dcc07f9cc2d15865d7e2135ee2e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -444,11 +442,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761730856,
|
"lastModified": 1758662783,
|
||||||
"narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=",
|
"narHash": "sha256-igrxT+/MnmcftPOHEb+XDwAMq3Xg1Xy7kVYQaHhPlAg=",
|
||||||
"owner": "NuschtOS",
|
"owner": "NuschtOS",
|
||||||
"repo": "search",
|
"repo": "search",
|
||||||
"rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b",
|
"rev": "7d4c0fc4ffe3bd64e5630417162e9e04e64b27a4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -461,7 +459,9 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"bop-scripts": "bop-scripts",
|
"bop-scripts": "bop-scripts",
|
||||||
|
"conf-vim": "conf-vim",
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
|
"edit-alternate-vim": "edit-alternate-vim",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"git-repo-updater": "git-repo-updater",
|
"git-repo-updater": "git-repo-updater",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
|
|
@ -473,9 +473,11 @@
|
||||||
"nixvim": "nixvim",
|
"nixvim": "nixvim",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"rwxrob-dot": "rwxrob-dot",
|
"rwxrob-dot": "rwxrob-dot",
|
||||||
|
"standard-vim": "standard-vim",
|
||||||
|
"vim-heritage": "vim-heritage",
|
||||||
"vim-textobj-xmlattr": "vim-textobj-xmlattr",
|
"vim-textobj-xmlattr": "vim-textobj-xmlattr",
|
||||||
"voidrice": "voidrice",
|
"voidrice": "voidrice",
|
||||||
"z": "z"
|
"zet": "zet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rwxrob-dot": {
|
"rwxrob-dot": {
|
||||||
|
|
@ -494,6 +496,22 @@
|
||||||
"type": "github"
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
|
|
@ -539,6 +557,22 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"vim-heritage": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1716350150,
|
||||||
|
"narHash": "sha256-YzqP2+Go8bW3heFyzzcS/91LrMkwjpZ89+ptrjjBKrM=",
|
||||||
|
"owner": "jessarcher",
|
||||||
|
"repo": "vim-heritage",
|
||||||
|
"rev": "574baeb0679681a710adce5110a0d8b2ae1c2637",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "jessarcher",
|
||||||
|
"repo": "vim-heritage",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"vim-textobj-xmlattr": {
|
"vim-textobj-xmlattr": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
@ -571,28 +605,20 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"z": {
|
"zet": {
|
||||||
"inputs": {
|
"flake": false,
|
||||||
"devshell": "devshell_2",
|
|
||||||
"flake-parts": [
|
|
||||||
"flake-parts"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762731584,
|
"lastModified": 1760382896,
|
||||||
"narHash": "sha256-qSN44lGSceoqkUeksXbEAcGPeTf9yJBGQMWafh8cZuw=",
|
"narHash": "sha256-VMYs159/oGaA7bSYDRlIY6VgwevpyKeZ2Xxj96IAdMo=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "184accfd1fadb9580f2af8873ce0f2a70eeb8b49",
|
"rev": "6763ab8a805a352bf6e8a9ee6de9e57957a87e33",
|
||||||
"revCount": 165,
|
"revCount": 74,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.oliverdavies.uk/opdavies/z"
|
"url": "https://code.oliverdavies.uk/opdavies/cmd-zet"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.oliverdavies.uk/opdavies/z"
|
"url": "https://code.oliverdavies.uk/opdavies/cmd-zet"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
29
flake.nix
29
flake.nix
|
|
@ -10,18 +10,28 @@
|
||||||
url = "github:breadonpenguins/scripts";
|
url = "github:breadonpenguins/scripts";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
conf-vim = {
|
||||||
|
flake = false;
|
||||||
|
url = "github:tjdevries/conf.vim";
|
||||||
|
};
|
||||||
|
|
||||||
disko = {
|
disko = {
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "github:nix-community/disko";
|
url = "github:nix-community/disko";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
edit-alternate-vim = {
|
||||||
|
flake = false;
|
||||||
|
url = "github:tjdevries/edit_alternate.vim";
|
||||||
|
};
|
||||||
|
|
||||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||||
|
|
||||||
git-repo-updater = {
|
git-repo-updater = {
|
||||||
inputs.flake-parts.follows = "flake-parts";
|
inputs.flake-parts.follows = "flake-parts";
|
||||||
inputs.import-tree.follows = "import-tree";
|
inputs.import-tree.follows = "import-tree";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "git+https://git.oliverdavies.uk/opdavies/git-repo-updater";
|
url = "git+https://code.oliverdavies.uk/opdavies/git-repo-updater";
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
|
|
@ -58,6 +68,16 @@
|
||||||
url = "github:rwxrob/dot";
|
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 = {
|
vim-textobj-xmlattr = {
|
||||||
flake = false;
|
flake = false;
|
||||||
url = "github:whatyouhide/vim-textobj-xmlattr";
|
url = "github:whatyouhide/vim-textobj-xmlattr";
|
||||||
|
|
@ -68,10 +88,9 @@
|
||||||
url = "github:lukesmithxyz/voidrice";
|
url = "github:lukesmithxyz/voidrice";
|
||||||
};
|
};
|
||||||
|
|
||||||
z = {
|
zet = {
|
||||||
inputs.flake-parts.follows = "flake-parts";
|
flake = false;
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
url = "git+https://code.oliverdavies.uk/opdavies/cmd-zet";
|
||||||
url = "git+https://git.oliverdavies.uk/opdavies/z";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,7 @@
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
{
|
{ inputs, pkgs, ... }:
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
|
@ -24,7 +19,12 @@
|
||||||
../../users/opdavies.nix
|
../../users/opdavies.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
services.logind.settings.Login.HandleLidSwitchExternalPower = "ignore";
|
# TODO: why didn't it work when adding this to jitsi.nix?
|
||||||
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
|
"jitsi-meet-1.0.8043"
|
||||||
|
];
|
||||||
|
|
||||||
|
services.logind.lidSwitchExternalPower = "ignore";
|
||||||
|
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@
|
||||||
services = {
|
services = {
|
||||||
audiobookshelf.enable = true;
|
audiobookshelf.enable = true;
|
||||||
home-assistant.enable = true;
|
home-assistant.enable = true;
|
||||||
freshrss.enable = true;
|
homepage-dashboard.enable = true;
|
||||||
|
jitsi.enable = true;
|
||||||
paperless.enable = true;
|
paperless.enable = true;
|
||||||
peertube.enable = true;
|
peertube.enable = true;
|
||||||
tubearchivist.enable = true;
|
tubearchivist.enable = true;
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,6 @@
|
||||||
"code"
|
"code"
|
||||||
"eric"
|
"eric"
|
||||||
"florida-drupalcamp-tailwind-css"
|
"florida-drupalcamp-tailwind-css"
|
||||||
"freshrss"
|
|
||||||
"git"
|
|
||||||
"home"
|
"home"
|
||||||
"jellyfin"
|
"jellyfin"
|
||||||
"luke"
|
"luke"
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,26 @@ in
|
||||||
default = "audiobookshelf.${homelab.domain}";
|
default = "audiobookshelf.${homelab.domain}";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
homepage.name = mkOption {
|
||||||
|
default = "Audiobookshelf";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "Self-hosted audiobook and podcast server";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "audiobookshelf";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "Media";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
service = "pihole";
|
service = "pihole";
|
||||||
port = config.homelab.ports.services.${service};
|
port = config.homelab.ports.${service};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
virtualisation.oci-containers.containers.${service} = {
|
virtualisation.oci-containers.containers.${service} = {
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ let
|
||||||
service = "tubearchivist";
|
service = "tubearchivist";
|
||||||
homelab = config.homelab;
|
homelab = config.homelab;
|
||||||
|
|
||||||
port = homelab.ports.services.${service};
|
port = homelab.ports.${service};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.homelab.services.${service} = {
|
options.homelab.services.${service} = {
|
||||||
|
|
@ -23,6 +23,26 @@ in
|
||||||
default = "${service}.${homelab.domain}";
|
default = "${service}.${homelab.domain}";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
homepage.name = mkOption {
|
||||||
|
default = "Tube Archivist";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "Your self hosted YouTube media server";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "tube-archivist";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "Media";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
@ -33,7 +53,6 @@ in
|
||||||
|
|
||||||
virtualisation.oci-containers.containers."archivist-es" = {
|
virtualisation.oci-containers.containers."archivist-es" = {
|
||||||
image = "bbilly1/tubearchivist-es";
|
image = "bbilly1/tubearchivist-es";
|
||||||
pull = "newer";
|
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
"ES_JAVA_OPTS" = "-Xms1g -Xmx1g";
|
"ES_JAVA_OPTS" = "-Xms1g -Xmx1g";
|
||||||
|
|
@ -136,7 +155,6 @@ in
|
||||||
|
|
||||||
virtualisation.oci-containers.containers."tubearchivist" = {
|
virtualisation.oci-containers.containers."tubearchivist" = {
|
||||||
image = "bbilly1/tubearchivist";
|
image = "bbilly1/tubearchivist";
|
||||||
pull = "newer";
|
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
"ES_URL" = "http://archivist-es:9200";
|
"ES_URL" = "http://archivist-es:9200";
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,10 @@ with lib;
|
||||||
./cloudflared.nix
|
./cloudflared.nix
|
||||||
./containers
|
./containers
|
||||||
./forgejo.nix
|
./forgejo.nix
|
||||||
./freshrss.nix
|
|
||||||
./home-assistant.nix
|
./home-assistant.nix
|
||||||
./immich.nix
|
./immich.nix
|
||||||
./jellyfin.nix
|
./jellyfin.nix
|
||||||
|
./jitsi.nix
|
||||||
./nginx
|
./nginx
|
||||||
./paperless.nix
|
./paperless.nix
|
||||||
./peertube.nix
|
./peertube.nix
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
server = {
|
server = {
|
||||||
DOMAIN = "git.oliverdavies.uk";
|
DOMAIN = "code.oliverdavies.uk";
|
||||||
LANDING_PAGE = "explore";
|
LANDING_PAGE = "explore";
|
||||||
ROOT_URL = "https://${config.services.forgejo.settings.server.DOMAIN}";
|
ROOT_URL = "https://${config.services.forgejo.settings.server.DOMAIN}";
|
||||||
SSH_DOMAIN = "ssh.oliverdavies.uk";
|
SSH_DOMAIN = "ssh.oliverdavies.uk";
|
||||||
|
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib)
|
|
||||||
mkEnableOption
|
|
||||||
mkIf
|
|
||||||
mkOption
|
|
||||||
types
|
|
||||||
;
|
|
||||||
|
|
||||||
cfg = homelab.services.${service};
|
|
||||||
homelab = config.homelab;
|
|
||||||
service = "freshrss";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.homelab.services.${service} = {
|
|
||||||
enable = mkEnableOption "Enable ${service}";
|
|
||||||
|
|
||||||
url = mkOption {
|
|
||||||
default = "freshrss.${homelab.domain}";
|
|
||||||
type = types.str;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
services = {
|
|
||||||
${service} = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
baseUrl = "https://${cfg.url}";
|
|
||||||
passwordFile = config.age.secrets.freshrss-password-file.path;
|
|
||||||
virtualHost = cfg.url;
|
|
||||||
};
|
|
||||||
|
|
||||||
nginx.virtualHosts.${cfg.url} = {
|
|
||||||
useACMEHost = homelab.domain;
|
|
||||||
forceSSL = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -15,6 +15,26 @@ in
|
||||||
default = "home.${homelab.domain}";
|
default = "home.${homelab.domain}";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
homepage.name = mkOption {
|
||||||
|
default = "Home Assisant";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "Open source home automation that puts local control and privacy first.";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "home-assistant";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "Services";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
services.jellyfin = {
|
services.jellyfin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
configDir = "/mnt/media/jellyfin";
|
||||||
group = "media";
|
group = "media";
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
41
hosts/nixedo/modules/jitsi.nix
Normal file
41
hosts/nixedo/modules/jitsi.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.homelab.services.${service};
|
||||||
|
homelab = config.homelab;
|
||||||
|
service = "jitsi";
|
||||||
|
|
||||||
|
inherit (lib) mkEnableOption mkOption types;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.homelab.services.${service} = {
|
||||||
|
enable = mkEnableOption "Enable ${service}";
|
||||||
|
|
||||||
|
url = mkOption {
|
||||||
|
default = "meet.${homelab.domain}";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services = {
|
||||||
|
jitsi-meet = {
|
||||||
|
enable = false;
|
||||||
|
|
||||||
|
hostName = cfg.url;
|
||||||
|
|
||||||
|
secureDomain.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nginx.virtualHosts.${cfg.url} = {
|
||||||
|
enableACME = false;
|
||||||
|
forceSSL = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
cloudflared.tunnels.${homelab.cloudflared.tunnelId}.ingress = {
|
||||||
|
# TODO: is this the correct port?
|
||||||
|
${cfg.url} = "http://localhost:5280";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -51,8 +51,5 @@ in
|
||||||
|
|
||||||
users.users.${config.services.nginx.user}.extraGroups = [ "acme" ];
|
users.users.${config.services.nginx.user}.extraGroups = [ "acme" ];
|
||||||
|
|
||||||
imports = [
|
imports = [ ./www.oliverdavies.uk ];
|
||||||
./oliverdavies.uk
|
|
||||||
./ponthirtaekwondo.co.uk.nix
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
name = "ponthirtaekwondo.co.uk";
|
|
||||||
ports = config.homelab.ports;
|
|
||||||
port = ports.nginx.ponthir-taekwondo;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
security.acme.certs = {
|
|
||||||
"ponthirtaekwondo.co.uk" = {
|
|
||||||
domain = "ponthirtaekwondo.co.uk";
|
|
||||||
dnsProvider = "cloudflare";
|
|
||||||
email = "oliver@oliverdavies.uk";
|
|
||||||
environmentFile = config.age.secrets.cloudflare.path;
|
|
||||||
webroot = null;
|
|
||||||
|
|
||||||
extraDomainNames = [
|
|
||||||
"www.ponthirtaekwondo.co.uk"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
nginx.virtualHosts = {
|
|
||||||
"www.${name}" = {
|
|
||||||
root = "/var/www/vhosts/${name}";
|
|
||||||
|
|
||||||
listen = [
|
|
||||||
{
|
|
||||||
inherit port;
|
|
||||||
|
|
||||||
addr = "localhost";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
locations."/".tryFiles = "$uri $uri.html $uri/index.html =404";
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
port_in_redirect off;
|
|
||||||
|
|
||||||
# Remove trailing slashes.
|
|
||||||
rewrite ^/(.*)/$ /$1 permanent;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466".ingress = {
|
|
||||||
"www.ponthirtaekwondo.co.uk" = "http://localhost:${toString port}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -5,7 +5,7 @@ let
|
||||||
name: overrides:
|
name: overrides:
|
||||||
let
|
let
|
||||||
root = "/var/www/vhosts/${name}" + (overrides.rootSuffix or "");
|
root = "/var/www/vhosts/${name}" + (overrides.rootSuffix or "");
|
||||||
port = ports.nginx.${name};
|
port = ports."nginx-${name}";
|
||||||
url = "${name}.oliverdavies.uk";
|
url = "${name}.oliverdavies.uk";
|
||||||
in
|
in
|
||||||
{ inherit port root url; } // overrides;
|
{ inherit port root url; } // overrides;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
let
|
let
|
||||||
ports = config.homelab.ports;
|
ports = config.homelab.ports;
|
||||||
port = ports.nginx.website-sculpin;
|
port = ports.nginx-website-sculpin;
|
||||||
|
|
||||||
redirects = builtins.concatStringsSep "\n" (
|
redirects = builtins.concatStringsSep "\n" (
|
||||||
map (r: "rewrite ^${r.from}/?$ ${r.to} redirect;") (import ./redirects.nix)
|
map (r: "rewrite ^${r.from}/?$ ${r.to} redirect;") (import ./redirects.nix)
|
||||||
|
|
@ -26,7 +26,7 @@ let
|
||||||
"themes/custom/opdavies"
|
"themes/custom/opdavies"
|
||||||
];
|
];
|
||||||
|
|
||||||
port = ports.nginx.website-tome;
|
port = ports.nginx-website-tome;
|
||||||
};
|
};
|
||||||
|
|
||||||
tomeLocations = builtins.listToAttrs (
|
tomeLocations = builtins.listToAttrs (
|
||||||
|
|
@ -15,6 +15,26 @@ in
|
||||||
default = "${service}.${homelab.domain}";
|
default = "${service}.${homelab.domain}";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
homepage.name = mkOption {
|
||||||
|
default = "Paperless-ngx";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "Document management system";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "paperless";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "Services";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,26 @@ in
|
||||||
default = "videos.${homelab.domain}";
|
default = "videos.${homelab.domain}";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
homepage.name = mkOption {
|
||||||
|
default = "Peertube";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "A free and open-source, decentralized, ActivityPub federated video platform";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "peertube";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "Media";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
||||||
|
|
@ -6,37 +6,33 @@ in
|
||||||
{
|
{
|
||||||
options.homelab.ports = mkOption {
|
options.homelab.ports = mkOption {
|
||||||
internal = true;
|
internal = true;
|
||||||
type = types.attrsOf (types.attrsOf types.port);
|
type = types.attrsOf types.port;
|
||||||
};
|
};
|
||||||
|
|
||||||
config.homelab.ports = {
|
config.homelab.ports = {
|
||||||
services = {
|
homepage-dashboard = 8097;
|
||||||
mealie = 9001;
|
mealie = 9001;
|
||||||
pihole = 8082;
|
pihole = 8082;
|
||||||
tubearchivist = 8099;
|
tubearchivist = 8099;
|
||||||
vaultwarden = 8022;
|
vaultwarden = 8022;
|
||||||
};
|
|
||||||
|
|
||||||
nginx = {
|
nginx-website-sculpin = 8095;
|
||||||
website-sculpin = 8095;
|
nginx-website-tome = 8098;
|
||||||
website-tome = 8098;
|
|
||||||
|
|
||||||
books = 9002;
|
nginx-books = 9002;
|
||||||
bootstrap-with-tailwind = 8081;
|
nginx-bootstrap-with-tailwind = 8081;
|
||||||
eric = 8084;
|
nginx-eric = 8084;
|
||||||
examples = 9003;
|
nginx-examples = 9003;
|
||||||
florida-drupalcamp-tailwind-css = 8083;
|
nginx-florida-drupalcamp-tailwind-css = 8083;
|
||||||
luke = 8094;
|
nginx-luke = 8094;
|
||||||
phpsw-sculpin-demo = 8085;
|
nginx-phpsw-sculpin-demo = 8085;
|
||||||
ponthir-taekwondo = 9004;
|
nginx-rebuilding-acquia = 8086;
|
||||||
rebuilding-acquia = 8086;
|
nginx-rebuilding-bartik = 8087;
|
||||||
rebuilding-bartik = 8087;
|
nginx-rebuilding-bristol-js = 8088;
|
||||||
rebuilding-bristol-js = 8088;
|
nginx-rebuilding-symfony = 8089;
|
||||||
rebuilding-symfony = 8089;
|
nginx-tailwindcss-demo = 8090;
|
||||||
tailwindcss-demo = 8090;
|
nginx-talking-drupal-tailwindcss = 8093;
|
||||||
talking-drupal-tailwindcss = 8093;
|
nginx-wp-tailwind = 8091;
|
||||||
wp-tailwind = 8091;
|
nginx-zet = 8092;
|
||||||
zet = 8092;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,5 @@
|
||||||
age.secrets = {
|
age.secrets = {
|
||||||
cloudflare.file = ../../secrets/cloudflare.age;
|
cloudflare.file = ../../secrets/cloudflare.age;
|
||||||
cloudflared.file = ../../secrets/cloudflared-credentials.age;
|
cloudflared.file = ../../secrets/cloudflared-credentials.age;
|
||||||
freshrss-password-file.file = ../../secrets/freshrss-password-file.age;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./homepage
|
||||||
|
./mastodon.nix
|
||||||
./mealie.nix
|
./mealie.nix
|
||||||
./samba.nix
|
./samba.nix
|
||||||
./uptime-kuma.nix
|
./uptime-kuma.nix
|
||||||
|
|
|
||||||
63
hosts/nixedo/services/homepage/default.nix
Normal file
63
hosts/nixedo/services/homepage/default.nix
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = homelab.services.${service};
|
||||||
|
homelab = config.homelab;
|
||||||
|
service = "homepage-dashboard";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.homelab.services.${service} = {
|
||||||
|
enable = mkEnableOption "Enable ${service}";
|
||||||
|
|
||||||
|
url = mkOption {
|
||||||
|
default = "${config.networking.hostName}.${homelab.domain}";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services = {
|
||||||
|
${service} = {
|
||||||
|
enable = true;
|
||||||
|
listenPort = homelab.ports.${service};
|
||||||
|
openFirewall = true;
|
||||||
|
|
||||||
|
customCSS = ''
|
||||||
|
#information-widgets {
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
padding-right: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#footer {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.services-group {
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
services = (import ./services.nix { inherit config lib; });
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
headerStyle = "clean";
|
||||||
|
hideVersion = "true";
|
||||||
|
layout = (import ./layout.nix);
|
||||||
|
statusStyle = "dot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
glances.enable = true;
|
||||||
|
|
||||||
|
nginx.virtualHosts.${cfg.url} = {
|
||||||
|
forceSSL = true;
|
||||||
|
useACMEHost = homelab.domain;
|
||||||
|
|
||||||
|
locations."/".proxyPass =
|
||||||
|
"http://localhost:${toString config.services.homepage-dashboard.listenPort}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
57
hosts/nixedo/services/homepage/glances.nix
Normal file
57
hosts/nixedo/services/homepage/glances.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
{ config }:
|
||||||
|
|
||||||
|
{
|
||||||
|
Glances =
|
||||||
|
let
|
||||||
|
port = toString config.services.glances.port;
|
||||||
|
in
|
||||||
|
[
|
||||||
|
{
|
||||||
|
Info = {
|
||||||
|
widget = {
|
||||||
|
type = "glances";
|
||||||
|
url = "http://localhost:${port}";
|
||||||
|
metric = "info";
|
||||||
|
chart = false;
|
||||||
|
version = 4;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
"CPU Temp" = {
|
||||||
|
widget = {
|
||||||
|
type = "glances";
|
||||||
|
url = "http://localhost:${port}";
|
||||||
|
metric = "sensor:Package id 0";
|
||||||
|
chart = false;
|
||||||
|
version = 4;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Processes = {
|
||||||
|
widget = {
|
||||||
|
type = "glances";
|
||||||
|
url = "http://localhost:${port}";
|
||||||
|
metric = "process";
|
||||||
|
chart = false;
|
||||||
|
version = 4;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Network = {
|
||||||
|
widget = {
|
||||||
|
type = "glances";
|
||||||
|
url = "http://localhost:${port}";
|
||||||
|
metric = "network:enp0s20f0u1";
|
||||||
|
chart = false;
|
||||||
|
version = 4;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
23
hosts/nixedo/services/homepage/layout.nix
Normal file
23
hosts/nixedo/services/homepage/layout.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
Glances = {
|
||||||
|
columns = 4;
|
||||||
|
header = false;
|
||||||
|
style = "row";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Media = {
|
||||||
|
header = true;
|
||||||
|
style = "column";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Services = {
|
||||||
|
header = true;
|
||||||
|
style = "column";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
]
|
||||||
32
hosts/nixedo/services/homepage/services.nix
Normal file
32
hosts/nixedo/services/homepage/services.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{ config, lib }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
homelab = config.homelab.services;
|
||||||
|
|
||||||
|
homepageCategories = [
|
||||||
|
"Media"
|
||||||
|
"Services"
|
||||||
|
];
|
||||||
|
|
||||||
|
homepageServices =
|
||||||
|
category:
|
||||||
|
(attrsets.filterAttrs (
|
||||||
|
name: value: value ? homepage && value.homepage.category == category
|
||||||
|
) homelab);
|
||||||
|
|
||||||
|
services = lists.forEach homepageCategories (cat: {
|
||||||
|
"${cat}" =
|
||||||
|
lib.lists.forEach (lib.attrsets.mapAttrsToList (name: value: name) (homepageServices "${cat}"))
|
||||||
|
(x: {
|
||||||
|
"${homelab.${x}.homepage.name}" = {
|
||||||
|
icon = homelab.${x}.homepage.icon;
|
||||||
|
description = homelab.${x}.homepage.description;
|
||||||
|
href = "https://${homelab.${x}.url}";
|
||||||
|
siteMonitor = "https://${homelab.${x}.url}";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
in
|
||||||
|
services ++ [ (import ./glances.nix { inherit config; }) ]
|
||||||
84
hosts/nixedo/services/mastodon.nix
Normal file
84
hosts/nixedo/services/mastodon.nix
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.homelab.services.${service};
|
||||||
|
domain = "oliverdavies.uk";
|
||||||
|
service = "mastodon";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.homelab.services.${service} = {
|
||||||
|
url = mkOption {
|
||||||
|
default = "social.${domain}";
|
||||||
|
internal = true;
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
services = {
|
||||||
|
${service} = {
|
||||||
|
enable = false;
|
||||||
|
|
||||||
|
configureNginx = false;
|
||||||
|
localDomain = domain;
|
||||||
|
streamingProcesses = 3;
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
SINGLE_USER_MODE = "true";
|
||||||
|
WEB_DOMAIN = cfg.url;
|
||||||
|
};
|
||||||
|
|
||||||
|
smtp = {
|
||||||
|
fromAddress = "social@${domain}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
cloudflared.tunnels.${config.homelab.cloudflared.tunnelId} = {
|
||||||
|
ingress = {
|
||||||
|
"${cfg.url}" = "http://localhost";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nginx = {
|
||||||
|
upstreams.mastodon-streaming = {
|
||||||
|
extraConfig = ''
|
||||||
|
least_conn;
|
||||||
|
'';
|
||||||
|
|
||||||
|
servers = builtins.listToAttrs (
|
||||||
|
map (i: {
|
||||||
|
name = "unix:/run/mastodon-streaming/streaming-${toString i}.socket";
|
||||||
|
value = { };
|
||||||
|
}) (range 1 config.services.mastodon.streamingProcesses)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualHosts."social.oliverdavies.uk" = {
|
||||||
|
root = "${config.services.mastodon.package}/public/";
|
||||||
|
|
||||||
|
locations = {
|
||||||
|
"/".tryFiles = "$uri @proxy";
|
||||||
|
|
||||||
|
"/api/v1/streaming/" = {
|
||||||
|
proxyPass = "http://mastodon-streaming";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"/system/".alias = "/var/lib/mastodon/public-system/";
|
||||||
|
|
||||||
|
"@proxy" = {
|
||||||
|
proxyPass = "http://unix:/run/mastodon-web/web.socket";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 100m;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -10,7 +10,7 @@ in
|
||||||
|
|
||||||
database.createLocally = true;
|
database.createLocally = true;
|
||||||
|
|
||||||
port = ports.services.mealie;
|
port = ports.mealie;
|
||||||
|
|
||||||
settings.ALLOW_SIGNUP = "false";
|
settings.ALLOW_SIGNUP = "false";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,26 @@ in
|
||||||
default = "uptime.${homelab.domain}";
|
default = "uptime.${homelab.domain}";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
homepage.name = mkOption {
|
||||||
|
default = "Uptime Kuma";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "A fancy self-hosted monitoring tool";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "uptime-kuma";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "Services";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ in
|
||||||
config = {
|
config = {
|
||||||
DOMAIN = "https://${cfg.url}";
|
DOMAIN = "https://${cfg.url}";
|
||||||
ROCKET_ADDRESS = "127.0.0.1";
|
ROCKET_ADDRESS = "127.0.0.1";
|
||||||
ROCKET_PORT = homelab.ports.services.${service};
|
ROCKET_PORT = homelab.ports.${service};
|
||||||
SIGNUPS_ALLOWED = false;
|
SIGNUPS_ALLOWED = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./cron.nix
|
./cron.nix
|
||||||
./neomutt.nix
|
./neomutt.nix
|
||||||
|
./newsboat
|
||||||
./secrets.nix
|
./secrets.nix
|
||||||
./xserver.nix
|
./xserver.nix
|
||||||
|
|
||||||
|
|
@ -94,10 +95,4 @@
|
||||||
xsel
|
xsel
|
||||||
yt-dlp
|
yt-dlp
|
||||||
];
|
];
|
||||||
|
|
||||||
services.logind.settings.Login = {
|
|
||||||
HandleLidSwitch = "supend-then-hibernate";
|
|
||||||
HandleLidSwitchExternalPower = "ignore";
|
|
||||||
HandlePowerKey = "supend-then-hibernate";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
systemCronJobs = [
|
systemCronJobs = [
|
||||||
"*/15 * * * * opdavies ${pkgs.imapfilter}/bin/imapfilter -c ~/Repos/git.oliverdavies.uk/opdavies/email-filters/config.lua"
|
"*/15 * * * * opdavies ${pkgs.imapfilter}/bin/imapfilter -c ~/Repos/code.oliverdavies.uk/opdavies/email-filters/config.lua"
|
||||||
"0 8,20 * * * opdavies ${pkgs.isync}/bin/mbsync -a"
|
"0 8,20 * * * opdavies ${pkgs.isync}/bin/mbsync -a"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
30
hosts/t480/newsboat/default.nix
Normal file
30
hosts/t480/newsboat/default.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
home-manager.users.opdavies.programs.newsboat = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
bind-key j down
|
||||||
|
bind-key k up
|
||||||
|
|
||||||
|
bind-key j next articlelist
|
||||||
|
bind-key k prev articlelist
|
||||||
|
bind-key J next-feed articlelist
|
||||||
|
bind-key K prev-feed articlelist
|
||||||
|
|
||||||
|
bind-key g home
|
||||||
|
bind-key G end
|
||||||
|
|
||||||
|
bind-key d pagedown
|
||||||
|
bind-key u pageup
|
||||||
|
|
||||||
|
bind-key a toggle-article-read
|
||||||
|
bind-key n next-unread
|
||||||
|
bind-key N prev-unread
|
||||||
|
bind-key x pb-delete
|
||||||
|
|
||||||
|
color info white black bold
|
||||||
|
'';
|
||||||
|
|
||||||
|
urls = import ./urls.nix;
|
||||||
|
};
|
||||||
|
}
|
||||||
298
hosts/t480/newsboat/urls.nix
Normal file
298
hosts/t480/newsboat/urls.nix
Normal file
|
|
@ -0,0 +1,298 @@
|
||||||
|
[
|
||||||
|
{ url = "https://www.reddit.com/r/nginx/new/.rss"; }
|
||||||
|
{ url = "https://www.reddit.com/r/devops/.rss"; }
|
||||||
|
{ url = "https://medium.com/feed/@bdfinst"; }
|
||||||
|
{ url = "https://blog.system76.com/rss"; }
|
||||||
|
{ url = "https://medium.com/feed/@codemonkeymike"; }
|
||||||
|
{ url = "https://www.reddit.com/r/devops/new/.rss"; }
|
||||||
|
{ url = "https://www.reddit.com/r/sysadmin/.rss"; }
|
||||||
|
{
|
||||||
|
url = "https://www.carlpullein.com/blog?format=RSS";
|
||||||
|
title = "Carl Pullein";
|
||||||
|
tags = [ "Productivity" ];
|
||||||
|
}
|
||||||
|
{ url = "https://feeds.feedburner.com/Faildesk"; }
|
||||||
|
{ url = "https://syndication.thedailywtf.com/TheDailyWtf"; }
|
||||||
|
{ url = "https://www.sherdog.com/rss/videos2.xml"; }
|
||||||
|
{
|
||||||
|
url = "https://www.reddit.com/r/MMA/.rss";
|
||||||
|
tags = [ "MMA" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://mmaweekly.com/feed/rss";
|
||||||
|
tags = [ "MMA" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.sherdog.com/rss/news2.xml";
|
||||||
|
tags = [ "MMA" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.sherdog.com/rss/articles2.xml";
|
||||||
|
tags = [ "MMA" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.ufc.com/rss/news";
|
||||||
|
tags = [ "MMA" ];
|
||||||
|
}
|
||||||
|
{ url = "https://www.theregister.co.uk/headlines.atom"; }
|
||||||
|
{
|
||||||
|
url = "https://www.rbs6nations.com/en/RssLatestNews.xml";
|
||||||
|
tags = [ "Rugby" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://feeds.feedburner.com/rugbydump";
|
||||||
|
tags = [ "Rugby" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.telegraph.co.uk/sport/rugbyunion/rss";
|
||||||
|
tags = [ "Rugby" ];
|
||||||
|
}
|
||||||
|
{ url = "https://code.facebook.com/posts/rss"; }
|
||||||
|
{ url = "https://nginx.com/feed/rss"; }
|
||||||
|
{
|
||||||
|
url = "https://www.lornajane.net/feed";
|
||||||
|
tags = [ "Software" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://nginx.org/index.rss";
|
||||||
|
tags = [ "Software" ];
|
||||||
|
}
|
||||||
|
{ url = "https://www.engadget.com/rss.xml"; }
|
||||||
|
{ url = "https://rss.slashdot.org/Slashdot/slashdotIt"; }
|
||||||
|
{ url = "https://lwn.net/headlines/newrss"; }
|
||||||
|
{ url = "https://rss.slashdot.org/Slashdot/slashdotLinux"; }
|
||||||
|
{
|
||||||
|
url = "https://blog.sebastian-daschner.com/feeds/rss";
|
||||||
|
title = "Sebastian Daschner";
|
||||||
|
}
|
||||||
|
{ url = "https://www.reddit.com/r/linux/.rss"; }
|
||||||
|
{ url = "https://githubengineering.com/atom.xml"; }
|
||||||
|
{ url = "https://rss.slashdot.org/Slashdot/slashdotDevelopers"; }
|
||||||
|
{ url = "https://www.alistapart.com/rss.xml"; }
|
||||||
|
{ url = "https://www.christitus.com/index.xml"; }
|
||||||
|
{ url = "https://www.freeagentcentral.com/feed.rss"; }
|
||||||
|
{ url = "https://akrabat.com/feed Software"; }
|
||||||
|
{ url = "https://jasonmccreary.me/feed.atom"; }
|
||||||
|
{ url = "https://martinfowler.com/bliki/bliki.atom"; }
|
||||||
|
{ url = "https://lornajane.net/feed"; }
|
||||||
|
{ url = "https://christoph-rumpel.com/feed.xml"; }
|
||||||
|
{ url = "https://gdstechnology.blog.gov.uk/feed/atom"; }
|
||||||
|
{ url = "https://weierophinney.net/matthew/feeds/index.rss2"; }
|
||||||
|
{ url = "https://stitcher.io/rss"; }
|
||||||
|
{ url = "https://www.reddit.com/r/css.rss"; }
|
||||||
|
{ url = "https://www.reddit.com/r/PHP/.rss"; }
|
||||||
|
{ url = "https://whateverthing.com/atom.xml"; }
|
||||||
|
{ url = "https://mnapoli.fr/atom.xml"; }
|
||||||
|
{ url = "https://www.epicweb.dev/rss.xml?ck_subscriber_id=2498091571"; }
|
||||||
|
{ url = "https://dev.to/feed"; }
|
||||||
|
{ url = "https://localheinz.com/feed.xml"; }
|
||||||
|
{ url = "https://www.ben-morris.com/feed"; }
|
||||||
|
{ url = "https://www.jbrains.ca/rss"; }
|
||||||
|
{ url = "https://blog.thecodewhisperer.com/rss"; }
|
||||||
|
{ url = "https://odan.github.io/feed.xml"; }
|
||||||
|
{ url = "https://feeds.feedburner.com/symfony/blog"; }
|
||||||
|
{ url = "https://www.alwaysagileconsulting.com/feed"; }
|
||||||
|
{ url = "https://blog.sensiolabs.com/feed"; }
|
||||||
|
{ url = "https://pascalbaljetmedia.com/rss"; }
|
||||||
|
{ url = "https://tighten.co/blog/feed.atom"; }
|
||||||
|
{ url = "https://ryangjchandler.co.uk/feed"; }
|
||||||
|
{ url = "https://jnsgr.uk/posts/index.xml"; }
|
||||||
|
{ url = "https://timacdonald.me/feed.xml"; }
|
||||||
|
{ url = "https://phppot.com/feed"; }
|
||||||
|
{ url = "https://howtocodewell.libsyn.com/rss"; }
|
||||||
|
{ url = "https://ctankersley.com/atom.xml"; }
|
||||||
|
{ url = "https://blog.wyrihaximus.net/atom.xml"; }
|
||||||
|
{ url = "https://dotfyle.com/this-week-in-neovim/rss.xml"; }
|
||||||
|
{ url = "https://paul-m-jones.com/feed"; }
|
||||||
|
{ url = "https://www.tomasvotruba.cz/rss.xml"; }
|
||||||
|
{ url = "https://www.reddit.com/r/git/.rss"; }
|
||||||
|
{ url = "https://www.daveismyname.com/feed"; }
|
||||||
|
{
|
||||||
|
url = "https://murze.be/feed/php";
|
||||||
|
title = "freek.dev";
|
||||||
|
tags = [
|
||||||
|
"PHP"
|
||||||
|
"Laravel"
|
||||||
|
"Software"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ url = "https://nikic.github.io/rss.xml"; }
|
||||||
|
{
|
||||||
|
url = "https://drupal.org/planet/rss.xml";
|
||||||
|
tags = [ "Drupal" ];
|
||||||
|
}
|
||||||
|
{ url = "https://www.bram.us/feed"; }
|
||||||
|
{ url = "https://feeds.feedburner.com/GiantRobotsSmashingIntoOtherGiantRobots"; }
|
||||||
|
{ url = "https://murze.be/feed/originals"; }
|
||||||
|
{ url = "https://www.patkua.com/feed"; }
|
||||||
|
{ url = "https://www.benjystanton.co.uk/feed.xml"; }
|
||||||
|
{
|
||||||
|
url = "https://drupal.org/security/rss.xml";
|
||||||
|
tags = [ "Drupal" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://uk.indeed.com/rss?q=symfony&l=np18";
|
||||||
|
tags = [ "Jobs" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://uk.indeed.com/rss?q=php&l=np18";
|
||||||
|
tags = [ "Jobs" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://jobs.drupal.org/all-jobs/feed";
|
||||||
|
tags = [ "Jobs" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.reed.co.uk/jobs/rss/np18?source=rss&keywords=drupal&salaryfrom=50000&sortby=DisplayDate";
|
||||||
|
tags = [ "Jobs" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.reed.co.uk/jobs/rss/np18?source=rss&keywords=php&salaryfrom=50000&sortby=DisplayDate";
|
||||||
|
tags = [ "Jobs" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://uk.indeed.com/rss?q=drupal&l=np18";
|
||||||
|
tags = [ "Jobs" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.reed.co.uk/jobs/rss/np18?source=rss&keywords=symfony&salaryfrom=50000&sortby=DisplayDate";
|
||||||
|
tags = [ "Jobs" ];
|
||||||
|
}
|
||||||
|
{ url = "https://emilywebber.co.uk/feed"; }
|
||||||
|
{ url = "https://introvertdear.com/feed"; }
|
||||||
|
{ url = "https://designli.co/blog/feed"; }
|
||||||
|
{ url = "https://www.oliverdavies.uk/rss/daily.xml"; }
|
||||||
|
{
|
||||||
|
url = "https://www.drupal.org/project/issues/rss/override_node_options";
|
||||||
|
tags = [ "Drupal" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.drupal.org/project/issues/rss/tailwindcss";
|
||||||
|
tags = [ "Drupal" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://nixos.org/blog/announcements-rss.xml";
|
||||||
|
tags = [ "Linux" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://laracasts.com/feed";
|
||||||
|
tags = [
|
||||||
|
"PHP"
|
||||||
|
"Laravel"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://feeds.feedburner.com/knpuniversity";
|
||||||
|
title = "SymfonyCasts";
|
||||||
|
tags = [
|
||||||
|
"PHP"
|
||||||
|
"Symfony"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://nickjanetakis.com/atom.xml";
|
||||||
|
title = "Nick Janetakis";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.learnlinux.tv/feed";
|
||||||
|
tags = [ "Linux" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://tailwindcss.com/feeds/feed.xml";
|
||||||
|
tags = [
|
||||||
|
"Software"
|
||||||
|
"CSS"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://monospacementor.com/feed";
|
||||||
|
tags = [
|
||||||
|
"Linux"
|
||||||
|
"Software"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://frontendmasters.com/blog/feed";
|
||||||
|
tags = [ "Software" ];
|
||||||
|
title = "Frontend Masters Boost";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.youtube.com/feeds/videos.xml?channel_id=UC2aHRY064THg_t7JZoGSYGg";
|
||||||
|
title = "YouTube - elysse";
|
||||||
|
tags = [
|
||||||
|
"Software"
|
||||||
|
"YouTube"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCSUA5RARrNt4-Ik3qtbETLQ";
|
||||||
|
title = "YouTube - Jason Swett";
|
||||||
|
tags = [
|
||||||
|
"Software"
|
||||||
|
"YouTube"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCorzANoC3fX9VVefJHM5wtA";
|
||||||
|
title = "~YouTube - Nick Janetakis";
|
||||||
|
tags = [
|
||||||
|
"Software"
|
||||||
|
"YouTube"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ url = "https://devenv.sh/feed_rss_created.xml"; }
|
||||||
|
{ url = "https://sive.rs/en.atom"; }
|
||||||
|
{ url = "https://kressle.in/feed.xml"; }
|
||||||
|
{
|
||||||
|
url = "https://github.com/sculpin/sculpin/releases.atom";
|
||||||
|
tags = [
|
||||||
|
"PHP"
|
||||||
|
"Sculpin"
|
||||||
|
"Open Source"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ url = "https://www.theminimalists.com/feed"; }
|
||||||
|
{ url = "https://opensourcepledge.com/rss.xml"; }
|
||||||
|
{
|
||||||
|
url = "https://feeds.bbci.co.uk/sport/rugby-union/teams/ng-dragons/rss.xml";
|
||||||
|
tags = [ "Rugby" ];
|
||||||
|
title = "BBC Sport - Dragons RFC";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://openrss.org/www.twitch.tv/thealtf4stream/videos?filter=all&sort=time";
|
||||||
|
tags = [ "Twitch" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://openrss.org/www.twitch.tv/theprimeagen/videos?filter=all&sort=time";
|
||||||
|
tags = [ "Twitch" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://openrss.org/www.twitch.tv/teej_dv/videos?filter=all&sort=time";
|
||||||
|
tags = [ "Twitch" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://openrss.org/www.twitch.tv/monospacementor/videos?filter=all&sort=time";
|
||||||
|
tags = [ "Twitch" ];
|
||||||
|
}
|
||||||
|
{ url = "https://www.reddit.com/r/librewolf/new/.rss"; }
|
||||||
|
{
|
||||||
|
url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCSJKQnpmPcdkysduL0mNktg";
|
||||||
|
title = "YouTube - teej_daily";
|
||||||
|
tags = [
|
||||||
|
"Software"
|
||||||
|
"YouTube"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://feeds.bbci.co.uk/sport/rugby-union/rss.xml";
|
||||||
|
tags = [ "Rugby" ];
|
||||||
|
title = "BBC Sport - Rugby Union";
|
||||||
|
}
|
||||||
|
{ url = "https://tinkerbetter.tube/feeds/videos.xml?videoChannelId=2"; }
|
||||||
|
{ url = "https://video.fosshq.org/feeds/videos.xml?videoChannelId=2"; }
|
||||||
|
{
|
||||||
|
url = "https://www.garfieldtech.com/blog/feed";
|
||||||
|
tags = [ "PHP" ];
|
||||||
|
}
|
||||||
|
{ url = "https://world.hey.com/dhh/feed.atom"; }
|
||||||
|
]
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "dmenu_mpv";
|
|
||||||
|
|
||||||
text = ''
|
|
||||||
selected="$(find "$HOME/Videos" -type f | dmenu -i -l 15)"
|
|
||||||
|
|
||||||
if [[ -n "$selected" ]]; then
|
|
||||||
mpv --fs --speed=1.5 "$selected" >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
runtimeInputs = with pkgs; [
|
|
||||||
dmenu
|
|
||||||
mpv
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cp $src/shortcuts-menus/sys $out/bin/${pname}
|
cp $src/${pname} $out/bin
|
||||||
chmod +x $out/bin/${pname}
|
chmod +x $out/bin/${pname}
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
cp $src/statusbar/timer $out/bin/${pname}
|
cp $src/${pname} $out/bin
|
||||||
chmod +x $out/bin/${pname}
|
chmod +x $out/bin/${pname}
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "dmenu_tmux";
|
|
||||||
|
|
||||||
text = ''
|
|
||||||
selected="$(z tmux list | dmenu -l 40)" || exit 0
|
|
||||||
|
|
||||||
if tmux list-sessions >/dev/null 2>&1; then
|
|
||||||
if pgrep -x st >/dev/null; then
|
|
||||||
z tmux connect "$selected"
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
pkill -x st 2>/dev/null || true
|
|
||||||
sleep 0.1
|
|
||||||
|
|
||||||
exec st -e z tmux connect "$selected"
|
|
||||||
'';
|
|
||||||
|
|
||||||
runtimeInputs = with pkgs; [
|
|
||||||
dmenu
|
|
||||||
inputs.z.packages.${pkgs.stdenv.hostPlatform.system}.default
|
|
||||||
st
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
flake.modules.nixos.base =
|
flake.modules.nixos.base =
|
||||||
{ pkgs, ... }:
|
{ system, ... }:
|
||||||
{
|
{
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
inputs.git-repo-updater.packages.${pkgs.stdenv.hostPlatform.system}.default
|
inputs.git-repo-updater.packages.${system}.default
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
{
|
{
|
||||||
flake.modules.homeManager.base.programs.git = {
|
flake.modules.homeManager.base.programs.git.aliases = {
|
||||||
settings.aliases = {
|
|
||||||
aa = "add --all";
|
aa = "add --all";
|
||||||
assume = "update-index --assume-unchanged";
|
assume = "update-index --assume-unchanged";
|
||||||
assumed = "!git ls-files -v | grep '^[hsmrck?]' | cut -c 3-";
|
assumed = "!git ls-files -v | grep '^[hsmrck?]' | cut -c 3-";
|
||||||
|
|
@ -48,5 +47,4 @@
|
||||||
ureset = "!git reset --hard $(git upstream)";
|
ureset = "!git reset --hard $(git upstream)";
|
||||||
worktrees = "worktree list";
|
worktrees = "worktree list";
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
flake.modules.homeManager.base =
|
flake.modules.homeManager.base =
|
||||||
{ config, ... }:
|
{ config, ... }:
|
||||||
{
|
{
|
||||||
programs.git.settings = {
|
programs.git.extraConfig = {
|
||||||
branch = {
|
branch = {
|
||||||
autosetupmerge = true;
|
autosetupmerge = true;
|
||||||
autosetuprebase = "always";
|
autosetuprebase = "always";
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,7 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
flake.modules.homeManager.base.programs.git = {
|
flake.modules.homeManager.base.programs.git = {
|
||||||
settings.user = {
|
userName = config.flake.meta.owner.name;
|
||||||
email = config.flake.meta.owner.email;
|
userEmail = config.flake.meta.owner.email;
|
||||||
name = config.flake.meta.owner.name;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
modules/hosts/t480/ollama.nix
Normal file
3
modules/hosts/t480/ollama.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
flake.modules.nixos.desktop.services.ollama.enable = false;
|
||||||
|
}
|
||||||
5
modules/hosts/t480/open-webui.nix
Normal file
5
modules/hosts/t480/open-webui.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
nixpkgs.allowedUnfreePackages = [ "open-webui" ];
|
||||||
|
|
||||||
|
flake.modules.nixos.desktop.services.open-webui.enable = false;
|
||||||
|
}
|
||||||
|
|
@ -5,21 +5,21 @@
|
||||||
)
|
)
|
||||||
|
|
||||||
(defvar
|
(defvar
|
||||||
|
tap-time 150
|
||||||
hold-time 200
|
hold-time 200
|
||||||
hold-time-slow 300
|
hold-time-slow 300
|
||||||
tap-time 150
|
|
||||||
)
|
)
|
||||||
|
|
||||||
(defalias
|
(defalias
|
||||||
escctrl (tap-hold 100 100 esc lctl)
|
escctrl (tap-hold 100 100 esc lctl)
|
||||||
a (tap-hold $tap-time $hold-time-slow a lsft)
|
a (tap-hold $tap-time $hold-time-slow a lmet)
|
||||||
s (tap-hold $tap-time $hold-time-slow s lalt)
|
s (tap-hold $tap-time $hold-time-slow s lalt)
|
||||||
d (tap-hold $tap-time $hold-time d lctl)
|
d (tap-hold $tap-time $hold-time d lsft)
|
||||||
f (tap-hold $tap-time $hold-time f lmet)
|
f (tap-hold $tap-time $hold-time f lctl)
|
||||||
j (tap-hold $tap-time $hold-time j rmet)
|
j (tap-hold $tap-time $hold-time j rctl)
|
||||||
k (tap-hold $tap-time $hold-time k rctl)
|
k (tap-hold $tap-time $hold-time k rsft)
|
||||||
l (tap-hold $tap-time $hold-time-slow l ralt)
|
l (tap-hold $tap-time $hold-time-slow l ralt)
|
||||||
; (tap-hold $tap-time $hold-time-slow ; rsft)
|
; (tap-hold $tap-time $hold-time-slow ; rmet)
|
||||||
)
|
)
|
||||||
|
|
||||||
(deflayer base
|
(deflayer base
|
||||||
|
|
|
||||||
21
modules/nixvim/auto-save.nix
Normal file
21
modules/nixvim/auto-save.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
flake.modules.nixvim.custom.plugins.auto-save = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings.condition = ''
|
||||||
|
function(buf)
|
||||||
|
local excluded_filetypes = {}
|
||||||
|
|
||||||
|
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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,39 @@
|
||||||
return {
|
return {
|
||||||
s("home_packages", fmta("home.packages = with pkgs; [ <> ];", i(0))),
|
s("home_packages", fmta("home.packages = with pkgs; [ <> ];", i(0))),
|
||||||
|
|
||||||
|
s(
|
||||||
|
"homepage_options",
|
||||||
|
fmta(
|
||||||
|
[[
|
||||||
|
homepage.name = mkOption {
|
||||||
|
default = "<name>";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "<description>";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "<icon>";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "<finish>";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
]],
|
||||||
|
{
|
||||||
|
description = i(2),
|
||||||
|
finish = i(0),
|
||||||
|
icon = i(3),
|
||||||
|
name = i(1),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
s(
|
s(
|
||||||
"imports",
|
"imports",
|
||||||
fmta(
|
fmta(
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@
|
||||||
module = "php";
|
module = "php";
|
||||||
neon = "yaml";
|
neon = "yaml";
|
||||||
pcss = "scss";
|
pcss = "scss";
|
||||||
tf = "terraform";
|
|
||||||
theme = "php";
|
theme = "php";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
action = "<cmd>silent !tmux new-window start-tmux<CR>";
|
action = "<cmd>silent !tmux new-window tmux-sessionizer<CR>";
|
||||||
key = "<C-f>";
|
key = "<C-f>";
|
||||||
options.silent = true;
|
options.silent = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.nixvim.custom.lsp.servers.terraformls.enable = true;
|
|
||||||
}
|
|
||||||
|
|
@ -1,24 +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 = "<cmd>Oil<CR>";
|
|
||||||
key = "-";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.nixvim.custom.plugins.qmk = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
layout = [
|
|
||||||
"x x x x x _ _ _ _ _ _ _ _ _ x x x x x"
|
|
||||||
"x x x x x x _ _ _ _ _ _ _ x x x x x x"
|
|
||||||
"x x x x x x _ _ _ _ _ _ _ x x x x x x"
|
|
||||||
"x x x x x x _ _ _ _ _ _ _ x x x x x x"
|
|
||||||
"x x x x x x x x x _ x x x x x x x x x"
|
|
||||||
"x x x x x _ x x x _ x x x _ x x x x x"
|
|
||||||
];
|
|
||||||
name = "LAYOUT_glove80";
|
|
||||||
variant = "zmk";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -11,7 +11,6 @@
|
||||||
comment
|
comment
|
||||||
css
|
css
|
||||||
csv
|
csv
|
||||||
devicetree
|
|
||||||
dockerfile
|
dockerfile
|
||||||
gitattributes
|
gitattributes
|
||||||
gitignore
|
gitignore
|
||||||
|
|
@ -42,10 +41,7 @@
|
||||||
yaml
|
yaml
|
||||||
];
|
];
|
||||||
|
|
||||||
settings = {
|
settings.highlight.enable = true;
|
||||||
highlight.enable = true;
|
|
||||||
indent.enable = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
treesitter-textobjects.enable = true;
|
treesitter-textobjects.enable = true;
|
||||||
|
|
|
||||||
34
modules/scripts/add-weight.nix
Normal file
34
modules/scripts/add-weight.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
{ 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/notes/2-areas/health-fitness/weight.csv"
|
||||||
|
|
||||||
|
weight
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
flake.modules.homeManager.base =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
62
modules/scripts/build-adoc.nix
Normal file
62
modules/scripts/build-adoc.nix
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
{
|
||||||
|
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
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
16
modules/scripts/build.nix
Normal file
16
modules/scripts/build.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
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 "$@"
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
runtimeInputs = with pkgs; [
|
runtimeInputs = with pkgs; [
|
||||||
git
|
git
|
||||||
psArgs.config.packages.start-tmux
|
psArgs.config.packages.tmux-sessionizer
|
||||||
];
|
];
|
||||||
|
|
||||||
text = ''
|
text = ''
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
domain="''${BASH_REMATCH[2]}"
|
domain="''${BASH_REMATCH[2]}"
|
||||||
|
|
||||||
if [[ "$domain" == "ssh.oliverdavies.uk" ]]; then
|
if [[ "$domain" == "ssh.oliverdavies.uk" ]]; then
|
||||||
domain="git.oliverdavies.uk"
|
domain="code.oliverdavies.uk"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
user="''${BASH_REMATCH[3]}"
|
user="''${BASH_REMATCH[3]}"
|
||||||
|
|
@ -29,13 +29,13 @@
|
||||||
user_path="$XDG_REPOS_DIR/$domain/$user"
|
user_path="$XDG_REPOS_DIR/$domain/$user"
|
||||||
repo_path="$user_path/$name"
|
repo_path="$user_path/$name"
|
||||||
|
|
||||||
[[ -d "$repo_path" ]] && start-tmux "$repo_path" && exit 0
|
[[ -d "$repo_path" ]] && tmux-sessionizer "$repo_path" && exit 0
|
||||||
|
|
||||||
mkdir -pv "$repo_path"
|
mkdir -pv "$repo_path"
|
||||||
|
|
||||||
git clone "$repo_url" "$repo_path"
|
git clone "$repo_url" "$repo_path"
|
||||||
|
|
||||||
start-tmux "$repo_path"
|
tmux-sessionizer "$repo_path"
|
||||||
else
|
else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.clone))
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.clone))
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ in
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
35
modules/scripts/hnow.nix
Normal file
35
modules/scripts/hnow.nix
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{ 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}))
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
32
modules/scripts/now.nix
Normal file
32
modules/scripts/now.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{ 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}))
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -29,7 +29,7 @@ in
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ in
|
||||||
text = ''
|
text = ''
|
||||||
repo_url=$(git remote get-url origin | sed -E 's#(git|forgejo)@([A-Za-z0-9.-]+):#https://\2/#;s#.git$##')
|
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/git.oliverdavies.uk}"
|
repo_url="''${repo_url//ssh.oliverdavies.uk/code.oliverdavies.uk}"
|
||||||
|
|
||||||
xdg-open "$repo_url"
|
xdg-open "$repo_url"
|
||||||
'';
|
'';
|
||||||
|
|
@ -26,7 +26,7 @@ in
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ in
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ in
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ in
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
];
|
];
|
||||||
|
|
||||||
home.sessionVariables.SKILLS_FILE = "${config.home.sessionVariables.NOTES_DIRECTORY}/2-areas/skills.csv";
|
home.sessionVariables.SKILLS_FILE = "${config.home.sessionVariables.NOTES_DIRECTORY}/2-areas/skills.csv";
|
||||||
|
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
{ inputs, withSystem, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
name = "start-tmux";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
perSystem =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
packages.${name} = pkgs.writeShellApplication {
|
|
||||||
inherit name;
|
|
||||||
|
|
||||||
runtimeInputs = with pkgs; [
|
|
||||||
fzf
|
|
||||||
inputs.z.packages.${pkgs.stdenv.hostPlatform.system}.default
|
|
||||||
];
|
|
||||||
|
|
||||||
text = ''
|
|
||||||
selected="$(z tmux list | fzf)"
|
|
||||||
|
|
||||||
[[ -n $selected ]] && z tmux connect "$selected"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
flake.modules.homeManager.base =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
{ withSystem, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
name = "tmux-default-startup";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
perSystem =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
packages.${name} = pkgs.writeShellApplication {
|
|
||||||
inherit name;
|
|
||||||
|
|
||||||
text = ''
|
|
||||||
if [[ -x "$PWD/.tmux-sessionizer" ]]; then
|
|
||||||
"$PWD/.tmux-sessionizer"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -x "$PWD/.tmux" ]]; then
|
|
||||||
"$PWD/.tmux"
|
|
||||||
fi
|
|
||||||
|
|
||||||
tmux new-window -d -n scratch
|
|
||||||
|
|
||||||
"$EDITOR"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
flake.modules.homeManager.base =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
30
modules/scripts/tmux-sessionizer/default.nix
Normal file
30
modules/scripts/tmux-sessionizer/default.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -83,7 +83,7 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.tmux-sessionizer))
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.tmux-sessionizer))
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ in
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ in
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
34
modules/scripts/todo.nix
Normal file
34
modules/scripts/todo.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
{ withSystem, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
name = "todo";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
perSystem =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
packages.${name} = pkgs.writeShellApplication {
|
||||||
|
inherit name;
|
||||||
|
|
||||||
|
runtimeInputs = with pkgs; [ coreutils ];
|
||||||
|
|
||||||
|
text = ''
|
||||||
|
"$EDITOR" +3 "$TODO_FILE"
|
||||||
|
cd "$NOTES_DIRECTORY"
|
||||||
|
git add "$TODO_FILE"
|
||||||
|
git commit -m "Update TODOs"
|
||||||
|
git push
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
flake.modules.homeManager.base =
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
|
];
|
||||||
|
|
||||||
|
home.sessionVariables.TODO_FILE = "${config.home.sessionVariables.NOTES_DIRECTORY}/todo.adoc";
|
||||||
|
};
|
||||||
|
}
|
||||||
28
modules/scripts/weight.nix
Normal file
28
modules/scripts/weight.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{ withSystem, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
name = "weight";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
perSystem =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
packages.${name} = pkgs.writeShellApplication {
|
||||||
|
inherit name;
|
||||||
|
|
||||||
|
runtimeInputs = with pkgs; [
|
||||||
|
coreutils
|
||||||
|
];
|
||||||
|
|
||||||
|
text = ''tail "$XDG_DOCUMENTS_DIR/notes/2-areas/health-fitness/weight.csv"'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
flake.modules.homeManager.base =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
38
modules/scripts/zet.nix
Normal file
38
modules/scripts/zet.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
{ inputs, withSystem, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
name = "zet";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
perSystem =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
packages.${name} = pkgs.buildGoModule {
|
||||||
|
inherit name;
|
||||||
|
|
||||||
|
runtimeInputs = with pkgs; [
|
||||||
|
git
|
||||||
|
];
|
||||||
|
|
||||||
|
src = inputs.zet;
|
||||||
|
|
||||||
|
vendorHash = "sha256-pprnK2JKmPuR3Q+F8+vMDEdowlb3oX4BOOzW8NGOqgs=";
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
mv $out/bin/cmd-${name} $out/bin/${name}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
flake.modules.homeManager.base =
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(withSystem pkgs.system (psArgs: psArgs.config.packages.${name}))
|
||||||
|
];
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
ZET_DIRECTORY = "${config.home.sessionVariables.NOTES_DIRECTORY}/${name}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
358
modules/st.nix
358
modules/st.nix
|
|
@ -3,7 +3,363 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
st
|
(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=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
flake.modules.nixos.pc = {
|
flake.modules.nixos.pc = {
|
||||||
|
security.sudo-rs.enable = true;
|
||||||
|
|
||||||
users.users.${config.flake.meta.owner.username}.extraGroups = [ "wheel" ];
|
users.users.${config.flake.meta.owner.username}.extraGroups = [ "wheel" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,6 @@
|
||||||
"super + shift + i" =
|
"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)";
|
"${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 + shift + p" = "${lib.getExe pkgs.passmenu-otp} -i";
|
||||||
"super + shift + t" = "dmenu_tmux";
|
|
||||||
"super + shift + v" = "dmenu_mpv";
|
|
||||||
"super + x; {1, 2, 3, 4}" = "st {notes, newsboat, nmtui, bluetuith}";
|
"super + x; {1, 2, 3, 4}" = "st {notes, newsboat, nmtui, bluetuith}";
|
||||||
"{_, shift +, super +}XF86MonBrightness{Down,Up}" =
|
"{_, shift +, super +}XF86MonBrightness{Down,Up}" =
|
||||||
"${lib.getExe pkgs.brightnessctl} set {5%-,10%-,10%,+5%,+10%,100%} --quiet";
|
"${lib.getExe pkgs.brightnessctl} set {5%-,10%-,10%,+5%,+10%,100%} --quiet";
|
||||||
|
|
|
||||||
|
|
@ -61,8 +61,7 @@
|
||||||
bind k select-pane -U
|
bind k select-pane -U
|
||||||
bind l select-pane -R
|
bind l select-pane -R
|
||||||
|
|
||||||
bind-key -r f run-shell "tmux new-window start-tmux"
|
bind-key -r f run-shell "tmux new-window tmux-sessionizer"
|
||||||
bind-key -r g run-shell "tmux new-window open-repo-url"
|
|
||||||
|
|
||||||
bind-key -r D new-window -c "#{pane_current_path}" "[[ -e TODO.md ]] && nvim TODO.md || nvim ~/Documents/notes/todo.txt"
|
bind-key -r D new-window -c "#{pane_current_path}" "[[ -e TODO.md ]] && nvim TODO.md || nvim ~/Documents/notes/todo.txt"
|
||||||
bind-key -r W split-window -h -c ~/Documents/notes "nvim '+Telescope find_files'"
|
bind-key -r W split-window -h -c ~/Documents/notes "nvim '+Telescope find_files'"
|
||||||
|
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
{ inputs, withSystem, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
name = "z";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
perSystem =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
packages.${name} = inputs.${name}.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
|
||||||
};
|
|
||||||
|
|
||||||
flake.modules.homeManager.base =
|
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(withSystem pkgs.stdenv.hostPlatform.system (psArgs: psArgs.config.packages.${name}))
|
|
||||||
];
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
ZET_DIRECTORY = "${config.home.sessionVariables.NOTES_DIRECTORY}/zet";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
g = "git";
|
g = "git";
|
||||||
ga = "git add";
|
ga = "git add";
|
||||||
gan = "git add -N";
|
gan = "git add -N";
|
||||||
gap = "git add -p";
|
gap = "git add . -p";
|
||||||
gb = "git branch";
|
gb = "git branch";
|
||||||
gba = "git branch --all";
|
gba = "git branch --all";
|
||||||
gbl = "git blame";
|
gbl = "git blame";
|
||||||
|
|
@ -39,16 +39,16 @@
|
||||||
gcm = "git commit -m";
|
gcm = "git commit -m";
|
||||||
gco = "git checkout";
|
gco = "git checkout";
|
||||||
gcob = "git checkout -b";
|
gcob = "git checkout -b";
|
||||||
gd = "git diff";
|
gd = "git diff .";
|
||||||
gds = "git diff --staged";
|
gds = "git diff . --staged";
|
||||||
gf = "git fetch";
|
gf = "git fetch";
|
||||||
gfa = "git fetch --all";
|
gfa = "git fetch --all";
|
||||||
gl = "git log";
|
gl = "git log";
|
||||||
glg = "git log --grep";
|
glg = "git log --grep .";
|
||||||
glo = "git log --oneline";
|
glo = "git log --oneline .";
|
||||||
glog = "git log --oneline --grep";
|
glog = "git log --oneline --grep .";
|
||||||
glos = "git log --oneline -S";
|
glos = "git log --oneline -S .";
|
||||||
gls = "git log -S";
|
gls = "git log . -S";
|
||||||
gm = "git merge";
|
gm = "git merge";
|
||||||
gmf = "git merge --ff";
|
gmf = "git merge --ff";
|
||||||
gmnf = "git merge --no-ff";
|
gmnf = "git merge --no-ff";
|
||||||
|
|
@ -67,9 +67,9 @@
|
||||||
gra = "git rebase --abort";
|
gra = "git rebase --abort";
|
||||||
grc = "git rebase --continue";
|
grc = "git rebase --continue";
|
||||||
gri = "git rebase -i";
|
gri = "git rebase -i";
|
||||||
gs = "git status";
|
gs = "git status .";
|
||||||
gsh = "git show";
|
gsh = "git show .";
|
||||||
gst = "git stash";
|
gst = "git stash .";
|
||||||
gstp = "git stash pop";
|
gstp = "git stash pop";
|
||||||
gt = "git tag";
|
gt = "git tag";
|
||||||
|
|
||||||
|
|
@ -131,7 +131,6 @@
|
||||||
rduli = "run drush uli";
|
rduli = "run drush uli";
|
||||||
rdup = "run drush updatedb -y";
|
rdup = "run drush updatedb -y";
|
||||||
rpub = "run publish";
|
rpub = "run publish";
|
||||||
rs = "run switch";
|
|
||||||
rt = "run test";
|
rt = "run test";
|
||||||
|
|
||||||
nah = "git reset --hard; git clean -fd";
|
nah = "git reset --hard; git clean -fd";
|
||||||
|
|
@ -169,8 +168,5 @@
|
||||||
sgsp = "vendor/bin/sculpin generate --server --port";
|
sgsp = "vendor/bin/sculpin generate --server --port";
|
||||||
sgsw = "vendor/bin/sculpin generate --server --watch";
|
sgsw = "vendor/bin/sculpin generate --server --watch";
|
||||||
sgswp = "vendor/bin/sculpin generate --server --watch --port";
|
sgswp = "vendor/bin/sculpin generate --server --watch --port";
|
||||||
|
|
||||||
mnf = "man fzf";
|
|
||||||
mnt = "man tmux";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,14 +9,11 @@
|
||||||
"..." = "cd ../..";
|
"..." = "cd ../..";
|
||||||
"...." = "cd ../../..";
|
"...." = "cd ../../..";
|
||||||
"....." = "cd ../../../..";
|
"....." = "cd ../../../..";
|
||||||
build = "z build";
|
|
||||||
chmox = "chmod +x";
|
chmox = "chmod +x";
|
||||||
run = "./run";
|
run = "./run";
|
||||||
tag = "tag-release";
|
tag = "tag-release";
|
||||||
todo = "z todo";
|
|
||||||
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";
|
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";
|
wt = "git worktree";
|
||||||
zet = "z zet";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,8 @@
|
||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
flake.modules.homeManager.base =
|
flake.modules.homeManager.base =
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
{
|
{
|
||||||
programs.zsh.initContent = ''
|
programs.zsh.initContent = ''
|
||||||
# Completions
|
|
||||||
source <(z completion zsh)
|
|
||||||
|
|
||||||
background() {
|
background() {
|
||||||
for ((i=2;i<=$#;i++)); do
|
for ((i=2;i<=$#;i++)); do
|
||||||
''${@[1]} ''${@[$i]} &> /dev/null &
|
''${@[1]} ''${@[$i]} &> /dev/null &
|
||||||
|
|
@ -49,10 +44,6 @@
|
||||||
command ${pkgs.ttyper}/bin/ttyper --language english1000 --words 50 "''${@}"
|
command ${pkgs.ttyper}/bin/ttyper --language english1000 --words 50 "''${@}"
|
||||||
}
|
}
|
||||||
|
|
||||||
watchexec() {
|
|
||||||
${lib.getExe pkgs.watchexec} --clear "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
weather() {
|
weather() {
|
||||||
curl "https://wttr.in/''$1"
|
curl "https://wttr.in/''$1"
|
||||||
}
|
}
|
||||||
|
|
@ -61,19 +52,13 @@
|
||||||
command yt-dlp --paths ~/Videos "$@"
|
command yt-dlp --paths ~/Videos "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
bindkey -s ^f "start-tmux\n"
|
bindkey -s ^f "tmux-sessionizer\n"
|
||||||
bindkey -s ^g "open-repo-url\n"
|
|
||||||
bindkey -s ^v "nvim\n"
|
bindkey -s ^v "nvim\n"
|
||||||
|
|
||||||
setopt auto_cd
|
setopt auto_cd
|
||||||
setopt auto_pushd
|
setopt auto_pushd
|
||||||
setopt pushd_ignore_dups
|
setopt pushd_ignore_dups
|
||||||
setopt pushdminus
|
setopt pushdminus
|
||||||
|
|
||||||
autoload -U edit-command-line
|
|
||||||
bindkey '^x^e' edit-command-line
|
|
||||||
bindkey '^xe' edit-command-line
|
|
||||||
zle -N edit-command-line
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
Running Neovim as a package:
|
Running Neovim as a package:
|
||||||
|
|
||||||
nix run .#neovim
|
nix run .#neovim
|
||||||
nix run git+https://git.oliverdavies.uk/opdavies/nix-config#neovim
|
nix run git+https://code.oliverdavies.uk/opdavies/nix-config#neovim
|
||||||
|
|
||||||
nixos-rebuild --flake .#nixedo --target-host 192.168.1.116 --sudo test
|
nixos-rebuild --flake .#nixedo --target-host 192.168.1.116 --sudo test
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
modifications = final: prev: {
|
modifications = final: prev: {
|
||||||
dwm = import ./mods/dwm { inherit prev; };
|
dwm = import ./mods/dwm { inherit prev; };
|
||||||
st = import ./mods/st { inherit prev; };
|
|
||||||
};
|
};
|
||||||
|
|
||||||
stable-packages = final: _prev: {
|
stable-packages = final: _prev: {
|
||||||
|
|
|
||||||
|
|
@ -1,362 +0,0 @@
|
||||||
{ prev, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (prev) lib;
|
|
||||||
in
|
|
||||||
prev.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 = with prev; [
|
|
||||||
(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=";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -28,6 +28,7 @@ in
|
||||||
tag-release = callPackage ./tag-release.nix { };
|
tag-release = callPackage ./tag-release.nix { };
|
||||||
time-until = callPackage ./time-until.nix { };
|
time-until = callPackage ./time-until.nix { };
|
||||||
timer = callPackage ./timer.nix { };
|
timer = callPackage ./timer.nix { };
|
||||||
|
tmux-sessionizer = callPackage ./tmux-sessionizer { };
|
||||||
unmounter = callPackage ./unmounter.nix { };
|
unmounter = callPackage ./unmounter.nix { };
|
||||||
update-all-git-repos = callPackage ./update-all-git-repos.nix { };
|
update-all-git-repos = callPackage ./update-all-git-repos.nix { };
|
||||||
vic = callPackage ./vic.nix { inherit inputs; };
|
vic = callPackage ./vic.nix { inherit inputs; };
|
||||||
|
|
|
||||||
|
|
@ -25,11 +25,6 @@ in
|
||||||
]
|
]
|
||||||
++ [ users.opdavies ];
|
++ [ users.opdavies ];
|
||||||
|
|
||||||
"secrets/freshrss-password-file.age".publicKeys = [
|
|
||||||
hosts.nixedo
|
|
||||||
]
|
|
||||||
++ [ users.opdavies ];
|
|
||||||
|
|
||||||
"secrets/peertube-env.age".publicKeys = [
|
"secrets/peertube-env.age".publicKeys = [
|
||||||
hosts.nixedo
|
hosts.nixedo
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 IsVD3g qUcQuqnQVqFEa3pMKA4MCAGvBdkU55wUc9QL+CV7bEg
|
|
||||||
xFsrPc+7aZBg4AQscuf4uI+NkjHW+iDtx9+lIFGhwvM
|
|
||||||
-> ssh-rsa +vTWQw
|
|
||||||
ZsahI21WKpNepuhJFCxRLJmfJaY8ZarIlLXTyhEzPwZ8OISpHfJ4gkgk42AMFZrq
|
|
||||||
s+Pr1zYx74EZ/VhfuxkvLCTekhW5aT9fk+NsGOZwuddywTjkgoKg8JzaMTXcTJxp
|
|
||||||
uFYNfGlIUgn94SrnisJP/sNztdjluGz4fEhBo99WJb6KabHtWLllUwEkzwDeKbT4
|
|
||||||
hFvCp3ZupjHi/8bb2faAu5CJ82C1bAuHGqhlgJvhdFgi+VMinGl9zUYkQNY12O+O
|
|
||||||
z8zo5KxtNofzhkM3+Z8Xcnz1C5VaZNHtzvIDXVwA7CTuhc0H1a5uEN8keqBhN0dR
|
|
||||||
YdU4WiINZcDBq0+A6Aou+TxBZE+IQ+hLQJVuZMch6oBznP6IigD3ugbrVoQtzDGf
|
|
||||||
mdw87IXFB/tDMMSaT567XJoN7hECoZVqVc6pZKZgGZpmsScBpJBBAqSo6TLpzbsy
|
|
||||||
/u5AhuiWBZZylaJlX6OrNAwobAbs07scJyufdEJ48ga8dVQI0OHiBphJbq92nGKt
|
|
||||||
iBHW6nzjgfb4fe93LXaSAT66ffM3j5DOTx6DUkMZnHg0OqUIikWwRLBrLs1bC2oL
|
|
||||||
1YXJICCbRdA0cW1DnTGtsjBTYwv3IKk3jvYD6XEJYpBXKJC8Uqx3pV/dxuwFrrLV
|
|
||||||
Rk9U+RmwKmJasqiYFHuYJhEdPbxWT4YPgDwcHpD3vA4
|
|
||||||
--- kD476dnm+Q4VMK9oHU4wIz6JciDtOS7LKik6Q2JgDdA
|
|
||||||
˜Õb'H±n±?w°²ë@½—D-7Ê‚F"Aj üxU<1D>â{4dšâò6âý¥¹O¯P5
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue