Compare commits
4 commits
5b421a79d4
...
265fba3908
Author | SHA1 | Date | |
---|---|---|---|
265fba3908 | |||
7c0f0ac90e | |||
5d5fcac95a | |||
7bcd839378 |
11 changed files with 186 additions and 141 deletions
80
flake.nix
80
flake.nix
|
@ -3,6 +3,23 @@
|
||||||
inputs@{ flake-parts, ... }:
|
inputs@{ flake-parts, ... }:
|
||||||
let
|
let
|
||||||
nilla = import ./nilla.nix { inherit inputs; };
|
nilla = import ./nilla.nix { inherit inputs; };
|
||||||
|
transpose =
|
||||||
|
attrs:
|
||||||
|
let
|
||||||
|
inherit (inputs.nixpkgs) lib;
|
||||||
|
# maps an attrset of systems to packages to list of [ {name; system; value;} ]
|
||||||
|
pkgToListAll =
|
||||||
|
name: pkg:
|
||||||
|
map (system: {
|
||||||
|
inherit name system;
|
||||||
|
value = pkg.${system};
|
||||||
|
}) (builtins.attrNames pkg);
|
||||||
|
pkgsToListAll = pkgs: map (name: pkgToListAll name pkgs.${name}) (builtins.attrNames pkgs);
|
||||||
|
# list of all packages in format [ {name; system; value;} ]
|
||||||
|
allPkgs = lib.flatten (pkgsToListAll attrs);
|
||||||
|
systems = builtins.groupBy (pkg: pkg.system) allPkgs;
|
||||||
|
in
|
||||||
|
builtins.mapAttrs (_: pkgs: lib.listToAttrs pkgs) systems;
|
||||||
in
|
in
|
||||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||||
systems = [
|
systems = [
|
||||||
|
@ -17,55 +34,32 @@
|
||||||
./assets
|
./assets
|
||||||
./hosts
|
./hosts
|
||||||
./modules
|
./modules
|
||||||
./wrappers
|
|
||||||
./pkgs
|
|
||||||
./services
|
./services
|
||||||
];
|
];
|
||||||
|
|
||||||
perSystem =
|
flake.devShells = transpose (builtins.mapAttrs (_: shell: shell.result) nilla.shells);
|
||||||
{
|
flake.packages = transpose (builtins.mapAttrs (_: pkg: pkg.result) nilla.packages);
|
||||||
inputs',
|
|
||||||
self',
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
devShells = builtins.mapAttrs (_: shell: shell.result.${system}) nilla.shells;
|
|
||||||
|
|
||||||
packages = {
|
perSystem = {
|
||||||
# Re-export it for convenience and for caching
|
treefmt = {
|
||||||
inherit (inputs'.attic.packages) attic-client attic-server;
|
programs.deadnix.enable = true;
|
||||||
base-packages = pkgs.symlinkJoin {
|
programs.nixfmt.enable = true;
|
||||||
name = "settei-base";
|
programs.statix.enable = true;
|
||||||
paths = with self'.packages; [
|
programs.fish_indent.enable = true;
|
||||||
helix
|
programs.deno.enable = true;
|
||||||
fish
|
programs.stylua.enable = true;
|
||||||
git-commit-last
|
programs.shfmt.enable = true;
|
||||||
git-fixup
|
settings.global.excludes = [
|
||||||
];
|
# agenix
|
||||||
};
|
"*.age"
|
||||||
};
|
|
||||||
|
|
||||||
treefmt = {
|
# racket
|
||||||
programs.deadnix.enable = true;
|
"*.rkt"
|
||||||
programs.nixfmt.enable = true;
|
"**/rashrc"
|
||||||
programs.statix.enable = true;
|
];
|
||||||
programs.fish_indent.enable = true;
|
settings.on-unmatched = "fatal";
|
||||||
programs.deno.enable = true;
|
|
||||||
programs.stylua.enable = true;
|
|
||||||
programs.shfmt.enable = true;
|
|
||||||
settings.global.excludes = [
|
|
||||||
# agenix
|
|
||||||
"*.age"
|
|
||||||
|
|
||||||
# racket
|
|
||||||
"*.rkt"
|
|
||||||
"**/rashrc"
|
|
||||||
];
|
|
||||||
settings.on-unmatched = "fatal";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
|
|
13
modules/nilla/builders/custom-load.nix
Normal file
13
modules/nilla/builders/custom-load.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{ lib }:
|
||||||
|
{
|
||||||
|
config.builders.custom-load = {
|
||||||
|
settings.type = lib.types.submodule {
|
||||||
|
options.args = lib.options.create {
|
||||||
|
type = lib.types.null;
|
||||||
|
default.value = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
settings.default = { };
|
||||||
|
build = pkg: lib.attrs.generate pkg.systems (system: pkg.package { inherit system; });
|
||||||
|
};
|
||||||
|
}
|
6
modules/nilla/builders/default.nix
Normal file
6
modules/nilla/builders/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
includes = [
|
||||||
|
./nixpkgs-flake.nix
|
||||||
|
./custom-load.nix
|
||||||
|
];
|
||||||
|
}
|
21
modules/nilla/builders/nixpkgs-flake.nix
Normal file
21
modules/nilla/builders/nixpkgs-flake.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
config.builders.nixpkgs-flake = {
|
||||||
|
settings.type = lib.types.submodule {
|
||||||
|
options.args = lib.options.create {
|
||||||
|
type = lib.types.any;
|
||||||
|
default.value = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
settings.default = { };
|
||||||
|
build =
|
||||||
|
pkg:
|
||||||
|
lib.attrs.generate pkg.systems (
|
||||||
|
system:
|
||||||
|
config.inputs.nixpkgs.result.legacyPackages.${system}.callPackage pkg.package pkg.settings.args
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
3
modules/nilla/default.nix
Normal file
3
modules/nilla/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
includes = [ ./builders ];
|
||||||
|
}
|
56
nilla.nix
56
nilla.nix
|
@ -4,43 +4,17 @@
|
||||||
(import inputs.nilla).create (
|
(import inputs.nilla).create (
|
||||||
{ config, lib }:
|
{ config, lib }:
|
||||||
{
|
{
|
||||||
|
includes = [
|
||||||
|
./modules/nilla
|
||||||
|
./pkgs
|
||||||
|
./wrappers
|
||||||
|
];
|
||||||
|
|
||||||
config.inputs = builtins.mapAttrs (_: src: {
|
config.inputs = builtins.mapAttrs (_: src: {
|
||||||
inherit src;
|
inherit src;
|
||||||
loader = "raw";
|
loader = "raw";
|
||||||
}) inputs;
|
}) inputs;
|
||||||
|
|
||||||
config.builders.nixpkgs-flake = {
|
|
||||||
settings.type = lib.types.submodule {
|
|
||||||
options.args = lib.options.create {
|
|
||||||
type = lib.types.any;
|
|
||||||
default.value = { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
settings.default = { };
|
|
||||||
build =
|
|
||||||
pkg:
|
|
||||||
lib.attrs.generate pkg.systems (
|
|
||||||
system:
|
|
||||||
inputs.nixpkgs.legacyPackages.${system}.callPackage pkg.package (
|
|
||||||
{
|
|
||||||
self' = builtins.mapAttrs (_: pkg: pkg.result.${system}) config.packages;
|
|
||||||
}
|
|
||||||
// pkg.settings.args
|
|
||||||
)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
config.builders.custom-load = {
|
|
||||||
settings.type = lib.types.submodule {
|
|
||||||
options.args = lib.options.create {
|
|
||||||
type = lib.types.null;
|
|
||||||
default.value = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
settings.default = { };
|
|
||||||
build = pkg: lib.attrs.generate pkg.systems (system: pkg.package { inherit system; });
|
|
||||||
};
|
|
||||||
|
|
||||||
config.packages =
|
config.packages =
|
||||||
let
|
let
|
||||||
systems = [
|
systems = [
|
||||||
|
@ -62,8 +36,10 @@
|
||||||
builder = "custom-load";
|
builder = "custom-load";
|
||||||
package = { system }: inputs.${input}.packages.${system}.${output};
|
package = { system }: inputs.${input}.packages.${system}.${output};
|
||||||
};
|
};
|
||||||
|
getPkgs = system: builtins.mapAttrs (_: pkg: pkg.result.${system}) config.packages;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
# Re-export for convenience and for caching
|
||||||
attic-client = mkPackageFlakeOutput {
|
attic-client = mkPackageFlakeOutput {
|
||||||
input = "attic";
|
input = "attic";
|
||||||
output = "attic-client";
|
output = "attic-client";
|
||||||
|
@ -74,10 +50,16 @@
|
||||||
};
|
};
|
||||||
agenix = mkPackageFlakeOutput { input = "agenix"; };
|
agenix = mkPackageFlakeOutput { input = "agenix"; };
|
||||||
base-packages = mkPackage (
|
base-packages = mkPackage (
|
||||||
{ symlinkJoin }:
|
{ symlinkJoin, system }:
|
||||||
symlinkJoin {
|
symlinkJoin {
|
||||||
name = "settei-base";
|
name = "settei-base";
|
||||||
paths = [ ];
|
paths = with (getPkgs system); [
|
||||||
|
# TODO: wrappers
|
||||||
|
# helix
|
||||||
|
# fish
|
||||||
|
git-commit-last
|
||||||
|
git-fixup
|
||||||
|
];
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -92,13 +74,13 @@
|
||||||
shell =
|
shell =
|
||||||
{
|
{
|
||||||
mkShellNoCC,
|
mkShellNoCC,
|
||||||
|
system,
|
||||||
nh,
|
nh,
|
||||||
self',
|
|
||||||
}:
|
}:
|
||||||
mkShellNoCC {
|
mkShellNoCC {
|
||||||
packages = [
|
packages = [
|
||||||
self'.agenix
|
config.packages.agenix.result.${system}
|
||||||
self'.attic-client
|
config.packages.attic-client.result.${system}
|
||||||
nh
|
nh
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
fenix,
|
fenix,
|
||||||
crane,
|
crane,
|
||||||
src,
|
src,
|
||||||
|
@ -11,12 +13,12 @@
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
rust =
|
rust =
|
||||||
with fenix;
|
with fenix.${system};
|
||||||
combine [
|
combine [
|
||||||
stable.cargo
|
stable.cargo
|
||||||
stable.rustc
|
stable.rustc
|
||||||
];
|
];
|
||||||
crane' = crane.overrideToolchain rust;
|
crane' = (crane pkgs).overrideToolchain rust;
|
||||||
rocksdb' = rocksdb.overrideAttrs (
|
rocksdb' = rocksdb.overrideAttrs (
|
||||||
final: prev: {
|
final: prev: {
|
||||||
version = "9.1.1";
|
version = "9.1.1";
|
||||||
|
|
|
@ -1,35 +1,52 @@
|
||||||
{ inputs, ... }:
|
{ config }:
|
||||||
|
let
|
||||||
|
systems = [
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-linux"
|
||||||
|
"aarch64-darwin"
|
||||||
|
];
|
||||||
|
builder = "nixpkgs-flake";
|
||||||
|
mkPackage = package: {
|
||||||
|
inherit systems package builder;
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
{
|
{
|
||||||
perSystem =
|
config.packages.conduit-next = {
|
||||||
{
|
inherit systems builder;
|
||||||
pkgs,
|
package = import ./conduit;
|
||||||
lib,
|
settings.args = {
|
||||||
inputs',
|
src = config.inputs.conduit-src.result;
|
||||||
...
|
crane = config.inputs.crane.result.mkLib;
|
||||||
}:
|
fenix = config.inputs.fenix.result.packages;
|
||||||
{
|
|
||||||
packages.conduit-next = pkgs.callPackage ./conduit {
|
|
||||||
src = inputs.conduit-src;
|
|
||||||
crane = inputs.crane.mkLib pkgs;
|
|
||||||
fenix = inputs'.fenix.packages;
|
|
||||||
};
|
|
||||||
|
|
||||||
packages.git-commit-last = pkgs.writeShellApplication {
|
|
||||||
name = "git-commit-last";
|
|
||||||
text = ''
|
|
||||||
GITDIR="$(git rev-parse --git-dir)"
|
|
||||||
git commit -eF "$GITDIR/COMMIT_EDITMSG"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
packages.git-fixup = pkgs.writeShellApplication {
|
|
||||||
name = "git-fixup";
|
|
||||||
text = ''
|
|
||||||
git log -n 50 --pretty=format:'%h %s' --no-merges | \
|
|
||||||
${lib.getExe pkgs.fzf} | \
|
|
||||||
cut -c -7 | \
|
|
||||||
xargs -o git commit --fixup
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config.packages.git-commit-last = mkPackage (
|
||||||
|
{ writeShellApplication }:
|
||||||
|
writeShellApplication {
|
||||||
|
name = "git-commit-last";
|
||||||
|
text = ''
|
||||||
|
GITDIR="$(git rev-parse --git-dir)"
|
||||||
|
git commit -eF "$GITDIR/COMMIT_EDITMSG"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
config.packages.git-fixup = mkPackage (
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
writeShellApplication,
|
||||||
|
fzf,
|
||||||
|
}:
|
||||||
|
writeShellApplication {
|
||||||
|
name = "git-fixup";
|
||||||
|
text = ''
|
||||||
|
git log -n 50 --pretty=format:'%h %s' --no-merges | \
|
||||||
|
${lib.getExe fzf} | \
|
||||||
|
cut -c -7 | \
|
||||||
|
xargs -o git commit --fixup
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,32 @@
|
||||||
{ inputs, ... }:
|
{ lib, config }:
|
||||||
|
let
|
||||||
|
systems = [
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-linux"
|
||||||
|
"aarch64-darwin"
|
||||||
|
];
|
||||||
|
wrappedPerSystem = lib.attrs.generate systems (
|
||||||
|
system:
|
||||||
|
config.inputs.wrapper-manager-hm-compat.result.lib {
|
||||||
|
pkgs = config.inputs.nixpkgs.result.legacyPackages.${system};
|
||||||
|
modules = [
|
||||||
|
./starship
|
||||||
|
./helix
|
||||||
|
# TODO: Enable again
|
||||||
|
# ./rash
|
||||||
|
./fish
|
||||||
|
./wezterm
|
||||||
|
];
|
||||||
|
specialArgs.inputs = builtins.mapAttrs (_: input: input.result) config.inputs;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
wrappedPerSystem' = builtins.mapAttrs (_: wrapped: wrapped.config.build.packages) wrappedPerSystem;
|
||||||
|
wrapperNames = builtins.attrNames wrappedPerSystem'."x86_64-linux";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
perSystem =
|
config.packages = lib.attrs.generate wrapperNames (wrapper: {
|
||||||
{ pkgs, inputs', ... }:
|
inherit systems;
|
||||||
let
|
builder = "custom-load";
|
||||||
wrapped = inputs.wrapper-manager-hm-compat.lib {
|
package = { system }: wrappedPerSystem'.${system}.${wrapper};
|
||||||
inherit pkgs;
|
});
|
||||||
modules = [
|
|
||||||
./starship
|
|
||||||
./helix
|
|
||||||
# TODO: Enable again
|
|
||||||
# ./rash
|
|
||||||
./fish
|
|
||||||
./wezterm
|
|
||||||
];
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs inputs';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
all-packages = wrapped.config.build.packages;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
packages = all-packages;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{ pkgs, inputs', ... }:
|
{ pkgs, inputs, ... }:
|
||||||
{
|
{
|
||||||
programs.helix = {
|
programs.helix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = inputs'.helix.packages.default;
|
package = inputs.helix.packages.${pkgs.system}.default;
|
||||||
settings = {
|
settings = {
|
||||||
theme = "base16_default_dark";
|
theme = "base16_default_dark";
|
||||||
editor = {
|
editor = {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs',
|
inputs,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
rev = "8eb52c163d6ea7c3cec2cc6b1011ce00738942e1";
|
rev = "8eb52c163d6ea7c3cec2cc6b1011ce00738942e1";
|
||||||
hash = "sha256-1yU0ZUBQqYEn85j4T2pLs02MTyJnO5BbYALIa88iomY=";
|
hash = "sha256-1yU0ZUBQqYEn85j4T2pLs02MTyJnO5BbYALIa88iomY=";
|
||||||
};
|
};
|
||||||
racket-with-libs = inputs'.racket.packages.racket.newLayer {
|
racket-with-libs = inputs.racket.packages.${pkgs.system}.racket.newLayer {
|
||||||
withRacketPackages =
|
withRacketPackages =
|
||||||
ps: with ps; [
|
ps: with ps; [
|
||||||
readline-gpl
|
readline-gpl
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue