refactor: use genflake for better flake inputs handling
All checks were successful
Discord / discord commits (push) Has been skipped
All checks were successful
Discord / discord commits (push) Has been skipped
This commit is contained in:
parent
684b8a5c9e
commit
5f9dca81e1
12 changed files with 494 additions and 21 deletions
10
README.md
10
README.md
|
@ -49,7 +49,10 @@ sudo ln -sf /home/matt/.nix /etc/nixos
|
|||
|
||||
### Flake Inputs
|
||||
|
||||
I prefer using a more descriptive format for my inputs like so:
|
||||
To allow use of the nix language for my inputs, I use [genflake](https://github.com/jorsn/flakegen).
|
||||
Therefore, the flake I edit is located at `./flake.in.nix`.
|
||||
|
||||
I also prefer using a more descriptive format for my inputs like so:
|
||||
|
||||
```nix
|
||||
nixpkgs = {
|
||||
|
@ -67,11 +70,6 @@ nixpkgs = {
|
|||
|
||||
to make it more clear what is what in the flake URI
|
||||
|
||||
I also have a long list of inputs with `flake = false;` because
|
||||
it makes it easier to update non-flake custom packages or overlays
|
||||
to have the latest git. I make sure to end the names of these inputs
|
||||
with `src` to make it clear what they are.
|
||||
|
||||
### Secrets
|
||||
|
||||
All my secrets are in a private git repo that makes use of
|
||||
|
|
|
@ -52,6 +52,7 @@ in
|
|||
*/
|
||||
''
|
||||
require('lspconfig').nixd.setup(require('coq').lsp_ensure_capabilities({
|
||||
filetypes = { 'nix', 'in.nix' },
|
||||
settings = {
|
||||
nixd = {
|
||||
formatting = {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
bat-theme-src,
|
||||
gtk-theme-src,
|
||||
xresources-theme-src,
|
||||
xresources-src,
|
||||
...
|
||||
} @ inputs: (final: prev: {
|
||||
dracula-theme = prev.dracula-theme.overrideAttrs (oldAttrs: let
|
||||
|
@ -21,7 +21,7 @@
|
|||
cp -a ${bat-theme-src}/Dracula.tmTheme $out/bat
|
||||
cp -a ${git-colors}/git-colors $out/git-colors
|
||||
cp -a ${plymouth}/share/plymouth/themes/dracula $out/share/plymouth/themes/
|
||||
cp -a ${xresources-theme-src}/Xresources $out/xres
|
||||
cp -a ${xresources-src}/Xresources $out/xres
|
||||
|
||||
# -------------------------------------------
|
||||
mkdir -p $out/share/themes/Dracula
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
stdenv,
|
||||
plymouth-theme-src,
|
||||
dracula-plymouth-src,
|
||||
...
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
name = "dracula-plymouth";
|
||||
version = plymouth-theme-src.shortRev;
|
||||
version = dracula-plymouth-src.shortRev;
|
||||
|
||||
src = plymouth-theme-src;
|
||||
src = dracula-plymouth-src;
|
||||
|
||||
installPhase = ''
|
||||
chmod 777 ./dracula
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
{
|
||||
home-manager,
|
||||
nix-on-droid,
|
||||
nixpkgs,
|
||||
...
|
||||
} @ inputs: rec {
|
||||
} @ inputs:
|
||||
nix-on-droid.lib.nixOnDroidConfiguration rec {
|
||||
extraSpecialArgs = inputs;
|
||||
home-manager-path = home-manager.outPath;
|
||||
pkgs = import nixpkgs {
|
||||
|
|
153
flake.in.nix
Normal file
153
flake.in.nix
Normal file
|
@ -0,0 +1,153 @@
|
|||
{
|
||||
inputs = let
|
||||
inherit (import ./input.nix) mkDep mkInput otherInputs;
|
||||
|
||||
mainInputs = {
|
||||
nixpkgs = mkInput {
|
||||
owner = "NixOS";
|
||||
repo = "nixpkgs";
|
||||
ref = "nixos-unstable";
|
||||
};
|
||||
|
||||
home-manager = mkDep {
|
||||
owner = "nix-community";
|
||||
repo = "home-manager";
|
||||
};
|
||||
|
||||
nix-on-droid = mkDep {
|
||||
owner = "nix-community";
|
||||
repo = "nix-on-droid";
|
||||
|
||||
inputs.home-manager.follows = "home-manager";
|
||||
};
|
||||
|
||||
sops-nix = mkDep {
|
||||
owner = "Mic92";
|
||||
repo = "sops-nix";
|
||||
};
|
||||
|
||||
secrets = mkDep {
|
||||
type = "git";
|
||||
url = "ssh://git@git.nelim.org/matt1432/nixos-secrets";
|
||||
|
||||
inputs.sops-nix.follows = "sops-nix";
|
||||
};
|
||||
};
|
||||
in
|
||||
mainInputs // otherInputs;
|
||||
|
||||
outputs = inputs @ {
|
||||
self,
|
||||
nixpkgs,
|
||||
secrets,
|
||||
...
|
||||
}: let
|
||||
supportedSystems = ["x86_64-linux" "aarch64-linux"];
|
||||
|
||||
perSystem = attrs:
|
||||
nixpkgs.lib.genAttrs supportedSystems (system: let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in
|
||||
attrs system pkgs);
|
||||
|
||||
# Default system
|
||||
mkNixOS = mods:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = inputs;
|
||||
modules =
|
||||
[
|
||||
{home-manager.extraSpecialArgs = inputs;}
|
||||
./common
|
||||
]
|
||||
++ mods;
|
||||
};
|
||||
in {
|
||||
nixosConfigurations = {
|
||||
wim = mkNixOS [
|
||||
./devices/wim
|
||||
secrets.nixosModules.default
|
||||
];
|
||||
binto = mkNixOS [./devices/binto];
|
||||
|
||||
nos = mkNixOS [
|
||||
./devices/nos
|
||||
secrets.nixosModules.nos
|
||||
];
|
||||
|
||||
servivi = mkNixOS [
|
||||
./devices/servivi
|
||||
secrets.nixosModules.servivi
|
||||
];
|
||||
|
||||
# Cluster
|
||||
thingone = mkNixOS [
|
||||
(import ./devices/cluster "thingone")
|
||||
secrets.nixosModules.thingy
|
||||
];
|
||||
thingtwo = mkNixOS [
|
||||
(import ./devices/cluster "thingtwo")
|
||||
secrets.nixosModules.thingy
|
||||
];
|
||||
|
||||
live-image = mkNixOS [
|
||||
("${nixpkgs}/nixos/modules/installer/"
|
||||
+ "cd-dvd/installation-cd-minimal.nix")
|
||||
{home-manager.users.nixos.home.stateVersion = "24.05";}
|
||||
{
|
||||
vars = {
|
||||
mainUser = "nixos";
|
||||
hostName = "nixos";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
nixOnDroidConfigurations.default = import ./devices/android inputs;
|
||||
|
||||
formatter = perSystem (_: pkgs: pkgs.alejandra);
|
||||
|
||||
# CI: https://github.com/Mic92/dotfiles/blob/c2f538934d67417941f83d8bb65b8263c43d32ca/flake.nix#L168
|
||||
checks = perSystem (system: pkgs: let
|
||||
inherit (pkgs.lib) filterAttrs mapAttrs' nameValuePair;
|
||||
|
||||
nixosMachines = mapAttrs' (
|
||||
name: config: nameValuePair "nixos-${name}" config.config.system.build.toplevel
|
||||
) ((filterAttrs (_: config: config.pkgs.system == system)) self.nixosConfigurations);
|
||||
devShells = mapAttrs' (n: nameValuePair "devShell-${n}") self.devShells;
|
||||
in
|
||||
nixosMachines // devShells);
|
||||
|
||||
devShells = perSystem (_: pkgs: {
|
||||
default = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
alejandra
|
||||
git
|
||||
|
||||
(writeShellScriptBin "mkIso" (lib.concatStrings [
|
||||
"nix build $(realpath /etc/nixos)#nixosConfigurations."
|
||||
"live-image.config.system.build.isoImage"
|
||||
]))
|
||||
];
|
||||
};
|
||||
|
||||
ags = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
nodejs_latest
|
||||
];
|
||||
};
|
||||
|
||||
subtitles-dev = pkgs.mkShell {
|
||||
packages = with pkgs;
|
||||
[
|
||||
nodejs_latest
|
||||
ffmpeg-full
|
||||
typescript
|
||||
]
|
||||
++ (with nodePackages; [
|
||||
ts-node
|
||||
]);
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
BIN
flake.lock
BIN
flake.lock
Binary file not shown.
BIN
flake.nix
BIN
flake.nix
Binary file not shown.
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
persist-properties-src,
|
||||
mpv-persist-properties-src,
|
||||
buildLua,
|
||||
...
|
||||
}:
|
||||
buildLua {
|
||||
pname = "persist-properties";
|
||||
version = persist-properties-src.shortRev;
|
||||
version = mpv-persist-properties-src.shortRev;
|
||||
|
||||
src = persist-properties-src;
|
||||
src = mpv-persist-properties-src;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
pointer-event-src,
|
||||
mpv-pointer-event-src,
|
||||
buildLua,
|
||||
...
|
||||
}:
|
||||
buildLua {
|
||||
pname = "pointer-event";
|
||||
version = pointer-event-src.shortRev;
|
||||
version = mpv-pointer-event-src.shortRev;
|
||||
|
||||
src = pointer-event-src;
|
||||
src = mpv-pointer-event-src;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
touch-gestures-src,
|
||||
mpv-touch-gestures-src,
|
||||
buildLua,
|
||||
...
|
||||
}:
|
||||
buildLua {
|
||||
pname = "touch-gestures";
|
||||
version = touch-gestures-src.shortRev;
|
||||
version = mpv-touch-gestures-src.shortRev;
|
||||
|
||||
src = touch-gestures-src;
|
||||
src = mpv-touch-gestures-src;
|
||||
}
|
||||
|
|
319
input.nix
Normal file
319
input.nix
Normal file
|
@ -0,0 +1,319 @@
|
|||
let
|
||||
inherit (builtins) listToAttrs map removeAttrs;
|
||||
|
||||
# Misc functions
|
||||
mkInput = {type ? "github", ...} @ info: info // {inherit type;};
|
||||
mkDep = info: (mkInput info) // {inputs.nixpkgs.follows = "nixpkgs";};
|
||||
mkSrc = info: (mkInput info) // {flake = false;};
|
||||
|
||||
# Inputs
|
||||
nixTools = {
|
||||
nurl = mkInput {
|
||||
owner = "nix-community";
|
||||
repo = "nurl";
|
||||
};
|
||||
|
||||
nix-index-db = mkDep {
|
||||
owner = "Mic92";
|
||||
repo = "nix-index-database";
|
||||
};
|
||||
|
||||
nh = mkInput {
|
||||
owner = "viperML";
|
||||
repo = "nh";
|
||||
};
|
||||
|
||||
nix-melt = mkInput {
|
||||
owner = "nix-community";
|
||||
repo = "nix-melt";
|
||||
};
|
||||
};
|
||||
|
||||
overlays = {
|
||||
nixpkgs-wayland = mkInput {
|
||||
owner = "nix-community";
|
||||
repo = "nixpkgs-wayland";
|
||||
};
|
||||
|
||||
nur = mkInput {
|
||||
owner = "nix-community";
|
||||
repo = "NUR";
|
||||
};
|
||||
|
||||
nix-gaming = mkInput {
|
||||
owner = "fufexan";
|
||||
repo = "nix-gaming";
|
||||
};
|
||||
};
|
||||
|
||||
nvimInputs = {
|
||||
neovim-nightly = mkInput {
|
||||
owner = "nix-community";
|
||||
repo = "neovim-nightly-overlay";
|
||||
|
||||
# FIXME: issue with grammars on latest unstable
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
stylelint-lsp = mkDep {
|
||||
owner = "matt1432";
|
||||
repo = "stylelint-lsp";
|
||||
};
|
||||
|
||||
nixd = mkInput {
|
||||
owner = "nix-community";
|
||||
repo = "nixd";
|
||||
};
|
||||
|
||||
# FIXME: get it from nixpkgs when it gets merged
|
||||
basedpyright.url = "github:kiike/nixpkgs/pkgs/basedpyright";
|
||||
};
|
||||
|
||||
clusterInputs = {
|
||||
pcsd = mkDep {
|
||||
owner = "matt1432";
|
||||
repo = "nixos-pcsd";
|
||||
};
|
||||
|
||||
headscale = mkDep {
|
||||
owner = "juanfont";
|
||||
repo = "headscale";
|
||||
|
||||
# FIXME: doesn't work on latest
|
||||
rev = "fef8261339899fe526777a7aa42df57ca02021c5";
|
||||
};
|
||||
|
||||
caddy-plugins = mkDep {
|
||||
owner = "matt1432";
|
||||
repo = "nixos-caddy-cloudflare";
|
||||
};
|
||||
};
|
||||
|
||||
serviviInputs = {
|
||||
nms = mkDep {
|
||||
owner = "matt1432";
|
||||
repo = "nixos-minecraft-servers";
|
||||
};
|
||||
|
||||
nix-eval-jobs = mkDep {
|
||||
owner = "nix-community";
|
||||
repo = "nix-eval-jobs";
|
||||
ref = "release-2.21";
|
||||
};
|
||||
|
||||
nix-fast-build = mkDep {
|
||||
owner = "Mic92";
|
||||
repo = "nix-fast-build";
|
||||
};
|
||||
};
|
||||
|
||||
nosInputs = {
|
||||
arion = mkDep {
|
||||
owner = "hercules-ci";
|
||||
repo = "arion";
|
||||
};
|
||||
|
||||
jellyfin-flake = mkDep {
|
||||
owner = "matt1432";
|
||||
repo = "nixos-jellyfin";
|
||||
};
|
||||
|
||||
bazarr-bulk = mkDep {
|
||||
owner = "matt1432";
|
||||
repo = "bazarr-bulk";
|
||||
};
|
||||
|
||||
subsync = mkDep {
|
||||
owner = "matt1432";
|
||||
repo = "subsync";
|
||||
|
||||
# Keep version that uses Sphinxbase
|
||||
rev = "ee9e1592ae4ec7c694d8857aa72be079d81ea209";
|
||||
};
|
||||
};
|
||||
|
||||
desktopInputs = {
|
||||
hyprlandInputs = {
|
||||
hyprland = mkDep {
|
||||
type = "git";
|
||||
url = "https://github.com/hyprwm/Hyprland";
|
||||
submodules = true;
|
||||
};
|
||||
|
||||
hypr-official-plugins = mkInput {
|
||||
owner = "hyprwm";
|
||||
repo = "hyprland-plugins";
|
||||
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
|
||||
Hyprspace = mkInput {
|
||||
owner = "KZDKM";
|
||||
repo = "Hyprspace";
|
||||
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
|
||||
hypridle = mkDep {
|
||||
owner = "hyprwm";
|
||||
repo = "hypridle";
|
||||
};
|
||||
|
||||
grim-hyprland = mkDep {
|
||||
owner = "eriedaberrie";
|
||||
repo = "grim-hyprland";
|
||||
};
|
||||
|
||||
## Wayland
|
||||
wpaperd = mkDep {
|
||||
owner = "danyspin97";
|
||||
repo = "wpaperd";
|
||||
};
|
||||
};
|
||||
|
||||
agsInputs = {
|
||||
ags = mkDep {
|
||||
owner = "Aylur";
|
||||
repo = "ags";
|
||||
};
|
||||
|
||||
astal = mkDep {
|
||||
owner = "Aylur";
|
||||
repo = "Astal";
|
||||
};
|
||||
|
||||
gtk-session-lock = mkDep {
|
||||
owner = "Cu3PO42";
|
||||
repo = "gtk-session-lock";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
srcs = [
|
||||
# Nvim plugins
|
||||
{
|
||||
name = "vimplugin-easytables-src";
|
||||
owner = "Myzel394";
|
||||
repo = "easytables.nvim";
|
||||
}
|
||||
{
|
||||
name = "vimplugin-ts-error-translator-src";
|
||||
owner = "dmmulroy";
|
||||
repo = "ts-error-translator.nvim";
|
||||
}
|
||||
|
||||
# Overlays & packages
|
||||
{
|
||||
owner = "rushsteve1";
|
||||
repo = "trash-d";
|
||||
}
|
||||
{
|
||||
type = "gitlab";
|
||||
owner = "mishakmak";
|
||||
repo = "pam-fprint-grosshack";
|
||||
}
|
||||
{
|
||||
type = "gitlab";
|
||||
owner = "phoneybadger";
|
||||
repo = "pokemon-colorscripts";
|
||||
}
|
||||
{
|
||||
owner = "Malpiszonekx4";
|
||||
repo = "curseforge-server-downloader";
|
||||
}
|
||||
{
|
||||
name = "gpu-screen-recorder-src";
|
||||
type = "git";
|
||||
url = "https://repo.dec05eba.com/gpu-screen-recorder";
|
||||
}
|
||||
{
|
||||
owner = "libratbag";
|
||||
repo = "libratbag";
|
||||
}
|
||||
{
|
||||
owner = "libratbag";
|
||||
repo = "piper";
|
||||
}
|
||||
|
||||
# MPV scripts
|
||||
{
|
||||
name = "modernx-src";
|
||||
owner = "cyl0";
|
||||
repo = "ModernX";
|
||||
}
|
||||
{
|
||||
owner = "d87";
|
||||
repo = "mpv-persist-properties";
|
||||
}
|
||||
{
|
||||
owner = "christoph-heinrich";
|
||||
repo = "mpv-pointer-event";
|
||||
}
|
||||
{
|
||||
owner = "christoph-heinrich";
|
||||
repo = "mpv-touch-gestures";
|
||||
}
|
||||
{
|
||||
name = "eisa-scripts-src";
|
||||
owner = "Eisa01";
|
||||
repo = "mpv-scripts";
|
||||
}
|
||||
|
||||
## Theme sources
|
||||
{
|
||||
name = "jellyfin-ultrachromic-src";
|
||||
owner = "CTalvio";
|
||||
repo = "Ultrachromic";
|
||||
}
|
||||
{
|
||||
name = "bat-theme-src";
|
||||
owner = "matt1432";
|
||||
repo = "bat";
|
||||
}
|
||||
{
|
||||
owner = "Godiesc";
|
||||
repo = "firefox-gx";
|
||||
ref = "v.9.1";
|
||||
}
|
||||
{
|
||||
name = "git-theme-src";
|
||||
owner = "dracula";
|
||||
repo = "git";
|
||||
}
|
||||
{
|
||||
name = "gtk-theme-src";
|
||||
owner = "dracula";
|
||||
repo = "gtk";
|
||||
}
|
||||
{
|
||||
name = "nvim-theme-src";
|
||||
owner = "Mofiqul";
|
||||
repo = "dracula.nvim";
|
||||
}
|
||||
{
|
||||
owner = "matt1432";
|
||||
repo = "dracula-plymouth";
|
||||
}
|
||||
{
|
||||
owner = "dracula";
|
||||
repo = "xresources";
|
||||
}
|
||||
];
|
||||
in {
|
||||
inherit mkDep mkInput mkSrc;
|
||||
|
||||
otherInputs =
|
||||
nixTools
|
||||
// overlays
|
||||
// nvimInputs
|
||||
// clusterInputs
|
||||
// serviviInputs
|
||||
// nosInputs
|
||||
// desktopInputs.hyprlandInputs
|
||||
// desktopInputs.agsInputs
|
||||
// (listToAttrs (map (x: {
|
||||
name = x.name or "${x.repo}-src";
|
||||
value = mkSrc (removeAttrs x ["name"]);
|
||||
})
|
||||
srcs));
|
||||
}
|
Loading…
Reference in a new issue