# 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"; }; impermanence = { url = "github:nix-community/impermanence"; }; neovim_config = { url = "git+https://codeberg.org/ene/neovim-config.git"; flake = false; }; 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"; }; user_js = { url = "github:arkenfox/user.js"; flake = false; }; snap-sync = { url = "github:qubidt/snap-sync"; flake = false; }; }; outputs = { self, nixpkgs, home-manager, impermanence, agenix, neovim_config, user_js, snap-sync, strip_js_comments, shell-library, river_init_lesser, ... } @ inputs: let sysLib = import ./lib {inherit pkgs shell-library;}; system = "x86_64-linux"; pkgs = import inputs.nixpkgs { inherit system; config = { allowUnfreePredicate = pkg: builtins.elem (inputs.nixpkgs.lib.getName pkg) [ "steam" "steam-original" ]; }; }; in { nixosConfigurations = import ./flake/nixosConfigurations {inherit inputs system pkgs sysLib river_init_lesser;}; packages."${system}" = { install = import ./bootstrap/install { inherit pkgs; inherit (inputs) shell-library; }; activate = import ./bootstrap/activate { inherit pkgs; inherit (inputs) shell-library; }; setup = import ./bootstrap/setup { inherit pkgs; inherit (inputs) shell-library; }; config_setup = import ./bootstrap/config_setup { inherit pkgs; inherit (inputs) 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; }; }; }