{ description = "Hauleth's configuration"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; darwin-stable.url = "github:nixos/nixpkgs/nixpkgs-25.05-darwin"; flake-parts.url = "github:hercules-ci/flake-parts"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; agnoster = { url = "github:hauleth/agnoster"; inputs.nixpkgs.follows = "nixpkgs"; }; darwin = { url = "github:lnl7/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; }; lix = { url = "https://git.lix.systems/lix-project/lix/archive/release-2.93.tar.gz"; flake = false; }; lix-module = { url = "https://git.lix.systems/lix-project/nixos-module/archive/release-2.93.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; inputs.lix.follows = "lix"; }; neorg-overlay = { url = "github:nvim-neorg/nixpkgs-neorg-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; lexical = { url = "github:lexical-lsp/lexical"; }; # nixvim = { # url = "github:nix-community/nixvim"; # inputs.nixpkgs.follows = "nixpkgs"; # }; }; nixConfig = { extra-substituters = [ "https://cache.lix.systems" ]; extra-trusted-public-keys = [ "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=" ]; }; outputs = { self, flake-parts, ... } @ inputs: flake-parts.lib.mkFlake {inherit inputs;} { flake = { lib = import ./lib.nix inputs; # TODO: Automatically discover and build that darwinConfigurations."NiunioBook" = (import ./hosts/niuniobook.nix {inherit inputs;}) .system; darwinConfigurations."Supadupa" = (import ./hosts/supadupa.nix {inherit inputs;}) .system; templates = { elixir = { path = ./templates/elixir; description = "Basic requirements for Elixir applications"; }; }; }; systems = ["x86_64-darwin" "aarch64-darwin"]; perSystem = { self', pkgs, inputs', ... }: { formatter = pkgs.alejandra; legacyPackages = inputs'.darwin-stable.legacyPackages.callPackage ./pkgs {}; packages = (pkgs.callPackage ./pkgs {}) // { default = pkgs.writeScriptBin "activate" '' #!/bin/sh ${pkgs.lib.getExe self'.packages.system} switch ''; system = let builder = if pkgs.stdenv.isDarwin then pkgs.lib.getExe' inputs'.darwin.packages.darwin-rebuild "darwin-rebuild" else pkgs.lib.getExe pkgs.nixos-rebuild; in pkgs.writeScriptBin "activate-system" '' #!/bin/sh exec ${builder} --flake "${self}" "$@" ''; }; devShells = let globalShells = pkgs.callPackage ./dev_shells.nix {}; default = pkgs.mkShell { packages = [ pkgs.fnlfmt # TODO: Remove it and manage all configuration from Nix pkgs.stow ]; }; in globalShells // {inherit default;}; }; }; }