# 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"; }; }; # inputs for following systems = { url = "github:nix-systems/x86_64-linux"; # only evaluate for this system }; flake-compat = { url = "github:edolstra/flake-compat"; flake = false; }; crane = { url = "github:ipetkov/crane"; inputs = { nixpkgs.follows = "nixpkgs"; flake-compat.follows = "flake-compat"; flake-utils.follows = "flake-utils"; rust-overlay.follows = "rust-overlay"; }; }; flake-utils = { url = "github:numtide/flake-utils"; inputs = { systems.follows = "systems"; }; }; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs = { nixpkgs.follows = "nixpkgs"; systems.follows = "systems"; }; }; agenix = { url = "github:ryantm/agenix"; inputs = { nixpkgs.follows = "nixpkgs"; }; }; ragenix = { url = "github:yaxitech/ragenix"; inputs = { nixpkgs.follows = "nixpkgs"; agenix.follows = "agenix"; flake-utils.follows = "flake-utils"; rust-overlay.follows = "rust-overlay"; crane.follows = "crane"; }; }; impermanence = { url = "github:nix-community/impermanence"; inputs = { }; }; neovim_config = { url = "git+https://codeberg.org/ene/neovim-config.git"; flake = false; }; templates = { url = "git+https://codeberg.org/ene/nixos-templates.git"; inputs = { }; }; grades = { url = "git+https://codeberg.org/ene/Grades.git"; inputs = { nixpkgs.follows = "nixpkgs"; crane.follows = "crane"; flake-utils.follows = "flake-utils"; rust-overlay.follows = "rust-overlay"; }; }; video_pause = { url = "git+https://codeberg.org/soispha/video-pause.git"; inputs = { nixpkgs.follows = "nixpkgs"; crane.follows = "crane"; flake-utils.follows = "flake-utils"; }; }; strip_js_comments = { url = "git+https://codeberg.org/ene/strip_js_comments.git"; inputs = { nixpkgs.follows = "nixpkgs"; crane.follows = "crane"; flake-utils.follows = "flake-utils"; }; }; 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"; crane.follows = "crane"; flake-utils.follows = "flake-utils"; }; }; yambar_cpu = { url = "git+https://git.sils.li/ene/yambar_cpu.git"; inputs = { nixpkgs.follows = "nixpkgs"; crane.follows = "crane"; flake-utils.follows = "flake-utils"; }; }; yambar_memory = { url = "git+https://git.sils.li/ene/yambar_memory.git"; inputs = { nixpkgs.follows = "nixpkgs"; crane.follows = "crane"; flake-utils.follows = "flake-utils"; }; }; 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, templates, # my binaries video_pause, 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 templates river_init_lesser yambar_memory yambar_cpu video_pause 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 shellcheck ltex-ls]; }; }; }; }