1{2 description = "nina — NixOS Intuitive Navigation Assistant";34 inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";56 outputs = { self, nixpkgs }:7 let8 systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ];9 forSystems = f: nixpkgs.lib.genAttrs systems f;10 version = builtins.replaceStrings [ "\n" "\r" " " "\t" ] [ "" "" "" "" ]11 (builtins.readFile ./VERSION);12 in {13 packages = forSystems (system:14 let pkgs = nixpkgs.legacyPackages.${system};15 in rec {16 nina = pkgs.stdenv.mkDerivation {17 pname = "nina";18 inherit version;19 src = self;20 nativeBuildInputs = [ pkgs.zig_0_16 ];21 dontConfigure = true;22 buildPhase = ''23 export ZIG_GLOBAL_CACHE_DIR="$TMPDIR/zig-cache"24 zig build -Doptimize=ReleaseSafe25 '';26 installPhase = ''27 install -Dm755 zig-out/bin/nina $out/bin/nina28 '';29 meta = with nixpkgs.lib; {30 description = "NixOS Intuitive Navigation Assistant";31 mainProgram = "nina";32 platforms = platforms.unix;33 license = licenses.mit;34 };35 };36 default = nina;37 }38 );3940 nixosModules.default = { config, pkgs, lib, ... }:41 let cfg = config.programs.nina;42 in {43 options.programs.nina = {44 enable = lib.mkEnableOption "nina, the NixOS helper";45 package = lib.mkOption {46 type = lib.types.package;47 default = self.packages.${pkgs.system}.default;48 defaultText = lib.literalExpression "nina.packages.\${pkgs.system}.default";49 description = "The nina package to install.";50 };51 };52 config = lib.mkIf cfg.enable {53 environment.systemPackages = [ cfg.package ];54 };55 };5657 nixosModules.nina = self.nixosModules.default;58 };59}