Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8ccbb46903 |
+1
-4
@@ -1,9 +1,6 @@
|
||||
/fdroid/config.yml
|
||||
/fdroid/keystore.p12
|
||||
/fdroid/repo/
|
||||
/fdroid/archive/
|
||||
/fdroid/tmp/
|
||||
/fdroid/metadata/
|
||||
/fdroid/repo/*.apk
|
||||
|
||||
# Devenv
|
||||
.devenv*
|
||||
|
||||
@@ -2,7 +2,6 @@ keys:
|
||||
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
||||
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
||||
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
||||
- &docker-env-var age1qwfnn0gv7mt5dsgy4enew439mgtfd49q46r2gfdqyehpkzx4npcq78a87s
|
||||
|
||||
creation_rules:
|
||||
- path_regex: fdroid/*
|
||||
@@ -11,4 +10,3 @@ creation_rules:
|
||||
- *primary
|
||||
- *aspi-ssh
|
||||
- *builder-ssh
|
||||
- *docker-env-var
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env sh
|
||||
#! /bin/sh
|
||||
|
||||
sops -d fdroid/encrypted-config.yml > fdroid/config.yml
|
||||
sops -d fdroid/encrypted-keystore.p12 > fdroid/keystore.p12
|
||||
+47
-46
@@ -3,11 +3,10 @@
|
||||
"devenv": {
|
||||
"locked": {
|
||||
"dir": "src/modules",
|
||||
"lastModified": 1781195293,
|
||||
"narHash": "sha256-C9OFghpvf3RzK2rGsZjjNNrTrHgFOecEkpDhFnU4QGs=",
|
||||
"lastModified": 1759939975,
|
||||
"owner": "cachix",
|
||||
"repo": "devenv",
|
||||
"rev": "5f5109c83854577191634f7b86fc6e0c8fd44964",
|
||||
"rev": "6eda3b7af3010d289e6e8e047435956fc80c1395",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -17,51 +16,68 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mk-shell-bin": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1677004959,
|
||||
"narHash": "sha256-/uEkr1UkJrh11vD02aqufCxtbF5YnhRTIKlx5kyvf+I=",
|
||||
"owner": "rrbutani",
|
||||
"repo": "nix-mk-shell-bin",
|
||||
"rev": "ff5d8bd4d68a347be5042e2f16caee391cd75887",
|
||||
"lastModified": 1747046372,
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rrbutani",
|
||||
"repo": "nix-mk-shell-bin",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix2container": {
|
||||
"git-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775487831,
|
||||
"narHash": "sha256-2lguQpLPQaxpQCJjXhmEEAfabwsAhkP29Z7fgLzHARA=",
|
||||
"owner": "nlewo",
|
||||
"repo": "nix2container",
|
||||
"rev": "76be9608a7f4d6c985d28b0e7be903ae2547df3e",
|
||||
"lastModified": 1759523803,
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "cfc9f7bb163ad8542029d303e599c0f7eee09835",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nlewo",
|
||||
"repo": "nix2container",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"inputs": {
|
||||
"nixpkgs-src": "nixpkgs-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778507786,
|
||||
"narHash": "sha256-HzSQCKMsMr8r55LwM1JuzIOB+8bzk0FEv6sItKvsfoY=",
|
||||
"lastModified": 1758532697,
|
||||
"owner": "cachix",
|
||||
"repo": "devenv-nixpkgs",
|
||||
"rev": "8f24a228a782e24576b155d1e39f0d914b380691",
|
||||
"rev": "207a4cb0e1253c7658c6736becc6eb9cace1f25f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -71,32 +87,17 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1778274207,
|
||||
"narHash": "sha256-I4puXmX1iovcCHZlRmztO3vW0mAbbRvq4F8wgIMQ1MM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b3da656039dc7a6240f27b2ef8cc6a3ef3bccae7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"devenv": "devenv",
|
||||
"mk-shell-bin": "mk-shell-bin",
|
||||
"nix2container": "nix2container",
|
||||
"nixpkgs": "nixpkgs"
|
||||
"git-hooks": "git-hooks",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"pre-commit-hooks": [
|
||||
"git-hooks"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
}
|
||||
|
||||
+6
-38
@@ -1,41 +1,9 @@
|
||||
{pkgs, ...}: {
|
||||
packages = with pkgs; [
|
||||
coreutils
|
||||
curl
|
||||
fdroidserver
|
||||
sops
|
||||
git
|
||||
cacert
|
||||
jq
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
packages = [
|
||||
pkgs.fdroidserver
|
||||
pkgs.sops
|
||||
];
|
||||
|
||||
scripts = {
|
||||
deploy-docker.exec = ''
|
||||
devenv container copy processes
|
||||
'';
|
||||
};
|
||||
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
httpConfig = builtins.readFile ./hosting/nginx-http.conf;
|
||||
};
|
||||
|
||||
processes.updater.exec = ''
|
||||
while true; do
|
||||
${pkgs.writeShellScript "run-updater" (builtins.readFile ./hosting/update.sh)}
|
||||
|
||||
echo "Sleeping for 30 minutes..."
|
||||
sleep 1800
|
||||
done
|
||||
'';
|
||||
|
||||
# environment variables for sops
|
||||
# SOPS_PGP_FP
|
||||
containers."processes" = {
|
||||
name = "gitlab.julian-mutter.de/julian/fdroid-frajul";
|
||||
registry = "docker://";
|
||||
|
||||
copyToRoot = []; # avoid copying this repo
|
||||
maxLayers = 10;
|
||||
};
|
||||
}
|
||||
|
||||
+12
-7
@@ -1,10 +1,15 @@
|
||||
# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
|
||||
inputs:
|
||||
mk-shell-bin:
|
||||
url: github:rrbutani/nix-mk-shell-bin
|
||||
nix2container:
|
||||
url: github:nlewo/nix2container
|
||||
inputs:
|
||||
nixpkgs:
|
||||
follows: nixpkgs
|
||||
nixpkgs:
|
||||
url: github:cachix/devenv-nixpkgs/rolling
|
||||
|
||||
# If you're using non-OSS software, you can set allowUnfree to true.
|
||||
# allowUnfree: true
|
||||
|
||||
# If you're willing to use a package that's vulnerable
|
||||
# permittedInsecurePackages:
|
||||
# - "openssl-1.1.1w"
|
||||
|
||||
# If you have more than one devenv you can merge them
|
||||
#imports:
|
||||
# - ./backend
|
||||
|
||||
+21
-30
@@ -296,42 +296,33 @@ keydname: ENC[AES256_GCM,data:Y3wSx0afY5cU1UTFGhfjkFUfhxfq1QLXJg==,iv:yKm+MRbVjh
|
||||
#ENC[AES256_GCM,data:zKniEwAw4Q+i+i4jmjIjyKtbymHpXL7P1roBPRlgi674/VBbgTzu7g==,iv:SyRbw64A7eiMJtjwo4QK90ovbkw5yQUR1mD71FPhc60=,tag:gP4mu7DTwJhXdlggPz0UxQ==,type:comment]
|
||||
sops:
|
||||
age:
|
||||
- enc: |
|
||||
- recipient: age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsRis5WitnZnBwVm15bXdO
|
||||
cHo2dkdwWDlNMUFOT3Q4SHErL29jY0tTZDI4CmtYVzdCcjZ4ZXl0MTNvdStJNHlH
|
||||
c0Nab2YwNWh2THJzdjJpYjhyVUl6M28KLS0tIGZuWHUxY1lCdUdvYUtCWXpqb3p0
|
||||
WmdGNGVZRGhuWE4rZVJBV1F6aTQ0eDgKkykL55f1wEkE+eMha/c7USjwpsUbJBpA
|
||||
IEy+9awjauMD9pNrBjqhbh2g5xY042ea7dcPaexNVsqauHxzzN4m4g==
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsWHkyZHFUcnVkRERzbnhj
|
||||
UnZQb0JvVUtlUnhkME1VZDFPVGgyeFc2TmowCkhWak5RZVh6NXZuRVdaRkpHNHc3
|
||||
WDYyQ25tVWFCenhRUGVncE9hc1ByZXMKLS0tIFpUOWhHMVpGeitQYzBhUisvNmRR
|
||||
eC9pcWFuY2ZHaTFWaGdNR1AvYmFpTncKCjWikMHAI7Mbqh5eUNwCs5BIlLLh5OxE
|
||||
ypwLLQoCECj1BWgJGGEnTVOGSdiRwUMCgWxsJSO/nz+1SbPTp4z0GQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
||||
- enc: |
|
||||
- recipient: age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqWEtDNGVDdXNXQktpNlds
|
||||
VlBMZ2NEcDFMMENSUnVUR0YvUUg3clhOOVZZCmxJTGp5UUJvaG05V2Z3NG52SjVG
|
||||
OS8vS0pIeXdlRVdPeVdHV0I5UkNwbG8KLS0tIGIvcUJvdFRxUExhY0cwN3hqV0Ur
|
||||
clhac1BydUk1MEFBdDdFUnFlNzZ5YXcK2UaiG9h9ZBDTfAEmLIS5Zwya60d5G7l4
|
||||
Gn3maQh8+N3iaapsn/waxwMXOUxlvVjBsRBd4z3k5iBHmt1+G23M3g==
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLNCtLdmovUmJhemtvWHRH
|
||||
RGRLNHdvRGJadXpHdFZhaStWbUxVNGJxOVdrClZydGNYVzlSYnd6RDJJZCtLRzJk
|
||||
TjM3RWV1L254T2MxeElkanJTS0ZFQ2MKLS0tIFluRllablZkRGp5cjR2Tm1wN1hD
|
||||
bDMxT3RqdG1QdVJ5cTlNVHBwd0x0czAKN6VTum88epGjNgA2v887k4/cfUIrZwTC
|
||||
cUGQmPwunrVK5OlwsM4d1xKC39CHWFE/uDeYCl8gADrOG1TcsFvqpA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
||||
- enc: |
|
||||
- recipient: age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzOE9CMTQ2OEw0dG5WVUkz
|
||||
ZWgrR1F6OWR1eXJQblRLOEoreHI5YmZNMkRzClJlRTF6Y3hGRzNGYmU3RC9Rek9Y
|
||||
YWdpWThmMTdkRjIwMnBpb2FwL1ZVejAKLS0tIDRsMHRXblZBUXltRGNqcytrSjlu
|
||||
V1VSWEZ0dC9XdUx6WFRvMUtlSjl5TGMKh+9AIETppAs8PbhyDiIHGhaT+5Nm7qs7
|
||||
hoUlfXSluotltd/a+B/IX0IjME/h7P6akJ9iecJzZfNTqh9ocD4IEw==
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQTVpSUDFTY0NabFpqT05y
|
||||
THB2bVZ1RFhEejI1NkFEeEs3SjF4TDBaU2pjCnNpQkRVY1BhLzVLWjVML29HanlB
|
||||
QXpzREMyYWkxQTZUbWg2Wk9KMkVkajAKLS0tIGdIa0w1ZFR5UEdydUVYYkVzSmgv
|
||||
SnB5aGptOU5DTklKQVUwaHFTTm00N1kKIDN8J2/Ypw3r1pA7FxCssaFT6wyiB2IR
|
||||
SmgMhts+dAtDIKxASiqAQAt9WJ5IUneqXu2IVF2bdzBHpcr3iXhbzQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
||||
- enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzNHJXRVBsam91cThzaXli
|
||||
K29SS08xRkRZNlJhaDhtZVpzTEJOREdIVzNrClQzdEk4RDhpcFVHdng4S2hpMFBT
|
||||
R2ZPeXRheldwNTl2WDFheDlHdDl1NEkKLS0tIElvWnFqS2Q4NGZJcUlOUG5ESCtV
|
||||
RzdIb0VJT1FaN24wY3hiUHVGaTZaN3cKS1lru+T2GyCLm6WPktEgZyuDnaOMc/ws
|
||||
pPCTcWZHxQCkL7kb/127eDsZJTxGdv8Dyn6PKr2ajlro1lQOwQHuCQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age1qwfnn0gv7mt5dsgy4enew439mgtfd49q46r2gfdqyehpkzx4npcq78a87s
|
||||
lastmodified: "2025-10-09T06:24:30Z"
|
||||
mac: ENC[AES256_GCM,data:tk5TECa+qYWwoQoOpnY79i4VNdacVNk6p98/yWjK35MCAmK4sHl+GETK+lImh+9FmTrtNzvLZ8mHvAalnpV1CqDTsZqjBRD8snPvpZdn6VgLrTu66C2Ft+FNWnJC1yECoJGE8csa94cHhMaezC/9jpCYnGG2rtaiVr9sfB28olM=,iv:HDDZ5gfFASGzJ5pOYkS/DSgkhFfMc0yeJzxFgTLOjYg=,tag:lmvOIa8oHS/HNA82w01TvQ==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
|
||||
@@ -3,25 +3,20 @@
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOSW1EWFFYam1zZ1hjMnk2\nZ1dJWjVtWGgxYzBjYXVqL1MxME43TjZXRkVFCmN4NUxzdVJ6dEdrRTJwY2MzWlF6\ncVE1aWtxK0R0ZW1NK3lPZUNjWmZVZzAKLS0tIEJvZk40bUU1RmFva25Wc3Nsa1Fj\ncWMwRWhKRXRLcHVITFRLVTl0NVlJK1EKDRRcacbVcrl6/0VITguko7ec9dVoOasN\nBFJKCefNCzldoukS9IVpmxH+pBL+Q7awMiqFW1aabfoSRdn2oWoPDQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||
"recipient": "age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg"
|
||||
"recipient": "age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxb3QyWWFHZjlvcFMzUFRV\nTVl2NEszNmVEWlNtYUJ0OW54YjUyVjRDeHk0CjM3S2pjUmNma0wrd0xXQ0VEM1Ir\nNXNndFlNUkpjZEUyeHB5dkdwYTcrOUkKLS0tIDBEaWVKZXVRMjlsOWRDdGhnSENY\nQm5EYy9ENGhQNmFsOTE0bFhXTC9IMTgKVNYtDqCUbzY2Q8zn1ub1T7PObImsjAq1\nXQcx6UXomwRz0NzHsLefFHZ+n7FbNzjnnlujkA7ez3vCY71EdRKUCQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhUGNVY0FzRmVVMmZUcU1r\nbVVFM2J0aG9qdTNCd1JyWnJiVHcwaCtIM0hVClJmN1NKT2l4TXVvU2ZZczVQMWM0\nZ3dabG05QWlaSU9GR2pFM2tldlBDVUkKLS0tIHhPT0pOUWx4M2ROQkR6T2M0NUlX\nbHBwR1RQUUI3QUt5bE1VWWtLZ3J3RmcKag3xF4PALKFu1N+cmvvdFjnW5k1Dp2vO\n/M/49tcDw7kc9LSkfzQhSJhXUNr+PtJmOinh228PziO/UJJ/d6HnVQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||
"recipient": "age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4"
|
||||
"recipient": "age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQVTNKRDQrb3R2R3lnWjJN\nZitETG9VdWlHNm1rRFpVd2Z2ckNIenA2MlRrCmx1ZVRhZUg0ZVBoYzhPdVhXUG5j\na2FXNUhJWDVuQjNyS0tBbHNQWjZPY3MKLS0tIHUvRU1leklPVkZpSkpJVjZHY1pk\nK05obThKKzdxc3BLcmQ1QWE4RjYvODQK3hIPfDysWC6elB5+EXcAjGay7KAKx40M\nqJzAy7JLviIh/leJDQY/4m0Wx5v6AJtm4Q6RpUcVouPpMD6bDYY4Kg==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrQ211UDlxTDR4UWxjZG85\nZHJTeFA0OFBsWU5nVSsxZ2RINGpnN3YzMXdvCmpMcnJVRG1SS2JVWUdxU0JGWmpy\ndTRJYUppU01qYmZFVU5RTGd3SHRMKzQKLS0tIHBZZWsvaVQvcmRMd0QvUzNKOWNz\nb3F3eXl4bmo4WjdTY1l2dWMwZ2llZjQKjN3vWtL+9PF39BkyPSqGaPfmyQrgXbDQ\nxObWs6NZqVWyJ+SEx8RvjdQymzbqG5NfQiWPCTR4kkS4/7KWxQxDTw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||
"recipient": "age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja"
|
||||
},
|
||||
{
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxWkFYdVROeWplUElxOGtY\nYlRoRkViWEJwdDNOSk5WczRvYWxPMkw2SVVvCnlneWI3VUN4R2E0Si9DWThUblVJ\nVUdoWGpTN0dldFUxMktPSTZIaXRmUjQKLS0tIGVwWWVqMW9NWTBzejlUWGFpY3NR\najRjc3pjRGhWOENKRFczQUtVcE8va1EKSZnqNhNcbD89iQi3he00TXfx9rw4HXNt\nZs3JnZOigvnZv2G0BwHD+TEeSbw3haS/2v65LMNhifsVVO/CZZrHOw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||
"recipient": "age1qwfnn0gv7mt5dsgy4enew439mgtfd49q46r2gfdqyehpkzx4npcq78a87s"
|
||||
"recipient": "age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4WEEzMTFOaW9wKzk0OE56\nMEJuejNCZ29HSnhvUGMyZUtMSmhRUWZZbFRVCjFodmZyekcyUHZ6QXEydStJQS9l\nSjhnWkpiNVpRL1pTbzFGTjhBd2tmWEUKLS0tIG1SRTB0d3E4S3pwRUFhVE9xZlk3\nVWJVMEpLMFNNbGQ2dk1JWWNyRHZPVUkKQ5IuJwMyqgJF8dkgEVJUcRLgQRhizFSJ\nB6qTE+SbjwRmgD5Ua2My4VxdOgXlsNVL8hHxKhGD4NkNC2edRUC+YA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-10-09T06:24:12Z",
|
||||
"mac": "ENC[AES256_GCM,data:uN3S6ttwLzX9If39NfoNRgrSzNjU7Ieym+yM1TJGNgHU545QDghPlar0EYRkbNpCucEQb0qANI6GUja51JTnNIJcMRET8VmvT3JXAVKV+4vB1X+j3Pq9/2IWg5UMXw+JKAT7eVbCsjxmJ7zh+XAC//wztbzUnT6fRvDCInQ52Fw=,iv:C9RjR3uuj/VG3fc/maTqJSSTt+iA82CYas0JS1I13CI=,tag:/h5+xMZgC3cn8aG+qyO2qA==,type:str]",
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.11.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
AuthorName: ''
|
||||
Categories:
|
||||
- repo-frajul
|
||||
CurrentVersionCode: 2147483647
|
||||
IssueTracker: ''
|
||||
Name: sheetless
|
||||
SourceCode: ''
|
||||
Summary: ''
|
||||
WebSite: ''
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000}, "packages": {"com.example.sheetless": {"metadata": {"preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"5b767e2a8ff69867a53406184f2469119e64d12d5418f6e60916cb0c04d6dedf": null, "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000}, "packages": {"com.example.sheetless": {"metadata": {"preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"35af8ff102f332f06edde3e1a20fa6c31a7a3ab89a6ceecad4ac003af133e024": null, "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000}, "packages": {"com.example.sheetless": {"metadata": {"preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"35af8ff102f332f06edde3e1a20fa6c31a7a3ab89a6ceecad4ac003af133e024": null, "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000}, "packages": {"com.example.sheetless": {"metadata": {"preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"523a2afc0741c0c75049fa27cbb85482f04a9a62ddb90e30b0d5f761b75e52af": null, "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000}, "packages": {"com.example.sheetless": {"metadata": {"preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"523a2afc0741c0c75049fa27cbb85482f04a9a62ddb90e30b0d5f761b75e52af": null, "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000}, "packages": {"com.example.sheetless": {"metadata": {"preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"7fd8bd4f70da9aaf0758774189d651fab81bb844a2d2681f846f3eac8034910f": null, "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000}, "packages": {"com.example.sheetless": {"metadata": {"preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"7fd8bd4f70da9aaf0758774189d651fab81bb844a2d2681f846f3eac8034910f": null, "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000}, "packages": {"com.example.sheetless": {"metadata": {"preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"da971d6f53700a2b4cc44e28f8a99dba925ad8f9f5c1d63b39e7886ab2dbb204": null, "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000}, "packages": {"com.example.sheetless": {"metadata": {"preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"da971d6f53700a2b4cc44e28f8a99dba925ad8f9f5c1d63b39e7886ab2dbb204": null, "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000}}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
{"timestamp": 1770871832000, "version": 20002, "index": {"name": "/index-v2.json", "sha256": "c82f9dcb4ec44cd950a3e37c2068e98bd937ee3ecbe3ec3e43bf92e454ddfb41", "size": 1356, "numPackages": 1}, "diffs": {"1770867053000": {"name": "/diff/1770867053000.json", "sha256": "237340f2725bce32223ab52872b36ec5f4de9a681cc1d7cd79aba0527b5caff7", "size": 891, "numPackages": 1}, "1770867889000": {"name": "/diff/1770867889000.json", "sha256": "d737a12dcb02182f71e8dab972f75849db81d9033a6b4dda53aa1b75d2ba1e44", "size": 891, "numPackages": 1}, "1770867892000": {"name": "/diff/1770867892000.json", "sha256": "d737a12dcb02182f71e8dab972f75849db81d9033a6b4dda53aa1b75d2ba1e44", "size": 891, "numPackages": 1}, "1770868831000": {"name": "/diff/1770868831000.json", "sha256": "7ae66e04480aa3387f7433a07be2502346dd6bf7ea97629ce0ae5e32ed6dc7f6", "size": 891, "numPackages": 1}, "1770868833000": {"name": "/diff/1770868833000.json", "sha256": "7ae66e04480aa3387f7433a07be2502346dd6bf7ea97629ce0ae5e32ed6dc7f6", "size": 891, "numPackages": 1}, "1770869424000": {"name": "/diff/1770869424000.json", "sha256": "7a09eca63b624a6d7b051a11aff2456f6b4cb80ef8adf0866edfc384766f322c", "size": 891, "numPackages": 1}, "1770869426000": {"name": "/diff/1770869426000.json", "sha256": "7a09eca63b624a6d7b051a11aff2456f6b4cb80ef8adf0866edfc384766f322c", "size": 891, "numPackages": 1}, "1770870688000": {"name": "/diff/1770870688000.json", "sha256": "97c70f56299ef604c92212e7189327d047b6097977b039432a99236b0cc0ea53", "size": 891, "numPackages": 1}, "1770870690000": {"name": "/diff/1770870690000.json", "sha256": "97c70f56299ef604c92212e7189327d047b6097977b039432a99236b0cc0ea53", "size": 891, "numPackages": 1}, "1770871830000": {"name": "/diff/1770871830000.json", "sha256": "5009941efc1dabc0a0c6e5e7cfbbe17b708a6365c109d9f11d2573321a0ae508", "size": 38, "numPackages": 0}}}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 829 B |
Binary file not shown.
@@ -0,0 +1 @@
|
||||
{"repo": {"timestamp": 1770871832000, "version": 20002, "name": "Frajul's repo", "icon": "icon.png", "address": "https://fdroid.julian-mutter.de/fdroid/repo", "description": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "requests": {"install": [], "uninstall": []}, "apps": [{"categories": ["repo-frajul"], "suggestedVersionCode": "2147483647", "license": "Unknown", "name": "sheetless", "added": 1754377910000, "packageName": "com.example.sheetless", "lastUpdated": 1754377910000}], "packages": {"com.example.sheetless": [{"added": 1754377910000, "apkName": "sheetless.apk", "hash": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "hashType": "sha256", "minSdkVersion": 24, "nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "packageName": "com.example.sheetless", "sig": "6befcaf4267998cd7c7d367d3e7b5354", "signer": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce", "size": 63373156, "targetSdkVersion": 36, "uses-permission": [["android.permission.INTERNET", null], ["com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION", null]], "versionCode": 1, "versionName": "0.2.0"}]}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770871832000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1,228 @@
|
||||
/* auto-generated - fdroid index updates will overwrite this file */
|
||||
BODY {
|
||||
font-family : Arial, Helvetica, Sans-Serif;
|
||||
color : #0000ee;
|
||||
background-color : #ffffff;
|
||||
}
|
||||
p {
|
||||
text-align : justify;
|
||||
}
|
||||
p.center {
|
||||
text-align : center;
|
||||
}
|
||||
TD {
|
||||
font-family : Arial, Helvetica, Sans-Serif;
|
||||
color : #0000ee;
|
||||
}
|
||||
body,td {
|
||||
font-size : 14px;
|
||||
}
|
||||
TH {
|
||||
font-family : Arial, Helvetica, Sans-Serif;
|
||||
color : #0000ee;
|
||||
background-color : #F5EAD4;
|
||||
}
|
||||
a:link {
|
||||
color : #bb0000;
|
||||
}
|
||||
a:visited {
|
||||
color : #ff0000;
|
||||
}
|
||||
.zitat {
|
||||
margin-left : 1cm;
|
||||
margin-right : 1cm;
|
||||
font-style : italic;
|
||||
}
|
||||
#intro {
|
||||
border-spacing : 1em;
|
||||
border : 1px solid gray;
|
||||
border-radius : 0.5em;
|
||||
box-shadow : 10px 10px 5px #888;
|
||||
margin : 1.5em;
|
||||
font-size : .9em;
|
||||
width : 600px;
|
||||
max-width : 90%;
|
||||
display : table;
|
||||
margin-left : auto;
|
||||
margin-right : auto;
|
||||
font-size : .8em;
|
||||
color : #555555;
|
||||
}
|
||||
#intro > p {
|
||||
margin-top : 0;
|
||||
}
|
||||
#intro p:last-child {
|
||||
margin-bottom : 0;
|
||||
}
|
||||
.last {
|
||||
border-bottom : 1px solid black;
|
||||
padding-bottom : .5em;
|
||||
text-align : center;
|
||||
}
|
||||
table {
|
||||
border-collapse : collapse;
|
||||
}
|
||||
h2 {
|
||||
text-align : center;
|
||||
}
|
||||
.perms {
|
||||
font-family : monospace;
|
||||
font-size : .8em;
|
||||
}
|
||||
.repoapplist {
|
||||
display : table;
|
||||
border-collapse : collapse;
|
||||
margin-left : auto;
|
||||
margin-right : auto;
|
||||
width : 600px;
|
||||
max-width : 90%;
|
||||
}
|
||||
.approw, appdetailrow {
|
||||
display : table-row;
|
||||
}
|
||||
.appdetailrow {
|
||||
display : flex;
|
||||
padding : .5em;
|
||||
}
|
||||
.appiconbig, .appdetailblock, .appdetailcell {
|
||||
display : table-cell
|
||||
}
|
||||
.appiconbig {
|
||||
vertical-align : middle;
|
||||
text-align : center;
|
||||
}
|
||||
.appdetailinner {
|
||||
width : 100%;
|
||||
}
|
||||
.applinkcell {
|
||||
text-align : center;
|
||||
float : right;
|
||||
width : 100%;
|
||||
margin-bottom : .1em;
|
||||
}
|
||||
.paddedlink {
|
||||
margin : 1em;
|
||||
}
|
||||
.approw {
|
||||
border-spacing : 1em;
|
||||
border : 1px solid gray;
|
||||
border-radius : 0.5em;
|
||||
padding : 0.5em;
|
||||
margin : 1.5em;
|
||||
}
|
||||
.appdetailinner .appdetailrow:first-child {
|
||||
background-color : #d5d5d5;
|
||||
}
|
||||
.appdetailinner .appdetailrow:first-child .appdetailcell {
|
||||
min-width : 33%;
|
||||
flex : 1 33%;
|
||||
text-align : center;
|
||||
}
|
||||
.appdetailinner .appdetailrow:first-child .appdetailcell:first-child {
|
||||
text-align : left;
|
||||
}
|
||||
.appdetailinner .appdetailrow:first-child .appdetailcell:last-child {
|
||||
float : none;
|
||||
text-align : right;
|
||||
}
|
||||
.minor-details {
|
||||
font-size : .8em;
|
||||
color : #555555;
|
||||
}
|
||||
.boldname {
|
||||
font-weight : bold;
|
||||
}
|
||||
#appcount {
|
||||
text-align : center;
|
||||
margin-bottom : .5em;
|
||||
}
|
||||
kbd {
|
||||
padding : 0.1em 0.6em;
|
||||
border : 1px solid #CCC;
|
||||
background-color : #F7F7F7;
|
||||
color : #333;
|
||||
box-shadow : 0px 1px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 2px #FFF inset;
|
||||
border-radius : 3px;
|
||||
display : inline-block;
|
||||
margin : 0px 0.1em;
|
||||
text-shadow : 0px 1px 0px #FFF;
|
||||
white-space : nowrap;
|
||||
}
|
||||
div.filterline, div.repoline {
|
||||
display : table;
|
||||
margin-left : auto;
|
||||
margin-right : auto;
|
||||
margin-bottom : 1em;
|
||||
vertical-align : middle;
|
||||
display : table;
|
||||
font-size : .8em;
|
||||
}
|
||||
.filterline form {
|
||||
display : table-row;
|
||||
}
|
||||
.filterline .filtercell {
|
||||
display : table-cell;
|
||||
vertical-align : middle;
|
||||
}
|
||||
fieldset {
|
||||
float : left;
|
||||
}
|
||||
fieldset select, fieldset input, #reposelect select, #reposelect input {
|
||||
font-size : .9em;
|
||||
}
|
||||
.pager {
|
||||
display : table;
|
||||
margin-left : auto;
|
||||
margin-right : auto;
|
||||
width : 600px;
|
||||
max-width : 90%;
|
||||
padding-top : .6em;
|
||||
}
|
||||
/* should correspond to .repoapplist */
|
||||
.pagerrow {
|
||||
display : table-row;
|
||||
}
|
||||
.pagercell {
|
||||
display : table-cell;
|
||||
}
|
||||
.pagercell.left {
|
||||
text-align : left;
|
||||
padding-right : 1em;
|
||||
}
|
||||
.pagercell.middle {
|
||||
text-align : center;
|
||||
font-size : .9em;
|
||||
color : #555;
|
||||
}
|
||||
.pagercell.right {
|
||||
text-align : right;
|
||||
padding-left : 1em;
|
||||
}
|
||||
.anti {
|
||||
color : peru;
|
||||
}
|
||||
.antibold {
|
||||
color : crimson;
|
||||
}
|
||||
#footer {
|
||||
text-align : center;
|
||||
margin-top : 1em;
|
||||
font-size : 11px;
|
||||
color : #555;
|
||||
}
|
||||
#footer img {
|
||||
vertical-align : middle;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
.repoapplist {
|
||||
display : block;
|
||||
}
|
||||
.appdetailinner, .appdetailrow {
|
||||
display : block;
|
||||
}
|
||||
.appdetailcell {
|
||||
display : block;
|
||||
float : left;
|
||||
line-height : 1.5em;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<!-- auto-generated - fdroid index updates will overwrite this file -->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
|
||||
<meta content="width=device-width; initial-scale=1.0; minimum-scale=0.5; maximum-scale=2.0; user-scalable=1;" name="viewport">
|
||||
<title>
|
||||
Frajul's repo
|
||||
</title>
|
||||
<base href="index.html">
|
||||
<link href="index.css" rel="stylesheet" type="text/css">
|
||||
<link href="icons/icon.png" rel="icon" type="image/png">
|
||||
<link href="icons/icon.png" rel="shortcut icon" type="image/png">
|
||||
<meta content="Frajul's repo" property="og:site_name">
|
||||
<meta content="Frajul's repo" property="og:title">
|
||||
<meta content property="og:determiner">
|
||||
<meta content="This is Frajul's fdroid repo containing all my apps in release as well as development state." property="og:description">
|
||||
<meta content="index,nofollow" name="robots">
|
||||
</head>
|
||||
<body>
|
||||
<h2>
|
||||
Frajul's repo
|
||||
</h2>
|
||||
<div id="intro">
|
||||
<p style="margin-bottom:.2em;">
|
||||
<span style="float:right;width:100px;margin-left:.5em;">
|
||||
<a href="index.png" title="QR: test">
|
||||
<img alt="QR: test" src="index.png" width="100">
|
||||
</a>
|
||||
</span>
|
||||
This is Frajul's fdroid repo containing all my apps in release as well as development state.
|
||||
<br>
|
||||
<br>
|
||||
Currently it serves
|
||||
<kbd>
|
||||
1
|
||||
</kbd>
|
||||
apps. To add it to your F-Droid app, scan the QR code (click it to enlarge) or use this link:
|
||||
</p>
|
||||
<p class="center" style="margin-top:.5em">
|
||||
<a href="https://fdroid.link/#https://fdroid.julian-mutter.de/fdroid/repo?fingerprint=61A74BF9BA80E2C1E23F8614049F33FF45A2A8DB6E39A044CB575F48FD423966">
|
||||
<code style="color:#000000;font-weight:bold;">
|
||||
https://fdroid.julian-mutter.de/fdroid/repo
|
||||
</code>
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
If you would like to manually verify the fingerprint (SHA-256) of the repository signing key, here it is:
|
||||
<br>
|
||||
<blockcode style="color:#000000;font-weight:bold;">
|
||||
61 A7 4B F9 BA 80 E2 C1 E2 3F 86 14 04 9F 33 FF 45 A2 A8 DB 6E 39 A0 44 CB 57 5F 48 FD 42 39 66
|
||||
</blockcode>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><fdroid><repo icon="icon.png" name="Frajul's repo" pubkey="308204f4308202dca0030201020209009bccfbba2ba8eb6e300d06092a864886f70d01010b050030273110300e060355040b1307462d44726f6964311330110603550403130a686f6d652e6c6f63616c3020170d3235303830353036313932375a180f32303532313232313036313932375a30273110300e060355040b1307462d44726f6964311330110603550403130a686f6d652e6c6f63616c30820222300d06092a864886f70d01010105000382020f003082020a0282020100d05732a2a53151743d17d821ba41ece154f764a2a702cb5d4ed82829e61e1a01043d18a5ece6d08311dc97d0eaa3b8688586e2d822b1c2e12b5036f3d15d88933ac3e67cc2a650196e88957898a02644c7fcdc931a062a55dd495fcf11d3fc68a5a15cda3616ef8724464d037b360b99e014cf8957921c2d53f65e8b690e1ea76096347bae6618895de44372664fdeda3745b93922b8e108222214221ce228d3535e3d585358e71bb9c11cbd6e12bf4f3907c45df2402181d116891ef98607b185f026d0491188884cf40852c49f837ed5b9d109e7c489d5fadb1f290a594b5373d21c31ee49f89997bb3b6120967b8d8542752dab657e2ca47c6f983ff9a075cab6b2db47ed5bcf94595aa718078c80c7c2651db57046eb06922dfffe17a5ffe99c548aba1782f28a9bbd155f399be87ae8823e81e9fba30f57f5285c776e73ae90492fe732ae0e099b2234184697fca5072ff6f45490b243e6fad014510627e30334b82ae334379f9fc9a863bce5d186d547f28ccced734719b5b30e4b5328cc4469bb6a5ea14e241055ec22879b2d6c6b0c499da790c0d2c18811571183a5c53a002a1ad7e004e2bb01484330e919cfcfe8d624ee096b0d56b4fda2c81bf23bebcd3a6965c0f70a04cbe175d06cbec8f7fc471ee4747649ed133f084447f11908ca8334d600eb5f0feabbc1f29cea6e3c519b37edf3540ac8a80a123d44a70203010001a321301f301d0603551d0e0416041458f13a031c3316b725a8c22e33a7a37521ea9e4a300d06092a864886f70d01010b05000382020100aa2284ac434d898e6b1881c26da6b10f29b4fdfab938695fe37e9744e8a503d6624e3a336f93bb3b830cd8491e4ecf64cbba36c87476ed3338a52002adb1e866a11189de8fa405767a4abfdea74d5a1324f5f2cd512e171ba9e315f5adef9b26f87c42f6a30756c742b13cdd07138225237142a57955f1653c1ea11a880ec7d96c5c3186c1658dee87cfbce7cab132e4b54819c70b285fc54f66b3d5eb32345c0b359f4016881c6a429f997b6963bb01a4e260bb2d075ceff6fa706b6380064ed7b41a1be0a1de782710aa03b8728562cebaf031d3d342b9b886e89364489b7dd0b567c8b4a7bcd65bc50de7db855b0075e6bdea536fe9802160d22afcc68c4666cff3b3509cdf63b76a1eda22fb63f45de76c32f69cd3259e418eb797032acdeb0d0b7d0cd90b2cbdea3c0a7d947f908f912e37727878215d4fa1bee2d8a8e3d83441e5557a6fdb4d85950f012c06b64754c73ac7f0d7e13fabb024fa494f406a3ec21390ad158b344fd38bb515b5cdb94becb12f2382013d7d30ed06f5166fb27cd362f65153c264e1b4007023d08fb5bcf8e08b239da237b2755cb05a9b7f8082bf89a758b8d124ba4302a418fc4621f934d75cdca971e21fff8bce7b726b2a434d226fdfef6f8add9b6fd83bf29dd69ef719a851fd0863c5f60c2f665c7909d1175da9bcf23bf5d314ec88b0170f80bf393c321de599b21fd9ff7d1411ed" timestamp="1770871832" url="https://fdroid.julian-mutter.de/fdroid/repo" version="20002"><description>This is Frajul's fdroid repo containing all my apps in release as well as development state.</description></repo><application id="com.example.sheetless"><id>com.example.sheetless</id><added>2025-08-05</added><lastupdated>2025-08-05</lastupdated><name>sheetless</name><summary></summary><desc>No description available</desc><license>Unknown</license><categories>repo-frajul</categories><category>repo-frajul</category><web></web><source></source><tracker></tracker><marketversion></marketversion><marketvercode>2147483647</marketvercode><package><version>0.2.0</version><versioncode>1</versioncode><apkname>sheetless.apk</apkname><hash type="sha256">434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469</hash><size>63373156</size><sdkver>24</sdkver><targetSdkVersion>36</targetSdkVersion><added>2025-08-05</added><sig>6befcaf4267998cd7c7d367d3e7b5354</sig><permissions>INTERNET,com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION</permissions><nativecode>arm64-v8a,armeabi-v7a,x86_64</nativecode></package></application></fdroid>
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
{"antiFeatures":{},"apksigner":"/nix/store/jlkx8vqd5aifnsg0bzrmdwg5127pk0lw-apksigner-35.0.6/bin/apksigner","archivePolicy0":[],"commandLine":["/nix/store/in55za5sszy2rpnm9wb7z4nx7kh4p830-fdroidserver-2.4.2/bin/fdroid update"],"disabled":[],"endTimestamp":1770871834406,"failedBuilds":{},"jarsigner":"/run/current-system/sw/bin/jarsigner","keytool":"/run/current-system/sw/bin/keytool","needsUpdate":["com.example.sheetless"],"noPackages":["com.example.sheetless"],"noUpdateCheck":["com.example.sheetless"],"stages":{"delete_disabled_builds":1770871832370,"index.make repo":1770871832375,"prepare_apps repo":1770871832374,"process_apks":1770871832370,"read_added_date_from_all_apks":1770871832374,"remove_apks":1770871832374,"scan_repo_files":1770871832370},"startTimestamp":1770868232000,"subcommand":"update"}
|
||||
@@ -0,0 +1 @@
|
||||
{"antiFeatures":{},"apksigner":"/nix/store/jlkx8vqd5aifnsg0bzrmdwg5127pk0lw-apksigner-35.0.6/bin/apksigner","archivePolicy0":[],"commandLine":["/nix/store/in55za5sszy2rpnm9wb7z4nx7kh4p830-fdroidserver-2.4.2/bin/fdroid update"],"disabled":[],"endTimestamp":1770871834406,"failedBuilds":{},"jarsigner":"/run/current-system/sw/bin/jarsigner","keytool":"/run/current-system/sw/bin/keytool","needsUpdate":["com.example.sheetless"],"noPackages":["com.example.sheetless"],"noUpdateCheck":["com.example.sheetless"],"stages":{"delete_disabled_builds":1770871832370,"index.make repo":1770871832375,"prepare_apps repo":1770871832374,"process_apks":1770871832370,"read_added_date_from_all_apks":1770871832374,"remove_apks":1770871832374,"scan_repo_files":1770871832370},"startTimestamp":1770868232000,"subcommand":"update"}
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"METADATA_VERSION": 20002,
|
||||
"allow_disabled_algorithms": false,
|
||||
"sheetless.apk": {
|
||||
"hash": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469",
|
||||
"hashType": "sha256",
|
||||
"uses-permission": [
|
||||
[
|
||||
"android.permission.INTERNET",
|
||||
null
|
||||
],
|
||||
[
|
||||
"com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION",
|
||||
null
|
||||
]
|
||||
],
|
||||
"uses-permission-sdk-23": [],
|
||||
"features": [],
|
||||
"icons_src": {},
|
||||
"icons": {},
|
||||
"antiFeatures": {},
|
||||
"packageName": "com.example.sheetless",
|
||||
"versionCode": 1,
|
||||
"name": "sheetless",
|
||||
"versionName": "0.2.0",
|
||||
"minSdkVersion": 24,
|
||||
"targetSdkVersion": 36,
|
||||
"nativecode": [
|
||||
"arm64-v8a",
|
||||
"armeabi-v7a",
|
||||
"x86_64"
|
||||
],
|
||||
"sig": "6befcaf4267998cd7c7d367d3e7b5354",
|
||||
"signer": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce",
|
||||
"size": 63373156,
|
||||
"apkName": "sheetless.apk",
|
||||
"added": 1754377910.0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770867053000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "d4fd17cff4b06c112814596a378d0a9886d5a2bef7d98f328097b1262463f4a6"}, "versions": {"5b767e2a8ff69867a53406184f2469119e64d12d5418f6e60916cb0c04d6dedf": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "5b767e2a8ff69867a53406184f2469119e64d12d5418f6e60916cb0c04d6dedf", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["d4fd17cff4b06c112814596a378d0a9886d5a2bef7d98f328097b1262463f4a6"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770867889000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "a53cfc01f8d00b65ba424e0078e1ebdaa9dc73e8f591ea74616108c5aeb66f33"}, "versions": {"35af8ff102f332f06edde3e1a20fa6c31a7a3ab89a6ceecad4ac003af133e024": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "35af8ff102f332f06edde3e1a20fa6c31a7a3ab89a6ceecad4ac003af133e024", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["a53cfc01f8d00b65ba424e0078e1ebdaa9dc73e8f591ea74616108c5aeb66f33"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770867892000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "a53cfc01f8d00b65ba424e0078e1ebdaa9dc73e8f591ea74616108c5aeb66f33"}, "versions": {"35af8ff102f332f06edde3e1a20fa6c31a7a3ab89a6ceecad4ac003af133e024": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "35af8ff102f332f06edde3e1a20fa6c31a7a3ab89a6ceecad4ac003af133e024", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["a53cfc01f8d00b65ba424e0078e1ebdaa9dc73e8f591ea74616108c5aeb66f33"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770868831000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "86ba90ac4cd633a9e7506f86efa935b4477d82d85d2c58127de476c8224ad5ce"}, "versions": {"523a2afc0741c0c75049fa27cbb85482f04a9a62ddb90e30b0d5f761b75e52af": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "523a2afc0741c0c75049fa27cbb85482f04a9a62ddb90e30b0d5f761b75e52af", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["86ba90ac4cd633a9e7506f86efa935b4477d82d85d2c58127de476c8224ad5ce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770868833000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "86ba90ac4cd633a9e7506f86efa935b4477d82d85d2c58127de476c8224ad5ce"}, "versions": {"523a2afc0741c0c75049fa27cbb85482f04a9a62ddb90e30b0d5f761b75e52af": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "523a2afc0741c0c75049fa27cbb85482f04a9a62ddb90e30b0d5f761b75e52af", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["86ba90ac4cd633a9e7506f86efa935b4477d82d85d2c58127de476c8224ad5ce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770869424000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "9e51517d5f435c69dcc7380998011376ddf0cbfba99de39cc45706beeae61ccd"}, "versions": {"7fd8bd4f70da9aaf0758774189d651fab81bb844a2d2681f846f3eac8034910f": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "7fd8bd4f70da9aaf0758774189d651fab81bb844a2d2681f846f3eac8034910f", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["9e51517d5f435c69dcc7380998011376ddf0cbfba99de39cc45706beeae61ccd"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770869426000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "9e51517d5f435c69dcc7380998011376ddf0cbfba99de39cc45706beeae61ccd"}, "versions": {"7fd8bd4f70da9aaf0758774189d651fab81bb844a2d2681f846f3eac8034910f": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "7fd8bd4f70da9aaf0758774189d651fab81bb844a2d2681f846f3eac8034910f", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["9e51517d5f435c69dcc7380998011376ddf0cbfba99de39cc45706beeae61ccd"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770870688000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "3871434d37bcab349352d1b839879eb5590a6f941cee83cae5869eadc597437e"}, "versions": {"da971d6f53700a2b4cc44e28f8a99dba925ad8f9f5c1d63b39e7886ab2dbb204": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "da971d6f53700a2b4cc44e28f8a99dba925ad8f9f5c1d63b39e7886ab2dbb204", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["3871434d37bcab349352d1b839879eb5590a6f941cee83cae5869eadc597437e"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770870690000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "3871434d37bcab349352d1b839879eb5590a6f941cee83cae5869eadc597437e"}, "versions": {"da971d6f53700a2b4cc44e28f8a99dba925ad8f9f5c1d63b39e7886ab2dbb204": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "da971d6f53700a2b4cc44e28f8a99dba925ad8f9f5c1d63b39e7886ab2dbb204", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["3871434d37bcab349352d1b839879eb5590a6f941cee83cae5869eadc597437e"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770871830000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"repo": {"name": {"en-US": "Frajul's repo"}, "description": {"en-US": "This is Frajul's fdroid repo containing all my apps in release as well as development state."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "7acef9d5d36134905a34482ba1bda6af4cd6458c87df27fca2244c1cebda4095", "size": 829}}, "address": "https://fdroid.julian-mutter.de/fdroid/repo", "timestamp": 1770871832000, "categories": {"repo-frajul": {"name": {"en-US": "repo-frajul"}}}}, "packages": {"com.example.sheetless": {"metadata": {"added": 1754377910000, "categories": ["repo-frajul"], "lastUpdated": 1754377910000, "name": {"en-US": "sheetless"}, "preferredSigner": "821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"}, "versions": {"434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469": {"added": 1754377910000, "file": {"name": "/sheetless.apk", "sha256": "434ba657b0898a17ef9bf9b57d9e0ce7ffeed2488b92cef928d7a91a9ba7d469", "size": 63373156}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86_64"], "versionName": "0.2.0", "versionCode": 1, "usesSdk": {"minSdkVersion": 24, "targetSdkVersion": 36}, "signer": {"sha256": ["821568ad07f71143d3d837ca57d9fefd6ee38191e2bcd35d7f8eb3034dc69fce"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "com.example.sheetless.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}]}}}}}}
|
||||
@@ -0,0 +1,15 @@
|
||||
# Use lightweight Nginx + Git
|
||||
FROM nginx:alpine
|
||||
|
||||
# Install git and bash
|
||||
RUN apk add --no-cache git bash
|
||||
|
||||
# Copy nginx config
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
|
||||
# Copy update script
|
||||
COPY update.sh /update.sh
|
||||
RUN chmod +x /update.sh
|
||||
|
||||
# Start update loop + nginx
|
||||
CMD ["/bin/bash", "-c", "/update.sh & nginx -g 'daemon off;'"]
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
docker build . -t gitlab.julian-mutter.de/julian/fdroid-frajul:latest
|
||||
docker push gitlab.julian-mutter.de/julian/fdroid-frajul:latest
|
||||
@@ -1,13 +0,0 @@
|
||||
server {
|
||||
listen 8080;
|
||||
server_name = fdroid.julian-mutter.de;
|
||||
|
||||
location = / {
|
||||
return 302 /fdroid/repo;
|
||||
}
|
||||
|
||||
location /fdroid/repo {
|
||||
alias /repo/fdroid/repo/;
|
||||
autoindex on;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
events {}
|
||||
http {
|
||||
server {
|
||||
listen 80;
|
||||
server_name = fdroid.julian-mutter.de;
|
||||
|
||||
location = / {
|
||||
return 302 /fdroid/repo;
|
||||
}
|
||||
|
||||
location /fdroid/repo {
|
||||
alias /repo/fdroid/repo/;
|
||||
autoindex on;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Executable → Regular
+18
-52
@@ -1,59 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
#! /bin/bash
|
||||
|
||||
# Config
|
||||
REPO_URL="https://gitlab.julian-mutter.de/julian/fdroid-frajul"
|
||||
BRANCH="master"
|
||||
|
||||
if [ ! -d "./code/.git" ]; then
|
||||
echo "Performing initial setup!"
|
||||
echo "Current working directory: $(pwd)"
|
||||
mkdir ./code
|
||||
if [ ! -d "/repo/.git" ]; then
|
||||
echo "Cloning repository..."
|
||||
git clone --branch "$BRANCH" "$REPO_URL" "./code"
|
||||
echo "Decrypting secrets..."
|
||||
cd ./code
|
||||
./scripts/decrypt.sh
|
||||
echo "Done"
|
||||
git clone --branch "$BRANCH" "$REPO_URL" "/repo"
|
||||
fi
|
||||
|
||||
echo "Running regular repo update..."
|
||||
echo ""
|
||||
while true; do
|
||||
echo "Running repo update..."
|
||||
|
||||
cd "./code"
|
||||
git fetch origin
|
||||
LOCAL=$(git rev-parse HEAD)
|
||||
REMOTE=$(git rev-parse "origin/$BRANCH")
|
||||
cd "/repo" || exit
|
||||
git fetch origin
|
||||
LOCAL=$(git rev-parse HEAD)
|
||||
REMOTE=$(git rev-parse origin/binaries)
|
||||
|
||||
NEED_FDROID_UPDATE=false
|
||||
if [ "$LOCAL" != "$REMOTE" ]; then
|
||||
echo "Updating repo..."
|
||||
git reset --hard origin/binaries
|
||||
echo "Update complete."
|
||||
else
|
||||
echo "Nothing to do."
|
||||
fi
|
||||
|
||||
# Update repo
|
||||
if [ "$LOCAL" != "$REMOTE" ]; then
|
||||
NEED_FDROID_UPDATE=true
|
||||
echo "Pulling repo..."
|
||||
git pull "origin/$BRANCH"
|
||||
echo "Pull complete"
|
||||
echo "Decrypting secrets..."
|
||||
./scripts/decrypt.sh
|
||||
echo "Done"
|
||||
else
|
||||
echo "No changes in repo."
|
||||
fi
|
||||
|
||||
# Update apks
|
||||
echo "Updating apks..."
|
||||
./scripts/update-apks.sh
|
||||
|
||||
if [ $? -eq 10 ]; then
|
||||
NEED_FDROID_UPDATE=true
|
||||
fi
|
||||
|
||||
# Run fdroid update if needed
|
||||
if [ "$NEED_FDROID_UPDATE" = true ]; then
|
||||
echo "Running fdroid update..."
|
||||
fdroid update -c
|
||||
fdroid update
|
||||
echo "Done"
|
||||
else
|
||||
echo "No changes made so no fdroid update necessary."
|
||||
echo "Done"
|
||||
fi
|
||||
sleep 600 # check every 10 min
|
||||
done
|
||||
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
#! /bin/sh
|
||||
|
||||
git checkout master
|
||||
git add .
|
||||
git commit -m "Update from CI"
|
||||
git push origin master
|
||||
|
||||
git branch -D binaries
|
||||
git checkout --orphan binaries
|
||||
git add -f fdroid/repo/*.apk
|
||||
git commit -m "Add latest apks"
|
||||
git push --force origin binaries
|
||||
git checkout master
|
||||
git branch -D binaries
|
||||
@@ -1,78 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# ==========================================
|
||||
# CONFIGURATION
|
||||
# ==========================================
|
||||
GITEA_URL="https://gitlab.julian-mutter.de"
|
||||
REPO_OWNER="julian"
|
||||
REPO_NAME="sheetless"
|
||||
APP_NAME="de.frajul.sheetless"
|
||||
TARGET_ASSET_NAME="app-release.apk"
|
||||
FDROID_REPO_DIR="./fdroid/repo"
|
||||
FDROID_ARCHIVE_DIR="./fdroid/archive"
|
||||
|
||||
# ==========================================
|
||||
# SETUP & API CALL
|
||||
# ==========================================
|
||||
mkdir -p "$FDROID_REPO_DIR"
|
||||
|
||||
API_URL="${GITEA_URL}/api/v1/repos/${REPO_OWNER}/${REPO_NAME}/releases"
|
||||
|
||||
echo "Fetching releases from Gitea..."
|
||||
RELEASES_JSON=$(curl -sL "$API_URL")
|
||||
|
||||
# Check if Gitea returned a valid JSON array
|
||||
if ! echo "$RELEASES_JSON" | jq -e 'type == "array"' >/dev/null; then
|
||||
echo "Error: Failed to fetch releases. Check your URL, Repo names, or Token."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ==========================================
|
||||
# SYNC LOGIC
|
||||
# ==========================================
|
||||
UPDATE_TRIGGERED=false
|
||||
|
||||
echo "Processing versioned releases for asset: $TARGET_ASSET_NAME"
|
||||
|
||||
# Single jq command to:
|
||||
# 1. Ignore "latest" releases
|
||||
# 2. Extract ONLY the matching asset URL
|
||||
# 3. Output as Tab-Separated Values (TSV) for safe bash reading
|
||||
while IFS=$'\t' read -r TAG DOWNLOAD_URL; do
|
||||
|
||||
# Skip empty lines if jq returns nothing
|
||||
[[ -z "$TAG" ]] && continue
|
||||
|
||||
LOCAL_FILE="$FDROID_REPO_DIR/${APP_NAME}_${TAG}.apk"
|
||||
ARCHIVE_FILE="$FDROID_ARCHIVE_DIR/${APP_NAME}_${TAG}.apk"
|
||||
|
||||
echo "Checking release: $TAG..."
|
||||
|
||||
if [[ -f "$LOCAL_FILE" ]]; then
|
||||
echo " -> Already exists locally. Skipping."
|
||||
else
|
||||
echo " -> Downloading new version: $LOCAL_FILE"
|
||||
|
||||
curl -sL -o "$LOCAL_FILE" "$DOWNLOAD_URL"
|
||||
|
||||
UPDATE_TRIGGERED=true
|
||||
fi
|
||||
|
||||
# Feed the jq output into the loop from the bottom
|
||||
done < <(echo "$RELEASES_JSON" | jq -r --arg target "$TARGET_ASSET_NAME" '
|
||||
.[]
|
||||
| select(.tag_name != "latest")
|
||||
| .tag_name as $tag
|
||||
| .assets[]
|
||||
| select(.name == $target)
|
||||
| "\($tag)\t\(.browser_download_url)"
|
||||
')
|
||||
|
||||
if [ "$UPDATE_TRIGGERED" = true ]; then
|
||||
echo "Sync complete. New updates were downloaded."
|
||||
exit 10
|
||||
else
|
||||
echo "Sync complete. No new updates found."
|
||||
exit 0
|
||||
fi
|
||||
@@ -1,32 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CHANGES_PRODUCED=false
|
||||
|
||||
# Put here all apk update scripts
|
||||
UPDATE_SCRIPTS=(
|
||||
"./scripts/apk-update-scripts/sheetless.sh"
|
||||
)
|
||||
|
||||
for script in "${UPDATE_SCRIPTS[@]}"; do
|
||||
echo "--------------------------------"
|
||||
echo "Executing: $script"
|
||||
|
||||
# Run the script
|
||||
$script
|
||||
|
||||
# Capture the exit code immediately
|
||||
if [ $? -eq 10 ]; then
|
||||
echo " -> $script returned 10 (change)"
|
||||
CHANGES_PRODUCED=true
|
||||
fi
|
||||
done
|
||||
|
||||
echo "--------------------------------"
|
||||
|
||||
if [ "$CHANGES_PRODUCED" = true ]; then
|
||||
echo "Result: At least one script produced a change"
|
||||
exit 10
|
||||
else
|
||||
echo "Result: Not script produced a change"
|
||||
exit 0
|
||||
fi
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
# !/bin/sh
|
||||
|
||||
cd fdroid
|
||||
fdroid update -c
|
||||
fdroid update
|
||||
Reference in New Issue
Block a user