nix/flake.nix
2024-12-18 09:46:54 +03:00

269 lines
7.3 KiB
Nix

{
inputs = {
# SOURCE: https://github.com/NixOS/nixpkgs
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgsUnstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgsMaster.url = "github:nixos/nixpkgs/master";
# SOURCE: https://github.com/nix-community/home-manager
home-manager = {
url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "nixpkgs";
};
# SOURCE: https://github.com/nix-community/nix-on-droid
nix-on-droid = {
url = "github:t184256/nix-on-droid/release-24.05";
inputs = {
home-manager.follows = "home-manager";
nixpkgs.follows = "nixpkgs";
};
};
# SOURCE: https://github.com/LilleAila/nix-cursors
nix-cursors = {
url = "github:LilleAila/nix-cursors";
inputs.nixpkgs.follows = "nixpkgs";
};
# SOURCE: https://github.com/danth/stylix
stylix = {
url = "github:danth/stylix/release-24.05";
inputs = {
home-manager.follows = "home-manager";
nixpkgs.follows = "nixpkgs";
};
};
nixpkgsJobber.url = "github:nixos/nixpkgs/051f920625ab5aabe37c920346e3e69d7d34400e";
poetry2nixJobber.url = "github:nix-community/poetry2nix/304f8235fb0729fd48567af34fcd1b58d18f9b95";
nvimAlign = {
flake = false;
url = "github:echasnovski/mini.align";
};
nvimAutoclose = {
flake = false;
url = "github:m4xshen/autoclose.nvim";
};
nvimBufferline = {
flake = false;
url = "github:akinsho/bufferline.nvim";
};
nvimCloseBuffers = {
flake = false;
url = "github:kazhala/close-buffers.nvim";
};
nvimColorizer = {
flake = false;
url = "github:brenoprata10/nvim-highlight-colors";
};
nvimDevicons = {
flake = false;
url = "github:nvim-tree/nvim-web-devicons";
};
nvimDressing = {
flake = false;
url = "github:stevearc/dressing.nvim";
};
nvimGen = {
flake = false;
url = "github:David-Kunz/gen.nvim";
};
nvimGitsigns = {
flake = false;
url = "github:lewis6991/gitsigns.nvim";
};
nvimGruvboxMaterial = {
flake = false;
url = "github:sainnhe/gruvbox-material";
};
nvimIndentoMatic = {
flake = false;
url = "github:Darazaki/indent-o-matic";
};
nvimLspconfig = {
flake = false;
url = "github:neovim/nvim-lspconfig";
};
nvimPlenary = {
flake = false;
url = "github:nvim-lua/plenary.nvim";
};
nvimTelescope = {
flake = false;
url = "github:nvim-telescope/telescope.nvim";
};
nvimTodo = {
flake = false;
url = "github:folke/todo-comments.nvim";
};
nvimTree = {
flake = false;
url = "github:nvim-tree/nvim-tree.lua";
};
nvimTreesitter = {
flake = false;
url = "github:nvim-treesitter/nvim-treesitter";
};
nvimTrouble = {
flake = false;
url = "github:folke/trouble.nvim";
};
};
outputs =
{
home-manager,
nix-on-droid,
nixpkgs,
nixpkgsJobber,
nixpkgsMaster,
nixpkgsUnstable,
poetry2nixJobber,
self,
stylix,
...
}@inputs:
let
lib = nixpkgs.lib;
const = {
droidStateVersion = "24.05";
stateVersion = "24.11";
timeZone = "Europe/Moscow";
url = "https://git.voronind.com/voronind/nix.git";
};
__findFile = _: p: ./${p};
ls =
path:
map (f: "${path}/${f}") (
builtins.filter (i: builtins.readFileType "${path}/${i}" == "regular") (
builtins.attrNames (builtins.readDir path)
)
);
in
{
devShells =
let
pkgs = nixpkgs.legacyPackages.${system};
system = "x86_64-linux";
in
{
${system}.default = pkgs.mkShell {
nativeBuildInputs = with pkgs; [
nixd
nixfmt-rfc-style
shfmt
treefmt
];
# buildInputs = with pkgs; [ ];
# LD_LIBRARY_PATH = "${lib.makeLibraryPath buildInputs}";
# SOURCE_DATE_EPOCH = "${toString self.lastModified}";
};
};
nixosConfigurations =
let
mkHost =
{ system, hostname }:
lib.nixosSystem {
inherit system;
modules =
[
# Make a device hostname match the one from this config.
{ networking.hostName = hostname; }
# Specify current release version.
{ system.stateVersion = const.stateVersion; }
# Add Home Manager module.
home-manager.nixosModules.home-manager
# Add Stylix module.
stylix.nixosModules.stylix
# HM config.
./home/NixOs.nix
]
++ (ls ./host/${system}/${hostname})
++ (ls ./option)
++ (ls ./config)
++ (ls ./overlay)
++ (ls ./system);
specialArgs =
let
util = import ./lib/Util.nix { inherit lib; };
in
{
inherit
const
__findFile
inputs
self
poetry2nixJobber
util
;
pkgsJobber = nixpkgsJobber.legacyPackages.${system}.pkgs;
pkgsMaster = nixpkgsMaster.legacyPackages.${system}.pkgs;
pkgsUnstable = nixpkgsUnstable.legacyPackages.${system}.pkgs;
secret = import ./secret { };
};
};
mkSystem = system: hostname: { "${hostname}" = mkHost { inherit system hostname; }; };
systems =
builtins.attrNames (builtins.readDir ./host)
|> map (system: {
inherit system;
hosts = builtins.attrNames (builtins.readDir ./host/${system});
});
hosts =
map (
system:
map (host: {
inherit host;
inherit (system) system;
}) system.hosts
) systems
|> lib.foldl' (acc: h: acc ++ h) [ ];
configurations = map (cfg: mkSystem cfg.system cfg.host) hosts;
in
lib.foldl' (result: cfg: result // cfg) { } configurations;
nixOnDroidConfigurations.default =
let
pkgs = nixpkgs.legacyPackages.${system}.pkgs;
pkgsMaster = nixpkgsMaster.legacyPackages.${system}.pkgs;
pkgsUnstable = nixpkgsUnstable.legacyPackages.${system}.pkgs;
system = "aarch64-linux";
in
nix-on-droid.lib.nixOnDroidConfiguration {
inherit pkgs;
modules = [
{ home.android.enable = true; }
{ home-manager.config.stylix.autoEnable = lib.mkForce false; }
./home/Android.nix
] ++ (ls ./option);
extraSpecialArgs = {
inherit
inputs
self
pkgsMaster
pkgsUnstable
const
__findFile
;
secret = import ./secret { };
util = import ./lib/Util.nix { inherit lib; };
};
};
};
}