{ description = "nina — the nix helper"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; outputs = { self, nixpkgs }: let systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; forSystems = f: nixpkgs.lib.genAttrs systems f; version = builtins.replaceStrings [ "\n" "\r" " " "\t" ] [ "" "" "" "" ] (builtins.readFile ./VERSION); in { packages = forSystems (system: let pkgs = nixpkgs.legacyPackages.${system}; in rec { nina = pkgs.stdenv.mkDerivation { pname = "nina"; inherit version; src = self; nativeBuildInputs = [ pkgs.zig_0_16 ]; dontConfigure = true; buildPhase = '' export ZIG_GLOBAL_CACHE_DIR="$TMPDIR/zig-cache" zig build -Doptimize=ReleaseSafe ''; installPhase = '' install -Dm755 zig-out/bin/nina $out/bin/nina ''; meta = with nixpkgs.lib; { description = "The nix helper — manage your NixOS system from the command line"; mainProgram = "nina"; platforms = platforms.unix; license = licenses.mit; }; }; default = nina; } ); nixosModules.default = { config, pkgs, lib, ... }: let cfg = config.programs.nina; in { options.programs.nina = { enable = lib.mkEnableOption "nina, the NixOS helper"; package = lib.mkOption { type = lib.types.package; default = self.packages.${pkgs.system}.default; defaultText = lib.literalExpression "nina.packages.\${pkgs.system}.default"; description = "The nina package to install."; }; }; config = lib.mkIf cfg.enable { environment.systemPackages = [ cfg.package ]; }; }; nixosModules.nina = self.nixosModules.default; }; }