mirror of
https://github.com/nix-community/comma.git
synced 2024-09-11 03:55:24 +03:00
flake compatibility + index management (#11)
* compatibility to flake based systems - add flake.nix - provide interface for updating the index * pin nix to version 2.3 * Update , Co-authored-by: Artturi <Artturin@artturin.com> * remove db outdated error Co-authored-by: Artturi <Artturin@artturin.com>
This commit is contained in:
parent
02e3e5545b
commit
54149dc417
15
,
15
,
@ -25,6 +25,9 @@ fi
|
|||||||
if [[ "$1" == "--install" ]] || [[ "$1" == "-i" ]]; then
|
if [[ "$1" == "--install" ]] || [[ "$1" == "-i" ]]; then
|
||||||
install=1
|
install=1
|
||||||
shift
|
shift
|
||||||
|
elif [[ "$1" == "--update" ]] || [[ "$1" == "-u" ]]; then
|
||||||
|
${UPDATE_SCRIPT}
|
||||||
|
exit
|
||||||
else
|
else
|
||||||
install=""
|
install=""
|
||||||
fi
|
fi
|
||||||
@ -55,8 +58,16 @@ if [[ -z $attr ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# on flake based installations nixpkgs is specified via
|
||||||
|
# flake input and therefore NIX_PATH might be unset
|
||||||
|
if echo $NIX_PATH | grep -q "nixpkgs="; then
|
||||||
|
nixArgs=""
|
||||||
|
else
|
||||||
|
nixArgs="-I nixpkgs=${NIXPKGS}"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -n $install ]]; then
|
if [[ -n $install ]]; then
|
||||||
nix-env -iA "nixpkgs.${attr%%.*}"
|
nix-env $nixArgs -iA "nixpkgs.${attr%%.*}"
|
||||||
else
|
else
|
||||||
nix_version_greater_or_equal() {
|
nix_version_greater_or_equal() {
|
||||||
local nix_version
|
local nix_version
|
||||||
@ -65,7 +76,7 @@ else
|
|||||||
}
|
}
|
||||||
|
|
||||||
if nix_version_greater_or_equal "2.4"; then
|
if nix_version_greater_or_equal "2.4"; then
|
||||||
nix --extra-experimental-features 'nix-command flakes' shell "nixpkgs#${attr}" -c "${argv0}" "$@"
|
nix --extra-experimental-features 'nix-command flakes' shell "${NIXPKGS}#${attr}" -c "${argv0}" "$@"
|
||||||
else
|
else
|
||||||
nix run "nixpkgs.${attr}" -c "${argv0}" "$@"
|
nix run "nixpkgs.${attr}" -c "${argv0}" "$@"
|
||||||
fi
|
fi
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
, fzy ? pkgs.fzy
|
, fzy ? pkgs.fzy
|
||||||
, makeWrapper ? pkgs.makeWrapper
|
, makeWrapper ? pkgs.makeWrapper
|
||||||
, runCommand ? pkgs.runCommand
|
, runCommand ? pkgs.runCommand
|
||||||
|
, updateScript ? import ./update-index.nix { inherit pkgs; }
|
||||||
, linkFarm ? pkgs.linkFarm
|
, linkFarm ? pkgs.linkFarm
|
||||||
|
|
||||||
# We use this to add matchers for stuff that's not in upstream nixpkgs, but is
|
# We use this to add matchers for stuff that's not in upstream nixpkgs, but is
|
||||||
@ -48,6 +49,8 @@ stdenv.mkDerivation rec {
|
|||||||
chmod +x $out/bin/,
|
chmod +x $out/bin/,
|
||||||
wrapProgram $out/bin/, \
|
wrapProgram $out/bin/, \
|
||||||
--set PREBUILT_NIX_INDEX_DB ${nixIndexDB} \
|
--set PREBUILT_NIX_INDEX_DB ${nixIndexDB} \
|
||||||
|
--set NIXPKGS ${pkgs.path} \
|
||||||
|
--set UPDATE_SCRIPT ${updateScript} \
|
||||||
--prefix PATH : ${nix-index}/bin \
|
--prefix PATH : ${nix-index}/bin \
|
||||||
--prefix PATH : ${nix}/bin \
|
--prefix PATH : ${nix}/bin \
|
||||||
--prefix PATH : ${fzy}/bin
|
--prefix PATH : ${fzy}/bin
|
||||||
|
26
flake.lock
Normal file
26
flake.lock
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1638110343,
|
||||||
|
"narHash": "sha256-hQaow8sGPyUrXgrqgDRsfA+73uR0vms2goTQNxIAaRQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "942eb9a335b4cd22fa6a7be31c494e53e76f5637",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
36
flake.nix
Normal file
36
flake.nix
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
description = "Comma runs software without installing it";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, }:
|
||||||
|
let
|
||||||
|
b = builtins;
|
||||||
|
lib = nixpkgs.lib;
|
||||||
|
supportedSystems = [ "x86_64-linux" "x86_64-darwin" ];
|
||||||
|
forAllSystems = f: lib.genAttrs supportedSystems
|
||||||
|
(system: f system (import nixpkgs { inherit system; }));
|
||||||
|
in
|
||||||
|
rec {
|
||||||
|
|
||||||
|
packages = forAllSystems
|
||||||
|
(system: pkgs: {
|
||||||
|
comma = import ./default.nix {
|
||||||
|
inherit pkgs;
|
||||||
|
updateScript = apps."${system}".update-index.program;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
defaultPackage = forAllSystems (system: pkgs: packages."${system}".comma);
|
||||||
|
|
||||||
|
apps = forAllSystems
|
||||||
|
(system: pkgs: {
|
||||||
|
update-index = {
|
||||||
|
type = "app";
|
||||||
|
program = b.toString (pkgs.callPackage ./update-index.nix {});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
28
update-index.nix
Normal file
28
update-index.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> {},
|
||||||
|
|
||||||
|
coreutils ? pkgs.coreutils,
|
||||||
|
gnugrep ? pkgs.gnugrep,
|
||||||
|
lib ? pkgs.lib,
|
||||||
|
nix-index ? pkgs.nix-index,
|
||||||
|
writeScript ? pkgs.writeScript,
|
||||||
|
}:
|
||||||
|
|
||||||
|
writeScript "update-index" ''
|
||||||
|
PATH=${lib.makeBinPath [
|
||||||
|
coreutils
|
||||||
|
gnugrep
|
||||||
|
nix-index
|
||||||
|
]}
|
||||||
|
|
||||||
|
# on flake based installations nixpkgs is specified via
|
||||||
|
# flake input and therefore NIX_PATH might be unset
|
||||||
|
if echo $NIX_PATH | grep -q "nixpkgs="; then
|
||||||
|
nixpkgs=""
|
||||||
|
else
|
||||||
|
nixpkgs="-I nixpkgs=${pkgs.path}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p $HOME/.cache/comma/
|
||||||
|
nix-index -d $HOME/.cache/nix-index -f $nixpkgs
|
||||||
|
''
|
Loading…
Reference in New Issue
Block a user