From be62805cc68033fa7a7c2ad576fffe50b31a100f Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Sun, 9 Feb 2025 08:53:27 +0100 Subject: [PATCH 1/5] ouptuts: create packages set --- outputs.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/outputs.nix b/outputs.nix index cb46fbd..d6b8a54 100644 --- a/outputs.nix +++ b/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; }; From 5c01a58f54e4a4fe5c10cfbbea4289e1ad4a7982 Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Sun, 9 Feb 2025 09:17:51 +0100 Subject: [PATCH 2/5] nixos/{core; nix}: factor out nix overriding --- nix-os/core.nix | 25 ++----------------------- nix-os/nix.nix | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 23 deletions(-) create mode 100644 nix-os/nix.nix diff --git a/nix-os/core.nix b/nix-os/core.nix index 4252607..09c5d4a 100644 --- a/nix-os/core.nix +++ b/nix-os/core.nix @@ -4,28 +4,10 @@ { 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 +19,6 @@ in # Allow unfree packages nixpkgs.config.allowUnfree = true; nix = { - package = wrappedNix; channel.enable = false; settings.experimental-features = [ "no-url-literals" @@ -62,9 +43,7 @@ in fastfetch smartmontools ddrescue - ] ++ wrappedNixExecutables true - ++ wrappedNixosExecutables; - + ]; programs.git.enable = true; programs.git.config = { commit.verbose = true; diff --git a/nix-os/nix.nix b/nix-os/nix.nix new file mode 100644 index 0000000..fe6b00a --- /dev/null +++ b/nix-os/nix.nix @@ -0,0 +1,33 @@ +{ + 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 { + config = { + nix.package = wrappedNix; + environment.systemPackages = lib.map (lib.hiPrio) [ + (wrappedNixExecutables true) + wrappedNixosExecutables + ]; + }; +} From b5e40f0d643721125d2adc45c150fdb88d202d8e Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Sun, 9 Feb 2025 09:18:57 +0100 Subject: [PATCH 3/5] nixos/nix: remove use of mkWrappedExecutable and buildEnv --- nix-os/nix.nix | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/nix-os/nix.nix b/nix-os/nix.nix index fe6b00a..9a7b7c4 100644 --- a/nix-os/nix.nix +++ b/nix-os/nix.nix @@ -5,19 +5,37 @@ }: let - inherit (pkgs) mkWrappedExecutable; - + makeWrapper = "${pkgs.makeWrapper}/nix-support/setup-hook"; # 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 { + 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; + paths = [ pkgs.nix ] ++ [( wrappedNixExecutables false )]; }).overrideAttrs { version = pkgs.nix.version; passthru.meta = pkgs.nix.meta; From e176ea94832dca1b53e93b36a67e456a5ececb53 Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Sun, 9 Feb 2025 09:30:20 +0100 Subject: [PATCH 4/5] pkgs/mk{WrappedExecutable; ScriptOverride}: remove --- pkgs/by-name/mk/mkScriptOverride/package.nix | 31 ------------------- .../mk/mkWrappedExecutable/package.nix | 22 ------------- 2 files changed, 53 deletions(-) delete mode 100644 pkgs/by-name/mk/mkScriptOverride/package.nix delete mode 100644 pkgs/by-name/mk/mkWrappedExecutable/package.nix diff --git a/pkgs/by-name/mk/mkScriptOverride/package.nix b/pkgs/by-name/mk/mkScriptOverride/package.nix deleted file mode 100644 index 0b71a07..0000000 --- a/pkgs/by-name/mk/mkScriptOverride/package.nix +++ /dev/null @@ -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" - ] -)) diff --git a/pkgs/by-name/mk/mkWrappedExecutable/package.nix b/pkgs/by-name/mk/mkWrappedExecutable/package.nix deleted file mode 100644 index 039b6f4..0000000 --- a/pkgs/by-name/mk/mkWrappedExecutable/package.nix +++ /dev/null @@ -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 - ''; -}) From 7828941e12e61d6243858c46f72acf4310a19009 Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Sun, 9 Feb 2025 09:32:01 +0100 Subject: [PATCH 5/5] nixos/core: remove comment and format module args --- nix-os/core.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/nix-os/core.nix b/nix-os/core.nix index 09c5d4a..39ae485 100644 --- a/nix-os/core.nix +++ b/nix-os/core.nix @@ -1,8 +1,9 @@ -# 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, + ... +}: { imports = [