about summary refs log blame commit diff stats
path: root/flake.nix
blob: d8e38f34cfe18a6f4904b9f16827702fd9bbc748 (plain) (tree)
1
2
3
4
5
6
7
8
9

                                                               
 
                                               
 
            
          
                                                            
                                                        
 
                      
                                         
                                                                   
                                                                     
 
               
                                                                                
      
                          




                                     

                                                                              





                                            



                                              

                                    

                                              
                                    
                                            
                                            
        
                                             




                                               
      




                                          












                                               


                                      
        


                                                 
                                              

                                        




                                           
                  
      

                                         
                                    
        


                                          
        
      






                                                                        
 





                                                       




                                         

                                          
                                              
                                            

                                              
                                    
                                            
                                                  
        
                                   
                
                                      
                                    
                                              
                                    
        
      
                                      





                                              
      
                                                
                
      
                                                    


                                       
      









                                                                
                  
                                                     
                
                                           
                                              
                                            
                                              
                                                          
        




                                                      
 
                
                 
                                                                  
                

                                            
                                            
        
      
 
             




                                                                 
                                                              
        
      
                         
                                                                     


                                            
                                              
        
      







                                                                                 
 
                        


                                      




                                         
    
 
             
          
            
                   
                
                    
            
             
                     
                 
            
                
          
               
           
                       
                           
            
                
              
                 
                  
                      
                 
       
        
                            
                                         
                             
 
                                                         
                                            
                                 
      
 
                               

                        
                       
         
 
                              
             
              
            
                  
              
              
              
              
                        
                        
                 
                    
              
                        
                    
               
                   
             
                  
                          
                               
                   
               
                 
                     
                     
                         
                    
         
            
 
# Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de>
#
# SPDX-License-Identifier: GPL-3.0-or-later
{
  description = "A NixOS System Configuration";

  inputs = {
    # base
    nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.11";
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

    # open nixpkgs prs
    # FIXME: Close these PRs <2024-09-07>
    nixpkgs-tfc.url = "github:soispha/nixpkgs/add-termfilechooser";
    nixpkgs-onlykey.url = "github:soispha/nixpkgs/fix-onlykey-agent";

    library = {
      url = "git+https://git.foss-syndicate.org/vhack.eu/nix-library?ref=prime";
    };

    # inputs for following
    nix-darwin = {
      url = "github:lnl7/nix-darwin";
      inputs = {
        nixpkgs.follows = "nixpkgs";
      };
    };
    systems = {
      url = "github:nix-systems/x86_64-linux"; # only evaluate for this system
    };
    nuschtosSearch = {
      url = "github:NuschtOS/search";
      inputs = {
        flake-utils.follows = "flake-utils";
        nixpkgs.follows = "nixpkgs";
      };
    };
    git-hooks = {
      url = "github:cachix/git-hooks.nix";
      inputs = {
        flake-compat.follows = "flake-compat";
        gitignore.follows = "gitignore";
        nixpkgs.follows = "nixpkgs";
      };
    };
    poetry2nix = {
      url = "github:nix-community/poetry2nix";
      inputs = {
        systems.follows = "systems";
        nixpkgs.follows = "nixpkgs";
        flake-utils.follows = "flake-utils";
        treefmt-nix.follows = "treefmt-nix";
      };
    };
    flake-parts = {
      url = "github:hercules-ci/flake-parts";
      inputs = {
        nixpkgs-lib.follows = "nixpkgs-lib";
      };
    };
    nixpkgs-lib = {
      url = "github:nix-community/nixpkgs.lib";
    };
    haumea = {
      url = "github:nix-community/haumea";
      inputs = {
        nixpkgs.follows = "nixpkgs";
      };
    };
    gitignore = {
      url = "github:hercules-ci/gitignore.nix";
      inputs = {
        nixpkgs.follows = "nixpkgs";
      };
    };
    beautysh = {
      url = "github:lovesegfault/beautysh";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        poetry2nix.follows = "poetry2nix";
        utils.follows = "flake-utils";
      };
    };
    devshell = {
      url = "github:numtide/devshell";
      inputs = {
        nixpkgs.follows = "nixpkgs";
      };
    };
    pre-commit-hooks = {
      url = "github:cachix/pre-commit-hooks.nix";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        flake-compat.follows = "flake-compat";
        gitignore.follows = "gitignore";
      };
    };
    flake-compat = {
      url = "github:edolstra/flake-compat";
      flake = false;
    };
    crane = {
      url = "github:ipetkov/crane";
      inputs = {};
    };
    flake-utils = {
      url = "github:numtide/flake-utils";
      inputs = {
        systems.follows = "systems";
      };
    };
    rust-overlay = {
      url = "github:oxalica/rust-overlay";
      inputs = {
        nixpkgs.follows = "nixpkgs";
      };
    };
    flake_version_update = {
      url = "git+https://codeberg.org/soispha/flake_version_update.git";
      inputs = {
        systems.follows = "systems";
        nixpkgs.follows = "nixpkgs";
        flake-utils.follows = "flake-utils";
      };
    };

    # nixos modules
    home-manager = {
      url = "github:nix-community/home-manager/master";
      inputs = {
        nixpkgs.follows = "nixpkgs";
      };
    };
    disko = {
      url = "github:nix-community/disko";
      inputs = {
        nixpkgs.follows = "nixpkgs";
      };
    };
    nixVim = {
      url = "github:nix-community/nixvim";
      inputs = {
        devshell.follows = "devshell";
        flake-compat.follows = "flake-compat";
        flake-parts.follows = "flake-parts";
        git-hooks.follows = "git-hooks";
        home-manager.follows = "home-manager";
        nix-darwin.follows = "nix-darwin";
        nixpkgs.follows = "nixpkgs";
        treefmt-nix.follows = "treefmt-nix";
        nuschtosSearch.follows = "nuschtosSearch";
      };
    };
    agenix = {
      url = "github:ryantm/agenix";
      inputs = {
        darwin.follows = "nix-darwin";
        nixpkgs.follows = "nixpkgs";
        home-manager.follows = "home-manager";
        systems.follows = "systems";
      };
    };
    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 = {
      };
    };
    nixos-generators = {
      url = "github:nix-community/nixos-generators";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        nixlib.follows = "nixpkgs-lib";
      };
    };
    serverphone = {
      url = "git+https://codeberg.org/vhack.eu/serverphone.git";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        systems.follows = "systems";
        flake-compat.follows = "flake-compat";
        flake-utils.follows = "flake-utils";
        rust-overlay.follows = "rust-overlay";
        crane.follows = "crane";
      };
    };
    lanzaboote = {
      url = "github:nix-community/lanzaboote/v0.4.2";
      inputs = {
        nixpkgs.follows = "nixpkgs-stable";
        flake-compat.follows = "flake-compat";
        flake-parts.follows = "flake-parts";
        crane.follows = "crane";
        rust-overlay.follows = "rust-overlay";
        pre-commit-hooks-nix.follows = "pre-commit-hooks";
      };
    };
    nix-index-database = {
      url = "github:nix-community/nix-index-database";
      inputs = {
        nixpkgs.follows = "nixpkgs";
      };
    };

    # my configs
    templates = {
      url = "git+https://codeberg.org/bpeetz/flake-templates.git";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        flake-utils.follows = "flake-utils";
        systems.follows = "systems";
        treefmt-nix.follows = "treefmt-nix";
      };
    };

    # my bins
    shell_library = {
      url = "git+https://codeberg.org/soispha/shell_library.git";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        flake-utils.follows = "flake-utils";
        systems.follows = "systems";
        flake_version_update.follows = "flake_version_update";
      };
    };
    river_init_lesser = {
      url = "git+https://codeberg.org/soispha/river_keymap_init.git";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        crane.follows = "crane";
        flake-utils.follows = "flake-utils";
        rust-overlay.follows = "rust-overlay";
        flake-compat.follows = "flake-compat";
      };
    };
    qmk_firmware = {
      url = "git+https://git.foss-syndicate.org/bpeetz/qmk_layout.git?ref=prime";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        treefmt-nix.follows = "treefmt-nix";
        systems.follows = "systems";
        flake-utils.follows = "flake-utils";
      };
    };

    # external resources
    user_js = {
      url = "github:arkenfox/user.js";
      flake = false;
    };
    treefmt-nix = {
      url = "github:numtide/treefmt-nix";
      inputs = {
        nixpkgs.follows = "nixpkgs";
      };
    };
  };

  outputs = {
    # core
    self,
    nixpkgs,
    nixpkgs-stable,
    nixpkgs-tfc,
    nixpkgs-onlykey,
    library,
    # modules
    home-manager,
    nixos-generators,
    impermanence,
    agenix,
    ragenix,
    serverphone,
    disko,
    lanzaboote,
    nixVim,
    nix-index-database,
    # external dependencies
    user_js,
    treefmt-nix,
    templates,
    # my binaries
    shell_library,
    river_init_lesser,
    qmk_firmware,
    ...
  }: let
    system = "x86_64-linux";
    sysLib = shell_library.lib.${system};

    inherit (library) nixLib;

    pkgsStable = nixpkgs-stable.legacyPackages.${system};
    pkgs = nixpkgs.legacyPackages.${system};
    myPkgs = import ./pkgs {
      inherit sysLib pkgs nixLib;
    };

    nixpkgs_as_input = nixpkgs;
    nixpkgs_open_prs = {
      inherit
        nixpkgs-tfc
        nixpkgs-onlykey
        ;
    };

    outputs = import ./flake {
      inherit
        # core
        self
        pkgs
        pkgsStable
        nixLib
        myPkgs
        system
        sysLib
        nixpkgs_as_input
        nixpkgs_open_prs
        # modules
        home-manager
        nixVim
        nixos-generators
        impermanence
        agenix
        ragenix
        serverphone
        disko
        lanzaboote
        nix-index-database
        # external dependencies
        treefmt-nix
        user_js
        templates
        # my binaries
        shell_library
        river_init_lesser
        qmk_firmware
        ;
    };
  in
    outputs;
}