Files
gergle/flake.nix
T

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