Compare commits
5 commits
ec91266fcd
...
7828941e12
Author | SHA1 | Date | |
---|---|---|---|
7828941e12 | |||
e176ea9483 | |||
b5e40f0d64 | |||
5c01a58f54 | |||
be62805cc6 |
5 changed files with 77 additions and 81 deletions
|
@ -1,31 +1,14 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running 'nixos-help').
|
||||
{
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{ inputs, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (pkgs) mkWrappedExecutable;
|
||||
|
||||
# bool -> nixpkgs[]
|
||||
wrappedNixExecutables = inEnvironment: assert builtins.isBool inEnvironment; [
|
||||
(mkWrappedExecutable {pkg = pkgs.nix; exe = "nix-build"; wrapperArgs = ["--add-flags" "\"--log-format\"" "--add-flags" "bar${lib.optionalString inEnvironment "-with-logs"}"];})
|
||||
(mkWrappedExecutable {pkg = pkgs.nix; exe = "nix-shell"; wrapperArgs = ["--add-flags" "\"--log-format\"" "--add-flags" "bar"];})
|
||||
];
|
||||
wrappedNixosExecutables = [
|
||||
(mkWrappedExecutable {pkg = pkgs.nixos-rebuild; wrapperArgs = ["--add-flags" "\"--log-format\"" "--add-flags" "bar"];})
|
||||
];
|
||||
wrappedNix = (pkgs.buildEnv {
|
||||
name = "wrappedNix-${pkgs.nix.version}";
|
||||
paths = [ pkgs.nix ] ++ wrappedNixExecutables false;
|
||||
}).overrideAttrs {
|
||||
version = pkgs.nix.version;
|
||||
passthru.meta = pkgs.nix.meta;
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./module-overrides.nix
|
||||
./nix.nix
|
||||
];
|
||||
|
||||
# kernel
|
||||
|
@ -37,7 +20,6 @@ in
|
|||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nix = {
|
||||
package = wrappedNix;
|
||||
channel.enable = false;
|
||||
settings.experimental-features = [
|
||||
"no-url-literals"
|
||||
|
@ -62,9 +44,7 @@ in
|
|||
fastfetch
|
||||
smartmontools
|
||||
ddrescue
|
||||
] ++ wrappedNixExecutables true
|
||||
++ wrappedNixosExecutables;
|
||||
|
||||
];
|
||||
programs.git.enable = true;
|
||||
programs.git.config = {
|
||||
commit.verbose = true;
|
||||
|
|
51
nix-os/nix.nix
Normal file
51
nix-os/nix.nix
Normal file
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
makeWrapper = "${pkgs.makeWrapper}/nix-support/setup-hook";
|
||||
# bool -> nixpkgs[]
|
||||
wrappedNixExecutables = inEnvironment: assert builtins.isBool inEnvironment; pkgs.symlinkJoin {
|
||||
name = "${pkgs.nix.name}-wrap";
|
||||
paths = [ pkgs.nix ];
|
||||
postBuild = ''
|
||||
. ${makeWrapper}
|
||||
wrapProgram $out/bin/nix-build \
|
||||
--add-flags "--log-format" \
|
||||
--add-flags "bar${lib.optionalString inEnvironment "-with-logs"}"
|
||||
wrapProgram $out/bin/nix-shell \
|
||||
--add-flags "--log-format" \
|
||||
--add-flags "bar"
|
||||
'';
|
||||
};
|
||||
|
||||
wrappedNixosExecutables = pkgs.symlinkJoin {
|
||||
name = "${pkgs.nixos-rebuild.name}-wrap";
|
||||
paths = [ pkgs.nixos-rebuild ];
|
||||
postBuild = ''
|
||||
. ${makeWrapper}
|
||||
wrapProgram $out/bin/nixos-rebuild \
|
||||
--add-flags "--log-format" \
|
||||
--add-flags "bar"
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
wrappedNix = (pkgs.symlinkJoin {
|
||||
name = "wrappedNix-${pkgs.nix.version}";
|
||||
paths = [ pkgs.nix ] ++ [( wrappedNixExecutables false )];
|
||||
}).overrideAttrs {
|
||||
version = pkgs.nix.version;
|
||||
passthru.meta = pkgs.nix.meta;
|
||||
};
|
||||
in {
|
||||
config = {
|
||||
nix.package = wrappedNix;
|
||||
environment.systemPackages = lib.map (lib.hiPrio) [
|
||||
(wrappedNixExecutables true)
|
||||
wrappedNixosExecutables
|
||||
];
|
||||
};
|
||||
}
|
18
outputs.nix
18
outputs.nix
|
@ -7,11 +7,29 @@ let
|
|||
|
||||
lib = (import "${inputs.nixpkgs}/lib").extend (import ./lib/overlays/version-info-fixup.nix { revision = inputs.lock.nixpkgs.revision; });
|
||||
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
|
||||
# (system -> x) -> { [system] := x }
|
||||
forEachSystem = x: lib.pipe systems [
|
||||
(builtins.map (system: { name = system; value = x system; }))
|
||||
builtins.listToAttrs
|
||||
];
|
||||
|
||||
self = {
|
||||
inherit inputs lib self;
|
||||
outPath = selfPath;
|
||||
modifiedNixpkgs = import ./pkgs/top-level/impure.nix;
|
||||
modifiedNixpkgsPure = import ./pkgs/top-level/default.nix;
|
||||
packagesForSystem = system: self.modifiedNixpkgsPure { localSystem = system; };
|
||||
packages = forEachSystem (system: let
|
||||
nixpkgs = import "${inputs.nixpkgs}/pkgs/top-level/default.nix" { localSystem = system; };
|
||||
attrnames = builtins.attrNames nixpkgs;
|
||||
in
|
||||
builtins.removeAttrs (self.pkgsForSystem system) attrnames
|
||||
);
|
||||
overlays = {
|
||||
cosmicPackages = import ./pkgs/overlays/cosmic-packages.nix { inherit inputs; };
|
||||
selfExpr = import ./pkgs/overlays/selfExpr.nix { nixpkgsPath = inputs.nixpkgs; };
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
}:
|
||||
|
||||
{
|
||||
src,
|
||||
script,
|
||||
...
|
||||
} @ args:
|
||||
lib.hiPrio (stdenv.mkDerivation (
|
||||
{
|
||||
src = src;
|
||||
name = if lib.isDerivation src
|
||||
then "${src.name}-script-override"
|
||||
else "${builtins.baseNameOf src}-script-override";
|
||||
phases = [ "installPhase" "scriptOverridePhase" ];
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
cp -r $src $out
|
||||
chmod u+w -R $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
scriptOverridePhase = script;
|
||||
} // lib.removeAttrs args [
|
||||
"src"
|
||||
"script"
|
||||
]
|
||||
))
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
makeWrapper,
|
||||
stdenv
|
||||
}:
|
||||
|
||||
/*
|
||||
pkg: package - nixpkgs package
|
||||
exe: string - executable (under bin) in pkg
|
||||
wrapperArgs: string[] - arguments to pass to the wrapper
|
||||
*/
|
||||
{ pkg, exe ? pkg.meta.mainProgram, wrapperArgs }:
|
||||
lib.hiPrio (stdenv.mkDerivation {
|
||||
inherit wrapperArgs;
|
||||
name = "${pkg.name}-wrap-${exe}";
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
phases = ["installPhase"];
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
makeWrapper ${pkg}/bin/${exe} $out/bin/${exe} $wrapperArgs
|
||||
'';
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue