parent
a6f4760ef5
commit
13d625fa4f
32
flake.lock
32
flake.lock
|
@ -1,24 +1,46 @@
|
|||
{
|
||||
"nodes": {
|
||||
"jolheiser": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1730336659,
|
||||
"narHash": "sha256-DYQUprBce8sXdBj7Ub1h/52GnGvxiXelvucVTcTXE8I=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "69856a465c69e5b456ef652f0f5f17a12b9d8c02",
|
||||
"revCount": 3,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/nixpkgs.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/nixpkgs.git"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1715653339,
|
||||
"narHash": "sha256-7lR9tpVXviSccl07GXI0+ve/natd24HAkuy1sQp0OlI=",
|
||||
"lastModified": 1729880355,
|
||||
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "abd6d48f8c77bea7dc51beb2adfa6ed3950d2585",
|
||||
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
"jolheiser": "jolheiser",
|
||||
"nixpkgs": [
|
||||
"jolheiser",
|
||||
"nixpkgs"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
191
flake.nix
191
flake.nix
|
@ -1,106 +1,121 @@
|
|||
{
|
||||
description = "jolheiser helix derivation";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
jolheiser.url = "git+https://git.jolheiser.com/nixpkgs.git";
|
||||
nixpkgs.follows = "jolheiser/nixpkgs";
|
||||
};
|
||||
outputs =
|
||||
{
|
||||
nixpkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
tomlFormat = pkgs.formats.toml { };
|
||||
config = import ./config.nix { pkgs = pkgs; };
|
||||
buildGrammar =
|
||||
grammar:
|
||||
let
|
||||
source = pkgs.fetchgit {
|
||||
inherit (grammar) url rev sha256;
|
||||
};
|
||||
linkQueries = pkgs.lib.optionalString (builtins.hasAttr "queries" grammar) "cp -r ${source}/${grammar.queries} $out/queries";
|
||||
in
|
||||
pkgs.stdenv.mkDerivation {
|
||||
pname = "helix-tree-sitter-grammar-${grammar.name}";
|
||||
version = grammar.rev;
|
||||
buildInputs = [
|
||||
pkgs.helix
|
||||
pkgs.git
|
||||
];
|
||||
src = source;
|
||||
dontInstall = true;
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
}: let
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
tomlFormat = pkgs.formats.toml {};
|
||||
config = import ./config.nix {pkgs = pkgs;};
|
||||
buildGrammar = grammar: let
|
||||
source = pkgs.fetchgit {
|
||||
inherit (grammar) url rev sha256;
|
||||
};
|
||||
linkQueries = pkgs.lib.optionalString (builtins.hasAttr "queries" grammar) "cp -r ${source}/${grammar.queries} $out/queries";
|
||||
in
|
||||
pkgs.stdenv.mkDerivation {
|
||||
pname = "helix-tree-sitter-grammar-${grammar.name}";
|
||||
version = grammar.rev;
|
||||
buildInputs = [pkgs.helix pkgs.git];
|
||||
src = source;
|
||||
dontInstall = true;
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
mkdir .helix
|
||||
cat << EOF > .helix/languages.toml
|
||||
use-grammars = { only = ["${grammar.name}"] }
|
||||
[[grammar]]
|
||||
name = "${grammar.name}"
|
||||
source = { git = "${grammar.url}", rev = "${grammar.rev}" }
|
||||
EOF
|
||||
|
||||
mkdir .helix
|
||||
cat << EOF > .helix/languages.toml
|
||||
use-grammars = { only = ["${grammar.name}"] }
|
||||
[[grammar]]
|
||||
name = "${grammar.name}"
|
||||
source = { git = "${grammar.url}", rev = "${grammar.rev}" }
|
||||
EOF
|
||||
mkdir -p runtime/grammars/sources
|
||||
cp -r ${source} runtime/grammars/sources/${grammar.name}
|
||||
export CARGO_MANIFEST_DIR=$(pwd)/.helix
|
||||
|
||||
mkdir -p runtime/grammars/sources
|
||||
cp -r ${source} runtime/grammars/sources/${grammar.name}
|
||||
export CARGO_MANIFEST_DIR=$(pwd)/.helix
|
||||
#hx -g fetch
|
||||
hx -g build
|
||||
|
||||
#hx -g fetch
|
||||
hx -g build
|
||||
mkdir $out
|
||||
cp runtime/grammars/${grammar.name}.so $out/${grammar.name}.so
|
||||
${linkQueries}
|
||||
|
||||
mkdir $out
|
||||
cp runtime/grammars/${grammar.name}.so $out/${grammar.name}.so
|
||||
${linkQueries}
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
};
|
||||
builtGrammars =
|
||||
builtins.map (grammar: {
|
||||
runHook postBuild
|
||||
'';
|
||||
};
|
||||
builtGrammars = builtins.map (grammar: {
|
||||
inherit (grammar) name;
|
||||
artifact = buildGrammar grammar;
|
||||
})
|
||||
config.grammars;
|
||||
ignoreFile = pkgs.writeText "ignore" (builtins.concatStringsSep "\n" config.ignore);
|
||||
configFile = pkgs.writeText "config.toml" (builtins.readFile (tomlFormat.generate "helix-config" config.settings));
|
||||
languageFile = pkgs.writeText "languages.toml" (builtins.readFile (tomlFormat.generate "helix-languages" config.languages));
|
||||
themeFiles =
|
||||
pkgs.lib.mapAttrsToList (
|
||||
name: value: {
|
||||
inherit name;
|
||||
file = pkgs.writeText "${name}.toml" (builtins.readFile (tomlFormat.generate "helix-theme-${name}" value));
|
||||
}
|
||||
)
|
||||
config.themes;
|
||||
themeLinks = builtins.map (theme: "ln -s ${theme.file} $out/home/helix/themes/${theme.name}.toml") themeFiles;
|
||||
grammarLinks = builtins.map (grammar: "ln -s ${grammar.artifact}/${grammar.name}.so $out/lib/runtime/grammars/${grammar.name}.so") builtGrammars;
|
||||
queryLinks = builtins.map (grammar: "ln -s ${grammar.artifact}/queries $out/lib/runtime/queries/${grammar.name}") builtGrammars;
|
||||
in {
|
||||
packages.x86_64-linux.default =
|
||||
pkgs.runCommand "hx" {
|
||||
buildInputs = [pkgs.makeWrapper];
|
||||
} ''
|
||||
mkdir $out
|
||||
ln -s ${pkgs.helix}/* $out
|
||||
rm $out/bin
|
||||
}) config.grammars;
|
||||
ignoreFile = pkgs.writeText "ignore" (builtins.concatStringsSep "\n" config.ignore);
|
||||
configFile = pkgs.writeText "config.toml" (
|
||||
builtins.readFile (tomlFormat.generate "helix-config" config.settings)
|
||||
);
|
||||
languageFile = pkgs.writeText "languages.toml" (
|
||||
builtins.readFile (tomlFormat.generate "helix-languages" config.languages)
|
||||
);
|
||||
themeFiles = pkgs.lib.mapAttrsToList (name: value: {
|
||||
inherit name;
|
||||
file = pkgs.writeText "${name}.toml" (
|
||||
builtins.readFile (tomlFormat.generate "helix-theme-${name}" value)
|
||||
);
|
||||
}) config.themes;
|
||||
themeLinks = builtins.map (
|
||||
theme: "ln -s ${theme.file} $out/home/helix/themes/${theme.name}.toml"
|
||||
) themeFiles;
|
||||
grammarLinks = builtins.map (
|
||||
grammar: "ln -s ${grammar.artifact}/${grammar.name}.so $out/lib/runtime/grammars/${grammar.name}.so"
|
||||
) builtGrammars;
|
||||
queryLinks = builtins.map (
|
||||
grammar: "ln -s ${grammar.artifact}/queries $out/lib/runtime/queries/${grammar.name}"
|
||||
) builtGrammars;
|
||||
in
|
||||
{
|
||||
packages.x86_64-linux.default =
|
||||
pkgs.runCommand "hx"
|
||||
{
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
}
|
||||
''
|
||||
mkdir $out
|
||||
ln -s ${pkgs.helix}/* $out
|
||||
rm $out/bin
|
||||
|
||||
rm $out/lib
|
||||
mkdir -p $out/lib/runtime
|
||||
ln -s ${pkgs.helix}/lib/runtime/* $out/lib/runtime
|
||||
rm $out/lib
|
||||
mkdir -p $out/lib/runtime
|
||||
ln -s ${pkgs.helix}/lib/runtime/* $out/lib/runtime
|
||||
|
||||
rm $out/lib/runtime/grammars
|
||||
mkdir $out/lib/runtime/grammars
|
||||
ln -s ${pkgs.helix}/lib/runtime/grammars/* $out/lib/runtime/grammars
|
||||
${builtins.concatStringsSep "\n" grammarLinks}
|
||||
rm $out/lib/runtime/grammars
|
||||
mkdir $out/lib/runtime/grammars
|
||||
ln -s ${pkgs.helix}/lib/runtime/grammars/* $out/lib/runtime/grammars
|
||||
${builtins.concatStringsSep "\n" grammarLinks}
|
||||
|
||||
rm $out/lib/runtime/queries
|
||||
mkdir $out/lib/runtime/queries
|
||||
ln -s ${pkgs.helix}/lib/runtime/queries/* $out/lib/runtime/queries
|
||||
${builtins.concatStringsSep "\n" queryLinks}
|
||||
rm $out/lib/runtime/queries
|
||||
mkdir $out/lib/runtime/queries
|
||||
ln -s ${pkgs.helix}/lib/runtime/queries/* $out/lib/runtime/queries
|
||||
${builtins.concatStringsSep "\n" queryLinks}
|
||||
|
||||
mkdir -p $out/home/helix/themes
|
||||
ln -s ${configFile} $out/home/helix/config.toml
|
||||
ln -s ${languageFile} $out/home/helix/languages.toml
|
||||
${builtins.concatStringsSep "\n" themeLinks}
|
||||
mkdir -p $out/home/helix/themes
|
||||
ln -s ${configFile} $out/home/helix/config.toml
|
||||
ln -s ${languageFile} $out/home/helix/languages.toml
|
||||
${builtins.concatStringsSep "\n" themeLinks}
|
||||
|
||||
mkdir -p $out/home/git
|
||||
ln -s ${ignoreFile} $out/home/git/ignore
|
||||
mkdir -p $out/home/git
|
||||
ln -s ${ignoreFile} $out/home/git/ignore
|
||||
|
||||
makeWrapper ${pkgs.helix}/bin/hx $out/bin/hx --set HELIX_RUNTIME $out/lib/runtime --set XDG_CONFIG_HOME $out/home
|
||||
'';
|
||||
};
|
||||
makeWrapper ${pkgs.helix}/bin/hx $out/bin/hx --set HELIX_RUNTIME $out/lib/runtime --set XDG_CONFIG_HOME $out/home
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue