# vim: ts=2 { description = "Nixos system config"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs"; }; agenix = { url = "github:ryantm/agenix"; inputs.nixpkgs.follows = "nixpkgs"; }; ragenix = { url = "github:yaxitech/ragenix"; inputs.nixpkgs.follows = "nixpkgs"; }; impermanence = { url = "github:nix-community/impermanence"; }; neovim_config = { url = "git+https://codeberg.org/ene/neovim-config.git"; flake = false; }; templates = { url = "git+https://codeberg.org/ene/nixos-templates.git"; }; grades = { url = "git+https://codeberg.org/ene/Grades.git"; inputs.nixpkgs.follows = "nixpkgs"; }; strip_js_comments = { url = "git+https://codeberg.org/ene/strip_js_comments.git"; inputs.nixpkgs.follows = "nixpkgs"; }; shell-library = { url = "git+https://git.sils.li/ene/lib-sh.git"; flake = false; }; river_init_lesser = { url = "git+https://git.sils.li/ene/river-lesser-init.git"; inputs.nixpkgs.follows = "nixpkgs"; }; yambar_cpu = { url = "git+https://git.sils.li/ene/yambar_cpu.git"; inputs.nixpkgs.follows = "nixpkgs"; }; yambar_memory = { url = "git+https://git.sils.li/ene/yambar_memory.git"; inputs.nixpkgs.follows = "nixpkgs"; }; user_js = { url = "github:arkenfox/user.js"; flake = false; }; snap-sync = { url = "github:qubidt/snap-sync"; flake = false; }; }; outputs = { # core self, nixpkgs, home-manager, # modules impermanence, agenix, ragenix, # external dependencies neovim_config, user_js, snap-sync, # my binaries strip_js_comments, shell-library, river_init_lesser, yambar_memory, yambar_cpu, grades, ... }: let sysLib = import ./lib {inherit pkgs shell-library;}; system = "x86_64-linux"; pkgs = import nixpkgs (import ./system/nixpkgs {inherit (nixpkgs) lib; inherit system;}); in { nixosConfigurations = import ./flake/nixosConfigurations { inherit system pkgs nixpkgs sysLib home-manager agenix impermanence river_init_lesser yambar_memory yambar_cpu grades neovim_config strip_js_comments shell-library user_js snap-sync ; }; packages."${system}" = { install = import ./bootstrap/install { inherit pkgs shell-library ; }; activate = import ./bootstrap/activate { inherit pkgs shell-library ; }; setup = import ./bootstrap/setup { inherit pkgs shell-library ; }; config_setup = import ./bootstrap/config_setup { inherit pkgs shell-library ; }; }; apps."${system}" = { install = { type = "app"; program = "${self.packages."${system}".install}/bin/install"; }; activate = { type = "app"; program = "${self.packages."${system}".activate}/bin/activate"; }; setup = { type = "app"; program = "${self.packages."${system}".setup}/bin/setup"; }; config_setup = { type = "app"; program = "${self.packages."${system}".config_setup}/bin/config_setup"; }; default = self.apps."${system}".activate; }; devShells."${system}" = { default = pkgs.mkShell { packages = with pkgs; [nil alejandra statix ragenix.packages."${system}".default]; }; }; }; }