# 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; }; 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, # external dependencies neovim_config, user_js, snap-sync, # my binaries strip_js_comments, shell-library, river_init_lesser, yambar_memory, yambar_cpu, grades, ... } @ inputs: let sysLib = import ./lib {inherit pkgs shell-library;}; system = "x86_64-linux"; pkgs = import inputs.nixpkgs { config.allowUnfreePredicate = pkg: builtins.elem (inputs.nixpkgs.lib.getName pkg) [ "steam" "steam-original" ]; inherit system; }; in { nixosConfigurations = import ./flake/nixosConfigurations { inherit inputs system pkgs sysLib river_init_lesser yambar_memory yambar_cpu grades ; }; 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; }; devShells."${system}" = { default = pkgs.mkShell { packages = with pkgs; [nil alejandra statix]; }; }; }; }