feat: add nix-follows script

This commit is contained in:
Moritz Böhme 2025-05-18 11:02:33 +02:00
parent 679f12e6a8
commit 5aae7edaf8
No known key found for this signature in database
GPG key ID: 970C6E89EB0547A9
2 changed files with 221 additions and 589 deletions

168
flake.nix
View file

@ -1,70 +1,4 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
master.url = "github:nixos/nixpkgs";
stable.url = "github:nixos/nixpkgs/nixos-25.05";
# 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";
};
lix-module.url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.0.tar.gz";
lix-module.inputs.nixpkgs.follows = "nixpkgs";
nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
nixos-mailserver.inputs.nixpkgs.follows = "nixpkgs";
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;
zola-theme.url = "github:Speyll/anemone";
zola-theme.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.
@ -74,7 +8,7 @@
# import clan-core modules
imports = [
inputs.clan-core.flakeModules.default
inputs.git-hooks-nix.flakeModule
inputs.git-hooks.flakeModule
./clanServices/flake-module.nix
];
@ -87,7 +21,26 @@
devShells = rec {
default = pkgs.mkShell {
inherit (config.pre-commit.devShell) shellHook nativeBuildInputs;
packages = [inputs'.clan-core.packages.clan-cli pkgs.alejandra];
packages = [
inputs'.clan-core.packages.clan-cli
pkgs.alejandra
(pkgs.writeShellApplication {
name = "nix-follows";
text = ''
nix flake metadata --json | jq -r '(.locks.nodes.root.inputs | keys) as $root_input_keys
| .locks.nodes | to_entries[]
| select(.key | IN($root_input_keys[]))
| select((.value | has("flake") | not) or (.value.flake == true))
| select(.value | has("inputs"))
| .key as $parent_key
| .value.inputs | keys[]
| select(IN($root_input_keys[]))
| {"key": $parent_key, "value": .}
| .key + ".inputs." + .value + ".follows = \"" + .value + "\";"'
'';
runtimeInputs = [pkgs.jq];
})
];
};
zola = let
theme = inputs.zola-theme;
@ -143,4 +96,83 @@
};
};
});
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
master.url = "github:nixos/nixpkgs";
stable.url = "github:nixos/nixpkgs/nixos-25.05";
# New flake-parts input
flake-parts.url = "github:hercules-ci/flake-parts";
clan-core.url = "git+https://git.clan.lol/clan/clan-core";
clan-core.inputs.nixpkgs.follows = "nixpkgs"; # Needed if your configuration uses nixpkgs unstable.
flake-utils.url = "github:numtide/flake-utils";
git-hooks.url = "github:cachix/git-hooks.nix";
home-manager.url = "github:nix-community/home-manager";
impermanence.url = "github:nix-community/impermanence";
jovian.url = "github:Jovian-Experiments/Jovian-NixOS";
lix-module.url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.0.tar.gz";
nix-index-database.url = "github:Mic92/nix-index-database";
nix-monitored.url = "github:ners/nix-monitored";
nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
nur.url = "github:nix-community/NUR";
treefmt-nix.url = "github:numtide/treefmt-nix";
flake-compat.url = "github:edolstra/flake-compat";
niri.url = "github:sodiboo/niri-flake";
systems.url = "github:nix-systems/default";
# 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";
# 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;
zola-theme.url = "github:Speyll/anemone";
zola-theme.flake = false;
# NOTE: create follows statements with nix-follows
clan-core.inputs.flake-parts.follows = "flake-parts";
clan-core.inputs.systems.follows = "systems";
clan-core.inputs.treefmt-nix.follows = "treefmt-nix";
filetags.inputs.flake-utils.follows = "flake-utils";
filetags.inputs.nixpkgs.follows = "nixpkgs";
flake-utils.inputs.systems.follows = "systems";
git-hooks.inputs.flake-compat.follows = "flake-compat";
git-hooks.inputs.nixpkgs.follows = "nixpkgs";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
jovian.inputs.nixpkgs.follows = "nixpkgs";
lix-module.inputs.flake-utils.follows = "flake-utils";
lix-module.inputs.nixpkgs.follows = "nixpkgs";
neovim-nightly-overlay.inputs.flake-compat.follows = "flake-compat";
neovim-nightly-overlay.inputs.flake-parts.follows = "flake-parts";
neovim-nightly-overlay.inputs.git-hooks.follows = "git-hooks";
neovim-nightly-overlay.inputs.nixpkgs.follows = "nixpkgs";
neovim-nightly-overlay.inputs.treefmt-nix.follows = "treefmt-nix";
niri.inputs.nixpkgs.follows = "nixpkgs";
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
nix-monitored.inputs.nixpkgs.follows = "nixpkgs";
nixos-mailserver.inputs.flake-compat.follows = "flake-compat";
nixos-mailserver.inputs.git-hooks.follows = "git-hooks";
nixos-mailserver.inputs.nixpkgs.follows = "nixpkgs";
nixvim.inputs.flake-parts.follows = "flake-parts";
nixvim.inputs.nixpkgs.follows = "nixpkgs";
nixvim.inputs.systems.follows = "systems";
nur.inputs.flake-parts.follows = "flake-parts";
nur.inputs.nixpkgs.follows = "nixpkgs";
nur.inputs.treefmt-nix.follows = "treefmt-nix";
timers.inputs.nixpkgs.follows = "nixpkgs";
treefmt-nix.inputs.nixpkgs.follows = "nixpkgs";
};
}