{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; master.url = "github:nixos/nixpkgs"; stable.url = "github:nixos/nixpkgs/nixos-24.11"; # New flake-parts input flake-parts.url = "github:hercules-ci/flake-parts"; flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs"; git-hooks-nix.url = "github:cachix/git-hooks.nix"; clan-core = { url = "git+https://git.clan.lol/clan/clan-core"; inputs.nixpkgs.follows = "nixpkgs"; # Needed if your configuration uses nixpkgs unstable. inputs.flake-parts.follows = "flake-parts"; }; home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.url = "github:nix-community/home-manager"; impermanence.url = "github:nix-community/impermanence"; pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; nur.url = "github:nix-community/NUR"; nix-index-database.url = "github:Mic92/nix-index-database"; nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; nix-monitored.url = "github:ners/nix-monitored"; nix-monitored.inputs.nixpkgs.follows = "nixpkgs"; jovian.url = "github:Jovian-Experiments/Jovian-NixOS"; # Programs timers.url = "git+https://gitea.moritzboeh.me/moritz/timers.git"; filetags.url = "git+https://gitea.moritzboeh.me/moritz/filetags.git"; # Neovim neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; nixvim.url = "github:nix-community/nixvim"; nixvim.inputs.flake-parts.follows = "flake-parts"; nixvim.inputs.nixpkgs.follows = "nixpkgs"; # Niri niri.url = "github:sodiboo/niri-flake"; niri.inputs.nixpkgs.follows = "nixpkgs"; # Laptop asus-touchpad-numpad-driver.url = "github:MoritzBoehme/asus-touchpad-numpad-driver/german-layout"; asus-touchpad-numpad-driver.flake = false; # Firefox user.js arkenfox-userjs.url = "github:arkenfox/user.js"; arkenfox-userjs.flake = false; }; outputs = inputs @ {flake-parts, ...}: flake-parts.lib.mkFlake {inherit inputs;} ({self, ...}: { # We define our own systems below. you can still use this to add system specific outputs to your flake. # See: https://flake.parts/getting-started systems = ["x86_64-linux"]; # import clan-core modules imports = [ inputs.clan-core.flakeModules.default inputs.git-hooks-nix.flakeModule ]; perSystem = { config, inputs', pkgs, ... }: { devShells.default = pkgs.mkShell { inherit (config.pre-commit.devShell) shellHook nativeBuildInputs; packages = [inputs'.clan-core.packages.clan-cli pkgs.alejandra]; }; pre-commit.settings.hooks = { alejandra.enable = true; check-merge-conflicts.enable = true; flake-checker.enable = true; deadnix.enable = true; nil.enable = true; }; }; # Define your clan # See: https://docs.clan.lol/reference/nix-api/buildclan/ clan = { # Clan wide settings. (Required) meta.name = "cool-clan"; # Ensure to choose a unique name. specialArgs = { inherit inputs self; }; inventory = { machines = { moritz-desktop.tags = ["peer"]; moritz-laptop.tags = ["peer"]; moritz-server.tags = []; }; services.zerotier.default = { roles.peer.tags = [ "peer" ]; roles.controller.machines = [ "moritz-server" ]; }; }; }; }); }