Compare commits

1 Commits

Author SHA1 Message Date
Jenkins CI 8ccbb46903 Add latest apks 2026-02-12 05:50:36 +01:00
57 changed files with 594 additions and 335 deletions
+10 -1
View File
@@ -1 +1,10 @@
use flake export DIRENV_WARN_TIMEOUT=20s
eval "$(devenv direnvrc)"
# `use devenv` supports the same options as the `devenv shell` command.
#
# To silence the output, use `--quiet`.
#
# Example usage: use devenv --quiet --impure --option services.postgres.enable:bool true
use devenv
+1 -4
View File
@@ -1,9 +1,6 @@
/fdroid/config.yml /fdroid/config.yml
/fdroid/keystore.p12 /fdroid/keystore.p12
/fdroid/repo/ /fdroid/repo/*.apk
/fdroid/archive/
/fdroid/tmp/
/fdroid/metadata/
# Devenv # Devenv
.devenv* .devenv*
-2
View File
@@ -2,7 +2,6 @@ keys:
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg - &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4 - &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja - &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
- &docker-env-var age1qwfnn0gv7mt5dsgy4enew439mgtfd49q46r2gfdqyehpkzx4npcq78a87s
creation_rules: creation_rules:
- path_regex: fdroid/* - path_regex: fdroid/*
@@ -11,4 +10,3 @@ creation_rules:
- *primary - *primary
- *aspi-ssh - *aspi-ssh
- *builder-ssh - *builder-ssh
- *docker-env-var
+1 -1
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env sh #! /bin/sh
sops -d fdroid/encrypted-config.yml > fdroid/config.yml sops -d fdroid/encrypted-config.yml > fdroid/config.yml
sops -d fdroid/encrypted-keystore.p12 > fdroid/keystore.p12 sops -d fdroid/encrypted-keystore.p12 > fdroid/keystore.p12
+103
View File
@@ -0,0 +1,103 @@
{
"nodes": {
"devenv": {
"locked": {
"dir": "src/modules",
"lastModified": 1759939975,
"owner": "cachix",
"repo": "devenv",
"rev": "6eda3b7af3010d289e6e8e047435956fc80c1395",
"type": "github"
},
"original": {
"dir": "src/modules",
"owner": "cachix",
"repo": "devenv",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1759523803,
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "cfc9f7bb163ad8542029d303e599c0f7eee09835",
"type": "github"
},
"original": {
"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": {
"locked": {
"lastModified": 1758532697,
"owner": "cachix",
"repo": "devenv-nixpkgs",
"rev": "207a4cb0e1253c7658c6736becc6eb9cace1f25f",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "rolling",
"repo": "devenv-nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"git-hooks": "git-hooks",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": [
"git-hooks"
]
}
}
},
"root": "root",
"version": 7
}
+9
View File
@@ -0,0 +1,9 @@
{ pkgs, ... }:
{
packages = [
pkgs.fdroidserver
pkgs.sops
];
}
+15
View File
@@ -0,0 +1,15 @@
# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
inputs:
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
View File
@@ -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] #ENC[AES256_GCM,data:zKniEwAw4Q+i+i4jmjIjyKtbymHpXL7P1roBPRlgi674/VBbgTzu7g==,iv:SyRbw64A7eiMJtjwo4QK90ovbkw5yQUR1mD71FPhc60=,tag:gP4mu7DTwJhXdlggPz0UxQ==,type:comment]
sops: sops:
age: age:
- enc: | - recipient: age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsRis5WitnZnBwVm15bXdO YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsWHkyZHFUcnVkRERzbnhj
cHo2dkdwWDlNMUFOT3Q4SHErL29jY0tTZDI4CmtYVzdCcjZ4ZXl0MTNvdStJNHlH UnZQb0JvVUtlUnhkME1VZDFPVGgyeFc2TmowCkhWak5RZVh6NXZuRVdaRkpHNHc3
c0Nab2YwNWh2THJzdjJpYjhyVUl6M28KLS0tIGZuWHUxY1lCdUdvYUtCWXpqb3p0 WDYyQ25tVWFCenhRUGVncE9hc1ByZXMKLS0tIFpUOWhHMVpGeitQYzBhUisvNmRR
WmdGNGVZRGhuWE4rZVJBV1F6aTQ0eDgKkykL55f1wEkE+eMha/c7USjwpsUbJBpA eC9pcWFuY2ZHaTFWaGdNR1AvYmFpTncKCjWikMHAI7Mbqh5eUNwCs5BIlLLh5OxE
IEy+9awjauMD9pNrBjqhbh2g5xY042ea7dcPaexNVsqauHxzzN4m4g== ypwLLQoCECj1BWgJGGEnTVOGSdiRwUMCgWxsJSO/nz+1SbPTp4z0GQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg - recipient: age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
- enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqWEtDNGVDdXNXQktpNlds YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLNCtLdmovUmJhemtvWHRH
VlBMZ2NEcDFMMENSUnVUR0YvUUg3clhOOVZZCmxJTGp5UUJvaG05V2Z3NG52SjVG RGRLNHdvRGJadXpHdFZhaStWbUxVNGJxOVdrClZydGNYVzlSYnd6RDJJZCtLRzJk
OS8vS0pIeXdlRVdPeVdHV0I5UkNwbG8KLS0tIGIvcUJvdFRxUExhY0cwN3hqV0Ur TjM3RWV1L254T2MxeElkanJTS0ZFQ2MKLS0tIFluRllablZkRGp5cjR2Tm1wN1hD
clhac1BydUk1MEFBdDdFUnFlNzZ5YXcK2UaiG9h9ZBDTfAEmLIS5Zwya60d5G7l4 bDMxT3RqdG1QdVJ5cTlNVHBwd0x0czAKN6VTum88epGjNgA2v887k4/cfUIrZwTC
Gn3maQh8+N3iaapsn/waxwMXOUxlvVjBsRBd4z3k5iBHmt1+G23M3g== cUGQmPwunrVK5OlwsM4d1xKC39CHWFE/uDeYCl8gADrOG1TcsFvqpA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4 - recipient: age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
- enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzOE9CMTQ2OEw0dG5WVUkz YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQTVpSUDFTY0NabFpqT05y
ZWgrR1F6OWR1eXJQblRLOEoreHI5YmZNMkRzClJlRTF6Y3hGRzNGYmU3RC9Rek9Y THB2bVZ1RFhEejI1NkFEeEs3SjF4TDBaU2pjCnNpQkRVY1BhLzVLWjVML29HanlB
YWdpWThmMTdkRjIwMnBpb2FwL1ZVejAKLS0tIDRsMHRXblZBUXltRGNqcytrSjlu QXpzREMyYWkxQTZUbWg2Wk9KMkVkajAKLS0tIGdIa0w1ZFR5UEdydUVYYkVzSmgv
V1VSWEZ0dC9XdUx6WFRvMUtlSjl5TGMKh+9AIETppAs8PbhyDiIHGhaT+5Nm7qs7 SnB5aGptOU5DTklKQVUwaHFTTm00N1kKIDN8J2/Ypw3r1pA7FxCssaFT6wyiB2IR
hoUlfXSluotltd/a+B/IX0IjME/h7P6akJ9iecJzZfNTqh9ocD4IEw== SmgMhts+dAtDIKxASiqAQAt9WJ5IUneqXu2IVF2bdzBHpcr3iXhbzQ==
-----END AGE ENCRYPTED FILE----- -----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" 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] mac: ENC[AES256_GCM,data:tk5TECa+qYWwoQoOpnY79i4VNdacVNk6p98/yWjK35MCAmK4sHl+GETK+lImh+9FmTrtNzvLZ8mHvAalnpV1CqDTsZqjBRD8snPvpZdn6VgLrTu66C2Ft+FNWnJC1yECoJGE8csa94cHhMaezC/9jpCYnGG2rtaiVr9sfB28olM=,iv:HDDZ5gfFASGzJ5pOYkS/DSgkhFfMc0yeJzxFgTLOjYg=,tag:lmvOIa8oHS/HNA82w01TvQ==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
+6 -11
View File
@@ -3,25 +3,20 @@
"sops": { "sops": {
"age": [ "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",
"recipient": "age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4WEEzMTFOaW9wKzk0OE56\nMEJuejNCZ29HSnhvUGMyZUtMSmhRUWZZbFRVCjFodmZyekcyUHZ6QXEydStJQS9l\nSjhnWkpiNVpRL1pTbzFGTjhBd2tmWEUKLS0tIG1SRTB0d3E4S3pwRUFhVE9xZlk3\nVWJVMEpLMFNNbGQ2dk1JWWNyRHZPVUkKQ5IuJwMyqgJF8dkgEVJUcRLgQRhizFSJ\nB6qTE+SbjwRmgD5Ua2My4VxdOgXlsNVL8hHxKhGD4NkNC2edRUC+YA==\n-----END AGE ENCRYPTED FILE-----\n"
},
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxWkFYdVROeWplUElxOGtY\nYlRoRkViWEJwdDNOSk5WczRvYWxPMkw2SVVvCnlneWI3VUN4R2E0Si9DWThUblVJ\nVUdoWGpTN0dldFUxMktPSTZIaXRmUjQKLS0tIGVwWWVqMW9NWTBzejlUWGFpY3NR\najRjc3pjRGhWOENKRFczQUtVcE8va1EKSZnqNhNcbD89iQi3he00TXfx9rw4HXNt\nZs3JnZOigvnZv2G0BwHD+TEeSbw3haS/2v65LMNhifsVVO/CZZrHOw==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age1qwfnn0gv7mt5dsgy4enew439mgtfd49q46r2gfdqyehpkzx4npcq78a87s"
} }
], ],
"lastmodified": "2025-10-09T06:24:12Z", "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]", "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" "version": "3.11.0"
} }
} }
@@ -0,0 +1,9 @@
AuthorName: ''
Categories:
- repo-frajul
CurrentVersionCode: 2147483647
IssueTracker: ''
Name: sheetless
SourceCode: ''
Summary: ''
WebSite: ''
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -0,0 +1 @@
{"repo": {"timestamp": 1770871832000}}
Binary file not shown.
+1
View File
@@ -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.
+1
View File
@@ -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"}]}}
+1
View File
@@ -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"}]}}}}}}
+228
View File
@@ -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;
}
}
+56
View File
@@ -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

+1
View File
@@ -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.
+1
View File
@@ -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"}
+1
View File
@@ -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"}
+39
View File
@@ -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
}
}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
+1
View File
@@ -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"}]}}}}}}
Generated
-27
View File
@@ -1,27 +0,0 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1781577229,
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}
-85
View File
@@ -1,85 +0,0 @@
{
description = "Docker image with Nginx, F-Droid, and a 30-minute periodic task";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = {nixpkgs, ...}: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
periodicScript = pkgs.writeShellScript "run-update" (builtins.readFile ./hosting/update.sh);
caddyConfig = ./hosting/Caddyfile;
entrypoint = pkgs.writeShellScript "entrypoint" ''
# Ensure necessary directories exist
mkdir -p /repo/fdroid/repo /tmp/caddy_data /tmp/caddy_config
# Start the background loop (1800 seconds = 30 minutes)
echo "Starting 30-minute background loop..."
while true; do
${periodicScript}
${pkgs.coreutils}/bin/sleep 1800
done &
# Set environment variables so Caddy writes its state to /tmp instead of /root
export XDG_DATA_HOME=/tmp/caddy_data
export XDG_CONFIG_HOME=/tmp/caddy_config
# Start Caddy in the foreground
echo "Starting Caddy..."
exec ${pkgs.caddy}/bin/caddy run --config ${caddyConfig} --adapter caddyfile
'';
deploy-script = pkgs.writeShellScriptBin "deploy" ''
${pkgs.nix}/bin/nix build .#container
${pkgs.skopeo}/bin/skopeo copy \
--registries-conf /dev/null \
docker-archive:result \
docker://gitlab.julian-mutter.de/julian/fdroid-frajul:latest
'';
dockerImage = pkgs.dockerTools.buildLayeredImage {
name = "gitlab.julian-mutter.de/julian/fdroid-frajul";
tag = "latest";
contents = with pkgs; [
coreutils
bashInteractive
caddy
dockerTools.fakeNss # Provides fake /etc/passwd for basic user emulation
dockerTools.usrBinEnv
dockerTools.binSh
dockerTools.caCertificates
fdroidserver
jq
curl
sops
git
];
config = {
Cmd = ["${entrypoint}"];
WorkingDir = "/src";
ExposedPorts = {
"8080/tcp" = {};
};
};
maxLayers = 10;
};
in {
# nix build .#container
# docker load < result
packages.${system}.container = dockerImage;
devShells.${system}.default = pkgs.mkShell {
packages = [
deploy-script
pkgs.skopeo
];
};
};
}
-13
View File
@@ -1,13 +0,0 @@
:8080 {
# 1. Exact match redirect from root to the repo
redir / /fdroid/repo/ 302
# 2. Redirect without trailing slash to ensure correct routing
redir /fdroid/repo /fdroid/repo/ 302
# 3. Strip '/fdroid/repo' from the URL and serve the underlying files
handle_path /fdroid/repo/* {
root * /repo/fdroid/repo
file_server browse
}
}
+15
View File
@@ -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;'"]
-4
View File
@@ -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
+17
View File
@@ -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 -53
View File
@@ -1,60 +1,25 @@
#!/usr/bin/env bash #! /bin/bash
# Config if [ ! -d "/repo/.git" ]; then
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
echo "Cloning repository..." echo "Cloning repository..."
git clone --branch "$BRANCH" "$REPO_URL" "./code" git clone --branch "$BRANCH" "$REPO_URL" "/repo"
echo "Decrypting secrets..."
cd ./code
./scripts/decrypt.sh
echo "Done"
else
cd "./code"
fi fi
echo "Running regular repo update..." while true; do
echo "" echo "Running repo update..."
git fetch origin cd "/repo" || exit
LOCAL=$(git rev-parse HEAD) git fetch origin
REMOTE=$(git rev-parse "origin/$BRANCH") 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 sleep 600 # check every 10 min
if [ "$LOCAL" != "$REMOTE" ]; then done
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
+14
View File
@@ -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
-76
View File
@@ -1,76 +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"
APK_DIR="/apks"
# ==========================================
# SETUP & API CALL
# ==========================================
mkdir -p "$APK_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="$APK_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
-28
View File
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# 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
done
# Sync all apks from the mounted dir to dest
SOURCE="/apks/"
DEST="/src/code/fdroid/repo/"
OUTPUT=$(rsync -avi --include="*.apk" --exclude="*" --delete "$SOURCE" "$DEST")
# Check if the output contains the specific tags for new files (>f) or deleted files (*deleting)
if echo "$OUTPUT" | grep -q -E '^>f|^\*deleting'; then
echo "Changes detected! Files were copied or deleted."
exit 10
else
echo "No APKs were added or removed. Skipping F-Droid update."
exit 0
fi
Executable
+5
View File
@@ -0,0 +1,5 @@
# !/bin/sh
cd fdroid
fdroid update -c
fdroid update