Compare commits

..

No commits in common. "main" and "2025-05-29-17.01.09" have entirely different histories.

463 changed files with 5756 additions and 5498 deletions

View file

@ -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"'"
}'

View file

@ -1 +0,0 @@
.git/

View file

@ -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@oliverdavies.dev>
Oliver Davies <oliver@oliverdavies.uk> <opdavies@gmail.com>
Oliver Davies <oliver@oliverdavies.uk> <opdavies@noreply.code.oliverdavies.uk>

View file

@ -1,3 +1,7 @@
# 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`).
| Hostname | Description | Manufacturer | Model | Role |
|------------|-------------------------|--------------|----------------------------------------|---------|
| `PW05CH3L` | My work laptop. | Lenovo | ThinkPad L13 | Laptop |
| `lemp11` | My son's laptop. | System76 | Lemur Pro | Laptop |
| `t480` | My personal laptop. | Lenovo | ThinkPad T480 | Laptop |
| `t490` | My other son's laptop. | Lenovo | ThinkPad T490 | Laptop |
| `nixedo` | My homelab/home server. | TUXEDO | InfinityBook Pro Gen7 (MK1) (Standard) | Server |

525
flake.lock generated
View file

@ -4,17 +4,15 @@
"inputs": {
"darwin": "darwin",
"home-manager": "home-manager",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs": "nixpkgs",
"systems": "systems"
},
"locked": {
"lastModified": 1754433428,
"narHash": "sha256-NA/FT2hVhKDftbHSwVnoRTFhes62+7dxZbxj5Gxvghs=",
"lastModified": 1747575206,
"narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=",
"owner": "ryantm",
"repo": "agenix",
"rev": "9edb1787864c4f59ae5074ad498b6272b3ec308d",
"rev": "4835b1dc898959d8547a871ef484930675cb47f1",
"type": "github"
},
"original": {
@ -23,38 +21,6 @@
"type": "github"
}
},
"bop-scripts": {
"flake": false,
"locked": {
"lastModified": 1756931648,
"narHash": "sha256-bfAmJ1IY0B6eNbJvoWkUMQ7Ya4ShrIoVSdQrnE/cn40=",
"owner": "breadonpenguins",
"repo": "scripts",
"rev": "d04bcbe63176e623e1ce8edc4c3840c506a28d96",
"type": "github"
},
"original": {
"owner": "breadonpenguins",
"repo": "scripts",
"type": "github"
}
},
"conf-vim": {
"flake": false,
"locked": {
"lastModified": 1507549264,
"narHash": "sha256-AjiTJsoim0BAnyfqk1IQzNsa6jhFM2+A66E7q9sJqz0=",
"owner": "tjdevries",
"repo": "conf.vim",
"rev": "a716df0fd5d7ba558c07dac2e07f05d5eba11afb",
"type": "github"
},
"original": {
"owner": "tjdevries",
"repo": "conf.vim",
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
@ -77,27 +43,6 @@
"type": "github"
}
},
"devshell": {
"inputs": {
"nixpkgs": [
"git-repo-updater",
"nixpkgs"
]
},
"locked": {
"lastModified": 1741473158,
"narHash": "sha256-kWNaq6wQUbUMlPgw8Y+9/9wP0F8SHkjy24/mN3UAppg=",
"owner": "numtide",
"repo": "devshell",
"rev": "7c9e793ebe66bcba8292989a68c0419b737a22a0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"disko": {
"inputs": {
"nixpkgs": [
@ -105,11 +50,11 @@
]
},
"locked": {
"lastModified": 1756733629,
"narHash": "sha256-dwWGlDhcO5SMIvMSTB4mjQ5Pvo2vtxvpIknhVnSz2I8=",
"lastModified": 1748225455,
"narHash": "sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c+qfj6xk=",
"owner": "nix-community",
"repo": "disko",
"rev": "a5c4f2ab72e3d1ab43e3e65aa421c6f2bd2e12a1",
"rev": "a894f2811e1ee8d10c50560551e50d6ab3c392ba",
"type": "github"
},
"original": {
@ -118,41 +63,23 @@
"type": "github"
}
},
"edit-alternate-vim": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1635180789,
"narHash": "sha256-mEKnqYAhgrdxPRoKf4S4yYecdFIHGg8bDxpqPuC1+S4=",
"owner": "tjdevries",
"repo": "edit_alternate.vim",
"rev": "ef3019115d9bb7ffd691d2859eda213dd99e0b0a",
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "tjdevries",
"repo": "edit_alternate.vim",
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1756770412,
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "4524271976b625a4a605beefd893f270620fd751",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nur",
@ -173,51 +100,6 @@
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"git-repo-updater": {
"inputs": {
"devshell": "devshell",
"flake-parts": [
"flake-parts"
],
"import-tree": [
"import-tree"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1757018109,
"narHash": "sha256-KfRzBPOOM5cf8mFVeWjV7TGa3p+ul/flxnUdwGW4Sds=",
"ref": "refs/heads/main",
"rev": "63235768261976efe0d9c825e69c44fff8c80e5d",
"revCount": 1,
"type": "git",
"url": "https://code.oliverdavies.uk/opdavies/git-repo-updater"
},
"original": {
"type": "git",
"url": "https://code.oliverdavies.uk/opdavies/git-repo-updater"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -246,11 +128,11 @@
]
},
"locked": {
"lastModified": 1756991914,
"narHash": "sha256-4ve/3ah5H/SpL2m3qmZ9GU+VinQYp2MN1G7GamimTds=",
"lastModified": 1748529677,
"narHash": "sha256-MJEX3Skt5EAIs/aGHD8/aXXZPcceMMHheyIGSjvxZN0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "b08f8737776f10920c330657bee8b95834b7a70f",
"rev": "da282034f4d30e787b8a10722431e8b650a907ef",
"type": "github"
},
"original": {
@ -260,76 +142,13 @@
"type": "github"
}
},
"import-tree": {
"locked": {
"lastModified": 1752730890,
"narHash": "sha256-GES8fapSLGz36MMPRVNkSUWXUTtqvGQNXHjRmRLfJUY=",
"owner": "vic",
"repo": "import-tree",
"rev": "6ebb8cb87987b20264c09296166543fd3761d274",
"type": "github"
},
"original": {
"owner": "vic",
"repo": "import-tree",
"type": "github"
}
},
"ixx": {
"inputs": {
"flake-utils": [
"nixvim",
"nuschtosSearch",
"flake-utils"
],
"nixpkgs": [
"nixvim",
"nuschtosSearch",
"nixpkgs"
]
},
"locked": {
"lastModified": 1754860581,
"narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=",
"owner": "NuschtOS",
"repo": "ixx",
"rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"ref": "v0.1.1",
"repo": "ixx",
"type": "github"
}
},
"nix-index-database": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1756612744,
"narHash": "sha256-/glV6VAq8Va3ghIbmhET3S1dzkbZqicsk5h+FtvwiPE=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "3fe768e1f058961095b4a0d7a2ba15dc9736bdc6",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-index-database",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1756925795,
"narHash": "sha256-kUb5hehaikfUvoJDEc7ngiieX88TwWX/bBRX9Ar6Tac=",
"lastModified": 1747900541,
"narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "ba6fab29768007e9f2657014a6e134637100c57d",
"rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06",
"type": "github"
},
"original": {
@ -339,44 +158,49 @@
"type": "github"
}
},
"nixpkgs": {
"nixos-wsl": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1756787288,
"narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1",
"lastModified": 1746453552,
"narHash": "sha256-r66UGha+7KVHkI7ksrcMjnw/mm9Sg4l5bQlylxHwdGU=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "be618645aa0adf461f778500172b6896d5ab2d01",
"type": "github"
},
"original": {
"owner": "nixos",
"owner": "nix-community",
"ref": "main",
"repo": "NixOS-WSL",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1745391562,
"narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1754788789,
"narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "a73b9c743612e4244d865a2fdee11865283c04e6",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1751274312,
"narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=",
"lastModified": 1748037224,
"narHash": "sha256-92vihpZr6dwEMV6g98M5kHZIttrWahb9iRPBm1atcPk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674",
"rev": "f09dede81861f3a83f7f06641ead34f02f37597f",
"type": "github"
},
"original": {
@ -386,44 +210,66 @@
"type": "github"
}
},
"nixvim": {
"inputs": {
"flake-parts": [
"flake-parts"
],
"nixpkgs": [
"nixpkgs"
],
"nuschtosSearch": "nuschtosSearch",
"systems": "systems_3"
},
"nixpkgs_2": {
"locked": {
"lastModified": 1756946299,
"narHash": "sha256-N4PjGA0rittpNZGscKPel+mr/dMcKF73j0yr4rbG3T0=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "63496f00c681b3e200bd17878a43ec68b7139a66",
"lastModified": 1742937945,
"narHash": "sha256-lWc+79eZRyvHp/SqMhHTMzZVhpxkRvthsP1Qx6UCq0E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d02d88f8de5b882ccdde0465d8fa2db3aa1169f7",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1748370509,
"narHash": "sha256-QlL8slIgc16W5UaI3w7xHQEP+Qmv/6vSNTpoZrrSlbk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4faa5f5321320e49a78ae7848582f684d64783e9",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1748370509,
"narHash": "sha256-QlL8slIgc16W5UaI3w7xHQEP+Qmv/6vSNTpoZrrSlbk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4faa5f5321320e49a78ae7848582f684d64783e9",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs"
]
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_4",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1757050467,
"narHash": "sha256-Rps0Ga0g/TdY49rR2ZRBsdBYybSzPccEsaI9IvwuE98=",
"lastModified": 1748531852,
"narHash": "sha256-OBxzEMqMJKNzbAbIIu/Jo/UVrjMG212uAiEHLRlBkxU=",
"owner": "nix-community",
"repo": "NUR",
"rev": "985abf0197c75dd64c24691a7e5e0acf308d7f20",
"rev": "690c5a14328ee2c4bf6226f75463ec2f38113481",
"type": "github"
},
"original": {
@ -432,84 +278,16 @@
"type": "github"
}
},
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils",
"ixx": "ixx",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1755555503,
"narHash": "sha256-WiOO7GUOsJ4/DoMy2IC5InnqRDSo2U11la48vCCIjjY=",
"owner": "NuschtOS",
"repo": "search",
"rev": "6f3efef888b92e6520f10eae15b86ff537e1d2ea",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"repo": "search",
"type": "github"
}
},
"root": {
"inputs": {
"agenix": "agenix",
"bop-scripts": "bop-scripts",
"conf-vim": "conf-vim",
"disko": "disko",
"edit-alternate-vim": "edit-alternate-vim",
"flake-parts": "flake-parts",
"git-repo-updater": "git-repo-updater",
"home-manager": "home-manager_2",
"import-tree": "import-tree",
"nix-index-database": "nix-index-database",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs",
"nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_3",
"nixpkgs-stable": "nixpkgs-stable",
"nixvim": "nixvim",
"nur": "nur",
"rwxrob-dot": "rwxrob-dot",
"standard-vim": "standard-vim",
"vim-heritage": "vim-heritage",
"vim-textobj-xmlattr": "vim-textobj-xmlattr",
"voidrice": "voidrice",
"zet": "zet"
}
},
"rwxrob-dot": {
"flake": false,
"locked": {
"lastModified": 1751898094,
"narHash": "sha256-kGpHL2l9p/yOtmG+AZvOb0Y5mH1d+Zoh2dd5N3Xjizc=",
"owner": "rwxrob",
"repo": "dot",
"rev": "90794c77061f270078e847af45c376610768c6e2",
"type": "github"
},
"original": {
"owner": "rwxrob",
"repo": "dot",
"type": "github"
}
},
"standard-vim": {
"flake": false,
"locked": {
"lastModified": 1539613748,
"narHash": "sha256-9VwkvV1Dv6cE4uDkPp36DozjWJOclDR883yDMYw000E=",
"owner": "tjdevries",
"repo": "standard.vim",
"rev": "b333ef9a9cf6cf66536deda017a542843613fa75",
"type": "github"
},
"original": {
"owner": "tjdevries",
"repo": "standard.vim",
"type": "github"
"nur": "nur"
}
},
"systems": {
@ -527,99 +305,26 @@
"type": "github"
}
},
"systems_2": {
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"lastModified": 1733222881,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"vim-heritage": {
"flake": false,
"locked": {
"lastModified": 1716350150,
"narHash": "sha256-YzqP2+Go8bW3heFyzzcS/91LrMkwjpZ89+ptrjjBKrM=",
"owner": "jessarcher",
"repo": "vim-heritage",
"rev": "574baeb0679681a710adce5110a0d8b2ae1c2637",
"type": "github"
},
"original": {
"owner": "jessarcher",
"repo": "vim-heritage",
"type": "github"
}
},
"vim-textobj-xmlattr": {
"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",

210
flake.nix
View file

@ -1,106 +1,156 @@
{
inputs = {
agenix = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:ryantm/agenix";
};
bop-scripts = {
flake = false;
url = "github:breadonpenguins/scripts";
};
conf-vim = {
flake = false;
url = "github:tjdevries/conf.vim";
};
agenix.url = "github:ryantm/agenix";
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";
nixvim = {
inputs.flake-parts.follows = "flake-parts";
inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/nixvim";
};
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nur = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/NUR";
};
rwxrob-dot = {
flake = false;
url = "github:rwxrob/dot";
};
standard-vim = {
flake = false;
url = "github:tjdevries/standard.vim";
};
vim-heritage = {
flake = false;
url = "github:jessarcher/vim-heritage";
};
vim-textobj-xmlattr = {
flake = false;
url = "github:whatyouhide/vim-textobj-xmlattr";
};
voidrice = {
flake = false;
url = "github:lukesmithxyz/voidrice";
};
zet = {
flake = false;
url = "git+https://code.oliverdavies.uk/opdavies/zet";
};
nur.url = "github:nix-community/NUR";
};
outputs =
inputs@{ flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
flake = {
overlays = import ./overlays { inherit inputs; };
{
agenix,
disko,
nixos-hardware,
nixpkgs,
self,
...
}@inputs:
let
inherit (self) outputs;
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
username = "opdavies";
specialArgs = {
inherit
inputs
outputs
self
system
username
;
};
imports = [ (inputs.import-tree ./modules) ];
inherit (pkgs) mkShell;
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 {
specialArgs = specialArgs // {
hostname = "lemp11";
stateVersion = "22.11";
};
modules = [
agenix.nixosModules.default
nixos-hardware.nixosModules.common-cpu-intel
nixos-hardware.nixosModules.common-gpu-intel
nixos-hardware.nixosModules.common-pc-laptop
nixos-hardware.nixosModules.common-pc-laptop-hdd
nixos-hardware.nixosModules.system76
./hosts/lemp11/configuration.nix
];
};
nixedo = nixpkgs.lib.nixosSystem {
specialArgs = specialArgs // {
hostname = "nixedo";
stateVersion = "24.11";
};
modules = [
agenix.nixosModules.default
./hosts/nixedo/configuration.nix
];
};
t480 = nixpkgs.lib.nixosSystem {
specialArgs = specialArgs // {
hostname = "t480";
stateVersion = "22.11";
};
modules = [
agenix.nixosModules.default
nixos-hardware.nixosModules.common-gpu-intel
nixos-hardware.nixosModules.lenovo-thinkpad-t480
./hosts/t480/configuration.nix
];
};
t490 = nixpkgs.lib.nixosSystem {
specialArgs = specialArgs // {
hostname = "t490";
stateVersion = "22.11";
};
modules = [
agenix.nixosModules.default
nixos-hardware.nixosModules.common-gpu-intel
nixos-hardware.nixosModules.lenovo-thinkpad-t490
./hosts/t490/configuration.nix
];
};
PW05CH3L = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = specialArgs // {
hostname = "PW05CH3L";
stateVersion = "22.11";
};
modules = [
agenix.nixosModules.default
disko.nixosModules.disko
inputs.nixos-wsl.nixosModules.default
./hosts/PW05CH3L/configuration.nix
];
};
};
};
}

View file

@ -1,13 +0,0 @@
{ pkgs, ... }:
{
imports = [
./nixedo/email-filters.nix
];
home.packages = with pkgs; [
import-to-jellyfin
vic
yt-dlp
];
}

View file

@ -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
View file

@ -0,0 +1,7 @@
{ outputs, ... }:
{
imports = [
outputs.homeManagerModules.default
];
}

View 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
View 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
View file

@ -0,0 +1,13 @@
{
imports = [
../common
./nixedo/modules/email-filters.nix
];
cli = {
fzf.enable = true;
starship.enable = true;
zsh.enable = true;
};
}

View file

@ -12,7 +12,7 @@ in
{
options.nixedo.${name} = {
configFile = lib.mkOption {
default = "${config.xdg.userDirs.extraConfig.XDG_REPOS_DIR}/${name}/config.lua";
default = "${config.home.homeDirectory}/Code/${name}/config.lua";
internal = true;
};
};

112
home/opdavies/t480.nix Normal file
View file

@ -0,0 +1,112 @@
{ 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;
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
View file

@ -0,0 +1,3 @@
{
imports = [ ../common ];
}

View file

@ -0,0 +1,28 @@
{ pkgs, ... }:
{
imports = [
../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 = "";
}

View file

@ -15,6 +15,8 @@
./users
inputs.home-manager.nixosModules.home-manager
outputs.nixosModules.default
];
nix = {
@ -62,13 +64,21 @@
users."${username}" = import ./home.nix;
};
nixpkgs.overlays = [
inputs.nur.overlays.default
nixpkgs = {
config = {
allowUnfree = true;
outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.stable-packages
];
permittedInsecurePackages = [ "electron-27.3.11" ];
};
overlays = [
inputs.nur.overlays.default
outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.stable-packages
];
};
nix.extraOptions = ''
trusted-users = root ${username}

View file

@ -9,6 +9,8 @@ let
pkgs = import inputs.nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [
outputs.overlays.additions
outputs.overlays.stable-packages
@ -25,6 +27,10 @@ let
;
in
{
imports = [
outputs.homeManagerModules.default
];
home.username = "opdavies";
home.homeDirectory = "/home/${config.home.username}";

View file

@ -1,7 +1,7 @@
{ config, self, ... }:
{ config, ... }:
{
users.users.opdavies = { };
home-manager.users.opdavies = import "${self}/home-manager/opdavies/${config.networking.hostName}.nix";
home-manager.users.opdavies = import ../../../home/opdavies/${config.networking.hostName}.nix;
}

View file

@ -0,0 +1,58 @@
{ pkgs, ... }:
{
imports = [
../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
];
}

View 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
View 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
View 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 = "";
};
};
};
}

View file

@ -2,12 +2,10 @@
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ inputs, pkgs, ... }:
{ pkgs, ... }:
{
imports = [
inputs.agenix.nixosModules.default
../common
./hardware-configuration.nix
./homelab.nix
@ -19,6 +17,10 @@
../../users/opdavies.nix
];
core.openssh.enable = true;
cli.podman.enable = true;
desktop.dconf.enable = true;
# TODO: why didn't it work when adding this to jitsi.nix?
nixpkgs.config.permittedInsecurePackages = [
"jitsi-meet-1.0.8043"
@ -27,7 +29,10 @@
services.logind.lidSwitchExternalPower = "ignore";
boot.loader = {
efi.canTouchEfiVariables = true;
efi = {
canTouchEfiVariables = true;
};
systemd-boot.enable = true;
};

View file

@ -1,43 +1,28 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"xhci_pci"
"thunderbolt"
"nvme"
"usb_storage"
"sd_mod"
];
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/40649879-4ee6-4668-8257-fe81a7773024";
fsType = "ext4";
};
fileSystems."/" =
{ device = "/dev/disk/by-uuid/40649879-4ee6-4668-8257-fe81a7773024";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/24B1-88CB";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/24B1-88CB";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];

View file

@ -8,14 +8,18 @@
services = {
audiobookshelf.enable = true;
forgejo.enable = true;
gitea-actions-runner.enable = true;
home-assistant.enable = true;
homepage-dashboard.enable = true;
immich.enable = true;
jellyfin.enable = true;
jitsi.enable = true;
paperless.enable = true;
peertube.enable = true;
tubearchivist.enable = true;
uptime-kuma.enable = true;
vaultwarden.enable = false;
vaultwarden.enable = true;
};
};
}

View file

@ -29,7 +29,6 @@
"home"
"jellyfin"
"luke"
"mealie"
"nixedo"
"paperless"
"photos"
@ -40,6 +39,7 @@
"rebuilding-symfony"
"tailwindcss-demo"
"talking-drupal-tailwindcss"
"tome"
"tubearchivist"
"uptime"
"vaultwarden"

View file

@ -1,26 +1,61 @@
{ config, ... }:
{ config, lib, ... }:
with lib;
let
cfg = homelab.services.${service};
homelab = config.homelab;
service = "forgejo";
in
{
services.forgejo = {
enable = true;
stateDir = "/var/www/forgejo";
options.homelab.services.${service} = {
enable = mkEnableOption "Enable ${service}";
settings = {
server = {
DOMAIN = "code.oliverdavies.uk";
LANDING_PAGE = "explore";
ROOT_URL = "https://${config.services.forgejo.settings.server.DOMAIN}";
SSH_DOMAIN = "ssh.oliverdavies.uk";
};
url = mkOption {
default = "code.${homelab.domain}";
type = types.str;
};
service.DISABLE_REGISTRATION = true;
homepage.name = mkOption {
default = "Forgejo";
type = types.str;
};
ui.DEFAULT_THEME = "forgejo-auto";
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;
};
};
services.cloudflared.tunnels.${config.homelab.cloudflared.tunnelId}.ingress = {
"${config.services.forgejo.settings.server.DOMAIN}" =
"http://localhost:${toString config.services.forgejo.settings.server.HTTP_PORT}";
config = mkIf cfg.enable {
services = {
${service} = {
enable = true;
stateDir = "/var/www/${service}";
settings = {
server = {
DOMAIN = cfg.url;
ROOT_URL = "https://${cfg.url}";
};
service.DISABLE_REGISTRATION = true;
};
};
cloudflared.tunnels.${homelab.cloudflared.tunnelId}.ingress = {
${cfg.url} = "http://localhost:${toString config.services.${service}.settings.server.HTTP_PORT}";
};
};
};
}

View file

@ -1,25 +1,70 @@
{ config, pkgs, ... }:
{
services.immich = {
enable = true;
group = "media";
mediaLocation = "/mnt/media/immich";
};
config,
lib,
pkgs,
...
}:
services.nginx.virtualHosts."photos.oliverdavies.uk" = {
forceSSL = true;
useACMEHost = "oliverdavies.uk";
with lib;
locations."/" = {
proxyPass = "http://localhost:${toString config.services.immich.port}";
proxyWebsockets = true;
recommendedProxySettings = true;
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;
};
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;
};
};
environment.systemPackages = with pkgs; [
immich-cli
immich-go
];
config = mkIf cfg.enable {
services = {
${service} = {
enable = true;
group = "media";
mediaLocation = "/mnt/media/${service}";
};
nginx.virtualHosts."${cfg.url}" = {
forceSSL = true;
useACMEHost = homelab.domain;
locations."/" = {
proxyPass = "http://localhost:${toString config.services.immich.port}";
proxyWebsockets = true;
recommendedProxySettings = true;
};
};
};
environment.systemPackages = with pkgs; [
immich-cli
immich-go
];
};
}

View file

@ -1,23 +1,65 @@
{
services.jellyfin = {
enable = true;
{ config, lib, ... }:
configDir = "/mnt/media/jellyfin";
group = "media";
openFirewall = true;
with lib;
let
cfg = homelab.services.${service};
homelab = config.homelab;
service = "jellyfin";
in
{
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;
};
};
services.nginx.virtualHosts."jellyfin.oliverdavies.uk" = {
forceSSL = true;
useACMEHost = "oliverdavies.uk";
config = mkIf cfg.enable {
services = {
${service} = {
enable = true;
locations."/" = {
proxyPass = "http://localhost:8096";
recommendedProxySettings = true;
configDir = "/mnt/media/${service}";
group = "media";
openFirewall = true;
};
extraConfig = ''
proxy_buffering off;
'';
nginx.virtualHosts."${cfg.url}" = {
forceSSL = true;
useACMEHost = homelab.domain;
locations."/" = {
proxyPass = "http://localhost:8096";
recommendedProxySettings = true;
extraConfig = ''
proxy_buffering off;
'';
};
};
};
};
}

View file

@ -11,8 +11,6 @@ let
{ inherit port root url; } // overrides;
sites = [
(mkSite "books" {})
(mkSite "eric" {
rootSuffix = "/public";
@ -21,31 +19,11 @@ let
'';
})
(mkSite "examples" {})
]
++
map
(
domain:
mkSite domain {
extraConfig = ''
add_header X-Robots-Tag "noindex, nofollow";
'';
}
)
[
"bootstrap-with-tailwind"
"florida-drupalcamp-tailwind-css"
"luke"
"phpsw-sculpin-demo"
"rebuilding-acquia"
"rebuilding-bartik"
"rebuilding-bristol-js"
"rebuilding-symfony"
"tailwindcss-demo"
"talking-drupal-tailwindcss"
"wp-tailwind"
"zet"
];
(mkSite "luke" {
extraConfig = ''
add_header X-Robots-Tag "noindex, nofollow";
'';
})
];
in
sites

View file

@ -13,17 +13,15 @@ let
paths = [
"archive"
"automated-testing"
"core"
"daily/.+"
"examples"
"homelab"
"podcast"
"rss/bb.xml"
"rss/daily.xml"
"sites/default/files"
"testing"
"themes/custom/opdavies"
"tome-test"
];
port = ports.nginx-website-tome;
@ -79,11 +77,36 @@ in
globalRedirect = "www.oliverdavies.uk";
useACMEHost = "oliverdavies.uk";
};
"tome.oliverdavies.uk" = {
listen = [
{
addr = "localhost";
port = tome.port;
}
];
locations."/".tryFiles = "$uri $uri.html $uri/index.html =404";
root = tome.root;
extraConfig = ''
add_header X-Robots-Tag "noindex, nofollow";
port_in_redirect off;
# Remove trailing slashes.
rewrite ^/(.*)/$ /$1 permanent;
'';
};
};
cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466".ingress = {
"oliverdavies.uk" = "http://localhost:${toString port}";
"www.oliverdavies.uk" = "http://localhost:${toString port}";
cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466" = {
ingress = {
"oliverdavies.uk" = "http://localhost:${toString port}";
"tome.oliverdavies.uk" = "http://localhost:${toString tome.port}";
"www.oliverdavies.uk" = "http://localhost:${toString port}";
};
};
};
}

View file

@ -131,10 +131,6 @@
from = "/ansistrano-slides";
to = "/talks/deploying-php-ansible-ansistrano";
}
{
from = "/archive";
to = "/blog";
}
{
from = "/archive/2022-08-28/how-started-programming";
to = "/daily/2022-08-28/how-started-programming";
@ -2423,10 +2419,6 @@
from = "/d7";
to = "/drupal7";
}
{
from = "/daily";
to = "/blog";
}
{
from = "/dcbristol-cfp";
to = "https://www.papercall.io/drupalcamp-bristol-2019";

View file

@ -43,7 +43,10 @@ in
enable = true;
dataDir = "/mnt/media/${service}";
domain = "https://${cfg.url}";
settings = {
PAPERLESS_URL = "https://${cfg.url}";
};
};
nginx.virtualHosts."${cfg.url}" = {

View file

@ -11,7 +11,6 @@ in
config.homelab.ports = {
homepage-dashboard = 8097;
mealie = 9001;
pihole = 8082;
tubearchivist = 8099;
vaultwarden = 8022;
@ -19,10 +18,8 @@ in
nginx-website-sculpin = 8095;
nginx-website-tome = 8098;
nginx-books = 9002;
nginx-bootstrap-with-tailwind = 8081;
nginx-eric = 8084;
nginx-examples = 9003;
nginx-florida-drupalcamp-tailwind-css = 8083;
nginx-luke = 8094;
nginx-phpsw-sculpin-demo = 8085;

View file

@ -9,7 +9,6 @@
imports = [
./homepage
./mastodon.nix
./mealie.nix
./samba.nix
./uptime-kuma.nix
./vaultwarden.nix
@ -17,6 +16,7 @@
services = {
postgresqlBackup.enable = true;
tailscale.enable = true;
};
services.gitea-actions-runner.instances.default = {
@ -29,7 +29,6 @@
gawk
gitMinimal
gnused
jq
nix
nodejs
wget

View file

@ -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;
};
};
}

View file

@ -1,7 +1,7 @@
{
config,
inputs,
lib,
options,
...
}:
@ -20,6 +20,26 @@ in
default = "${service}.${homelab.domain}";
type = types.str;
};
homepage.name = mkOption {
default = "Vaultwarden";
type = types.str;
};
homepage.description = mkOption {
default = "Unofficial Bitwarden compatible server written in Rust";
type = types.str;
};
homepage.icon = mkOption {
default = "bitwarden";
type = types.str;
};
homepage.category = mkOption {
default = "Services";
type = types.str;
};
};
config = mkIf cfg.enable {
@ -27,8 +47,6 @@ in
${service} = {
enable = true;
environmentFile = config.age.secrets.vaultwarden-env.path;
config = {
DOMAIN = "https://${cfg.url}";
ROCKET_ADDRESS = "127.0.0.1";
@ -37,17 +55,11 @@ in
};
};
nginx.virtualHosts.${cfg.url} = {
forceSSL = true;
useACMEHost = homelab.domain;
locations."/" = {
proxyPass = "http://localhost:${toString config.services.${service}.config.ROCKET_PORT}";
recommendedProxySettings = true;
};
cloudflared.tunnels.${homelab.cloudflared.tunnelId}.ingress = {
"${cfg.url}" = "http://${config.services.${service}.config.ROCKET_ADDRESS}:${
toString config.services.${service}.config.ROCKET_PORT
}";
};
};
age.secrets.vaultwarden-env.file = "${inputs.self}/secrets/vaultwarden-env.age";
};
}

View file

@ -1,62 +1,73 @@
{ inputs, pkgs, ... }:
{ pkgs, ... }:
{
imports = [
inputs.agenix.nixosModules.default
inputs.nixos-hardware.nixosModules.common-gpu-intel
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-t480
../common
./hardware-configuration.nix
./cron.nix
./neomutt.nix
./newsboat
./modules
./secrets.nix
./xserver.nix
./services
../../users/opdavies.nix
];
services = {
auto-cpufreq.enable = true;
geoclue2.enable = true;
gvfs.enable = true;
power-profiles-daemon.enable = false;
printing.enable = true;
pulseaudio.enable = false;
thermald.enable = true;
throttled.enable = true;
upower.enable = true;
cli = {
kanata = {
enable = true;
devices = [
"/dev/input/by-path/platform-i8042-serio-0-event-kbd"
];
};
password-store = {
enable = true;
extensions = with pkgs.passExtensions; [
pass-audit
pass-otp
pass-update
];
};
};
core = {
bluetooth.enable = true;
openssh.enable = true;
pipewire.enable = true;
xbanish.enable = true;
zram.enable = true;
};
desktop = {
dconf.enable = true;
dwm.enable = true;
fonts.enable = true;
media.makemkv.enable = true;
st.enable = true;
thunar.enable = true;
};
boot = {
loader = {
systemd-boot.enable = true;
systemd-boot.configurationLimit = 10;
systemd-boot = {
enable = true;
configurationLimit = 10;
};
efi.canTouchEfiVariables = true;
efi = {
canTouchEfiVariables = true;
};
};
};
systemd.settings.Manager = {
DefaultTimeoutStopSec = "10s";
};
systemd.extraConfig = ''
DefaultTimeoutStopSec=10s
'';
networking.networkmanager.enable = true;
networking.hosts = {
"192.168.1.116" = [
"home.oliverdavies.uk"
"jellyfin.oliverdavies.uk"
"nixedo.oliverdavies.uk"
"paperless.oliverdavies.uk"
"photos.oliverdavies.uk"
"ssh.oliverdavies.uk"
"tubearchivist.oliverdavies.uk"
];
};
security = {
polkit.enable = true;
rtkit.enable = true;
@ -66,13 +77,17 @@
abook
acpi
arandr
backup-websites
brightnessctl
build-glove80
cdrkit
cpufrequtils
displayselect
dvdbackup
dvdplusrwtools
ffmpegthumbnailer
gimp3
gimp
gscan2pdf
gtypist
hunspellDicts.en-gb-large
isync
@ -88,11 +103,15 @@
peek
pmutils
shotwell
stable.gscan2pdf
slack
sxiv
tailscale
ttyper
upload-to-files
xcape
xsel
yt-dlp
zeroad
zoom-us
];
}

View file

@ -0,0 +1,8 @@
{
imports = [
./cron.nix
./neomutt.nix
./newsboat
./ollama.nix
];
}

View file

@ -0,0 +1,10 @@
{
services = {
ollama = {
enable = true;
acceleration = "rocm";
};
open-webui.enable = true;
};
}

View 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;
};
}

View file

@ -0,0 +1,40 @@
{
imports = [
../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;
}

View 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
View file

@ -0,0 +1,5 @@
{
hardware = {
bluetooth.enable = true;
};
}

View file

@ -0,0 +1,11 @@
{ pkgs, ... }:
{
services.cron = {
enable = true;
systemCronJobs = [
"0 8,20 * * * opdavies ${pkgs.isync}/bin/mbsync -a"
];
};
}

View 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;
};
}

View 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]]
'';
};
}

View 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;
};
};
};
}

View file

@ -0,0 +1,12 @@
{
services.pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
};
}

View file

@ -0,0 +1,9 @@
{
services.udev = {
enable = true;
extraRules = ''
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
'';
};
}

View file

@ -0,0 +1,10 @@
{
services.xserver = {
enable = true;
xkb = {
layout = "gb";
variant = "";
};
};
}

View file

@ -13,7 +13,8 @@ check:
nix flake check
clean:
nh clean all
nix store optimise --verbose
nix store gc --verbose
collect-garbage:
nix-collect-garbage -d
@ -29,7 +30,7 @@ test *args:
@just _nixos test {{ args }}
update:
nix flake update --commit-lock-file
nix flake update
_nixos command *args:
nh os {{ command }} . {{ args }}
sudo nixos-rebuild {{ command }} --flake . {{ args }}

View file

@ -1,7 +0,0 @@
{
flake.modules.nixos.desktop = {
hardware.bluetooth.enable = true;
services.blueman.enable = true;
};
}

View file

@ -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: {}
}
'';
};
};
}

View file

@ -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";
};
};
};
}

View file

@ -1,3 +0,0 @@
{
flake.modules.homeManager.gui.programs.chromium.enable = true;
}

View file

@ -1,3 +0,0 @@
{
flake.modules.homeManager.gui.programs.librewolf.enable = true;
}

View file

@ -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
];
};
}

View file

@ -1,5 +0,0 @@
{
flake.modules.homeManager.gui.programs.librewolf.languagePacks = [
"en-GB"
];
}

View file

@ -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;
};
};
}

View file

@ -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" ];
};
};
}

View file

@ -1,7 +0,0 @@
{
flake.modules.homeManager.gui.programs.librewolf.profiles.default.search = {
default = "ddg";
force = true;
privateDefault = "ddg";
};
}

View file

@ -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;
};
}

View file

@ -1,3 +0,0 @@
{
flake.modules.homeManager.gui.programs.qutebrowser.enable = true;
}

View file

@ -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"
];
};
}

View file

@ -1,7 +0,0 @@
{
flake.modules.homeManager.gui =
{ pkgs, ... }:
{
programs.qutebrowser.package = pkgs.stable.qutebrowser;
};
}

View file

@ -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={}";
};
}

View file

@ -1,5 +0,0 @@
{
flake.modules.homeManager.gui.programs.qutebrowser.settings = {
colors.webpage.darkmode.enabled = true;
};
}

View file

@ -1,7 +0,0 @@
{
flake.modules.nixos.pc =
{ pkgs, ... }:
{
environment.systemPackages = [ pkgs.bc ];
};
}

View file

@ -1,3 +0,0 @@
{
flake.modules.nixos.pc.programs.dconf.enable = true;
}

View file

@ -1,7 +0,0 @@
{ config, ... }:
{
flake.modules.nixos.desktop.imports = with config.flake.modules.nixos; [
pc
];
}

View file

@ -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.";
};
};
};
};
}

View file

@ -1,3 +0,0 @@
{
flake.modules.homeManager.base.programs.direnv.enable = true;
}

View file

@ -1,3 +0,0 @@
{
flake.modules.homeManager.base.programs.direnv.nix-direnv.enable = true;
}

View file

@ -1,3 +0,0 @@
{
flake.modules.homeManager.base.programs.direnv.silent = true;
}

View file

@ -1,3 +0,0 @@
{
flake.modules.homeManager.base.programs.direnv.enableZshIntegration = true;
}

View file

@ -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
'';
})
];
};
}

View file

@ -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}
'';
})
];
};
}

View file

@ -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}
'';
})
];
};
}

View file

@ -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" ];
};
};
}

View file

@ -1,11 +0,0 @@
{
flake.modules.homeManager.gui =
{ config, ... }:
{
home = {
file."${config.home.sessionVariables.XINITRC}".source = ./xinitrc;
sessionVariables.XINITRC = "${config.xdg.configHome}/X11/xinitrc";
};
};
}

View file

@ -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();

View file

@ -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
];
};
}

View file

@ -1,3 +0,0 @@
{
flake.modules.nixos.desktop.services.fwupd.enable = true;
}

View file

@ -1,3 +0,0 @@
{
flake.modules.homeManager.gui.services.flameshot.enable = true;
}

View file

@ -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";
};
};
}

View file

@ -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
];
};
};
}

View file

@ -1,6 +0,0 @@
{
flake.modules.homeManager.base.programs.fzf = {
enable = true;
enableZshIntegration = true;
};
}

View file

@ -1,5 +0,0 @@
{
flake.modules.homeManager.base.home.sessionVariables = {
FZF_DEFAULT_OPTS = "--reverse";
};
}

View file

@ -1,8 +0,0 @@
{
nixpkgs.allowedUnfreePackages = [
"steam"
"steam-unwrapped"
];
flake.modules.nixos.desktop.programs.steam.enable = true;
}

View file

@ -1,7 +0,0 @@
{
flake.modules.homeManager.gui =
{ pkgs, ... }:
{
home.packages = with pkgs; [ zeroad ];
};
}

View file

@ -1,3 +0,0 @@
{
flake.modules.homManager.gui.services.gammastep.enable = true;
}

View file

@ -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