{ description = "NixOS configuration"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-master.url = "github:nixos/nixpkgs"; nixpkgs-traxys.url = "github:traxys/nixpkgs/inflight"; nix-gaming = { url = "github:fufexan/nix-gaming"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-ld = { url = "github:Mic92/nix-ld/main"; inputs.nixpkgs.follows = "nixpkgs"; }; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; naersk = { url = "github:nix-community/naersk"; inputs.nixpkgs.follows = "nixpkgs"; }; comma = { url = "github:nix-community/comma"; inputs.naersk.follows = "naersk"; inputs.nixpkgs.follows = "nixpkgs"; }; raclette = { url = "github:traxys/raclette"; inputs.naersk.follows = "naersk"; inputs.nixpkgs.follows = "nixpkgs"; }; nur = { url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; }; gsm.url = "github:traxys/git-series-manager"; attic.url = "github:zhaofengli/attic"; flake-parts.url = "github:hercules-ci/flake-parts"; treefmt-nix.url = "github:numtide/treefmt-nix"; flake-root.url = "github:srid/flake-root"; nix-index-database.url = "github:Mic92/nix-index-database"; nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; # Extra Package Sources meson-syntax = { url = "github:Monochrome-Sauce/sublime-meson"; flake = false; }; glaurung.url = "git+https://gitea.familleboyer.net/traxys/Glaurung"; simulationcraft = { url = "github:simulationcraft/simc"; flake = false; }; kabalist = { url = "github:traxys/kabalist"; flake = false; }; roaming_proxy = { url = "github:traxys/roaming_proxy"; inputs.naersk.follows = "naersk"; inputs.nixpkgs.follows = "nixpkgs"; }; zsh-nix-shell = { url = "github:chisui/zsh-nix-shell"; flake = false; }; powerlevel10k = { url = "github:romkatv/powerlevel10k"; flake = false; }; fast-syntax-highlighting = { url = "github:zdharma-continuum/fast-syntax-highlighting"; flake = false; }; jq-zsh-plugin = { url = "github:reegnz/jq-zsh-plugin"; flake = false; }; mujmap = { url = "github:elizagamedev/mujmap"; #inputs.nixpkgs.follows = "nixpkgs"; }; fioul.url = "github:traxys/fioul"; neovim-flake = { url = "github:neovim/neovim?dir=contrib"; inputs.nixpkgs.follows = "nixpkgs"; }; nixvim = { url = "github:nix-community/nixvim"; #url = "/home/traxys/Documents/nixvim"; #url = "github:traxys/nixvim?ref=dev"; inputs.nixpkgs.follows = "nixpkgs"; }; # Neovim plugins "plugin:clangd_extensions-nvim" = { url = "github:p00f/clangd_extensions.nvim"; flake = false; }; "plugin:netman-nvim" = { url = "github:miversen33/netman.nvim"; flake = false; }; "plugin:cmp-buffer" = { url = "github:hrsh7th/cmp-buffer"; flake = false; }; "plugin:cmp-calc" = { url = "github:hrsh7th/cmp-calc"; flake = false; }; "plugin:cmp-nvim-lsp" = { url = "github:hrsh7th/cmp-nvim-lsp"; flake = false; }; "plugin:cmp-path" = { url = "github:hrsh7th/cmp-path"; flake = false; }; "plugin:cmp_luasnip" = { url = "github:saadparwaiz1/cmp_luasnip"; flake = false; }; "plugin:comment-nvim" = { url = "github:numtostr/comment.nvim"; flake = false; }; "plugin:firenvim" = { url = "github:glacambre/firenvim"; flake = false; }; "plugin:git-messenger-vim" = { url = "github:rhysd/git-messenger.vim"; flake = false; }; "plugin:gitsigns-nvim" = { url = "github:lewis6991/gitsigns.nvim"; flake = false; }; "plugin:inc-rename-nvim" = { url = "github:smjonas/inc-rename.nvim"; flake = false; }; "plugin:indent-blankline-nvim" = { url = "github:lukas-reineke/indent-blankline.nvim"; flake = false; }; "plugin:lspkind-nvim" = { url = "github:onsails/lspkind.nvim"; flake = false; }; "plugin:lualine-nvim" = { url = "github:nvim-lualine/lualine.nvim"; flake = false; }; "plugin:noice-nvim" = { url = "github:folke/noice.nvim"; flake = false; }; "plugin:nui-nvim" = { url = "github:MunifTanjim/nui.nvim"; flake = false; }; "plugin:nvim-cmp" = { url = "github:hrsh7th/nvim-cmp"; flake = false; }; "plugin:nvim-lightbulb" = { url = "github:kosayoda/nvim-lightbulb"; flake = false; }; "plugin:nvim-lspconfig" = { url = "github:neovim/nvim-lspconfig"; flake = false; }; "plugin:nvim-notify" = { url = "github:rcarriga/nvim-notify"; flake = false; }; "plugin:nvim-osc52" = { url = "github:ojroques/nvim-osc52"; flake = false; }; "plugin:nvim-tree-lua" = { url = "github:nvim-tree/nvim-tree.lua"; flake = false; }; "plugin:nvim-treesitter-context" = { url = "github:nvim-treesitter/nvim-treesitter-context"; flake = false; }; "plugin:nvim-treesitter-refactor" = { url = "github:nvim-treesitter/nvim-treesitter-refactor"; flake = false; }; "plugin:plantuml-syntax" = { url = "github:aklt/plantuml-syntax"; flake = false; }; "plugin:plenary-nvim" = { url = "github:nvim-lua/plenary.nvim"; flake = false; }; "plugin:rustaceanvim" = { url = "github:mrcjkb/rustaceanvim"; flake = false; }; "plugin:telescope-nvim" = { url = "github:nvim-telescope/telescope.nvim"; flake = false; }; "plugin:telescope-ui-select-nvim" = { url = "github:nvim-telescope/telescope-ui-select.nvim"; flake = false; }; "plugin:trouble-nvim" = { url = "github:folke/trouble.nvim"; flake = false; }; "plugin:vim-matchup" = { url = "github:andymass/vim-matchup"; flake = false; }; "plugin:luasnip" = { url = "github:L3MON4D3/LuaSnip"; flake = false; }; "plugin:nvim-treesitter" = { url = "github:nvim-treesitter/nvim-treesitter"; flake = false; }; "plugin:openscad-nvim" = { url = "github:salkin-mada/openscad.nvim"; flake = false; }; "plugin:neo-tree-nvim" = { url = "github:nvim-neo-tree/neo-tree.nvim"; flake = false; }; "plugin:nvim-web-devicons" = { url = "github:nvim-tree/nvim-web-devicons"; flake = false; }; "plugin:popup-nvim" = { url = "github:nvim-lua/popup.nvim"; flake = false; }; "plugin:skim-vim" = { url = "github:lotabout/skim.vim"; flake = false; }; "plugin:tokyonight-nvim" = { url = "github:folke/tokyonight.nvim"; flake = false; }; "plugin:vim-snippets" = { url = "github:honza/vim-snippets"; flake = false; }; "plugin:markdown-preview-nvim" = { url = "github:iamcco/markdown-preview.nvim"; flake = false; }; "plugin:which-key-nvim" = { url = "github:folke/which-key.nvim"; flake = false; }; "plugin:zk-nvim" = { url = "github:mickael-menu/zk-nvim"; flake = false; }; "plugin:efmls-configs-nvim" = { url = "github:creativenull/efmls-configs-nvim"; flake = false; }; "plugin:vim-just" = { url = "github:NoahTheDuke/vim-just/"; flake = false; }; "plugin:ltex_extra-nvim" = { url = "github:barreiroleo/ltex_extra.nvim"; flake = false; }; # Plugins that are not in nixpkgs "new-plugin:vim-headerguard" = { url = "github:drmikehenry/vim-headerguard"; flake = false; }; }; outputs = inputs@{ flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } ( { self, ... }: { systems = [ "x86_64-linux" "aarch64-linux" ]; debug = true; imports = [ ./pkgs ./neovim/pkg.nix ./hostconfig ./templates inputs.treefmt-nix.flakeModule inputs.flake-root.flakeModule ]; perSystem = { inputs', lib, system, config, ... }: { _module.args = { naersk' = inputs.naersk.lib.${system}; }; packages = let names = [ "glaurung" "raclette" "roaming_proxy" "mujmap" "attic" ]; in lib.genAttrs names (name: inputs'.${name}.packages.${name}); formatter = config.treefmt.build.wrapper; treefmt.config = { inherit (config.flake-root) projectRootFile; programs = { nixfmt-rfc-style.enable = true; statix.enable = true; }; }; }; flake = let extraInfo = import ./extra_info.nix; in { hmModules = { minimal = import ./minimal/hm.nix { inherit inputs extraInfo; flake = self; }; personal-cli = import ./personal-cli/hm.nix; personal-gui = import ./personal-gui/hm.nix; gaming = import ./gaming/hm.nix; work = import ./hostconfig/thinkpad-nixos/work.nix; }; nixosModules = { minimal = import ./minimal/nixos.nix { inherit extraInfo; }; personal-cli = import ./personal-cli/nixos.nix; personal-gui = import ./personal-gui/nixos.nix; roaming = import ./roaming/nixos.nix; gaming = import ./gaming/nixos.nix; }; }; } ); }