127 lines
3.8 KiB
Nix
127 lines
3.8 KiB
Nix
{
|
|
inputs.nixpkgs.url = "nixpkgs/nixos-unstable";
|
|
outputs = { self, nixpkgs }: let
|
|
inherit (nixpkgs) lib;
|
|
systems = [
|
|
"x86_64-linux"
|
|
"aarch64-linux"
|
|
"x86_64-darwin"
|
|
"aarch64-darwin"
|
|
"armv7l-linux"
|
|
];
|
|
|
|
forAllSystems = f: lib.genAttrs systems (system: let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
in f system pkgs);
|
|
in {
|
|
devShells = forAllSystems (_: pkgs: {
|
|
default = pkgs.mkShell {
|
|
packages = with pkgs; [
|
|
flutter341
|
|
|
|
# https://github.com/NixOS/nixpkgs/issues/341147
|
|
pkg-config
|
|
gtk3
|
|
];
|
|
};
|
|
});
|
|
|
|
nixosModules.default = ./nix/module.nix;
|
|
|
|
packages = forAllSystems (system: pkgs: let
|
|
src = builtins.filterSource (path: type: let
|
|
baseName = baseNameOf (toString path);
|
|
in !(lib.any (b: b) [
|
|
(!(lib.cleanSourceFilter path type))
|
|
(baseName == ".gitea" && type == "directory")
|
|
(baseName == "nix" && type == "directory")
|
|
|
|
(baseName == ".envrc" && type == "regular")
|
|
(baseName == "flake.lock" && type == "regular")
|
|
(baseName == "flake.nix" && type == "regular")
|
|
(baseName == "module.nix" && type == "regular")
|
|
])) ./.;
|
|
|
|
# Flutter is kinda brokey at the time of writing this, seemingly not all executables
|
|
# are marked as executable, and this only affects weird build artifacts like the web output
|
|
# which isn't really used within nixpkgs. ¯\_(ツ)_/¯
|
|
flutter = pkgs.flutter341.overrideAttrs (prev: {
|
|
postInstall = prev.postInstall or "" + ''
|
|
chmod +x "$out"/bin/cache/artifacts/engine/linux-x64/font-subset
|
|
'';
|
|
});
|
|
|
|
in {
|
|
default = self.packages.${system}.gergle-linux;
|
|
|
|
gergle-linux = pkgs.callPackage ./nix/package.nix {
|
|
inherit src flutter;
|
|
};
|
|
|
|
gergle-linux-debug = pkgs.callPackage ./nix/package.nix {
|
|
inherit src flutter;
|
|
isDebug = true;
|
|
};
|
|
|
|
gergle-web = pkgs.callPackage ./nix/package.nix {
|
|
inherit src flutter;
|
|
isWeb = true;
|
|
};
|
|
|
|
gergle-web-debug = pkgs.callPackage ./nix/package.nix {
|
|
inherit src flutter;
|
|
isWeb = true;
|
|
isDebug = true;
|
|
};
|
|
|
|
gergle-web-wasm = pkgs.callPackage ./nix/package.nix {
|
|
inherit src flutter;
|
|
isWeb = true;
|
|
isWasm = true;
|
|
};
|
|
});
|
|
|
|
overlays.default = final: prev: {
|
|
gergle-desktop = self.packages.${final.stdenv.hostPlatform.system}.gergle-linux;
|
|
gergle-web = self.packages.${final.stdenv.hostPlatform.system}.gergle-web;
|
|
gergle-web-debug = self.packages.${final.stdenv.hostPlatform.system}.gergle-web-debug;
|
|
gergle-web-wasm = self.packages.${final.stdenv.hostPlatform.system}.gergle-web-wasm;
|
|
};
|
|
|
|
apps = forAllSystems (system: pkgs: {
|
|
default = self.apps.${system}.gergle-web;
|
|
|
|
gergle-linux = {
|
|
type = "app";
|
|
program = lib.getExe self.packages.${system}.gergle-linux;
|
|
};
|
|
|
|
gergle-linux-debug = {
|
|
type = "app";
|
|
program = lib.getExe self.packages.${system}.gergle-linux-debug;
|
|
};
|
|
|
|
gergle-web = {
|
|
type = "app";
|
|
program = toString (pkgs.writeShellScript "gergle-web" ''
|
|
${pkgs.python3}/bin/python -m http.server -d ${self.packages.${system}.gergle-web}/
|
|
'');
|
|
};
|
|
|
|
gergle-web-debug = {
|
|
type = "app";
|
|
program = toString (pkgs.writeShellScript "gergle-web-debug" ''
|
|
${pkgs.python3}/bin/python -m http.server -d ${self.packages.${system}.gergle-web-debug}/
|
|
'');
|
|
};
|
|
|
|
gergle-web-wasm = {
|
|
type = "app";
|
|
program = toString (pkgs.writeShellScript "gergle-web-wasm" ''
|
|
${pkgs.python3}/bin/python -m http.server -d ${self.packages.${system}.gergle-web-wasm}/
|
|
'');
|
|
};
|
|
});
|
|
};
|
|
}
|