Compare commits
No commits in common. "main" and "2025-06-06-16.53.43" have entirely different histories.
main
...
2025-06-06
434 changed files with 4824 additions and 5622 deletions
|
@ -1,90 +0,0 @@
|
||||||
name: update-inputs
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "0 6 * * 2,5" # Tue & Fri
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-flake-lock:
|
|
||||||
runs-on: nixos
|
|
||||||
|
|
||||||
env:
|
|
||||||
BASE_BRANCH: main
|
|
||||||
BRANCH_PREFIX: flake-lock-update
|
|
||||||
FJ_URL: https://code.oliverdavies.uk
|
|
||||||
GIT_AUTHOR_EMAIL: flake-bot@local
|
|
||||||
GIT_AUTHOR_NAME: flake-bot
|
|
||||||
GIT_COMMITTER_EMAIL: ${{ env.GIT_AUTHOR_EMAIL }}
|
|
||||||
GIT_COMMITTER_NAME: ${{ env.GIT_AUTHOR_NAME }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with: { fetch-depth: 0 }
|
|
||||||
|
|
||||||
- name: Update inputs & commit
|
|
||||||
id: bump
|
|
||||||
run: |
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
BRANCH="${BRANCH_PREFIX}-${GITHUB_RUN_ID}"
|
|
||||||
git switch -c "$BRANCH"
|
|
||||||
|
|
||||||
BEFORE=$(git rev-parse HEAD)
|
|
||||||
|
|
||||||
# Nix updates inputs and commits if needed
|
|
||||||
nix flake update --commit-lock-file
|
|
||||||
|
|
||||||
AFTER=$(git rev-parse HEAD)
|
|
||||||
if [ "$BEFORE" = "$AFTER" ]; then
|
|
||||||
echo "changed=false" >> "$GITHUB_OUTPUT"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ── Grab commit info ────────────────────────────────────────────────
|
|
||||||
# Full message
|
|
||||||
COMMIT_RAW=$(git log -1 --pretty=%B)
|
|
||||||
|
|
||||||
# First line is the short summary; we keep lines AFTER the first blank
|
|
||||||
COMMIT_BODY=$(printf '%s\n' "$COMMIT_RAW" \
|
|
||||||
| sed '1,/^$/d' \
|
|
||||||
| sed 's/^• */* /') # nicer Markdown bullet
|
|
||||||
|
|
||||||
# Title becomes first line of the PR
|
|
||||||
COMMIT_TITLE=$(printf '%s\n' "$COMMIT_RAW" | head -n1)
|
|
||||||
|
|
||||||
# JSON-escape the body so \n etc. are valid JSON
|
|
||||||
BODY_JSON=$(printf '%s' "$COMMIT_BODY" | jq -Rs .)
|
|
||||||
|
|
||||||
echo "changed=true" >> "$GITHUB_OUTPUT"
|
|
||||||
echo "branch=$BRANCH" >> "$GITHUB_OUTPUT"
|
|
||||||
echo "title=$COMMIT_TITLE" >> "$GITHUB_OUTPUT"
|
|
||||||
echo "body_json=$BODY_JSON" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
git push -u origin "$BRANCH"
|
|
||||||
|
|
||||||
- name: Open pull-request
|
|
||||||
if: steps.bump.outputs.changed == 'true'
|
|
||||||
env:
|
|
||||||
TOKEN: ${{ secrets.FLAKE_UPDATE_PAT }}
|
|
||||||
BRANCH: ${{ steps.bump.outputs.branch }}
|
|
||||||
TITLE: ${{ steps.bump.outputs.title }}
|
|
||||||
BODY_JSON: ${{ steps.bump.outputs.body_json }}
|
|
||||||
run: |
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
|
|
||||||
OWNER="${GITHUB_REPOSITORY%%/*}"
|
|
||||||
REPO="${GITHUB_REPOSITORY#*/}"
|
|
||||||
|
|
||||||
curl -fSs -X POST "$FJ_URL/api/v1/repos/$OWNER/$REPO/pulls" \
|
|
||||||
-H "Authorization: token $TOKEN" \
|
|
||||||
--json '{
|
|
||||||
"base": "'"$BASE_BRANCH"'",
|
|
||||||
"body": '"$BODY_JSON"',
|
|
||||||
"draft": false,
|
|
||||||
"head": "'"$BRANCH"'",
|
|
||||||
"title": "'"$TITLE"'"
|
|
||||||
}'
|
|
1
.ignore
1
.ignore
|
@ -1 +0,0 @@
|
||||||
.git/
|
|
1
.mailmap
1
.mailmap
|
@ -4,4 +4,3 @@ Oliver Davies <oliver@oliverdavies.uk> <oliver.davies@tfw.wales>
|
||||||
Oliver Davies <oliver@oliverdavies.uk> <oliver@microserve.io>
|
Oliver Davies <oliver@oliverdavies.uk> <oliver@microserve.io>
|
||||||
Oliver Davies <oliver@oliverdavies.uk> <oliver@oliverdavies.dev>
|
Oliver Davies <oliver@oliverdavies.uk> <oliver@oliverdavies.dev>
|
||||||
Oliver Davies <oliver@oliverdavies.uk> <opdavies@gmail.com>
|
Oliver Davies <oliver@oliverdavies.uk> <opdavies@gmail.com>
|
||||||
Oliver Davies <oliver@oliverdavies.uk> <opdavies@noreply.code.oliverdavies.uk>
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
# nix-config
|
|
||||||
|
|
||||||
Originally my `dotfiles` repository, this repository contains my NixOS and Home Manager-based configurations for my personal laptop (`t480`) and home server/homelab (`nixedo`).
|
|
429
flake.lock
generated
429
flake.lock
generated
|
@ -4,17 +4,15 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754433428,
|
"lastModified": 1747575206,
|
||||||
"narHash": "sha256-NA/FT2hVhKDftbHSwVnoRTFhes62+7dxZbxj5Gxvghs=",
|
"narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "9edb1787864c4f59ae5074ad498b6272b3ec308d",
|
"rev": "4835b1dc898959d8547a871ef484930675cb47f1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -23,38 +21,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bop-scripts": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1756931648,
|
|
||||||
"narHash": "sha256-bfAmJ1IY0B6eNbJvoWkUMQ7Ya4ShrIoVSdQrnE/cn40=",
|
|
||||||
"owner": "breadonpenguins",
|
|
||||||
"repo": "scripts",
|
|
||||||
"rev": "d04bcbe63176e623e1ce8edc4c3840c506a28d96",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "breadonpenguins",
|
|
||||||
"repo": "scripts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"conf-vim": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1507549264,
|
|
||||||
"narHash": "sha256-AjiTJsoim0BAnyfqk1IQzNsa6jhFM2+A66E7q9sJqz0=",
|
|
||||||
"owner": "tjdevries",
|
|
||||||
"repo": "conf.vim",
|
|
||||||
"rev": "a716df0fd5d7ba558c07dac2e07f05d5eba11afb",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tjdevries",
|
|
||||||
"repo": "conf.vim",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"darwin": {
|
"darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -77,27 +43,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devshell": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"git-repo-updater",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1741473158,
|
|
||||||
"narHash": "sha256-kWNaq6wQUbUMlPgw8Y+9/9wP0F8SHkjy24/mN3UAppg=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "devshell",
|
|
||||||
"rev": "7c9e793ebe66bcba8292989a68c0419b737a22a0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "devshell",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"disko": {
|
"disko": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -105,11 +50,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756733629,
|
"lastModified": 1749200714,
|
||||||
"narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=",
|
"narHash": "sha256-W8KiJIrVwmf43JOPbbTu5lzq+cmdtRqaNbOsZigjioY=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1",
|
"rev": "17d08c65c241b1d65b3ddf79e3fac1ddc870b0f6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -118,32 +63,35 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"edit-alternate-vim": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1635180789,
|
"lastModified": 1733328505,
|
||||||
"narHash": "sha256-mEKnqYAhgrdxPRoKf4S4yYecdFIHGg8bDxpqPuC1+S4=",
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
"owner": "tjdevries",
|
"owner": "edolstra",
|
||||||
"repo": "edit_alternate.vim",
|
"repo": "flake-compat",
|
||||||
"rev": "ef3019115d9bb7ffd691d2859eda213dd99e0b0a",
|
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "tjdevries",
|
"owner": "edolstra",
|
||||||
"repo": "edit_alternate.vim",
|
"repo": "flake-compat",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": [
|
||||||
|
"nixvim",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756770412,
|
"lastModified": 1743550720,
|
||||||
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
|
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "4524271976b625a4a605beefd893f270620fd751",
|
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -191,33 +139,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"git-repo-updater": {
|
|
||||||
"inputs": {
|
|
||||||
"devshell": "devshell",
|
|
||||||
"flake-parts": [
|
|
||||||
"flake-parts"
|
|
||||||
],
|
|
||||||
"import-tree": [
|
|
||||||
"import-tree"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1757018109,
|
|
||||||
"narHash": "sha256-KfRzBPOOM5cf8mFVeWjV7TGa3p+ul/flxnUdwGW4Sds=",
|
|
||||||
"ref": "refs/heads/main",
|
|
||||||
"rev": "63235768261976efe0d9c825e69c44fff8c80e5d",
|
|
||||||
"revCount": 1,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://code.oliverdavies.uk/opdavies/git-repo-updater"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://code.oliverdavies.uk/opdavies/git-repo-updater"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -246,11 +167,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756991914,
|
"lastModified": 1749221014,
|
||||||
"narHash": "sha256-4ve/3ah5H/SpL2m3qmZ9GU+VinQYp2MN1G7GamimTds=",
|
"narHash": "sha256-mqrpuP/lfyDmta5hJWTwWgdF5lwdiubcGs7oRvcTZ2s=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "b08f8737776f10920c330657bee8b95834b7a70f",
|
"rev": "96482a538e6103579d254b139759d0536177370b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -260,21 +181,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"import-tree": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1752730890,
|
|
||||||
"narHash": "sha256-GES8fapSLGz36MMPRVNkSUWXUTtqvGQNXHjRmRLfJUY=",
|
|
||||||
"owner": "vic",
|
|
||||||
"repo": "import-tree",
|
|
||||||
"rev": "6ebb8cb87987b20264c09296166543fd3761d274",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "vic",
|
|
||||||
"repo": "import-tree",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ixx": {
|
"ixx": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
"flake-utils": [
|
||||||
|
@ -289,47 +195,27 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1754860581,
|
"lastModified": 1748294338,
|
||||||
"narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=",
|
"narHash": "sha256-FVO01jdmUNArzBS7NmaktLdGA5qA3lUMJ4B7a05Iynw=",
|
||||||
"owner": "NuschtOS",
|
"owner": "NuschtOS",
|
||||||
"repo": "ixx",
|
"repo": "ixx",
|
||||||
"rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281",
|
"rev": "cc5f390f7caf265461d4aab37e98d2292ebbdb85",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NuschtOS",
|
"owner": "NuschtOS",
|
||||||
"ref": "v0.1.1",
|
"ref": "v0.0.8",
|
||||||
"repo": "ixx",
|
"repo": "ixx",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix-index-database": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1756612744,
|
|
||||||
"narHash": "sha256-/glV6VAq8Va3ghIbmhET3S1dzkbZqicsk5h+FtvwiPE=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-index-database",
|
|
||||||
"rev": "3fe768e1f058961095b4a0d7a2ba15dc9736bdc6",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-index-database",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756925795,
|
"lastModified": 1749195551,
|
||||||
"narHash": "sha256-kUb5hehaikfUvoJDEc7ngiieX88TwWX/bBRX9Ar6Tac=",
|
"narHash": "sha256-W5GKQHgunda/OP9sbKENBZhMBDNu2QahoIPwnsF6CeM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "ba6fab29768007e9f2657014a6e134637100c57d",
|
"rev": "4602f7e1d3f197b3cb540d5accf5669121629628",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -339,44 +225,49 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixos-wsl": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756787288,
|
"lastModified": 1746453552,
|
||||||
"narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=",
|
"narHash": "sha256-r66UGha+7KVHkI7ksrcMjnw/mm9Sg4l5bQlylxHwdGU=",
|
||||||
"owner": "nixos",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1",
|
"rev": "be618645aa0adf461f778500172b6896d5ab2d01",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nix-community",
|
||||||
|
"ref": "main",
|
||||||
|
"repo": "NixOS-WSL",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1745391562,
|
||||||
|
"narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1754788789,
|
|
||||||
"narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixpkgs.lib",
|
|
||||||
"rev": "a73b9c743612e4244d865a2fdee11865283c04e6",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixpkgs.lib",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1751274312,
|
"lastModified": 1748995628,
|
||||||
"narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=",
|
"narHash": "sha256-bFufQGSAEYQgjtc4wMrobS5HWN0hDP+ZX+zthYcml9U=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674",
|
"rev": "8eb3b6a2366a7095939cd22f0dc0e9991313294b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -386,11 +277,57 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742937945,
|
||||||
|
"narHash": "sha256-lWc+79eZRyvHp/SqMhHTMzZVhpxkRvthsP1Qx6UCq0E=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "d02d88f8de5b882ccdde0465d8fa2db3aa1169f7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-24.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1748929857,
|
||||||
|
"narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1748929857,
|
||||||
|
"narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixvim": {
|
"nixvim": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": [
|
"flake-parts": "flake-parts",
|
||||||
"flake-parts"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
|
@ -398,11 +335,11 @@
|
||||||
"systems": "systems_3"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756946299,
|
"lastModified": 1749200997,
|
||||||
"narHash": "sha256-N4PjGA0rittpNZGscKPel+mr/dMcKF73j0yr4rbG3T0=",
|
"narHash": "sha256-In+NjXI8kfJpamTmtytt+rnBzQ213Y9KW55IXvAAK/4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "63496f00c681b3e200bd17878a43ec68b7139a66",
|
"rev": "00524c7935f05606fd1b09e8700e9abcc4af7be8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -414,16 +351,15 @@
|
||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nixpkgs"
|
"treefmt-nix": "treefmt-nix"
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1757050467,
|
"lastModified": 1749223883,
|
||||||
"narHash": "sha256-Rps0Ga0g/TdY49rR2ZRBsdBYybSzPccEsaI9IvwuE98=",
|
"narHash": "sha256-ax8x159Jc2hoWMYJkF5D6eKu58oJo4XzLU4YSk1hZhQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "985abf0197c75dd64c24691a7e5e0acf308d7f20",
|
"rev": "2e6e71681b88ec9bc9c9914b413d1e875f8328c9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -442,11 +378,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1755555503,
|
"lastModified": 1748298102,
|
||||||
"narHash": "sha256-WiOO7GUOsJ4/DoMy2IC5InnqRDSo2U11la48vCCIjjY=",
|
"narHash": "sha256-PP11GVwUt7F4ZZi5A5+99isuq39C59CKc5u5yVisU/U=",
|
||||||
"owner": "NuschtOS",
|
"owner": "NuschtOS",
|
||||||
"repo": "search",
|
"repo": "search",
|
||||||
"rev": "6f3efef888b92e6520f10eae15b86ff537e1d2ea",
|
"rev": "f8a1c221afb8b4c642ed11ac5ee6746b0fe1d32f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -458,58 +394,14 @@
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"bop-scripts": "bop-scripts",
|
|
||||||
"conf-vim": "conf-vim",
|
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
"edit-alternate-vim": "edit-alternate-vim",
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"git-repo-updater": "git-repo-updater",
|
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
"import-tree": "import-tree",
|
|
||||||
"nix-index-database": "nix-index-database",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixos-wsl": "nixos-wsl",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"nixvim": "nixvim",
|
"nixvim": "nixvim",
|
||||||
"nur": "nur",
|
"nur": "nur"
|
||||||
"rwxrob-dot": "rwxrob-dot",
|
|
||||||
"standard-vim": "standard-vim",
|
|
||||||
"vim-heritage": "vim-heritage",
|
|
||||||
"vim-textobj-xmlattr": "vim-textobj-xmlattr",
|
|
||||||
"voidrice": "voidrice",
|
|
||||||
"zet": "zet"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rwxrob-dot": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1751898094,
|
|
||||||
"narHash": "sha256-kGpHL2l9p/yOtmG+AZvOb0Y5mH1d+Zoh2dd5N3Xjizc=",
|
|
||||||
"owner": "rwxrob",
|
|
||||||
"repo": "dot",
|
|
||||||
"rev": "90794c77061f270078e847af45c376610768c6e2",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "rwxrob",
|
|
||||||
"repo": "dot",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"standard-vim": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1539613748,
|
|
||||||
"narHash": "sha256-9VwkvV1Dv6cE4uDkPp36DozjWJOclDR883yDMYw000E=",
|
|
||||||
"owner": "tjdevries",
|
|
||||||
"repo": "standard.vim",
|
|
||||||
"rev": "b333ef9a9cf6cf66536deda017a542843613fa75",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tjdevries",
|
|
||||||
"repo": "standard.vim",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
|
@ -557,69 +449,26 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vim-heritage": {
|
"treefmt-nix": {
|
||||||
"flake": false,
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716350150,
|
"lastModified": 1733222881,
|
||||||
"narHash": "sha256-YzqP2+Go8bW3heFyzzcS/91LrMkwjpZ89+ptrjjBKrM=",
|
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
|
||||||
"owner": "jessarcher",
|
"owner": "numtide",
|
||||||
"repo": "vim-heritage",
|
"repo": "treefmt-nix",
|
||||||
"rev": "574baeb0679681a710adce5110a0d8b2ae1c2637",
|
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "jessarcher",
|
"owner": "numtide",
|
||||||
"repo": "vim-heritage",
|
"repo": "treefmt-nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"vim-textobj-xmlattr": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1464940962,
|
|
||||||
"narHash": "sha256-+91FVP95oh00flINdltqx6qJuijYo56tHIh3J098G2Q=",
|
|
||||||
"owner": "whatyouhide",
|
|
||||||
"repo": "vim-textobj-xmlattr",
|
|
||||||
"rev": "694a297f1d75fd527e87da9769f3c6519a87ebb1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "whatyouhide",
|
|
||||||
"repo": "vim-textobj-xmlattr",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"voidrice": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1744355318,
|
|
||||||
"narHash": "sha256-9U1Do0w2oT5E6uZxSKoHAzbGbSLQRQlT65KcPGzwhW8=",
|
|
||||||
"owner": "lukesmithxyz",
|
|
||||||
"repo": "voidrice",
|
|
||||||
"rev": "f853f1884a8f0c244765192dc6f5a910a7e2b8e5",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lukesmithxyz",
|
|
||||||
"repo": "voidrice",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"zet": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1758576585,
|
|
||||||
"narHash": "sha256-hWQE45nFaSN8agYMP8xt5kaUMfBXVj5k9zInZNs/xAI=",
|
|
||||||
"ref": "refs/heads/main",
|
|
||||||
"rev": "23505f6c31c7cc903e63621b52b5f92eea1facc5",
|
|
||||||
"revCount": 35,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://code.oliverdavies.uk/opdavies/zet"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://code.oliverdavies.uk/opdavies/zet"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
197
flake.nix
197
flake.nix
|
@ -1,106 +1,127 @@
|
||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
agenix = {
|
agenix.url = "github:ryantm/agenix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
url = "github:ryantm/agenix";
|
|
||||||
};
|
|
||||||
|
|
||||||
bop-scripts = {
|
disko.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
flake = false;
|
disko.url = "github:nix-community/disko";
|
||||||
url = "github:breadonpenguins/scripts";
|
|
||||||
};
|
|
||||||
|
|
||||||
conf-vim = {
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
flake = false;
|
home-manager.url = "github:nix-community/home-manager/master";
|
||||||
url = "github:tjdevries/conf.vim";
|
|
||||||
};
|
|
||||||
|
|
||||||
disko = {
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
url = "github:nix-community/disko";
|
|
||||||
};
|
|
||||||
|
|
||||||
edit-alternate-vim = {
|
|
||||||
flake = false;
|
|
||||||
url = "github:tjdevries/edit_alternate.vim";
|
|
||||||
};
|
|
||||||
|
|
||||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
|
||||||
|
|
||||||
git-repo-updater = {
|
|
||||||
inputs.flake-parts.follows = "flake-parts";
|
|
||||||
inputs.import-tree.follows = "import-tree";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
url = "git+https://code.oliverdavies.uk/opdavies/git-repo-updater";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
url = "github:nix-community/home-manager/master";
|
|
||||||
};
|
|
||||||
|
|
||||||
import-tree.url = "github:vic/import-tree";
|
|
||||||
|
|
||||||
nix-index-database = {
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
url = "github:nix-community/nix-index-database";
|
|
||||||
};
|
|
||||||
|
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
|
|
||||||
nixvim = {
|
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||||
inputs.flake-parts.follows = "flake-parts";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
nixvim.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "github:nix-community/nixvim";
|
nixvim.url = "github:nix-community/nixvim";
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
nur = {
|
nur.url = "github:nix-community/NUR";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
url = "github:nix-community/NUR";
|
|
||||||
};
|
|
||||||
|
|
||||||
rwxrob-dot = {
|
|
||||||
flake = false;
|
|
||||||
url = "github:rwxrob/dot";
|
|
||||||
};
|
|
||||||
|
|
||||||
standard-vim = {
|
|
||||||
flake = false;
|
|
||||||
url = "github:tjdevries/standard.vim";
|
|
||||||
};
|
|
||||||
|
|
||||||
vim-heritage = {
|
|
||||||
flake = false;
|
|
||||||
url = "github:jessarcher/vim-heritage";
|
|
||||||
};
|
|
||||||
|
|
||||||
vim-textobj-xmlattr = {
|
|
||||||
flake = false;
|
|
||||||
url = "github:whatyouhide/vim-textobj-xmlattr";
|
|
||||||
};
|
|
||||||
|
|
||||||
voidrice = {
|
|
||||||
flake = false;
|
|
||||||
url = "github:lukesmithxyz/voidrice";
|
|
||||||
};
|
|
||||||
|
|
||||||
zet = {
|
|
||||||
flake = false;
|
|
||||||
url = "git+https://code.oliverdavies.uk/opdavies/zet";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
inputs@{ flake-parts, ... }:
|
{ nixpkgs, self, ... }@inputs:
|
||||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
let
|
||||||
flake = {
|
inherit (self) outputs;
|
||||||
overlays = import ./overlays { inherit inputs; };
|
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
|
||||||
|
username = "opdavies";
|
||||||
|
|
||||||
|
specialArgs = {
|
||||||
|
inherit
|
||||||
|
inputs
|
||||||
|
outputs
|
||||||
|
self
|
||||||
|
system
|
||||||
|
username
|
||||||
|
;
|
||||||
};
|
};
|
||||||
|
|
||||||
imports = [ (inputs.import-tree ./modules) ];
|
inherit (pkgs) mkShell;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.${system}.default = pkgs.mkShell {
|
||||||
|
packages = with pkgs; [
|
||||||
|
just
|
||||||
|
lua-language-server
|
||||||
|
lua54Packages.luacheck
|
||||||
|
nixd
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
packages.${system} = {
|
||||||
|
default = mkShell { buildInputs = with pkgs; [ just ]; };
|
||||||
|
};
|
||||||
|
|
||||||
|
formatter.${system} = pkgs.nixfmt-rfc-style;
|
||||||
|
|
||||||
|
overlays = import ./overlays { inherit inputs; };
|
||||||
|
|
||||||
|
homeManagerModules.default = import ./modules/home-manager;
|
||||||
|
|
||||||
|
nixosModules.default = import ./modules/nixos;
|
||||||
|
|
||||||
|
nixosConfigurations = {
|
||||||
|
lemp11 = nixpkgs.lib.nixosSystem {
|
||||||
|
modules = [
|
||||||
|
./hosts/lemp11/configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
specialArgs = specialArgs // {
|
||||||
|
hostname = "lemp11";
|
||||||
|
stateVersion = "22.11";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixedo = nixpkgs.lib.nixosSystem {
|
||||||
|
modules = [
|
||||||
|
./hosts/nixedo/configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
specialArgs = specialArgs // {
|
||||||
|
hostname = "nixedo";
|
||||||
|
stateVersion = "24.11";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
t480 = nixpkgs.lib.nixosSystem {
|
||||||
|
modules = [
|
||||||
|
./hosts/t480/configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
specialArgs = specialArgs // {
|
||||||
|
hostname = "t480";
|
||||||
|
stateVersion = "22.11";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
t490 = nixpkgs.lib.nixosSystem {
|
||||||
|
modules = [
|
||||||
|
./hosts/t490/configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
specialArgs = specialArgs // {
|
||||||
|
hostname = "t490";
|
||||||
|
stateVersion = "22.11";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
PW05CH3L = nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
|
||||||
|
modules = [
|
||||||
|
./hosts/PW05CH3L/configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
specialArgs = specialArgs // {
|
||||||
|
hostname = "PW05CH3L";
|
||||||
|
stateVersion = "22.11";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./nixedo/email-filters.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
import-to-jellyfin
|
|
||||||
vic
|
|
||||||
yt-dlp
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs = {
|
|
||||||
zsh.shellAliases =
|
|
||||||
let
|
|
||||||
inherit (config.xdg.userDirs) documents;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"wiki-push" =
|
|
||||||
"rsync -avzP ${documents}/wiki nixedo.oliverdavies.uk:${documents} --delete --delete-after";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
backup-websites
|
|
||||||
build-glove80
|
|
||||||
count-tags
|
|
||||||
create-script
|
|
||||||
get-tags
|
|
||||||
qrencode
|
|
||||||
mounter
|
|
||||||
move-firefox-screenshots
|
|
||||||
set-background
|
|
||||||
tag-release
|
|
||||||
time-until
|
|
||||||
timer
|
|
||||||
unmounter
|
|
||||||
update-all-git-repos
|
|
||||||
vic
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.configFile."pam-gnupg".text = ''
|
|
||||||
098EE055DAD2B9CB68154C6759DD38292D2273B6
|
|
||||||
1E21B58D69FFEFAD077F152A50FEA938A3413F50
|
|
||||||
'';
|
|
||||||
}
|
|
7
home/common/default.nix
Normal file
7
home/common/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{ outputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
outputs.homeManagerModules.default
|
||||||
|
];
|
||||||
|
}
|
52
home/opdavies/PW05CH3L.nix
Normal file
52
home/opdavies/PW05CH3L.nix
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
{ config, options, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ ../common ];
|
||||||
|
|
||||||
|
cli = {
|
||||||
|
bookmarkthis.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
fzf.enable = true;
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
user.emailAddress = "oliver.davies@tfw.wales";
|
||||||
|
};
|
||||||
|
|
||||||
|
node.enable = true;
|
||||||
|
notes.enable = true;
|
||||||
|
ranger.enable = true;
|
||||||
|
starship.enable = true;
|
||||||
|
tmux.enable = true;
|
||||||
|
|
||||||
|
tmux-sessionizer = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
directories =
|
||||||
|
let
|
||||||
|
inherit (config.xdg.userDirs) documents extraConfig;
|
||||||
|
|
||||||
|
repos = extraConfig.XDG_REPOS_DIR;
|
||||||
|
in
|
||||||
|
options.cli.tmux-sessionizer.directories.default
|
||||||
|
++ [
|
||||||
|
repos
|
||||||
|
"${repos}/*"
|
||||||
|
documents
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
todos.enable = true;
|
||||||
|
zsh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
coding = {
|
||||||
|
neovim.enable = true;
|
||||||
|
phpactor.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."pam-gnupg".text = ''
|
||||||
|
C0D940F9A390F286FCAAE8439D501171E39D0A47
|
||||||
|
'';
|
||||||
|
}
|
11
home/opdavies/lemp11.nix
Normal file
11
home/opdavies/lemp11.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
imports = [ ../common ];
|
||||||
|
|
||||||
|
cli.zsh.enable = true;
|
||||||
|
|
||||||
|
desktop.media = {
|
||||||
|
handbrake.enable = true;
|
||||||
|
makemkv.enable = true;
|
||||||
|
mpv.enable = true;
|
||||||
|
};
|
||||||
|
}
|
13
home/opdavies/nixedo.nix
Normal file
13
home/opdavies/nixedo.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../common
|
||||||
|
|
||||||
|
./nixedo/modules/email-filters.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
cli = {
|
||||||
|
fzf.enable = true;
|
||||||
|
starship.enable = true;
|
||||||
|
zsh.enable = true;
|
||||||
|
};
|
||||||
|
}
|
|
@ -12,7 +12,7 @@ in
|
||||||
{
|
{
|
||||||
options.nixedo.${name} = {
|
options.nixedo.${name} = {
|
||||||
configFile = lib.mkOption {
|
configFile = lib.mkOption {
|
||||||
default = "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/${name}/config.lua";
|
default = "${config.home.homeDirectory}/Code/${name}/config.lua";
|
||||||
internal = true;
|
internal = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
113
home/opdavies/t480.nix
Normal file
113
home/opdavies/t480.nix
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ ../common ];
|
||||||
|
|
||||||
|
cli = {
|
||||||
|
bluetuith.enable = true;
|
||||||
|
bookmarkthis.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
fzf.enable = true;
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
user.emailAddress = "oliver@oliverdavies.uk";
|
||||||
|
};
|
||||||
|
|
||||||
|
node.enable = true;
|
||||||
|
|
||||||
|
notes = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
directory = "${config.xdg.userDirs.documents}/wiki/notes";
|
||||||
|
};
|
||||||
|
|
||||||
|
ranger.enable = true;
|
||||||
|
sxhkd.enable = true;
|
||||||
|
starship.enable = true;
|
||||||
|
tmux.enable = true;
|
||||||
|
|
||||||
|
tmux-sessionizer = {
|
||||||
|
enable = true;
|
||||||
|
enableDmenuIntegration = true;
|
||||||
|
|
||||||
|
directories =
|
||||||
|
let
|
||||||
|
inherit (config.xdg.userDirs) documents extraConfig;
|
||||||
|
|
||||||
|
repos = extraConfig.XDG_REPOS_DIR;
|
||||||
|
in
|
||||||
|
[
|
||||||
|
repos
|
||||||
|
"${repos}/*"
|
||||||
|
documents
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
todos.enable = true;
|
||||||
|
zsh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
coding = {
|
||||||
|
neovim.enable = true;
|
||||||
|
phpactor.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
desktop = {
|
||||||
|
browsers = {
|
||||||
|
firefox = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
homepageUrl = "https://nixedo.oliverdavies.uk";
|
||||||
|
};
|
||||||
|
|
||||||
|
qutebrowser.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
flameshot.enable = true;
|
||||||
|
gtk.enable = true;
|
||||||
|
|
||||||
|
media = {
|
||||||
|
handbrake.enable = true;
|
||||||
|
makemkv.enable = true;
|
||||||
|
mpv.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
dev-commit = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
repoPaths =
|
||||||
|
let
|
||||||
|
personal = "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/personal";
|
||||||
|
in
|
||||||
|
[
|
||||||
|
"${personal}/email-filters"
|
||||||
|
"${personal}/nix-config"
|
||||||
|
"${personal}/oliverdavies.uk-tome"
|
||||||
|
"${personal}/opentofu-dns"
|
||||||
|
];
|
||||||
|
|
||||||
|
schedule = {
|
||||||
|
enable = true;
|
||||||
|
time = "daily";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
zsh.shellAliases =
|
||||||
|
let
|
||||||
|
inherit (config.xdg.userDirs) documents;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"wiki-push" =
|
||||||
|
"rsync -avzP ${documents}/wiki nixedo.oliverdavies.uk:${documents} --delete --delete-after";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."pam-gnupg".text = ''
|
||||||
|
098EE055DAD2B9CB68154C6759DD38292D2273B6
|
||||||
|
1E21B58D69FFEFAD077F152A50FEA938A3413F50
|
||||||
|
'';
|
||||||
|
}
|
3
home/opdavies/t490.nix
Normal file
3
home/opdavies/t490.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
imports = [ ../common ];
|
||||||
|
}
|
32
hosts/PW05CH3L/configuration.nix
Normal file
32
hosts/PW05CH3L/configuration.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{ inputs, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.agenix.nixosModules.default
|
||||||
|
inputs.disko.nixosModules.disko
|
||||||
|
inputs.nixos-wsl.nixosModules.default
|
||||||
|
|
||||||
|
../common
|
||||||
|
|
||||||
|
../../users/opdavies.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
cli = {
|
||||||
|
docker.enable = true;
|
||||||
|
|
||||||
|
password-store = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extensions = with pkgs.passExtensions; [
|
||||||
|
pass-otp
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wsl = {
|
||||||
|
enable = true;
|
||||||
|
defaultUser = "opdavies";
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.opdavies.home.sessionVariables.WAYLAND_DISPLAY = "";
|
||||||
|
}
|
|
@ -15,6 +15,8 @@
|
||||||
./users
|
./users
|
||||||
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
|
||||||
|
outputs.nixosModules.default
|
||||||
];
|
];
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
|
@ -62,13 +64,21 @@
|
||||||
users."${username}" = import ./home.nix;
|
users."${username}" = import ./home.nix;
|
||||||
};
|
};
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
nixpkgs = {
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
|
||||||
|
permittedInsecurePackages = [ "electron-27.3.11" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
overlays = [
|
||||||
inputs.nur.overlays.default
|
inputs.nur.overlays.default
|
||||||
|
|
||||||
outputs.overlays.additions
|
outputs.overlays.additions
|
||||||
outputs.overlays.modifications
|
outputs.overlays.modifications
|
||||||
outputs.overlays.stable-packages
|
outputs.overlays.stable-packages
|
||||||
];
|
];
|
||||||
|
};
|
||||||
|
|
||||||
nix.extraOptions = ''
|
nix.extraOptions = ''
|
||||||
trusted-users = root ${username}
|
trusted-users = root ${username}
|
||||||
|
|
|
@ -9,6 +9,8 @@ let
|
||||||
pkgs = import inputs.nixpkgs {
|
pkgs = import inputs.nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
|
|
||||||
|
config.allowUnfree = true;
|
||||||
|
|
||||||
overlays = [
|
overlays = [
|
||||||
outputs.overlays.additions
|
outputs.overlays.additions
|
||||||
outputs.overlays.stable-packages
|
outputs.overlays.stable-packages
|
||||||
|
@ -25,6 +27,10 @@ let
|
||||||
;
|
;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
outputs.homeManagerModules.default
|
||||||
|
];
|
||||||
|
|
||||||
home.username = "opdavies";
|
home.username = "opdavies";
|
||||||
home.homeDirectory = "/home/${config.home.username}";
|
home.homeDirectory = "/home/${config.home.username}";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ config, self, ... }:
|
{ config, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
users.users.opdavies = { };
|
users.users.opdavies = { };
|
||||||
|
|
||||||
home-manager.users.opdavies = import "${self}/home-manager/opdavies/${config.networking.hostName}.nix";
|
home-manager.users.opdavies = import ../../../home/opdavies/${config.networking.hostName}.nix;
|
||||||
}
|
}
|
||||||
|
|
65
hosts/lemp11/configuration.nix
Normal file
65
hosts/lemp11/configuration.nix
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
{ inputs, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.agenix.nixosModules.default
|
||||||
|
inputs.nixos-hardware.nixosModules.common-cpu-intel
|
||||||
|
inputs.nixos-hardware.nixosModules.common-gpu-intel
|
||||||
|
inputs.nixos-hardware.nixosModules.common-pc-laptop
|
||||||
|
inputs.nixos-hardware.nixosModules.common-pc-laptop-hdd
|
||||||
|
inputs.nixos-hardware.nixosModules.system76
|
||||||
|
|
||||||
|
../common
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./programs.nix
|
||||||
|
./services.nix
|
||||||
|
|
||||||
|
../../users/opdavies.nix
|
||||||
|
../../users/eric.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
core = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
zram.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
desktop.media.makemkv.enable = true;
|
||||||
|
|
||||||
|
nixpad.enable = true;
|
||||||
|
|
||||||
|
# Bootloader.
|
||||||
|
boot = {
|
||||||
|
loader = {
|
||||||
|
systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
configurationLimit = 25;
|
||||||
|
};
|
||||||
|
|
||||||
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
efiSysMountPoint = "/boot/efi";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.extraConfig = ''
|
||||||
|
DefaultTimeoutStopSec=10s
|
||||||
|
'';
|
||||||
|
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
security = {
|
||||||
|
polkit.enable = true;
|
||||||
|
rtkit.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.eric.packages = with pkgs; [
|
||||||
|
git
|
||||||
|
vscodium
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
fastfetch
|
||||||
|
htop
|
||||||
|
];
|
||||||
|
}
|
50
hosts/lemp11/hardware-configuration.nix
Normal file
50
hosts/lemp11/hardware-configuration.nix
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"thunderbolt"
|
||||||
|
"nvme"
|
||||||
|
"usb_storage"
|
||||||
|
"usbhid"
|
||||||
|
"sd_mod"
|
||||||
|
"sdhci_pci"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/e577c869-18a1-4830-9e00-124fcabdab89";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot/efi" = {
|
||||||
|
device = "/dev/disk/by-uuid/48FE-D346";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ { device = "/dev/disk/by-uuid/2dce327b-f18d-4727-a9a2-e79d2b5161f9"; } ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp0s13f0u1u2u4.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
13
hosts/lemp11/programs.nix
Normal file
13
hosts/lemp11/programs.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
firefox = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
languagePacks = [ "en-GB" ];
|
||||||
|
preferences = {
|
||||||
|
"intl.accept_languages" = "en-GB, en";
|
||||||
|
"intl.regional_prefs.use_os_locales" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
32
hosts/lemp11/services.nix
Normal file
32
hosts/lemp11/services.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
auto-cpufreq.enable = true;
|
||||||
|
gvfs.enable = true;
|
||||||
|
openssh.enable = true;
|
||||||
|
power-profiles-daemon.enable = false;
|
||||||
|
thermald.enable = true;
|
||||||
|
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
alsa = {
|
||||||
|
enable = true;
|
||||||
|
support32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
printing.enable = true;
|
||||||
|
pulseaudio.enable = false;
|
||||||
|
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
xkb = {
|
||||||
|
layout = "gb";
|
||||||
|
variant = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -19,6 +19,10 @@
|
||||||
../../users/opdavies.nix
|
../../users/opdavies.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
core.openssh.enable = true;
|
||||||
|
cli.podman.enable = true;
|
||||||
|
desktop.dconf.enable = true;
|
||||||
|
|
||||||
# TODO: why didn't it work when adding this to jitsi.nix?
|
# TODO: why didn't it work when adding this to jitsi.nix?
|
||||||
nixpkgs.config.permittedInsecurePackages = [
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
"jitsi-meet-1.0.8043"
|
"jitsi-meet-1.0.8043"
|
||||||
|
@ -27,7 +31,10 @@
|
||||||
services.logind.lidSwitchExternalPower = "ignore";
|
services.logind.lidSwitchExternalPower = "ignore";
|
||||||
|
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
efi.canTouchEfiVariables = true;
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
|
||||||
systemd-boot.enable = true;
|
systemd-boot.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,42 +1,27 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports =
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
|
||||||
"xhci_pci"
|
|
||||||
"thunderbolt"
|
|
||||||
"nvme"
|
|
||||||
"usb_storage"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" =
|
||||||
device = "/dev/disk/by-uuid/40649879-4ee6-4668-8257-fe81a7773024";
|
{ device = "/dev/disk/by-uuid/40649879-4ee6-4668-8257-fe81a7773024";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" =
|
||||||
device = "/dev/disk/by-uuid/24B1-88CB";
|
{ device = "/dev/disk/by-uuid/24B1-88CB";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
"fmask=0077"
|
|
||||||
"dmask=0077"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
|
@ -8,14 +8,18 @@
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
audiobookshelf.enable = true;
|
audiobookshelf.enable = true;
|
||||||
|
forgejo.enable = true;
|
||||||
|
gitea-actions-runner.enable = true;
|
||||||
home-assistant.enable = true;
|
home-assistant.enable = true;
|
||||||
homepage-dashboard.enable = true;
|
homepage-dashboard.enable = true;
|
||||||
|
immich.enable = true;
|
||||||
|
jellyfin.enable = true;
|
||||||
jitsi.enable = true;
|
jitsi.enable = true;
|
||||||
paperless.enable = true;
|
paperless.enable = true;
|
||||||
peertube.enable = true;
|
peertube.enable = true;
|
||||||
tubearchivist.enable = true;
|
tubearchivist.enable = true;
|
||||||
uptime-kuma.enable = true;
|
uptime-kuma.enable = true;
|
||||||
vaultwarden.enable = false;
|
vaultwarden.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
"home"
|
"home"
|
||||||
"jellyfin"
|
"jellyfin"
|
||||||
"luke"
|
"luke"
|
||||||
"mealie"
|
|
||||||
"nixedo"
|
"nixedo"
|
||||||
"paperless"
|
"paperless"
|
||||||
"photos"
|
"photos"
|
||||||
|
@ -40,6 +39,7 @@
|
||||||
"rebuilding-symfony"
|
"rebuilding-symfony"
|
||||||
"tailwindcss-demo"
|
"tailwindcss-demo"
|
||||||
"talking-drupal-tailwindcss"
|
"talking-drupal-tailwindcss"
|
||||||
|
"tome"
|
||||||
"tubearchivist"
|
"tubearchivist"
|
||||||
"uptime"
|
"uptime"
|
||||||
"vaultwarden"
|
"vaultwarden"
|
||||||
|
|
|
@ -1,26 +1,61 @@
|
||||||
{ config, ... }:
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = homelab.services.${service};
|
||||||
|
homelab = config.homelab;
|
||||||
|
service = "forgejo";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
services.forgejo = {
|
options.homelab.services.${service} = {
|
||||||
|
enable = mkEnableOption "Enable ${service}";
|
||||||
|
|
||||||
|
url = mkOption {
|
||||||
|
default = "code.${homelab.domain}";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.name = mkOption {
|
||||||
|
default = "Forgejo";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "Beyond coding. We forge.";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "forgejo";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "Services";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services = {
|
||||||
|
${service} = {
|
||||||
enable = true;
|
enable = true;
|
||||||
stateDir = "/var/www/forgejo";
|
stateDir = "/var/www/${service}";
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
server = {
|
server = {
|
||||||
DOMAIN = "code.oliverdavies.uk";
|
DOMAIN = cfg.url;
|
||||||
LANDING_PAGE = "explore";
|
ROOT_URL = "https://${cfg.url}";
|
||||||
ROOT_URL = "https://${config.services.forgejo.settings.server.DOMAIN}";
|
|
||||||
SSH_DOMAIN = "ssh.oliverdavies.uk";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
service.DISABLE_REGISTRATION = true;
|
service.DISABLE_REGISTRATION = true;
|
||||||
|
|
||||||
ui.DEFAULT_THEME = "forgejo-auto";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.cloudflared.tunnels.${config.homelab.cloudflared.tunnelId}.ingress = {
|
cloudflared.tunnels.${homelab.cloudflared.tunnelId}.ingress = {
|
||||||
"${config.services.forgejo.settings.server.DOMAIN}" =
|
${cfg.url} = "http://localhost:${toString config.services.${service}.settings.server.HTTP_PORT}";
|
||||||
"http://localhost:${toString config.services.forgejo.settings.server.HTTP_PORT}";
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,58 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
services.immich = {
|
config,
|
||||||
enable = true;
|
lib,
|
||||||
group = "media";
|
pkgs,
|
||||||
mediaLocation = "/mnt/media/immich";
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = homelab.services.${service};
|
||||||
|
homelab = config.homelab;
|
||||||
|
service = "immich";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.homelab.services.${service} = {
|
||||||
|
enable = mkEnableOption "Enable ${service}";
|
||||||
|
|
||||||
|
url = mkOption {
|
||||||
|
default = "photos.${homelab.domain}";
|
||||||
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.nginx.virtualHosts."photos.oliverdavies.uk" = {
|
homepage.name = mkOption {
|
||||||
|
default = "Immich";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "Self-hosted photo and video management solution";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "immich";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "Media";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services = {
|
||||||
|
${service} = {
|
||||||
|
enable = true;
|
||||||
|
group = "media";
|
||||||
|
mediaLocation = "/mnt/media/${service}";
|
||||||
|
};
|
||||||
|
|
||||||
|
nginx.virtualHosts."${cfg.url}" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
useACMEHost = "oliverdavies.uk";
|
useACMEHost = homelab.domain;
|
||||||
|
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
proxyPass = "http://localhost:${toString config.services.immich.port}";
|
proxyPass = "http://localhost:${toString config.services.immich.port}";
|
||||||
|
@ -17,9 +60,11 @@
|
||||||
recommendedProxySettings = true;
|
recommendedProxySettings = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
immich-cli
|
immich-cli
|
||||||
immich-go
|
immich-go
|
||||||
];
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,55 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = homelab.services.${service};
|
||||||
|
homelab = config.homelab;
|
||||||
|
service = "jellyfin";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
services.jellyfin = {
|
options.homelab.services.${service} = {
|
||||||
|
enable = mkEnableOption "Enable ${service}";
|
||||||
|
|
||||||
|
url = mkOption {
|
||||||
|
default = "${service}.${homelab.domain}";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.name = mkOption {
|
||||||
|
default = "Jellyfin";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "The Free Software Media System";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "jellyfin";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "Media";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services = {
|
||||||
|
${service} = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
configDir = "/mnt/media/jellyfin";
|
configDir = "/mnt/media/${service}";
|
||||||
group = "media";
|
group = "media";
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.nginx.virtualHosts."jellyfin.oliverdavies.uk" = {
|
nginx.virtualHosts."${cfg.url}" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
useACMEHost = "oliverdavies.uk";
|
useACMEHost = homelab.domain;
|
||||||
|
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
proxyPass = "http://localhost:8096";
|
proxyPass = "http://localhost:8096";
|
||||||
|
@ -20,4 +60,6 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,8 +11,6 @@ let
|
||||||
{ inherit port root url; } // overrides;
|
{ inherit port root url; } // overrides;
|
||||||
|
|
||||||
sites = [
|
sites = [
|
||||||
(mkSite "books" {})
|
|
||||||
|
|
||||||
(mkSite "eric" {
|
(mkSite "eric" {
|
||||||
rootSuffix = "/public";
|
rootSuffix = "/public";
|
||||||
|
|
||||||
|
@ -21,31 +19,11 @@ let
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkSite "examples" {})
|
(mkSite "luke" {
|
||||||
]
|
|
||||||
++
|
|
||||||
map
|
|
||||||
(
|
|
||||||
domain:
|
|
||||||
mkSite domain {
|
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
add_header X-Robots-Tag "noindex, nofollow";
|
add_header X-Robots-Tag "noindex, nofollow";
|
||||||
'';
|
'';
|
||||||
}
|
})
|
||||||
)
|
|
||||||
[
|
|
||||||
"bootstrap-with-tailwind"
|
|
||||||
"florida-drupalcamp-tailwind-css"
|
|
||||||
"luke"
|
|
||||||
"phpsw-sculpin-demo"
|
|
||||||
"rebuilding-acquia"
|
|
||||||
"rebuilding-bartik"
|
|
||||||
"rebuilding-bristol-js"
|
|
||||||
"rebuilding-symfony"
|
|
||||||
"tailwindcss-demo"
|
|
||||||
"talking-drupal-tailwindcss"
|
|
||||||
"wp-tailwind"
|
|
||||||
"zet"
|
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
sites
|
sites
|
||||||
|
|
|
@ -13,17 +13,15 @@ let
|
||||||
|
|
||||||
paths = [
|
paths = [
|
||||||
"archive"
|
"archive"
|
||||||
"automated-testing"
|
|
||||||
"core"
|
"core"
|
||||||
"daily/.+"
|
"daily/.+"
|
||||||
"examples"
|
"examples"
|
||||||
"homelab"
|
"homelab"
|
||||||
"podcast"
|
"podcast"
|
||||||
"rss/bb.xml"
|
|
||||||
"rss/daily.xml"
|
"rss/daily.xml"
|
||||||
"sites/default/files"
|
"sites/default/files"
|
||||||
"testing"
|
|
||||||
"themes/custom/opdavies"
|
"themes/custom/opdavies"
|
||||||
|
"tome-test"
|
||||||
];
|
];
|
||||||
|
|
||||||
port = ports.nginx-website-tome;
|
port = ports.nginx-website-tome;
|
||||||
|
@ -79,11 +77,36 @@ in
|
||||||
globalRedirect = "www.oliverdavies.uk";
|
globalRedirect = "www.oliverdavies.uk";
|
||||||
useACMEHost = "oliverdavies.uk";
|
useACMEHost = "oliverdavies.uk";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"tome.oliverdavies.uk" = {
|
||||||
|
listen = [
|
||||||
|
{
|
||||||
|
addr = "localhost";
|
||||||
|
port = tome.port;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
locations."/".tryFiles = "$uri $uri.html $uri/index.html =404";
|
||||||
|
|
||||||
|
root = tome.root;
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
add_header X-Robots-Tag "noindex, nofollow";
|
||||||
|
|
||||||
|
port_in_redirect off;
|
||||||
|
|
||||||
|
# Remove trailing slashes.
|
||||||
|
rewrite ^/(.*)/$ /$1 permanent;
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466".ingress = {
|
cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466" = {
|
||||||
|
ingress = {
|
||||||
"oliverdavies.uk" = "http://localhost:${toString port}";
|
"oliverdavies.uk" = "http://localhost:${toString port}";
|
||||||
|
"tome.oliverdavies.uk" = "http://localhost:${toString tome.port}";
|
||||||
"www.oliverdavies.uk" = "http://localhost:${toString port}";
|
"www.oliverdavies.uk" = "http://localhost:${toString port}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,10 +131,6 @@
|
||||||
from = "/ansistrano-slides";
|
from = "/ansistrano-slides";
|
||||||
to = "/talks/deploying-php-ansible-ansistrano";
|
to = "/talks/deploying-php-ansible-ansistrano";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
from = "/archive";
|
|
||||||
to = "/blog";
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
from = "/archive/2022-08-28/how-started-programming";
|
from = "/archive/2022-08-28/how-started-programming";
|
||||||
to = "/daily/2022-08-28/how-started-programming";
|
to = "/daily/2022-08-28/how-started-programming";
|
||||||
|
@ -2423,10 +2419,6 @@
|
||||||
from = "/d7";
|
from = "/d7";
|
||||||
to = "/drupal7";
|
to = "/drupal7";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
from = "/daily";
|
|
||||||
to = "/blog";
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
from = "/dcbristol-cfp";
|
from = "/dcbristol-cfp";
|
||||||
to = "https://www.papercall.io/drupalcamp-bristol-2019";
|
to = "https://www.papercall.io/drupalcamp-bristol-2019";
|
||||||
|
|
|
@ -43,7 +43,10 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
dataDir = "/mnt/media/${service}";
|
dataDir = "/mnt/media/${service}";
|
||||||
domain = "https://${cfg.url}";
|
|
||||||
|
settings = {
|
||||||
|
PAPERLESS_URL = "https://${cfg.url}";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nginx.virtualHosts."${cfg.url}" = {
|
nginx.virtualHosts."${cfg.url}" = {
|
||||||
|
|
|
@ -11,7 +11,6 @@ in
|
||||||
|
|
||||||
config.homelab.ports = {
|
config.homelab.ports = {
|
||||||
homepage-dashboard = 8097;
|
homepage-dashboard = 8097;
|
||||||
mealie = 9001;
|
|
||||||
pihole = 8082;
|
pihole = 8082;
|
||||||
tubearchivist = 8099;
|
tubearchivist = 8099;
|
||||||
vaultwarden = 8022;
|
vaultwarden = 8022;
|
||||||
|
@ -19,10 +18,8 @@ in
|
||||||
nginx-website-sculpin = 8095;
|
nginx-website-sculpin = 8095;
|
||||||
nginx-website-tome = 8098;
|
nginx-website-tome = 8098;
|
||||||
|
|
||||||
nginx-books = 9002;
|
|
||||||
nginx-bootstrap-with-tailwind = 8081;
|
nginx-bootstrap-with-tailwind = 8081;
|
||||||
nginx-eric = 8084;
|
nginx-eric = 8084;
|
||||||
nginx-examples = 9003;
|
|
||||||
nginx-florida-drupalcamp-tailwind-css = 8083;
|
nginx-florida-drupalcamp-tailwind-css = 8083;
|
||||||
nginx-luke = 8094;
|
nginx-luke = 8094;
|
||||||
nginx-phpsw-sculpin-demo = 8085;
|
nginx-phpsw-sculpin-demo = 8085;
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
imports = [
|
imports = [
|
||||||
./homepage
|
./homepage
|
||||||
./mastodon.nix
|
./mastodon.nix
|
||||||
./mealie.nix
|
|
||||||
./samba.nix
|
./samba.nix
|
||||||
./uptime-kuma.nix
|
./uptime-kuma.nix
|
||||||
./vaultwarden.nix
|
./vaultwarden.nix
|
||||||
|
@ -17,6 +16,7 @@
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
postgresqlBackup.enable = true;
|
postgresqlBackup.enable = true;
|
||||||
|
tailscale.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.gitea-actions-runner.instances.default = {
|
services.gitea-actions-runner.instances.default = {
|
||||||
|
@ -29,7 +29,6 @@
|
||||||
gawk
|
gawk
|
||||||
gitMinimal
|
gitMinimal
|
||||||
gnused
|
gnused
|
||||||
jq
|
|
||||||
nix
|
nix
|
||||||
nodejs
|
nodejs
|
||||||
wget
|
wget
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
ports = config.homelab.ports;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.mealie = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.stable.mealie;
|
|
||||||
|
|
||||||
database.createLocally = true;
|
|
||||||
|
|
||||||
port = ports.mealie;
|
|
||||||
|
|
||||||
settings.ALLOW_SIGNUP = "false";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.nginx.virtualHosts."mealie.oliverdavies.uk" = {
|
|
||||||
forceSSL = true;
|
|
||||||
useACMEHost = "oliverdavies.uk";
|
|
||||||
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://localhost:${toString config.services.mealie.port}";
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
|
options,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
@ -20,6 +20,26 @@ in
|
||||||
default = "${service}.${homelab.domain}";
|
default = "${service}.${homelab.domain}";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
homepage.name = mkOption {
|
||||||
|
default = "Vaultwarden";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.description = mkOption {
|
||||||
|
default = "Unofficial Bitwarden compatible server written in Rust";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.icon = mkOption {
|
||||||
|
default = "bitwarden";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage.category = mkOption {
|
||||||
|
default = "Services";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -27,8 +47,6 @@ in
|
||||||
${service} = {
|
${service} = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
environmentFile = config.age.secrets.vaultwarden-env.path;
|
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
DOMAIN = "https://${cfg.url}";
|
DOMAIN = "https://${cfg.url}";
|
||||||
ROCKET_ADDRESS = "127.0.0.1";
|
ROCKET_ADDRESS = "127.0.0.1";
|
||||||
|
@ -37,17 +55,11 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nginx.virtualHosts.${cfg.url} = {
|
cloudflared.tunnels.${homelab.cloudflared.tunnelId}.ingress = {
|
||||||
forceSSL = true;
|
"${cfg.url}" = "http://${config.services.${service}.config.ROCKET_ADDRESS}:${
|
||||||
useACMEHost = homelab.domain;
|
toString config.services.${service}.config.ROCKET_PORT
|
||||||
|
}";
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://localhost:${toString config.services.${service}.config.ROCKET_PORT}";
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
age.secrets.vaultwarden-env.file = "${inputs.self}/secrets/vaultwarden-env.age";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,39 +9,66 @@
|
||||||
../common
|
../common
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./cron.nix
|
./modules
|
||||||
./neomutt.nix
|
|
||||||
./newsboat
|
|
||||||
./secrets.nix
|
./secrets.nix
|
||||||
./xserver.nix
|
./services
|
||||||
|
|
||||||
../../users/opdavies.nix
|
../../users/opdavies.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
services = {
|
cli = {
|
||||||
auto-cpufreq.enable = true;
|
kanata = {
|
||||||
geoclue2.enable = true;
|
enable = true;
|
||||||
gvfs.enable = true;
|
|
||||||
power-profiles-daemon.enable = false;
|
devices = [
|
||||||
printing.enable = true;
|
"/dev/input/by-path/platform-i8042-serio-0-event-kbd"
|
||||||
pulseaudio.enable = false;
|
];
|
||||||
thermald.enable = true;
|
};
|
||||||
throttled.enable = true;
|
|
||||||
upower.enable = true;
|
password-store = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extensions = with pkgs.passExtensions; [
|
||||||
|
pass-audit
|
||||||
|
pass-otp
|
||||||
|
pass-update
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
core = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
openssh.enable = true;
|
||||||
|
pipewire.enable = true;
|
||||||
|
xbanish.enable = true;
|
||||||
|
zram.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
desktop = {
|
||||||
|
dconf.enable = true;
|
||||||
|
dwm.enable = true;
|
||||||
|
fonts.enable = true;
|
||||||
|
media.makemkv.enable = true;
|
||||||
|
st.enable = true;
|
||||||
|
thunar.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot.enable = true;
|
systemd-boot = {
|
||||||
systemd-boot.configurationLimit = 10;
|
enable = true;
|
||||||
|
configurationLimit = 10;
|
||||||
|
};
|
||||||
|
|
||||||
efi.canTouchEfiVariables = true;
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.settings.Manager = {
|
systemd.extraConfig = ''
|
||||||
DefaultTimeoutStopSec = "10s";
|
DefaultTimeoutStopSec=10s
|
||||||
};
|
'';
|
||||||
|
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
@ -66,13 +93,17 @@
|
||||||
abook
|
abook
|
||||||
acpi
|
acpi
|
||||||
arandr
|
arandr
|
||||||
|
backup-websites
|
||||||
brightnessctl
|
brightnessctl
|
||||||
|
build-glove80
|
||||||
cdrkit
|
cdrkit
|
||||||
cpufrequtils
|
cpufrequtils
|
||||||
|
displayselect
|
||||||
dvdbackup
|
dvdbackup
|
||||||
dvdplusrwtools
|
dvdplusrwtools
|
||||||
ffmpegthumbnailer
|
ffmpegthumbnailer
|
||||||
gimp3
|
gimp
|
||||||
|
gscan2pdf
|
||||||
gtypist
|
gtypist
|
||||||
hunspellDicts.en-gb-large
|
hunspellDicts.en-gb-large
|
||||||
isync
|
isync
|
||||||
|
@ -88,11 +119,15 @@
|
||||||
peek
|
peek
|
||||||
pmutils
|
pmutils
|
||||||
shotwell
|
shotwell
|
||||||
stable.gscan2pdf
|
slack
|
||||||
sxiv
|
sxiv
|
||||||
|
tailscale
|
||||||
ttyper
|
ttyper
|
||||||
|
upload-to-files
|
||||||
xcape
|
xcape
|
||||||
xsel
|
xsel
|
||||||
yt-dlp
|
yt-dlp
|
||||||
|
zeroad
|
||||||
|
zoom-us
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
8
hosts/t480/modules/default.nix
Normal file
8
hosts/t480/modules/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./cron.nix
|
||||||
|
./neomutt.nix
|
||||||
|
./newsboat
|
||||||
|
./ollama.nix
|
||||||
|
];
|
||||||
|
}
|
10
hosts/t480/modules/ollama.nix
Normal file
10
hosts/t480/modules/ollama.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
ollama = {
|
||||||
|
enable = true;
|
||||||
|
acceleration = "rocm";
|
||||||
|
};
|
||||||
|
|
||||||
|
open-webui.enable = true;
|
||||||
|
};
|
||||||
|
}
|
17
hosts/t480/services/default.nix
Normal file
17
hosts/t480/services/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./xserver.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
services = {
|
||||||
|
auto-cpufreq.enable = true;
|
||||||
|
gvfs.enable = true;
|
||||||
|
power-profiles-daemon.enable = false;
|
||||||
|
printing.enable = true;
|
||||||
|
pulseaudio.enable = false;
|
||||||
|
tailscale.enable = true;
|
||||||
|
throttled.enable = true;
|
||||||
|
thermald.enable = true;
|
||||||
|
upower.enable = true;
|
||||||
|
};
|
||||||
|
}
|
18
hosts/t480/services/xserver.nix
Normal file
18
hosts/t480/services/xserver.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
displayManager.sessionCommands = ''
|
||||||
|
setbg &
|
||||||
|
'';
|
||||||
|
|
||||||
|
displayManager.startx.enable = true;
|
||||||
|
|
||||||
|
xkb = {
|
||||||
|
layout = "gb";
|
||||||
|
variant = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.displayManager.ly.enable = true;
|
||||||
|
}
|
46
hosts/t490/configuration.nix
Normal file
46
hosts/t490/configuration.nix
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
{ inputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.agenix.nixosModules.default
|
||||||
|
inputs.nixos-hardware.nixosModules.common-gpu-intel
|
||||||
|
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-t490
|
||||||
|
|
||||||
|
../common
|
||||||
|
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./hardware.nix
|
||||||
|
./services
|
||||||
|
|
||||||
|
../../users/luke.nix
|
||||||
|
../../users/opdavies.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
core = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
zram.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
desktop.dconf.enable = true;
|
||||||
|
|
||||||
|
nixpad.enable = true;
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
loader = {
|
||||||
|
systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
configurationLimit = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.extraConfig = ''
|
||||||
|
DefaultTimeoutStopSec=10s
|
||||||
|
'';
|
||||||
|
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
}
|
54
hosts/t490/hardware-configuration.nix
Normal file
54
hosts/t490/hardware-configuration.nix
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"nvme"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
"rtsx_pci_sdmmc"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/001febe7-57e8-4c9a-bbaf-52c3d8305b63";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/5F0A-3374";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [
|
||||||
|
"fmask=0077"
|
||||||
|
"dmask=0077"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
5
hosts/t490/hardware.nix
Normal file
5
hosts/t490/hardware.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
};
|
||||||
|
}
|
11
hosts/t490/services/cron.nix
Normal file
11
hosts/t490/services/cron.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.cron = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
systemCronJobs = [
|
||||||
|
"0 8,20 * * * opdavies ${pkgs.isync}/bin/mbsync -a"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
30
hosts/t490/services/default.nix
Normal file
30
hosts/t490/services/default.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./cron.nix
|
||||||
|
./interception-tools.nix
|
||||||
|
./sound.nix
|
||||||
|
./udev.nix
|
||||||
|
./xserver.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
services = {
|
||||||
|
auto-cpufreq.enable = true;
|
||||||
|
|
||||||
|
avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
blueman.enable = true;
|
||||||
|
|
||||||
|
gvfs.enable = true;
|
||||||
|
openssh.enable = true;
|
||||||
|
power-profiles-daemon.enable = false;
|
||||||
|
printing.enable = true;
|
||||||
|
pulseaudio.enable = false;
|
||||||
|
throttled.enable = true;
|
||||||
|
thermald.enable = true;
|
||||||
|
upower.enable = true;
|
||||||
|
};
|
||||||
|
}
|
25
hosts/t490/services/interception-tools.nix
Normal file
25
hosts/t490/services/interception-tools.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# Make Caps lock work as an Escape key on press and Ctrl on hold.
|
||||||
|
services.interception-tools =
|
||||||
|
let
|
||||||
|
dfkConfig = pkgs.writeText "dual-function-keys.yaml" ''
|
||||||
|
MAPPINGS:
|
||||||
|
- KEY: KEY_CAPSLOCK
|
||||||
|
TAP: KEY_ESC
|
||||||
|
HOLD: KEY_LEFTCTRL
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
plugins = pkgs.lib.mkForce [ pkgs.interception-tools-plugins.dual-function-keys ];
|
||||||
|
udevmonConfig = ''
|
||||||
|
- JOB: "${pkgs.interception-tools}/bin/intercept -g $DEVNODE | ${pkgs.interception-tools-plugins.dual-function-keys}/bin/dual-function-keys -c ${dfkConfig} | ${pkgs.interception-tools}/bin/uinput -d $DEVNODE"
|
||||||
|
DEVICE:
|
||||||
|
NAME: "AT Translated Set 2 keyboard"
|
||||||
|
EVENTS:
|
||||||
|
EV_KEY: [[KEY_CAPSLOCK, KEY_ESC, KEY_LEFTCTRL]]
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
31
hosts/t490/services/redshift.nix
Normal file
31
hosts/t490/services/redshift.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.redshift;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.redshift.enable = mkEnableOption "Enable redshift";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
location = {
|
||||||
|
latitude = 51.48;
|
||||||
|
longitude = -3.17;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.redshift = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
brightness = {
|
||||||
|
day = "1";
|
||||||
|
night = "1";
|
||||||
|
};
|
||||||
|
|
||||||
|
temperature = {
|
||||||
|
day = 5500;
|
||||||
|
night = 3700;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
12
hosts/t490/services/sound.nix
Normal file
12
hosts/t490/services/sound.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
alsa = {
|
||||||
|
enable = true;
|
||||||
|
support32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
}
|
9
hosts/t490/services/udev.nix
Normal file
9
hosts/t490/services/udev.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
services.udev = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extraRules = ''
|
||||||
|
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,8 +2,6 @@
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
displayManager.startx.enable = true;
|
|
||||||
|
|
||||||
xkb = {
|
xkb = {
|
||||||
layout = "gb";
|
layout = "gb";
|
||||||
variant = "";
|
variant = "";
|
7
justfile
7
justfile
|
@ -13,7 +13,8 @@ check:
|
||||||
nix flake check
|
nix flake check
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
nh clean all
|
nix store optimise --verbose
|
||||||
|
nix store gc --verbose
|
||||||
|
|
||||||
collect-garbage:
|
collect-garbage:
|
||||||
nix-collect-garbage -d
|
nix-collect-garbage -d
|
||||||
|
@ -29,7 +30,7 @@ test *args:
|
||||||
@just _nixos test {{ args }}
|
@just _nixos test {{ args }}
|
||||||
|
|
||||||
update:
|
update:
|
||||||
nix flake update --commit-lock-file
|
nix flake update
|
||||||
|
|
||||||
_nixos command *args:
|
_nixos command *args:
|
||||||
nh os {{ command }} . {{ args }}
|
sudo nixos-rebuild {{ command }} --flake . {{ args }}
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.nixos.desktop = {
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
|
|
||||||
services.blueman.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.base =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
pkgs.bluetuith
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.configFile."bluetuith/bluetuith.conf" = {
|
|
||||||
text = ''
|
|
||||||
{
|
|
||||||
adapter: ""
|
|
||||||
adapter-states: ""
|
|
||||||
connect-bdaddr: ""
|
|
||||||
gsm-apn: ""
|
|
||||||
gsm-number: ""
|
|
||||||
|
|
||||||
keybindings: {
|
|
||||||
NavigateDown: j
|
|
||||||
NavigateUp: k
|
|
||||||
}
|
|
||||||
|
|
||||||
receive-dir: ""
|
|
||||||
theme: {}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
options.programs.bookmarkthis.snippetsFile = lib.mkOption {
|
|
||||||
default = "${config.xdg.dataHome}/snippets.txt";
|
|
||||||
type = lib.types.str;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
home = {
|
|
||||||
packages = [
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "bookmarkthis";
|
|
||||||
|
|
||||||
text = ''
|
|
||||||
message() {
|
|
||||||
if command -v ${lib.getExe pkgs.libnotify} > /dev/null; then
|
|
||||||
${lib.getExe pkgs.libnotify} "$1" "$2"
|
|
||||||
else
|
|
||||||
echo "$2"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
bookmark="$(xclip -o)"
|
|
||||||
file="$SNIPPETS_FILE"
|
|
||||||
|
|
||||||
if grep -q "^$bookmark$" "$file"; then
|
|
||||||
message "Oops." "Already bookmarked." >&2
|
|
||||||
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$bookmark" >> "$file"
|
|
||||||
|
|
||||||
message "Bookmark added!" "$bookmark is now saved to the file."
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
sessionVariables = {
|
|
||||||
SNIPPETS_FILE = config.programs.bookmarkthis.snippetsFile;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zsh.zsh-abbr.abbreviations = lib.optionalAttrs (config.programs.zsh.enable) {
|
|
||||||
"sn" = "${config.home.sessionVariables.EDITOR} $SNIPPETS_FILE";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.chromium.enable = true;
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.librewolf.enable = true;
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.librewolf.profiles.default.extensions.packages =
|
|
||||||
with pkgs.nur.repos.rycee.firefox-addons; [
|
|
||||||
awesome-rss
|
|
||||||
bitwarden
|
|
||||||
darkreader
|
|
||||||
tree-style-tab
|
|
||||||
ublock-origin
|
|
||||||
videospeed
|
|
||||||
vimium
|
|
||||||
web-developer
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.librewolf.languagePacks = [
|
|
||||||
"en-GB"
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,70 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.librewolf.policies = {
|
|
||||||
CaptivePortal = false;
|
|
||||||
DisableFirefoxAccounts = true;
|
|
||||||
DisableFirefoxStudies = true;
|
|
||||||
DisablePocket = true;
|
|
||||||
DisableTelemetry = true;
|
|
||||||
|
|
||||||
EnableTrackingProtection = {
|
|
||||||
Cryptomining = true;
|
|
||||||
Fingerprinting = true;
|
|
||||||
Value = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
ExtensionSettings = {
|
|
||||||
"jid1-ZAdIEUB7XOzOJw@jetpack" = {
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/duckduckgo-for-firefox/latest.xpi";
|
|
||||||
installation_mode = "force_installed";
|
|
||||||
};
|
|
||||||
|
|
||||||
"uBlock0@raymondhill.net" = {
|
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
|
||||||
installation_mode = "force_installed";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
FirefoxHome = {
|
|
||||||
Highlights = false;
|
|
||||||
Pocket = false;
|
|
||||||
Search = true;
|
|
||||||
Snippets = false;
|
|
||||||
SponsoredPocket = false;
|
|
||||||
SponsoredTopSites = false;
|
|
||||||
TopSites = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
FirefoxSuggest = {
|
|
||||||
ImproveSuggest = false;
|
|
||||||
SponsoredSuggestions = false;
|
|
||||||
WebSuggestions = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
NoDefaultBookmarks = true;
|
|
||||||
OfferToSaveLogins = false;
|
|
||||||
OfferToSaveLoginsDefault = false;
|
|
||||||
PasswordManagerEnabled = false;
|
|
||||||
|
|
||||||
Preferences = {
|
|
||||||
"browser.newtabpage.enabled" = false;
|
|
||||||
"cookiebanners.service.mode" = 2; # Block cookie banners
|
|
||||||
"cookiebanners.service.mode.privateBrowsing" = 2; # Block cookie banners in private browsing
|
|
||||||
"privacy.donottrackheader.enabled" = true;
|
|
||||||
"privacy.fingerprintingProtection" = true;
|
|
||||||
"privacy.resistFingerprinting" = true;
|
|
||||||
"privacy.trackingprotection.emailtracking.enabled" = true;
|
|
||||||
"privacy.trackingprotection.enabled" = true;
|
|
||||||
"privacy.trackingprotection.fingerprinting.enabled" = true;
|
|
||||||
"privacy.trackingprotection.socialtracking.enabled" = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
HardwareAcceleration = true;
|
|
||||||
TranslateEnabled = true;
|
|
||||||
|
|
||||||
UserMessaging = {
|
|
||||||
ExtensionRecommendations = false;
|
|
||||||
UrlbarInterventions = false;
|
|
||||||
SkipOnboarding = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.librewolf.profiles.default.search.engines = {
|
|
||||||
# TODO: Drupal.org users.
|
|
||||||
# TODO: Mastodon.
|
|
||||||
# TODO: GitHub.
|
|
||||||
# TODO: Forgejo.
|
|
||||||
drupal_projects = {
|
|
||||||
name = "Drupal.org projects";
|
|
||||||
urls = [ { template = "https://www.drupal.org/project/{searchTerms}"; } ];
|
|
||||||
definedAliases = [ "@dp" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
nixvim = {
|
|
||||||
name = "Nixvim options search";
|
|
||||||
urls = [ { template = "https://nix-community.github.io/nixvim/search/?query={searchTerms}"; } ];
|
|
||||||
definedAliases = [ "@nxv" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.librewolf.profiles.default.search = {
|
|
||||||
default = "ddg";
|
|
||||||
force = true;
|
|
||||||
privateDefault = "ddg";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.librewolf.profiles.default.settings = {
|
|
||||||
"browser.search.isUS" = false;
|
|
||||||
"browser.search.region" = "GB";
|
|
||||||
"distribution.searchplugins.defaultLocale" = "en-GB";
|
|
||||||
"general.useragent.locale" = "en-GB";
|
|
||||||
"intl.accept_languages" = "en-GB, en";
|
|
||||||
"intl.regional_prefs.use_os_locales" = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.qutebrowser.enable = true;
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.qutebrowser.keyBindings.normal = {
|
|
||||||
"<Ctrl-d>" = "config-cycle colors.webpage.darkmode.enabled true false";
|
|
||||||
|
|
||||||
"xb" = "config-cycle statusbar.show always never";
|
|
||||||
"xt" = "config-cycle tabs.show always never";
|
|
||||||
"xx" = lib.mkMerge [
|
|
||||||
"config-cycle statusbar.show always never"
|
|
||||||
"config-cycle tabs.show always never"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.qutebrowser.package = pkgs.stable.qutebrowser;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.qutebrowser.searchEngines = {
|
|
||||||
dp = "https://www.drupal.org/project/{}";
|
|
||||||
du = "https://www.drupal.org/u/{}";
|
|
||||||
gh = "https://github.com/search?q={}";
|
|
||||||
mn = "https://mynixos.com/search?q={}";
|
|
||||||
nx = "https://search.nixos.org/packages?query={}";
|
|
||||||
yt = "https://www.youtube.com/results?search_query={}";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.programs.qutebrowser.settings = {
|
|
||||||
colors.webpage.darkmode.enabled = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.nixos.pc =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
environment.systemPackages = [ pkgs.bc ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.nixos.pc.programs.dconf.enable = true;
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
flake.modules.nixos.desktop.imports = with config.flake.modules.nixos; [
|
|
||||||
pc
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,83 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
flake.modules.homeManager.base =
|
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
options.programs.dev-commit = {
|
|
||||||
enable = lib.mkEnableOption "Enable dev-commit";
|
|
||||||
|
|
||||||
repoPaths = lib.mkOption {
|
|
||||||
default = [ ];
|
|
||||||
description = "A list of repository paths that should have automated commits";
|
|
||||||
type = lib.types.listOf lib.types.path;
|
|
||||||
};
|
|
||||||
|
|
||||||
schedule = lib.mkOption {
|
|
||||||
type = lib.types.submodule {
|
|
||||||
options = {
|
|
||||||
enable = lib.mkEnableOption "Enable automated dev commits with systemd";
|
|
||||||
|
|
||||||
time = lib.mkOption {
|
|
||||||
description = ''
|
|
||||||
Time expression for when to run the dev-commit job.
|
|
||||||
|
|
||||||
This uses systemd's `OnCalendar` syntax.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
- "hourly" (once every hour)
|
|
||||||
- "daily" (once per day at midnight)
|
|
||||||
- "Mon *-*-01 12:00:00" (every Monday at 12:00 PM)
|
|
||||||
|
|
||||||
See `man systemd.time` for full syntax reference.
|
|
||||||
'';
|
|
||||||
default = "hourly";
|
|
||||||
type = lib.types.str;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
default = {
|
|
||||||
enable = false;
|
|
||||||
time = "hourly";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
cfg = config.programs.dev-commit;
|
|
||||||
repoPaths = lib.concatStringsSep ":" cfg.repoPaths;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home = lib.mkIf cfg.enable {
|
|
||||||
packages = [ pkgs.dev-commit ];
|
|
||||||
|
|
||||||
sessionVariables.DEV_COMMIT_PATHS = repoPaths;
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user = lib.mkIf cfg.schedule.enable {
|
|
||||||
services.dev-commit = {
|
|
||||||
Service = {
|
|
||||||
Environment = [ "DEV_COMMIT_PATHS=${repoPaths}" ];
|
|
||||||
ExecStart = "${lib.getExe pkgs.dev-commit}";
|
|
||||||
Type = "oneshot";
|
|
||||||
};
|
|
||||||
|
|
||||||
Unit.Description = "dev-commit";
|
|
||||||
};
|
|
||||||
|
|
||||||
timers.dev-commit = {
|
|
||||||
Install.WantedBy = [ "timers.target" ];
|
|
||||||
|
|
||||||
Timer = {
|
|
||||||
OnCalendar = cfg.schedule.time;
|
|
||||||
Unit = "dev-commit.service";
|
|
||||||
};
|
|
||||||
|
|
||||||
Unit.Description = "Runs automated development commits in select project repositories.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.base.programs.direnv.enable = true;
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.base.programs.direnv.nix-direnv.enable = true;
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.base.programs.direnv.silent = true;
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.base.programs.direnv.enableZshIntegration = true;
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.stdenv.mkDerivation {
|
|
||||||
pname = "displayselect";
|
|
||||||
version = "unstable";
|
|
||||||
|
|
||||||
src = inputs.voidrice;
|
|
||||||
|
|
||||||
dontUnpack = true;
|
|
||||||
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
bash
|
|
||||||
xorg.xrandr
|
|
||||||
];
|
|
||||||
|
|
||||||
prePatch = ''
|
|
||||||
cp "$src/.local/bin/displayselect" displayselect
|
|
||||||
'';
|
|
||||||
|
|
||||||
patches = [ ./scaling.patch ];
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
cp displayselect $out/bin
|
|
||||||
chmod +x $out/bin/displayselect
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.stdenv.mkDerivation rec {
|
|
||||||
pname = "dmenu_sys";
|
|
||||||
version = "unstable";
|
|
||||||
|
|
||||||
src = inputs.bop-scripts;
|
|
||||||
|
|
||||||
dontUnpack = true;
|
|
||||||
|
|
||||||
buildInputs = with pkgs; [ dmenu ];
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
cp $src/${pname} $out/bin
|
|
||||||
chmod +x $out/bin/${pname}
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.stdenv.mkDerivation rec {
|
|
||||||
pname = "dmenu_timer";
|
|
||||||
version = "unstable";
|
|
||||||
|
|
||||||
src = inputs.bop-scripts;
|
|
||||||
|
|
||||||
dontUnpack = true;
|
|
||||||
|
|
||||||
buildInputs = with pkgs; [ dmenu ];
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
cp $src/${pname} $out/bin
|
|
||||||
chmod +x $out/bin/${pname}
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
{ config, lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
flake.modules.nixos.pc = args: {
|
|
||||||
options.docker.enable = lib.mkEnableOption "Enable Docker";
|
|
||||||
|
|
||||||
config = lib.mkIf args.config.docker.enable {
|
|
||||||
virtualisation = {
|
|
||||||
oci-containers.backend = "docker";
|
|
||||||
|
|
||||||
docker = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
autoPrune = {
|
|
||||||
enable = true;
|
|
||||||
dates = "weekly";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.${config.flake.meta.owner.username}.extraGroups = [ "docker" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ config, ... }:
|
|
||||||
{
|
|
||||||
home = {
|
|
||||||
file."${config.home.sessionVariables.XINITRC}".source = ./xinitrc;
|
|
||||||
|
|
||||||
sessionVariables.XINITRC = "${config.xdg.configHome}/X11/xinitrc";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
diff --git a/dmenu.c b/dmenu.c
|
|
||||||
|
|
||||||
index fd49549..e9e2648 100644
|
|
||||||
--- a/dmenu.c
|
|
||||||
+++ b/dmenu.c
|
|
||||||
@@ -757,6 +757,8 @@ main(int argc, char *argv[])
|
|
||||||
colors[SchemeSel][ColFg] = argv[++i];
|
|
||||||
else if (!strcmp(argv[i], "-w")) /* embedding window id */
|
|
||||||
embed = argv[++i];
|
|
||||||
+ else if (!strcmp(argv[i], "-c"))
|
|
||||||
+ continue;
|
|
||||||
else
|
|
||||||
usage();
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.nixos.pc =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
(dmenu.override {
|
|
||||||
patches = [
|
|
||||||
./dmenu-center-noop.patch
|
|
||||||
];
|
|
||||||
})
|
|
||||||
|
|
||||||
dmenu-bluetooth
|
|
||||||
dunst
|
|
||||||
networkmanager_dmenu
|
|
||||||
poweralertd
|
|
||||||
slock
|
|
||||||
xdotool
|
|
||||||
xwallpaper
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.nixos.desktop.services.fwupd.enable = true;
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui.services.flameshot.enable = true;
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ config, ... }:
|
|
||||||
{
|
|
||||||
services.flameshot.settings.General = {
|
|
||||||
disabledTrayIcon = false;
|
|
||||||
saveAfterCopy = true;
|
|
||||||
savePath = "${config.xdg.userDirs.pictures}/Screenshots";
|
|
||||||
showHelp = false;
|
|
||||||
uiColor = "#60a5fa";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.nixos.desktop =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
fonts = {
|
|
||||||
fontconfig.enable = true;
|
|
||||||
|
|
||||||
packages = with pkgs; [
|
|
||||||
nerd-fonts.jetbrains-mono
|
|
||||||
nerd-fonts.meslo-lg
|
|
||||||
terminus_font
|
|
||||||
terminus_font_ttf
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.base.programs.fzf = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.base.home.sessionVariables = {
|
|
||||||
FZF_DEFAULT_OPTS = "--reverse";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
{
|
|
||||||
nixpkgs.allowedUnfreePackages = [
|
|
||||||
"steam"
|
|
||||||
"steam-unwrapped"
|
|
||||||
];
|
|
||||||
|
|
||||||
flake.modules.nixos.desktop.programs.steam.enable = true;
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homeManager.gui =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [ zeroad ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homManager.gui.services.gammastep.enable = true;
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
flake.modules.homManager.gui.services.gammastep.provider = "geoclue2";
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue