format all nix code by using nix fmt
This commit is contained in:
parent
656bbd46c0
commit
435cbd0d6b
58
default.nix
58
default.nix
|
@ -1,12 +1,13 @@
|
||||||
{ lib
|
{
|
||||||
, beam_nox
|
lib,
|
||||||
, fetchFromGitHub
|
beam_nox,
|
||||||
, git
|
fetchFromGitHub,
|
||||||
, cmake
|
git,
|
||||||
, nixosTests
|
cmake,
|
||||||
, src
|
nixosTests,
|
||||||
, src-config
|
src,
|
||||||
, mobilizon-js
|
src-config,
|
||||||
|
mobilizon-js,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
@ -25,21 +26,20 @@ mixRelease rec {
|
||||||
# This circumvents a startup error for now
|
# This circumvents a startup error for now
|
||||||
stripDebug = false;
|
stripDebug = false;
|
||||||
|
|
||||||
nativeBuildInputs = [ git cmake ];
|
nativeBuildInputs = [
|
||||||
|
git
|
||||||
|
cmake
|
||||||
|
];
|
||||||
|
|
||||||
# Update deps.nix by running `mix deps.nix`
|
# Update deps.nix by running `mix deps.nix`
|
||||||
mixNixDeps = import ./deps.nix {
|
mixNixDeps = import ./deps.nix {
|
||||||
inherit lib;
|
inherit lib;
|
||||||
beamPackages = beam_nox.packages.erlang;
|
beamPackages = beam_nox.packages.erlang;
|
||||||
overrides = (final: prev:
|
overrides = (
|
||||||
(lib.mapAttrs
|
final: prev:
|
||||||
(_: value: value.override {
|
(lib.mapAttrs (_: value: value.override { appConfigPath = src-config; }) prev)
|
||||||
appConfigPath = src-config;
|
// {
|
||||||
})
|
fast_html = prev.fast_html.override { nativeBuildInputs = [ cmake ]; };
|
||||||
prev) // {
|
|
||||||
fast_html = prev.fast_html.override {
|
|
||||||
nativeBuildInputs = [ cmake ];
|
|
||||||
};
|
|
||||||
ex_cldr = prev.ex_cldr.overrideAttrs (old: {
|
ex_cldr = prev.ex_cldr.overrideAttrs (old: {
|
||||||
# We have to use the GitHub sources, as it otherwise tries to download
|
# We have to use the GitHub sources, as it otherwise tries to download
|
||||||
# the locales at build time.
|
# the locales at build time.
|
||||||
|
@ -47,7 +47,8 @@ mixRelease rec {
|
||||||
owner = "elixir-cldr";
|
owner = "elixir-cldr";
|
||||||
repo = "cldr";
|
repo = "cldr";
|
||||||
rev = "v${old.version}";
|
rev = "v${old.version}";
|
||||||
sha256 = assert old.version == "2.37.5";
|
sha256 =
|
||||||
|
assert old.version == "2.37.5";
|
||||||
"sha256-T5Qvuo+xPwpgBsqHNZYnTCA4loToeBn1LKTMsDcCdYs=";
|
"sha256-T5Qvuo+xPwpgBsqHNZYnTCA4loToeBn1LKTMsDcCdYs=";
|
||||||
};
|
};
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
@ -55,7 +56,8 @@ mixRelease rec {
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
|
@ -63,11 +65,10 @@ mixRelease rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Install the compiled js part
|
# Install the compiled js part
|
||||||
preBuild =
|
preBuild = ''
|
||||||
''
|
cp -a "${mobilizon-js}/_napalm-install/priv/static" ./priv
|
||||||
cp -a "${mobilizon-js}/_napalm-install/priv/static" ./priv
|
chmod 770 -R ./priv
|
||||||
chmod 770 -R ./priv
|
'';
|
||||||
'';
|
|
||||||
|
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
mix phx.digest --no-deps-check
|
mix phx.digest --no-deps-check
|
||||||
|
@ -89,6 +90,9 @@ mixRelease rec {
|
||||||
description = "Mobilizon is an online tool to help manage your events, your profiles and your groups";
|
description = "Mobilizon is an online tool to help manage your events, your profiles and your groups";
|
||||||
homepage = "https://joinmobilizon.org/";
|
homepage = "https://joinmobilizon.org/";
|
||||||
license = licenses.agpl3Plus;
|
license = licenses.agpl3Plus;
|
||||||
maintainers = with maintainers; [ minijackson erictapen ];
|
maintainers = with maintainers; [
|
||||||
|
minijackson
|
||||||
|
erictapen
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
459
flake.nix
459
flake.nix
|
@ -8,20 +8,27 @@
|
||||||
napalm.inputs.nixpkgs.follows = "nixpkgs";
|
napalm.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nix-filter, napalm }:
|
outputs =
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
nix-filter,
|
||||||
|
napalm,
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
forAllSystems = f: nixpkgs.lib.genAttrs
|
forAllSystems =
|
||||||
[ "x86_64-linux" "aarch64-linux" ]
|
f:
|
||||||
(system: f system);
|
nixpkgs.lib.genAttrs [
|
||||||
nixpkgsFor = forAllSystems (
|
"x86_64-linux"
|
||||||
system:
|
"aarch64-linux"
|
||||||
import nixpkgs { inherit system; }
|
] (system: f system);
|
||||||
);
|
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
|
||||||
filter = nix-filter.lib;
|
filter = nix-filter.lib;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
packages = forAllSystems (system:
|
packages = forAllSystems (
|
||||||
|
system:
|
||||||
let
|
let
|
||||||
pkgs = nixpkgsFor.${system};
|
pkgs = nixpkgsFor.${system};
|
||||||
# Directories that are neither needed for building the frontend nor the backend.
|
# Directories that are neither needed for building the frontend nor the backend.
|
||||||
|
@ -69,7 +76,10 @@
|
||||||
{
|
{
|
||||||
inherit (pkgs) nodejs;
|
inherit (pkgs) nodejs;
|
||||||
nativeBuildInputs = [ pkgs.imagemagick ];
|
nativeBuildInputs = [ pkgs.imagemagick ];
|
||||||
npmCommands = [ "npm install" "npm run build" ];
|
npmCommands = [
|
||||||
|
"npm install"
|
||||||
|
"npm run build"
|
||||||
|
];
|
||||||
# Keep this in sync with the content of ./patches/
|
# Keep this in sync with the content of ./patches/
|
||||||
customPatchPackages = {
|
customPatchPackages = {
|
||||||
vue-i18n-extract."2.0.7" = pkgs: prev: {
|
vue-i18n-extract."2.0.7" = pkgs: prev: {
|
||||||
|
@ -81,9 +91,11 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
default = self.packages."${system}".mobilizon;
|
default = self.packages."${system}".mobilizon;
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
devShells = forAllSystems (system:
|
devShells = forAllSystems (
|
||||||
|
system:
|
||||||
let
|
let
|
||||||
pkgs = nixpkgsFor.${system};
|
pkgs = nixpkgsFor.${system};
|
||||||
settingsFormat = pkgs.formats.elixirConf { };
|
settingsFormat = pkgs.formats.elixirConf { };
|
||||||
|
@ -93,11 +105,19 @@
|
||||||
server = true;
|
server = true;
|
||||||
url.host = "mobilizon.dev";
|
url.host = "mobilizon.dev";
|
||||||
http = {
|
http = {
|
||||||
ip = settingsFormat.lib.mkTuple [ 0 0 0 0 0 0 0 1 ];
|
ip = settingsFormat.lib.mkTuple [
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
1
|
||||||
|
];
|
||||||
port = 4000;
|
port = 4000;
|
||||||
};
|
};
|
||||||
secret_key_base =
|
secret_key_base = "2q/l1WDx3RQQy7gZ1k001//6nc66moWUEJQyGuMK/z3zPLYW6FYtIgCkUzGP0+X/";
|
||||||
"2q/l1WDx3RQQy7gZ1k001//6nc66moWUEJQyGuMK/z3zPLYW6FYtIgCkUzGP0+X/";
|
|
||||||
};
|
};
|
||||||
"Mobilizon.Web.Auth.Guardian" = {
|
"Mobilizon.Web.Auth.Guardian" = {
|
||||||
secret_key = "N8x7/tf0kInLFS2poO22g6OGPiMjSrDEhmk29nFqV35q7hQ0DtBt/cRYCsqBNp2L";
|
secret_key = "N8x7/tf0kInLFS2poO22g6OGPiMjSrDEhmk29nFqV35q7hQ0DtBt/cRYCsqBNp2L";
|
||||||
|
@ -121,73 +141,83 @@
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
default =
|
default = pkgs.mkShell {
|
||||||
pkgs.mkShell {
|
MIX_ENV = "dev";
|
||||||
MIX_ENV = "dev";
|
PGUSER = "mobilizon";
|
||||||
PGUSER = "mobilizon";
|
PGDATABASE = "mobilizon";
|
||||||
PGDATABASE = "mobilizon";
|
buildInputs = with pkgs; [
|
||||||
buildInputs =
|
elixir
|
||||||
with pkgs; [
|
cmake
|
||||||
|
imagemagick
|
||||||
|
nodejs
|
||||||
|
inotify-tools
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "build";
|
||||||
|
runtimeInputs = [
|
||||||
elixir
|
elixir
|
||||||
cmake
|
|
||||||
imagemagick
|
|
||||||
nodejs
|
nodejs
|
||||||
inotify-tools
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "build";
|
|
||||||
runtimeInputs = [ elixir nodejs ];
|
|
||||||
text = ''
|
|
||||||
mix deps.get
|
|
||||||
mix deps.nix
|
|
||||||
mix deps.compile
|
|
||||||
mix phx.digest
|
|
||||||
npm install
|
|
||||||
npm run build
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "setup";
|
|
||||||
runtimeInputs = [ elixir postgresql ];
|
|
||||||
text = ''
|
|
||||||
cat ${mobilizonConfig} > config/runtime.exs
|
|
||||||
# We assume the database already exists
|
|
||||||
sudo -u postgres psql -d mobilizon << SQL
|
|
||||||
create extension if not exists postgis;
|
|
||||||
create extension if not exists unaccent;
|
|
||||||
create extension if not exists pg_trgm;
|
|
||||||
SQL
|
|
||||||
mix ecto.migrate
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "start";
|
|
||||||
runtimeInputs = [ elixir ];
|
|
||||||
text = ''
|
|
||||||
mix phx.server
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "clean";
|
|
||||||
runtimeInputs = [ postgresql ];
|
|
||||||
text = ''
|
|
||||||
rm -rf deps/ _build/ node_modules/
|
|
||||||
sudo -u postgres psql -c "DROP DATABASE mobilizon;"
|
|
||||||
sudo systemctl restart postgresql.service
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
};
|
text = ''
|
||||||
});
|
mix deps.get
|
||||||
|
mix deps.nix
|
||||||
|
mix deps.compile
|
||||||
|
mix phx.digest
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "setup";
|
||||||
|
runtimeInputs = [
|
||||||
|
elixir
|
||||||
|
postgresql
|
||||||
|
];
|
||||||
|
text = ''
|
||||||
|
cat ${mobilizonConfig} > config/runtime.exs
|
||||||
|
# We assume the database already exists
|
||||||
|
sudo -u postgres psql -d mobilizon << SQL
|
||||||
|
create extension if not exists postgis;
|
||||||
|
create extension if not exists unaccent;
|
||||||
|
create extension if not exists pg_trgm;
|
||||||
|
SQL
|
||||||
|
mix ecto.migrate
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "start";
|
||||||
|
runtimeInputs = [ elixir ];
|
||||||
|
text = ''
|
||||||
|
mix phx.server
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "clean";
|
||||||
|
runtimeInputs = [ postgresql ];
|
||||||
|
text = ''
|
||||||
|
rm -rf deps/ _build/ node_modules/
|
||||||
|
sudo -u postgres psql -c "DROP DATABASE mobilizon;"
|
||||||
|
sudo systemctl restart postgresql.service
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
nixosModules.devSetup = { config, lib, pkgs, ... }:
|
nixosModules.devSetup =
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.mobilizonDevEnvironment;
|
cfg = config.mobilizonDevEnvironment;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
options.mobilizonDevEnvironment = {
|
options.mobilizonDevEnvironment = {
|
||||||
enable = lib.mkEnableOption
|
enable = lib.mkEnableOption (lib.mdDoc "development environment for Mobilizon");
|
||||||
(lib.mdDoc "development environment for Mobilizon");
|
|
||||||
user = lib.mkOption {
|
user = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Unix user that runs the backend application to connect to the database";
|
description = "Unix user that runs the backend application to connect to the database";
|
||||||
|
@ -217,9 +247,7 @@
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
overlays.default = final: prev: {
|
overlays.default = final: prev: { inherit (self.packages."${prev.system}") mobilizon; };
|
||||||
inherit (self.packages."${prev.system}") mobilizon;
|
|
||||||
};
|
|
||||||
|
|
||||||
checks = forAllSystems (system: {
|
checks = forAllSystems (system: {
|
||||||
inherit (self.packages.${system}) mobilizon;
|
inherit (self.packages.${system}) mobilizon;
|
||||||
|
@ -238,120 +266,197 @@
|
||||||
lib = {
|
lib = {
|
||||||
# Patch the logos in the source tree of a mobilizon-frontend package before building.
|
# Patch the logos in the source tree of a mobilizon-frontend package before building.
|
||||||
# Can be used to construct the argument for .overrideAttrs on mobilizon-frontend.
|
# Can be used to construct the argument for .overrideAttrs on mobilizon-frontend.
|
||||||
mobilizonLogosOverride = icons:
|
mobilizonLogosOverride =
|
||||||
|
icons:
|
||||||
let
|
let
|
||||||
inherit (icons) logo favicon;
|
inherit (icons) logo favicon;
|
||||||
in
|
in
|
||||||
old: {
|
old: {
|
||||||
postPatch = ''
|
postPatch =
|
||||||
cp '${logo}' src/assets/logo.svg
|
''
|
||||||
|
cp '${logo}' src/assets/logo.svg
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-resize x16 \
|
|
||||||
-gravity center \
|
|
||||||
-crop 16x16+0+0 \
|
|
||||||
-flatten \
|
|
||||||
-colors 256 \
|
|
||||||
'${favicon}' \
|
|
||||||
public/img/icons/favicon-16x16.png
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-resize x32 \
|
|
||||||
-gravity center \
|
|
||||||
-crop 32x32+0+0 \
|
|
||||||
-flatten \
|
|
||||||
-colors 256 \
|
|
||||||
'${favicon}' \
|
|
||||||
public/img/icons/favicon-32x32.png
|
|
||||||
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-resize x16 \
|
|
||||||
-gravity center \
|
|
||||||
-crop 16x16+0+0 \
|
|
||||||
-flatten \
|
|
||||||
-colors 256 \
|
|
||||||
'${favicon}' \
|
|
||||||
favicon-16x16.ico
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-resize x32 \
|
|
||||||
-gravity center \
|
|
||||||
-crop 32x32+0+0 \
|
|
||||||
-flatten \
|
|
||||||
-colors 256 \
|
|
||||||
'${favicon}' \
|
|
||||||
favicon-32x32.ico
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-resize x48 \
|
|
||||||
-gravity center \
|
|
||||||
-crop 48x48+0+0 \
|
|
||||||
-flatten \
|
|
||||||
-colors 256 \
|
|
||||||
'${favicon}' \
|
|
||||||
favicon-48x48.ico
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
favicon-16x16.ico \
|
|
||||||
favicon-32x32.ico \
|
|
||||||
favicon-48x48.ico \
|
|
||||||
public/favicon.ico
|
|
||||||
|
|
||||||
rm favicon-16x16.ico favicon-32x32.ico favicon-48x48.ico
|
|
||||||
|
|
||||||
cp '${favicon}' public/img/icons/favicon.svg
|
|
||||||
cp '${favicon}' public/img/icons/safari-pinned-tab.svg
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
'${favicon}' \
|
|
||||||
-gravity center \
|
|
||||||
-extent 630x350 \
|
|
||||||
public/img/mobilizon_default_card.png
|
|
||||||
|
|
||||||
magick convert \
|
|
||||||
-background '#e08c96' \
|
|
||||||
'${logo}' \
|
|
||||||
-resize 366x108 \
|
|
||||||
public/img/mobilizon_logo.png
|
|
||||||
|
|
||||||
'' + nixpkgs.lib.concatMapStrings
|
|
||||||
({ resize, filename }: ''
|
|
||||||
magick convert \
|
magick convert \
|
||||||
-resize x${resize} \
|
-resize x16 \
|
||||||
|
-gravity center \
|
||||||
|
-crop 16x16+0+0 \
|
||||||
|
-flatten \
|
||||||
|
-colors 256 \
|
||||||
'${favicon}' \
|
'${favicon}' \
|
||||||
public/img/icons/${filename}
|
public/img/icons/favicon-16x16.png
|
||||||
|
|
||||||
'')
|
magick convert \
|
||||||
[
|
-resize x32 \
|
||||||
{ resize = "180"; filename = "apple-touch-icon.png"; }
|
-gravity center \
|
||||||
{ resize = "180"; filename = "apple-touch-icon-180x180.png"; }
|
-crop 32x32+0+0 \
|
||||||
{ resize = "152"; filename = "apple-touch-icon-152x152.png"; }
|
-flatten \
|
||||||
{ resize = "120"; filename = "apple-touch-icon-120x120.png"; }
|
-colors 256 \
|
||||||
{ resize = "76"; filename = "apple-touch-icon-76x76.png"; }
|
'${favicon}' \
|
||||||
{ resize = "60"; filename = "apple-touch-icon-60x60.png"; }
|
public/img/icons/favicon-32x32.png
|
||||||
{ resize = "192"; filename = "android-chrome-192x192.png"; }
|
|
||||||
{ resize = "512"; filename = "android-chrome-512x512.png"; }
|
|
||||||
{ resize = "192"; filename = "android-chrome-maskable-192x192.png"; }
|
magick convert \
|
||||||
{ resize = "512"; filename = "android-chrome-maskable-512x512.png"; }
|
-resize x16 \
|
||||||
{ resize = "128"; filename = "badge-128x128.png"; }
|
-gravity center \
|
||||||
{ resize = "144"; filename = "icon-144x144.png"; }
|
-crop 16x16+0+0 \
|
||||||
{ resize = "168"; filename = "icon-168x168.png"; }
|
-flatten \
|
||||||
{ resize = "256"; filename = "icon-256x256.png"; }
|
-colors 256 \
|
||||||
{ resize = "48"; filename = "icon-48x48.png"; }
|
'${favicon}' \
|
||||||
{ resize = "72"; filename = "icon-72x72.png"; }
|
favicon-16x16.ico
|
||||||
{ resize = "96"; filename = "icon-96x96.png"; }
|
|
||||||
{ resize = "144"; filename = "msapplication-icon-144x144.png"; }
|
magick convert \
|
||||||
{ resize = "150"; filename = "mstile-150x150.png"; }
|
-resize x32 \
|
||||||
{ resize = "192"; filename = "android-chrome-192x192.png"; }
|
-gravity center \
|
||||||
{ resize = "512"; filename = "android-chrome-512x512.png"; }
|
-crop 32x32+0+0 \
|
||||||
{ resize = "192"; filename = "android-chrome-maskable-192x192.png"; }
|
-flatten \
|
||||||
{ resize = "512"; filename = "android-chrome-maskable-512x512.png"; }
|
-colors 256 \
|
||||||
];
|
'${favicon}' \
|
||||||
|
favicon-32x32.ico
|
||||||
|
|
||||||
|
magick convert \
|
||||||
|
-resize x48 \
|
||||||
|
-gravity center \
|
||||||
|
-crop 48x48+0+0 \
|
||||||
|
-flatten \
|
||||||
|
-colors 256 \
|
||||||
|
'${favicon}' \
|
||||||
|
favicon-48x48.ico
|
||||||
|
|
||||||
|
magick convert \
|
||||||
|
favicon-16x16.ico \
|
||||||
|
favicon-32x32.ico \
|
||||||
|
favicon-48x48.ico \
|
||||||
|
public/favicon.ico
|
||||||
|
|
||||||
|
rm favicon-16x16.ico favicon-32x32.ico favicon-48x48.ico
|
||||||
|
|
||||||
|
cp '${favicon}' public/img/icons/favicon.svg
|
||||||
|
cp '${favicon}' public/img/icons/safari-pinned-tab.svg
|
||||||
|
|
||||||
|
magick convert \
|
||||||
|
'${favicon}' \
|
||||||
|
-gravity center \
|
||||||
|
-extent 630x350 \
|
||||||
|
public/img/mobilizon_default_card.png
|
||||||
|
|
||||||
|
magick convert \
|
||||||
|
-background '#e08c96' \
|
||||||
|
'${logo}' \
|
||||||
|
-resize 366x108 \
|
||||||
|
public/img/mobilizon_logo.png
|
||||||
|
|
||||||
|
''
|
||||||
|
+
|
||||||
|
nixpkgs.lib.concatMapStrings
|
||||||
|
(
|
||||||
|
{ resize, filename }:
|
||||||
|
''
|
||||||
|
magick convert \
|
||||||
|
-resize x${resize} \
|
||||||
|
'${favicon}' \
|
||||||
|
public/img/icons/${filename}
|
||||||
|
|
||||||
|
''
|
||||||
|
)
|
||||||
|
[
|
||||||
|
{
|
||||||
|
resize = "180";
|
||||||
|
filename = "apple-touch-icon.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "180";
|
||||||
|
filename = "apple-touch-icon-180x180.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "152";
|
||||||
|
filename = "apple-touch-icon-152x152.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "120";
|
||||||
|
filename = "apple-touch-icon-120x120.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "76";
|
||||||
|
filename = "apple-touch-icon-76x76.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "60";
|
||||||
|
filename = "apple-touch-icon-60x60.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "192";
|
||||||
|
filename = "android-chrome-192x192.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "512";
|
||||||
|
filename = "android-chrome-512x512.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "192";
|
||||||
|
filename = "android-chrome-maskable-192x192.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "512";
|
||||||
|
filename = "android-chrome-maskable-512x512.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "128";
|
||||||
|
filename = "badge-128x128.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "144";
|
||||||
|
filename = "icon-144x144.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "168";
|
||||||
|
filename = "icon-168x168.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "256";
|
||||||
|
filename = "icon-256x256.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "48";
|
||||||
|
filename = "icon-48x48.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "72";
|
||||||
|
filename = "icon-72x72.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "96";
|
||||||
|
filename = "icon-96x96.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "144";
|
||||||
|
filename = "msapplication-icon-144x144.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "150";
|
||||||
|
filename = "mstile-150x150.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "192";
|
||||||
|
filename = "android-chrome-192x192.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "512";
|
||||||
|
filename = "android-chrome-512x512.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "192";
|
||||||
|
filename = "android-chrome-maskable-192x192.png";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
resize = "512";
|
||||||
|
filename = "android-chrome-maskable-512x512.png";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
formatter = forAllSystems (system: nixpkgsFor.${system}.nixfmt-rfc-style);
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,10 @@ in
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "mobilizon";
|
name = "mobilizon";
|
||||||
meta.maintainers = with lib.maintainers; [ minijackson erictapen ];
|
meta.maintainers = with lib.maintainers; [
|
||||||
|
minijackson
|
||||||
|
erictapen
|
||||||
|
];
|
||||||
|
|
||||||
nodes.server =
|
nodes.server =
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
Loading…
Reference in a new issue