feat: use flake-parts to clean up the flake.nix
All checks were successful
/ check (push) Successful in 20s
/ build (audiomenu) (push) Successful in 2s
/ build (docs) (push) Successful in 2s
/ build (jpassmenu) (push) Successful in 2s
/ build (nixosConfigurations.vm.config.system.build.toplevel) (push) Successful in 2s
/ build (nvim) (push) Successful in 1s
All checks were successful
/ check (push) Successful in 20s
/ build (audiomenu) (push) Successful in 2s
/ build (docs) (push) Successful in 2s
/ build (jpassmenu) (push) Successful in 2s
/ build (nixosConfigurations.vm.config.system.build.toplevel) (push) Successful in 2s
/ build (nvim) (push) Successful in 1s
This is much more manageable!
This commit is contained in:
parent
584945f1e8
commit
e03cd65e87
11 changed files with 250 additions and 198 deletions
26
flake-modules/checks.nix
Normal file
26
flake-modules/checks.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
perSystem =
|
||||
{ pkgs, self', ... }:
|
||||
{
|
||||
checks =
|
||||
let
|
||||
src = builtins.path {
|
||||
path = ../.;
|
||||
name = "configuration.nix";
|
||||
};
|
||||
runCmdInSrc =
|
||||
name: cmd:
|
||||
pkgs.runCommandNoCC name { } ''
|
||||
cd ${src}
|
||||
${cmd}
|
||||
mkdir $out
|
||||
'';
|
||||
in
|
||||
{
|
||||
fmt = runCmdInSrc "fmt-src" "${lib.getExe self'.formatter} --check .";
|
||||
lint = runCmdInSrc "lint-src" "${lib.getExe pkgs.statix} check .";
|
||||
typos = runCmdInSrc "typos-src" "${lib.getExe pkgs.typos} .";
|
||||
};
|
||||
};
|
||||
}
|
25
flake-modules/default.nix
Normal file
25
flake-modules/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ inputs, ... }:
|
||||
let
|
||||
overlays = builtins.attrValues inputs.self.overlays;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./checks.nix
|
||||
./devshells.nix
|
||||
./docs.nix
|
||||
./example-vm.nix
|
||||
./nixos-modules.nix
|
||||
./nvim.nix
|
||||
./overlays.nix
|
||||
./scripts.nix
|
||||
];
|
||||
|
||||
perSystem =
|
||||
{ system, pkgs, ... }:
|
||||
{
|
||||
_module.args.pkgs = import inputs.nixpkgs { inherit system overlays; };
|
||||
|
||||
# Nix files formatter (run `nix fmt`)
|
||||
formatter = pkgs.nixfmt-rfc-style;
|
||||
};
|
||||
}
|
13
flake-modules/devshells.nix
Normal file
13
flake-modules/devshells.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
_: {
|
||||
perSystem =
|
||||
{ pkgs, self', ... }:
|
||||
{
|
||||
devShells.default = pkgs.mkShellNoCC {
|
||||
buildInputs = [
|
||||
pkgs.just
|
||||
self'.packages.nvim
|
||||
];
|
||||
QEMU_OPTS_WL = "--enable-kvm -smp 4 -device virtio-gpu-rutabaga,gfxstream-vulkan=on,cross-domain=on,hostmem=2G,wsi=headless";
|
||||
};
|
||||
};
|
||||
}
|
16
flake-modules/docs.nix
Normal file
16
flake-modules/docs.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ lib, ... }:
|
||||
{
|
||||
perSystem =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
packages = {
|
||||
# Documentation
|
||||
inherit (import ../docs { inherit pkgs lib; })
|
||||
docs
|
||||
nixos-markdown
|
||||
nvim-markdown
|
||||
home-markdown
|
||||
;
|
||||
};
|
||||
};
|
||||
}
|
46
flake-modules/example-vm.nix
Normal file
46
flake-modules/example-vm.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{ inputs, lib, ... }:
|
||||
{
|
||||
# Example vm configuration
|
||||
flake.nixosConfigurations.vm =
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
overlays = builtins.attrValues inputs.self.overlays;
|
||||
config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam-original" ];
|
||||
pkgs = import inputs.nixpkgs { inherit system overlays config; };
|
||||
in
|
||||
lib.nixosSystem {
|
||||
inherit system pkgs;
|
||||
modules = [
|
||||
inputs.self.nixosModules.vm # import vm module
|
||||
{
|
||||
time.timeZone = "Europe/Berlin";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
users.users.jdoe = {
|
||||
password = "example";
|
||||
isNormalUser = true;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"video"
|
||||
"networkmanager"
|
||||
];
|
||||
};
|
||||
home-manager.users.jdoe = {
|
||||
home = {
|
||||
username = "jdoe";
|
||||
homeDirectory = "/home/jdoe";
|
||||
};
|
||||
jhome = {
|
||||
enable = true;
|
||||
gui.enable = true;
|
||||
dev.rust.enable = true;
|
||||
};
|
||||
};
|
||||
nix.registry.nixpkgs.flake = inputs.nixpkgs;
|
||||
jconfig = {
|
||||
enable = true;
|
||||
gui.enable = true;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
43
flake-modules/nixos-modules.nix
Normal file
43
flake-modules/nixos-modules.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{ inputs, lib, ... }:
|
||||
{
|
||||
flake.nixosModules =
|
||||
let
|
||||
nvim-config.imports = [
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
../nvim
|
||||
];
|
||||
homeManagerModuleSandalone = import ../home {
|
||||
inherit nvim-config;
|
||||
inherit (inputs) stylix;
|
||||
};
|
||||
homeManagerModuleNixOS = import ../home { inherit nvim-config; };
|
||||
nixosModule = {
|
||||
imports = [
|
||||
(import ../system { inherit (inputs) stylix; })
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
] ++ lib.optional (inputs.lix-module != null) inputs.lix-module.nixosModules.default;
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
sharedModules = [ homeManagerModuleNixOS ];
|
||||
};
|
||||
# Pin nixpkgs
|
||||
nix.registry.nixpkgs.flake = inputs.nixpkgs;
|
||||
};
|
||||
|
||||
machines = [ "vm" ];
|
||||
mkMachine = hostname: {
|
||||
imports = [
|
||||
nixosModule
|
||||
(import (../machines + "/${hostname}"))
|
||||
];
|
||||
home-manager.sharedModules = [ { jhome.hostName = hostname; } ];
|
||||
};
|
||||
machineModules = lib.genAttrs machines mkMachine;
|
||||
in
|
||||
{
|
||||
default = nixosModule;
|
||||
inherit nixosModule homeManagerModuleNixOS homeManagerModuleSandalone;
|
||||
}
|
||||
// machineModules;
|
||||
}
|
24
flake-modules/nvim.nix
Normal file
24
flake-modules/nvim.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ inputs, ... }:
|
||||
let
|
||||
standalone = ../nvim/standalone.nix;
|
||||
in
|
||||
{
|
||||
flake.overlays.nixvim = inputs.nixvim.overlays.default;
|
||||
|
||||
perSystem =
|
||||
{ pkgs, system, ... }:
|
||||
{
|
||||
# Check standalone nvim build
|
||||
checks.nvim = inputs.nixvim.lib.${system}.check.mkTestDerivationFromNixvimModule {
|
||||
inherit pkgs;
|
||||
module = ../nvim/standalone.nix;
|
||||
};
|
||||
|
||||
# Nvim standalone module
|
||||
packages.nvim = inputs.nixvim.legacyPackages.${system}.makeNixvimWithModule {
|
||||
inherit pkgs;
|
||||
module = standalone;
|
||||
};
|
||||
|
||||
};
|
||||
}
|
26
flake-modules/overlays.nix
Normal file
26
flake-modules/overlays.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{ inputs, ... }:
|
||||
{
|
||||
# Add unstable packages to overlay
|
||||
flake.overlays.unstable =
|
||||
final: prev:
|
||||
let
|
||||
unstablePkgs = inputs.unstable.legacyPackages.${prev.stdenv.hostPlatform.system};
|
||||
in
|
||||
{
|
||||
# Get unstable packages
|
||||
unstable = unstablePkgs;
|
||||
|
||||
# Update vim plugins with the versions from unstable
|
||||
vimPlugins = prev.vimPlugins // unstablePkgs.vimPlugins;
|
||||
|
||||
# Get specific packages from unstable
|
||||
inherit (unstablePkgs)
|
||||
gitoxide
|
||||
jujutsu
|
||||
neovim-unwrapped
|
||||
ruff # nixpkgs stable version is improperly configured by nixvim
|
||||
# wezterm
|
||||
;
|
||||
};
|
||||
|
||||
}
|
14
flake-modules/scripts.nix
Normal file
14
flake-modules/scripts.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
let
|
||||
scripts = import ../scripts;
|
||||
in
|
||||
{
|
||||
# Add scripts to overlay
|
||||
flake.overlays.scripts = final: prev: scripts final;
|
||||
|
||||
# Add scripts to packages
|
||||
perSystem =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
packages = scripts pkgs;
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue