style: ~apply alejandra
This commit is contained in:
@@ -26,16 +26,15 @@
|
|||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
# SOFTWARE.
|
# SOFTWARE.
|
||||||
|
{
|
||||||
{ lib
|
lib,
|
||||||
, cargo-pgrx
|
cargo-pgrx,
|
||||||
, pkg-config
|
pkg-config,
|
||||||
, rustPlatform
|
rustPlatform,
|
||||||
, stdenv
|
stdenv,
|
||||||
, Security
|
Security,
|
||||||
, writeShellScriptBin
|
writeShellScriptBin,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
# The idea behind: Use it mostly like rustPlatform.buildRustPackage and so
|
# The idea behind: Use it mostly like rustPlatform.buildRustPackage and so
|
||||||
# we hand most of the arguments down.
|
# we hand most of the arguments down.
|
||||||
#
|
#
|
||||||
@@ -46,116 +45,117 @@
|
|||||||
# If the generated rust bindings aren't needed to use the extension, its a
|
# If the generated rust bindings aren't needed to use the extension, its a
|
||||||
# unnecessary and heavy dependency. If you set this to true, you also
|
# unnecessary and heavy dependency. If you set this to true, you also
|
||||||
# have to add `rustfmt` to `nativeBuildInputs`.
|
# have to add `rustfmt` to `nativeBuildInputs`.
|
||||||
|
{
|
||||||
{ buildAndTestSubdir ? null
|
buildAndTestSubdir ? null,
|
||||||
, buildType ? "release"
|
buildType ? "release",
|
||||||
, buildFeatures ? [ ]
|
buildFeatures ? [],
|
||||||
, cargoBuildFlags ? [ ]
|
cargoBuildFlags ? [],
|
||||||
, postgresql
|
postgresql,
|
||||||
# cargo-pgrx calls rustfmt on generated bindings, this is not strictly necessary, so we avoid the
|
# cargo-pgrx calls rustfmt on generated bindings, this is not strictly necessary, so we avoid the
|
||||||
# dependency here. Set to false and provide rustfmt in nativeBuildInputs, if you need it, e.g.
|
# dependency here. Set to false and provide rustfmt in nativeBuildInputs, if you need it, e.g.
|
||||||
# if you include the generated code in the output via postInstall.
|
# if you include the generated code in the output via postInstall.
|
||||||
, useFakeRustfmt ? true
|
useFakeRustfmt ? true,
|
||||||
, usePgTestCheckFeature ? true
|
usePgTestCheckFeature ? true,
|
||||||
, ...
|
...
|
||||||
} @ args:
|
} @ args: let
|
||||||
let
|
|
||||||
rustfmtInNativeBuildInputs = lib.lists.any (dep: lib.getName dep == "rustfmt") (args.nativeBuildInputs or []);
|
rustfmtInNativeBuildInputs = lib.lists.any (dep: lib.getName dep == "rustfmt") (args.nativeBuildInputs or []);
|
||||||
in
|
in
|
||||||
|
assert lib.asserts.assertMsg ((args.installPhase or "") == "")
|
||||||
assert lib.asserts.assertMsg ((args.installPhase or "") == "")
|
|
||||||
"buildPgrxExtensions overwrites the installPhase, so providing one does nothing";
|
"buildPgrxExtensions overwrites the installPhase, so providing one does nothing";
|
||||||
assert lib.asserts.assertMsg ((args.buildPhase or "") == "")
|
assert lib.asserts.assertMsg ((args.buildPhase or "") == "")
|
||||||
"buildPgrxExtensions overwrites the buildPhase, so providing one does nothing";
|
"buildPgrxExtensions overwrites the buildPhase, so providing one does nothing";
|
||||||
assert lib.asserts.assertMsg (useFakeRustfmt -> !rustfmtInNativeBuildInputs)
|
assert lib.asserts.assertMsg (useFakeRustfmt -> !rustfmtInNativeBuildInputs)
|
||||||
"The parameter useFakeRustfmt is set to true, but rustfmt is included in nativeBuildInputs. Either set useFakeRustfmt to false or remove rustfmt from nativeBuildInputs.";
|
"The parameter useFakeRustfmt is set to true, but rustfmt is included in nativeBuildInputs. Either set useFakeRustfmt to false or remove rustfmt from nativeBuildInputs.";
|
||||||
assert lib.asserts.assertMsg (!useFakeRustfmt -> rustfmtInNativeBuildInputs)
|
assert lib.asserts.assertMsg (!useFakeRustfmt -> rustfmtInNativeBuildInputs)
|
||||||
"The parameter useFakeRustfmt is set to false, but rustfmt is not included in nativeBuildInputs. Either set useFakeRustfmt to true or add rustfmt from nativeBuildInputs.";
|
"The parameter useFakeRustfmt is set to false, but rustfmt is not included in nativeBuildInputs. Either set useFakeRustfmt to true or add rustfmt from nativeBuildInputs."; let
|
||||||
|
fakeRustfmt = writeShellScriptBin "rustfmt" ''
|
||||||
let
|
exit 0
|
||||||
fakeRustfmt = writeShellScriptBin "rustfmt" ''
|
|
||||||
exit 0
|
|
||||||
'';
|
'';
|
||||||
maybeDebugFlag = lib.optionalString (buildType != "release") "--debug";
|
maybeDebugFlag = lib.optionalString (buildType != "release") "--debug";
|
||||||
maybeEnterBuildAndTestSubdir = lib.optionalString (buildAndTestSubdir != null) ''
|
maybeEnterBuildAndTestSubdir = lib.optionalString (buildAndTestSubdir != null) ''
|
||||||
export CARGO_TARGET_DIR="$(pwd)/target"
|
export CARGO_TARGET_DIR="$(pwd)/target"
|
||||||
pushd "${buildAndTestSubdir}"
|
pushd "${buildAndTestSubdir}"
|
||||||
'';
|
'';
|
||||||
maybeLeaveBuildAndTestSubdir = lib.optionalString (buildAndTestSubdir != null) "popd";
|
maybeLeaveBuildAndTestSubdir = lib.optionalString (buildAndTestSubdir != null) "popd";
|
||||||
|
|
||||||
pgrxPostgresMajor = lib.versions.major postgresql.version;
|
pgrxPostgresMajor = lib.versions.major postgresql.version;
|
||||||
preBuildAndTest = ''
|
preBuildAndTest = ''
|
||||||
export PGRX_HOME=$(mktemp -d)
|
export PGRX_HOME=$(mktemp -d)
|
||||||
export PGDATA="$PGRX_HOME/data-${pgrxPostgresMajor}/"
|
export PGDATA="$PGRX_HOME/data-${pgrxPostgresMajor}/"
|
||||||
cargo-pgrx pgrx init "--pg${pgrxPostgresMajor}" ${lib.getDev postgresql}/bin/pg_config
|
cargo-pgrx pgrx init "--pg${pgrxPostgresMajor}" ${lib.getDev postgresql}/bin/pg_config
|
||||||
echo "unix_socket_directories = '$(mktemp -d)'" > "$PGDATA/postgresql.conf"
|
echo "unix_socket_directories = '$(mktemp -d)'" > "$PGDATA/postgresql.conf"
|
||||||
|
|
||||||
# This is primarily for Mac or other Nix systems that don't use the nixbld user.
|
# This is primarily for Mac or other Nix systems that don't use the nixbld user.
|
||||||
export USER="$(whoami)"
|
export USER="$(whoami)"
|
||||||
pg_ctl start
|
pg_ctl start
|
||||||
createuser -h localhost --superuser --createdb "$USER" || true
|
createuser -h localhost --superuser --createdb "$USER" || true
|
||||||
pg_ctl stop
|
pg_ctl stop
|
||||||
'';
|
|
||||||
|
|
||||||
argsForBuildRustPackage = builtins.removeAttrs args [ "postgresql" "useFakeRustfmt" "usePgTestCheckFeature" ];
|
|
||||||
|
|
||||||
# so we don't accidentally `(rustPlatform.buildRustPackage argsForBuildRustPackage) // { ... }` because
|
|
||||||
# we forgot parentheses
|
|
||||||
finalArgs = argsForBuildRustPackage // {
|
|
||||||
buildInputs = (args.buildInputs or [ ]) ++ lib.optionals stdenv.hostPlatform.isDarwin [ Security ];
|
|
||||||
|
|
||||||
nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [
|
|
||||||
cargo-pgrx
|
|
||||||
postgresql
|
|
||||||
pkg-config
|
|
||||||
rustPlatform.bindgenHook
|
|
||||||
] ++ lib.optionals useFakeRustfmt [ fakeRustfmt ];
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
|
|
||||||
echo "Executing cargo-pgrx buildPhase"
|
|
||||||
${preBuildAndTest}
|
|
||||||
${maybeEnterBuildAndTestSubdir}
|
|
||||||
|
|
||||||
PGRX_BUILD_FLAGS="--frozen -j $NIX_BUILD_CORES ${builtins.concatStringsSep " " cargoBuildFlags}" \
|
|
||||||
${lib.optionalString stdenv.hostPlatform.isDarwin ''RUSTFLAGS="''${RUSTFLAGS:+''${RUSTFLAGS} }-Clink-args=-Wl,-undefined,dynamic_lookup"''} \
|
|
||||||
cargo pgrx package \
|
|
||||||
--pg-config ${lib.getDev postgresql}/bin/pg_config \
|
|
||||||
${maybeDebugFlag} \
|
|
||||||
--features "${builtins.concatStringsSep " " buildFeatures}" \
|
|
||||||
--out-dir "$out"
|
|
||||||
|
|
||||||
${maybeLeaveBuildAndTestSubdir}
|
|
||||||
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preCheck = preBuildAndTest + args.preCheck or "";
|
argsForBuildRustPackage = builtins.removeAttrs args ["postgresql" "useFakeRustfmt" "usePgTestCheckFeature"];
|
||||||
|
|
||||||
installPhase = ''
|
# so we don't accidentally `(rustPlatform.buildRustPackage argsForBuildRustPackage) // { ... }` because
|
||||||
runHook preInstall
|
# we forgot parentheses
|
||||||
|
finalArgs =
|
||||||
|
argsForBuildRustPackage
|
||||||
|
// {
|
||||||
|
buildInputs = (args.buildInputs or []) ++ lib.optionals stdenv.hostPlatform.isDarwin [Security];
|
||||||
|
|
||||||
echo "Executing buildPgrxExtension install"
|
nativeBuildInputs =
|
||||||
|
(args.nativeBuildInputs or [])
|
||||||
|
++ [
|
||||||
|
cargo-pgrx
|
||||||
|
postgresql
|
||||||
|
pkg-config
|
||||||
|
rustPlatform.bindgenHook
|
||||||
|
]
|
||||||
|
++ lib.optionals useFakeRustfmt [fakeRustfmt];
|
||||||
|
|
||||||
${maybeEnterBuildAndTestSubdir}
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
cargo-pgrx pgrx stop all
|
echo "Executing cargo-pgrx buildPhase"
|
||||||
|
${preBuildAndTest}
|
||||||
|
${maybeEnterBuildAndTestSubdir}
|
||||||
|
|
||||||
mv $out/${postgresql}/* $out
|
PGRX_BUILD_FLAGS="--frozen -j $NIX_BUILD_CORES ${builtins.concatStringsSep " " cargoBuildFlags}" \
|
||||||
rm -rf $out/nix
|
${lib.optionalString stdenv.hostPlatform.isDarwin ''RUSTFLAGS="''${RUSTFLAGS:+''${RUSTFLAGS} }-Clink-args=-Wl,-undefined,dynamic_lookup"''} \
|
||||||
|
cargo pgrx package \
|
||||||
|
--pg-config ${lib.getDev postgresql}/bin/pg_config \
|
||||||
|
${maybeDebugFlag} \
|
||||||
|
--features "${builtins.concatStringsSep " " buildFeatures}" \
|
||||||
|
--out-dir "$out"
|
||||||
|
|
||||||
${maybeLeaveBuildAndTestSubdir}
|
${maybeLeaveBuildAndTestSubdir}
|
||||||
|
|
||||||
runHook postInstall
|
runHook postBuild
|
||||||
'';
|
'';
|
||||||
|
|
||||||
PGRX_PG_SYS_SKIP_BINDING_REWRITE = "1";
|
preCheck = preBuildAndTest + args.preCheck or "";
|
||||||
CARGO_BUILD_INCREMENTAL = "false";
|
|
||||||
RUST_BACKTRACE = "full";
|
|
||||||
|
|
||||||
checkNoDefaultFeatures = true;
|
installPhase = ''
|
||||||
checkFeatures = (args.checkFeatures or [ ]) ++ (lib.optionals usePgTestCheckFeature [ "pg_test" ]) ++ [ "pg${pgrxPostgresMajor}" ];
|
runHook preInstall
|
||||||
};
|
|
||||||
in
|
echo "Executing buildPgrxExtension install"
|
||||||
rustPlatform.buildRustPackage finalArgs
|
|
||||||
|
${maybeEnterBuildAndTestSubdir}
|
||||||
|
|
||||||
|
cargo-pgrx pgrx stop all
|
||||||
|
|
||||||
|
mv $out/${postgresql}/* $out
|
||||||
|
rm -rf $out/nix
|
||||||
|
|
||||||
|
${maybeLeaveBuildAndTestSubdir}
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
PGRX_PG_SYS_SKIP_BINDING_REWRITE = "1";
|
||||||
|
CARGO_BUILD_INCREMENTAL = "false";
|
||||||
|
RUST_BACKTRACE = "full";
|
||||||
|
|
||||||
|
checkNoDefaultFeatures = true;
|
||||||
|
checkFeatures = (args.checkFeatures or []) ++ (lib.optionals usePgTestCheckFeature ["pg_test"]) ++ ["pg${pgrxPostgresMajor}"];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
rustPlatform.buildRustPackage finalArgs
|
||||||
|
|||||||
277
flake.nix
277
flake.nix
@@ -60,7 +60,7 @@
|
|||||||
system,
|
system,
|
||||||
pkgs,
|
pkgs,
|
||||||
}: let
|
}: let
|
||||||
pkgs-unstable = import nixpkgs-unstable { inherit system; };
|
pkgs-unstable = import nixpkgs-unstable {inherit system;};
|
||||||
in {
|
in {
|
||||||
packages.${system} = let
|
packages.${system} = let
|
||||||
rust = {
|
rust = {
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
version = "3.4.3";
|
version = "3.4.3";
|
||||||
src = pkgs.python3Packages.fetchPypi {
|
src = pkgs.python3Packages.fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "sha256-gzYP+LyXmA5P8lyWTHvTkj0zPRd6pPf7c2sBnybHy0E=";
|
sha256 = "sha256-gzYP+LyXmA5P8lyWTHvTkj0zPRd6pPf7c2sBnybHy0E=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
py3-cryptomus = pkgs.python3Packages.buildPythonPackage rec {
|
py3-cryptomus = pkgs.python3Packages.buildPythonPackage rec {
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
version = "1.1";
|
version = "1.1";
|
||||||
src = pkgs.python3Packages.fetchPypi {
|
src = pkgs.python3Packages.fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "sha256-f0BBGfemKxMdz+LMvawWqqRfmF+TrCpMwgtJEYt+fgU=";
|
sha256 = "sha256-f0BBGfemKxMdz+LMvawWqqRfmF+TrCpMwgtJEYt+fgU=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
py3-modulegraph = pkgs.python3Packages.buildPythonPackage rec {
|
py3-modulegraph = pkgs.python3Packages.buildPythonPackage rec {
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
version = "0.19.6";
|
version = "0.19.6";
|
||||||
src = pkgs.python3Packages.fetchPypi {
|
src = pkgs.python3Packages.fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "sha256-yRTIyVoOEP6IUF1OnCKEtOPbxwlD4wbMZWfjbMVBv0s=";
|
sha256 = "sha256-yRTIyVoOEP6IUF1OnCKEtOPbxwlD4wbMZWfjbMVBv0s=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
py3-swifter = pkgs.python3Packages.buildPythonPackage rec {
|
py3-swifter = pkgs.python3Packages.buildPythonPackage rec {
|
||||||
@@ -103,15 +103,15 @@
|
|||||||
version = "1.4.0";
|
version = "1.4.0";
|
||||||
src = pkgs.python3Packages.fetchPypi {
|
src = pkgs.python3Packages.fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
sha256 = "sha256-4bt0R2ohs/B6F6oYyX/cuoWZcmvRfacy8J2rzFDia6A=";
|
sha256 = "sha256-4bt0R2ohs/B6F6oYyX/cuoWZcmvRfacy8J2rzFDia6A=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
py3-aiogram-newsletter = pkgs.python3Packages.buildPythonPackage rec {
|
py3-aiogram-newsletter = pkgs.python3Packages.buildPythonPackage rec {
|
||||||
pname = "aiogram-newsletter";
|
pname = "aiogram-newsletter";
|
||||||
version = "0.0.10";
|
version = "0.0.10";
|
||||||
|
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
owner = "nessshon";
|
owner = "nessshon";
|
||||||
repo = "aiogram-newsletter";
|
repo = "aiogram-newsletter";
|
||||||
rev = "bb8a42e4bcff66a9a606fc92ccc27b1d094b20fc";
|
rev = "bb8a42e4bcff66a9a606fc92ccc27b1d094b20fc";
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
pg-migration = pkgs.callPackage ./package/postgres/pg-migration/default.nix rust.commonArgs;
|
pg-migration = pkgs.callPackage ./package/postgres/pg-migration/default.nix rust.commonArgs;
|
||||||
c-hectic = pkgs.callPackage ./package/c/hectic/default.nix {};
|
c-hectic = pkgs.callPackage ./package/c/hectic/default.nix {};
|
||||||
watch = pkgs.callPackage ./package/c/watch/default.nix {};
|
watch = pkgs.callPackage ./package/c/watch/default.nix {};
|
||||||
hmpl = pkgs.callPackage ./package/c/hmpl/default.nix {
|
hmpl = pkgs.callPackage ./package/c/hmpl/default.nix {
|
||||||
hectic = self.packages.${system}.hectic;
|
hectic = self.packages.${system}.hectic;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -142,23 +142,23 @@
|
|||||||
shells = self.devShells.${system};
|
shells = self.devShells.${system};
|
||||||
in {
|
in {
|
||||||
c = pkgs.mkShell {
|
c = pkgs.mkShell {
|
||||||
buildInputs = (with pkgs; [ inotify-tools gdb gcc ]) ++ (with self.packages.${system}; [ c-hectic nvim-pager watch ]);
|
buildInputs = (with pkgs; [inotify-tools gdb gcc]) ++ (with self.packages.${system}; [c-hectic nvim-pager watch]);
|
||||||
PAGER = "${self.packages.${system}.nvim-pager}/bin/pager";
|
PAGER = "${self.packages.${system}.nvim-pager}/bin/pager";
|
||||||
};
|
};
|
||||||
postgres-c = pkgs.mkShell {
|
postgres-c = pkgs.mkShell {
|
||||||
buildInputs = (with pkgs; [ inotify-tools postgresql_15 ]) ++ (with self.packages.${system}; [ nvim-pager ]) ++ (with pkgs-unstable; [ gdb gcc ]);
|
buildInputs = (with pkgs; [inotify-tools postgresql_15]) ++ (with self.packages.${system}; [nvim-pager]) ++ (with pkgs-unstable; [gdb gcc]);
|
||||||
PAGER = "${self.packages.${system}.nvim-pager}/bin/pager";
|
PAGER = "${self.packages.${system}.nvim-pager}/bin/pager";
|
||||||
|
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
export PATH=${pkgs-unstable.gcc}/bin:$PATH
|
export PATH=${pkgs-unstable.gcc}/bin:$PATH
|
||||||
export PAGER="${self.packages.${system}.nvim-pager}/bin/pager"
|
export PAGER="${self.packages.${system}.nvim-pager}/bin/pager"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
pure-c = pkgs.mkShell {
|
pure-c = pkgs.mkShell {
|
||||||
buildInputs = (with pkgs; [ inotify-tools ]) ++ (with self.packages.${system}; [ nvim-pager ]) ++ (with pkgs-unstable; [ gdb gcc ]);
|
buildInputs = (with pkgs; [inotify-tools]) ++ (with self.packages.${system}; [nvim-pager]) ++ (with pkgs-unstable; [gdb gcc]);
|
||||||
PAGER = "${self.packages.${system}.nvim-pager}/bin/pager";
|
PAGER = "${self.packages.${system}.nvim-pager}/bin/pager";
|
||||||
|
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
export PATH=${pkgs-unstable.gcc}/bin:$PATH
|
export PATH=${pkgs-unstable.gcc}/bin:$PATH
|
||||||
export PAGER="${self.packages.${system}.nvim-pager}/bin/pager"
|
export PAGER="${self.packages.${system}.nvim-pager}/bin/pager"
|
||||||
'';
|
'';
|
||||||
@@ -204,47 +204,63 @@
|
|||||||
modules = [
|
modules = [
|
||||||
self.nixosModules."preset.default"
|
self.nixosModules."preset.default"
|
||||||
self.nixosModules."hardware.hetzner"
|
self.nixosModules."hardware.hetzner"
|
||||||
({modulesPath, pkgs, ...}: {
|
({
|
||||||
|
modulesPath,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
users.users.root.openssh.authorizedKeys.keys = [ ];
|
users.users.root.openssh.authorizedKeys.keys = [];
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
(pkgs.writers.writeMinCBin "minc-hello-world" ["<stdio.h>"] /*c*/ ''
|
(pkgs.writers.writeMinCBin "minc-hello-world" ["<stdio.h>"]
|
||||||
printf("hello world\n");
|
/*
|
||||||
'')
|
c
|
||||||
(pkgs.writers.writeMinCBin "minc-env" ["<stdio.h>" "<stdlib.h>"] /*c*/ ''
|
*/
|
||||||
char *env_name;
|
''
|
||||||
if (argc > 1) {
|
printf("hello world\n");
|
||||||
env_name = argv[1];
|
'')
|
||||||
} else {
|
(pkgs.writers.writeMinCBin "minc-env" ["<stdio.h>" "<stdlib.h>"]
|
||||||
env_name = "HOME";
|
/*
|
||||||
}
|
c
|
||||||
char *value = getenv(env_name);
|
*/
|
||||||
if (value) {
|
''
|
||||||
printf("%s: %s\n", env_name, value);
|
char *env_name;
|
||||||
} else {
|
if (argc > 1) {
|
||||||
printf("Environment variable %s not found.\n", env_name);
|
env_name = argv[1];
|
||||||
}
|
} else {
|
||||||
'')
|
env_name = "HOME";
|
||||||
(pkgs.writers.writeMinCBin "minc-env-check" ["<stdio.h>" "<stdlib.h>"] /*c*/ ''
|
}
|
||||||
char *env_name;
|
char *value = getenv(env_name);
|
||||||
if (argc > 1) {
|
if (value) {
|
||||||
env_name = argv[1];
|
printf("%s: %s\n", env_name, value);
|
||||||
} else {
|
} else {
|
||||||
env_name = "HOME";
|
printf("Environment variable %s not found.\n", env_name);
|
||||||
}
|
}
|
||||||
|
'')
|
||||||
|
(pkgs.writers.writeMinCBin "minc-env-check" ["<stdio.h>" "<stdlib.h>"]
|
||||||
|
/*
|
||||||
|
c
|
||||||
|
*/
|
||||||
|
''
|
||||||
|
char *env_name;
|
||||||
|
if (argc > 1) {
|
||||||
|
env_name = argv[1];
|
||||||
|
} else {
|
||||||
|
env_name = "HOME";
|
||||||
|
}
|
||||||
|
|
||||||
char *value = getenv(env_name);
|
char *value = getenv(env_name);
|
||||||
if (value) {
|
if (value) {
|
||||||
char buffer[128];
|
char buffer[128];
|
||||||
sprintf(buffer, "echo $%s\n", env_name);
|
sprintf(buffer, "echo $%s\n", env_name);
|
||||||
system(buffer);
|
system(buffer);
|
||||||
} else {
|
} else {
|
||||||
printf("Environment variable %s not found.\n", env_name);
|
printf("Environment variable %s not found.\n", env_name);
|
||||||
}
|
}
|
||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
programs.zsh.shellAliases = {
|
programs.zsh.shellAliases = {
|
||||||
jc = ''journalctl'';
|
jc = ''journalctl'';
|
||||||
@@ -257,17 +273,17 @@
|
|||||||
vmVariant = {
|
vmVariant = {
|
||||||
systemd.services.fix-root-perms = {
|
systemd.services.fix-root-perms = {
|
||||||
description = "Fix root directory permissions";
|
description = "Fix root directory permissions";
|
||||||
after = [ "local-fs.target" ];
|
after = ["local-fs.target"];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = ["multi-user.target"];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = "${pkgs.coreutils}/bin/chmod 755 /";
|
ExecStart = "${pkgs.coreutils}/bin/chmod 755 /";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
diskSize = 1024*6;
|
diskSize = 1024 * 6;
|
||||||
diskImage = null;
|
diskImage = null;
|
||||||
forwardPorts = [ ];
|
forwardPorts = [];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -279,7 +295,10 @@
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
pkgs = import nixpkgs {inherit system; overlays = [ self.overlays.default ];};
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = [self.overlays.default];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
// {
|
// {
|
||||||
@@ -369,22 +388,21 @@
|
|||||||
overlays.default = final: prev: (
|
overlays.default = final: prev: (
|
||||||
let
|
let
|
||||||
version = "1.6.1";
|
version = "1.6.1";
|
||||||
pkgs-unstable = import nixpkgs-unstable { inherit (prev) system; };
|
pkgs-unstable = import nixpkgs-unstable {inherit (prev) system;};
|
||||||
|
|
||||||
buildPgrxExtension =
|
buildPgrxExtension =
|
||||||
prev.callPackage (import (builtins.path {
|
prev.callPackage (import (builtins.path {
|
||||||
name = "extension-builder";
|
name = "extension-builder";
|
||||||
path = ./buildPgrxExtension.nix;
|
path = ./buildPgrxExtension.nix;
|
||||||
})) {
|
})) {
|
||||||
cargo-pgrx = pkgs-unstable.cargo-pgrx_0_12_6;
|
cargo-pgrx = pkgs-unstable.cargo-pgrx_0_12_6;
|
||||||
inherit (pkgs-unstable.darwin.apple_sdk.frameworks) Security;
|
inherit (pkgs-unstable.darwin.apple_sdk.frameworks) Security;
|
||||||
};
|
};
|
||||||
|
|
||||||
buildPostgresqlExtension =
|
buildPostgresqlExtension = prev.callPackage (import (builtins.path {
|
||||||
prev.callPackage (import (builtins.path {
|
name = "extension-builder";
|
||||||
name = "extension-builder";
|
path = ./buildPostgresqlExtension.nix;
|
||||||
path = ./buildPostgresqlExtension.nix;
|
}));
|
||||||
}));
|
|
||||||
|
|
||||||
buildSmtpExt = versionSuffix: let
|
buildSmtpExt = versionSuffix: let
|
||||||
postgresql = prev."postgresql_${versionSuffix}";
|
postgresql = prev."postgresql_${versionSuffix}";
|
||||||
@@ -399,18 +417,19 @@
|
|||||||
buildPgrxExtension {
|
buildPgrxExtension {
|
||||||
pname = cargo.package.name;
|
pname = cargo.package.name;
|
||||||
version = cargo.package.version;
|
version = cargo.package.version;
|
||||||
|
|
||||||
inherit src postgresql;
|
inherit src postgresql;
|
||||||
|
|
||||||
buildInputs = with prev; [ openssl ];
|
buildInputs = with prev; [openssl];
|
||||||
|
|
||||||
cargoHash = "sha256-AbLT7vcFV89zwZIaTC1ELat9l4UeNP8Bn9QMMOms1Co=";
|
cargoHash = "sha256-AbLT7vcFV89zwZIaTC1ELat9l4UeNP8Bn9QMMOms1Co=";
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
};
|
};
|
||||||
buildPlHaskellExt = versionSuffix: let
|
buildPlHaskellExt = versionSuffix: let
|
||||||
version = "4.0";
|
version = "4.0";
|
||||||
in buildPostgresqlExtension {
|
in
|
||||||
|
buildPostgresqlExtension {
|
||||||
postgresql = prev."postgresql_${versionSuffix}";
|
postgresql = prev."postgresql_${versionSuffix}";
|
||||||
} {
|
} {
|
||||||
pname = "plhaskell";
|
pname = "plhaskell";
|
||||||
@@ -439,36 +458,61 @@
|
|||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
hectic = self.packages.${prev.system};
|
hectic = self.packages.${prev.system};
|
||||||
postgresql_17 = prev.postgresql_17 // {pkgs = prev.postgresql_17.pkgs // {
|
postgresql_17 =
|
||||||
http = buildHttpExt "17";
|
prev.postgresql_17
|
||||||
pg_smtp_client = buildSmtpExt "17";
|
// {
|
||||||
plhaskell = buildPlHaskellExt "15";
|
pkgs =
|
||||||
postgreact = prev.callPackage ./package/c/postgreact/default.nix { postgresql = prev.postgresql_17; };
|
prev.postgresql_17.pkgs
|
||||||
};};
|
// {
|
||||||
postgresql_16 = prev.postgresql_16 // {pkgs = prev.postgresql_16.pkgs // {
|
http = buildHttpExt "17";
|
||||||
http = buildHttpExt "16";
|
pg_smtp_client = buildSmtpExt "17";
|
||||||
pg_smtp_client = buildSmtpExt "16";
|
plhaskell = buildPlHaskellExt "15";
|
||||||
plhaskell = buildPlHaskellExt "15";
|
postgreact = prev.callPackage ./package/c/postgreact/default.nix {postgresql = prev.postgresql_17;};
|
||||||
postgreact = prev.callPackage ./package/c/postgreact/default.nix { postgresql = prev.postgresql_16; };
|
};
|
||||||
};};
|
};
|
||||||
postgresql_15 = prev.postgresql_15 // {pkgs = prev.postgresql_15.pkgs // {
|
postgresql_16 =
|
||||||
http = buildHttpExt "15";
|
prev.postgresql_16
|
||||||
pg_smtp_client = buildSmtpExt "15";
|
// {
|
||||||
plhaskell = buildPlHaskellExt "15";
|
pkgs =
|
||||||
postgreact = prev.callPackage ./package/c/postgreact/default.nix { postgresql = prev.postgresql_15; };
|
prev.postgresql_16.pkgs
|
||||||
};};
|
// {
|
||||||
postgresql_14 = prev.postgresql_14 // {pkgs = prev.postgresql_14.pkgs // {
|
http = buildHttpExt "16";
|
||||||
http = buildHttpExt "14";
|
pg_smtp_client = buildSmtpExt "16";
|
||||||
pg_smtp_client = buildSmtpExt "14";
|
plhaskell = buildPlHaskellExt "15";
|
||||||
plhaskell = buildPlHaskellExt "15";
|
postgreact = prev.callPackage ./package/c/postgreact/default.nix {postgresql = prev.postgresql_16;};
|
||||||
postgreact = prev.callPackage ./package/c/postgreact/default.nix { postgresql = prev.postgresql_14; };
|
};
|
||||||
};};
|
};
|
||||||
|
postgresql_15 =
|
||||||
|
prev.postgresql_15
|
||||||
|
// {
|
||||||
|
pkgs =
|
||||||
|
prev.postgresql_15.pkgs
|
||||||
|
// {
|
||||||
|
http = buildHttpExt "15";
|
||||||
|
pg_smtp_client = buildSmtpExt "15";
|
||||||
|
plhaskell = buildPlHaskellExt "15";
|
||||||
|
postgreact = prev.callPackage ./package/c/postgreact/default.nix {postgresql = prev.postgresql_15;};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
postgresql_14 =
|
||||||
|
prev.postgresql_14
|
||||||
|
// {
|
||||||
|
pkgs =
|
||||||
|
prev.postgresql_14.pkgs
|
||||||
|
// {
|
||||||
|
http = buildHttpExt "14";
|
||||||
|
pg_smtp_client = buildSmtpExt "14";
|
||||||
|
plhaskell = buildPlHaskellExt "15";
|
||||||
|
postgreact = prev.callPackage ./package/c/postgreact/default.nix {postgresql = prev.postgresql_14;};
|
||||||
|
};
|
||||||
|
};
|
||||||
writers = let
|
writers = let
|
||||||
writeC =
|
writeC = name: argsOrScript:
|
||||||
name: argsOrScript:
|
if lib.isAttrs argsOrScript && !lib.isDerivation argsOrScript
|
||||||
if lib.isAttrs argsOrScript && !lib.isDerivation argsOrScript then
|
then
|
||||||
prev.writers.makeBinWriter (
|
prev.writers.makeBinWriter (
|
||||||
argsOrScript // {
|
argsOrScript
|
||||||
|
// {
|
||||||
compileScript = ''
|
compileScript = ''
|
||||||
# Force gcc to treat the input file as C code
|
# Force gcc to treat the input file as C code
|
||||||
${prev.gcc}/bin/gcc -fsyntax-only -xc $contentPath
|
${prev.gcc}/bin/gcc -fsyntax-only -xc $contentPath
|
||||||
@@ -479,7 +523,8 @@
|
|||||||
${prev.gcc}/bin/gcc -xc -o $out $contentPath
|
${prev.gcc}/bin/gcc -xc -o $out $contentPath
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
) name
|
)
|
||||||
|
name
|
||||||
else
|
else
|
||||||
prev.writers.makeBinWriter {
|
prev.writers.makeBinWriter {
|
||||||
compileScript = ''
|
compileScript = ''
|
||||||
@@ -491,29 +536,35 @@
|
|||||||
fi
|
fi
|
||||||
${prev.gcc}/bin/gcc -xc -o $out $contentPath
|
${prev.gcc}/bin/gcc -xc -o $out $contentPath
|
||||||
'';
|
'';
|
||||||
} name argsOrScript;
|
}
|
||||||
writeMinC =
|
name
|
||||||
name: includes: body:
|
argsOrScript;
|
||||||
writeC name ''
|
writeMinC = name: includes: body:
|
||||||
${builtins.concatStringsSep "\n" (map (h: "#include " + h) includes)}
|
writeC name ''
|
||||||
|
${builtins.concatStringsSep "\n" (map (h: "#include " + h) includes)}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
${body}
|
${body}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
in prev.writers // {
|
in
|
||||||
writeCBin = name: writeC "/bin/${name}";
|
prev.writers
|
||||||
writeC = writeC;
|
// {
|
||||||
writeMinCBin = name: includes: body: writeMinC "/bin/${name}" includes body;
|
writeCBin = name: writeC "/bin/${name}";
|
||||||
writeMinC = writeMinC;
|
writeC = writeC;
|
||||||
};
|
writeMinCBin = name: includes: body: writeMinC "/bin/${name}" includes body;
|
||||||
|
writeMinC = writeMinC;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
lib = {
|
lib = {
|
||||||
# -- For all systems --
|
# -- For all systems --
|
||||||
inherit dotEnv minorEnvironment parseEnv forAllSystemsWithPkgs forSpecSystemsWithPkgs;
|
inherit dotEnv minorEnvironment parseEnv forAllSystemsWithPkgs forSpecSystemsWithPkgs;
|
||||||
|
|
||||||
readEnvironment = { envVarsToRead, prefix ? "" }:
|
readEnvironment = {
|
||||||
|
envVarsToRead,
|
||||||
|
prefix ? "",
|
||||||
|
}:
|
||||||
builtins.listToAttrs
|
builtins.listToAttrs
|
||||||
(map (name: {
|
(map (name: {
|
||||||
inherit name;
|
inherit name;
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
{ stdenv, gcc, lib, bash, inotify-tools }:
|
{
|
||||||
|
stdenv,
|
||||||
|
gcc,
|
||||||
|
lib,
|
||||||
|
bash,
|
||||||
|
inotify-tools,
|
||||||
|
}:
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "hectic";
|
pname = "hectic";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
nativeBuildInputs = [ gcc inotify-tools ];
|
nativeBuildInputs = [gcc inotify-tools];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
ls
|
ls
|
||||||
|
|||||||
@@ -3,12 +3,11 @@
|
|||||||
stdenv,
|
stdenv,
|
||||||
postgresql,
|
postgresql,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "postgreact";
|
pname = "postgreact";
|
||||||
version = "0.1";
|
version = "0.1";
|
||||||
|
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
@@ -22,10 +21,10 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/lib/postgresql $out/share/postgresql/extension
|
mkdir -p $out/lib/postgresql $out/share/postgresql/extension
|
||||||
|
|
||||||
# Install compiled library
|
# Install compiled library
|
||||||
install -m 755 -D target/postgreact.so $out/lib/postgresql/postgreact.so
|
install -m 755 -D target/postgreact.so $out/lib/postgresql/postgreact.so
|
||||||
|
|
||||||
# Install control and SQL files
|
# Install control and SQL files
|
||||||
install -m 644 -D postgreact.control $out/share/postgresql/extension/postgreact.control
|
install -m 644 -D postgreact.control $out/share/postgresql/extension/postgreact.control
|
||||||
install -m 644 -D postgreact--0.1.sql $out/share/postgresql/extension/postgreact--0.1.sql
|
install -m 644 -D postgreact--0.1.sql $out/share/postgresql/extension/postgreact--0.1.sql
|
||||||
@@ -36,6 +35,6 @@ stdenv.mkDerivation {
|
|||||||
homepage = "https://github.com/yukkop/util.nix";
|
homepage = "https://github.com/yukkop/util.nix";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
platforms = postgresql.meta.platforms;
|
platforms = postgresql.meta.platforms;
|
||||||
maintainers = with maintainers; [ ];
|
maintainers = with maintainers; [];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
{ stdenv, gcc, lib, bash, c-hectic }:
|
{
|
||||||
|
stdenv,
|
||||||
|
gcc,
|
||||||
|
lib,
|
||||||
|
bash,
|
||||||
|
c-hectic,
|
||||||
|
}:
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "prettify";
|
pname = "prettify";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
nativeBuildInputs = [ gcc c-hectic ];
|
nativeBuildInputs = [gcc c-hectic];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
ls
|
ls
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
{ stdenv, gcc, lib, bash, gdb }:
|
{
|
||||||
|
stdenv,
|
||||||
|
gcc,
|
||||||
|
lib,
|
||||||
|
bash,
|
||||||
|
gdb,
|
||||||
|
}:
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "watch";
|
pname = "watch";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
nativeBuildInputs = [ gcc gdb ];
|
nativeBuildInputs = [gcc gdb];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
${bash}/bin/sh ./make.sh build
|
${bash}/bin/sh ./make.sh build
|
||||||
@@ -25,4 +30,4 @@ stdenv.mkDerivation {
|
|||||||
description = "watch";
|
description = "watch";
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ in
|
|||||||
|
|
||||||
cargoLock.lockFile = ./Cargo.lock;
|
cargoLock.lockFile = ./Cargo.lock;
|
||||||
|
|
||||||
buildInputs = [ postgresql_15 ];
|
buildInputs = [postgresql_15];
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user