Compare commits

...

3 commits

Author SHA1 Message Date
b576c8e273
Build with LLVM and musl
Some checks failed
nix flake check / check (aarch64-linux) (push) Has been cancelled
nix flake check / check (x86_64-linux) (push) Has been cancelled
2024-11-16 17:31:59 +01:00
a08b1e5238
Use custom Firefox flake
Some checks failed
nix flake check / check (aarch64-linux) (push) Has been cancelled
nix flake check / check (x86_64-linux) (push) Has been cancelled
2024-11-16 17:10:10 +01:00
9c3cdb5691
flake.lock: Update
Some checks are pending
nix flake check / check (aarch64-linux) (push) Waiting to run
nix flake check / check (x86_64-linux) (push) Waiting to run
Flake lock file updates:

• Updated input 'colmena':
    'github:zhaofengli/colmena/a2193487bcf70bbb998ad1a25a4ff02b8d55db7a' (2024-11-10)
  → 'github:zhaofengli/colmena/e3ad42138015fcdf2524518dd564a13145c72ea1' (2024-11-13)
• Updated input 'home-manager':
    'github:nix-community/home-manager/60bb110917844d354f3c18e05450606a435d2d10' (2024-11-10)
  → 'github:nix-community/home-manager/1d0862ee2d7c6f6cd720d6f32213fa425004be10' (2024-11-14)
• Updated input 'linux-hardened':
    'git+https://woof.rip/mikael/linux-hardened.git?ref=refs/heads/main&rev=f5fdee0638f03336c3fe32ddcb692ba1dbe601fa' (2024-11-13)
  → 'git+https://woof.rip/mikael/linux-hardened.git?ref=refs/heads/main&rev=ebcc2dd38146a4c15c6f69d95c3873b429589422' (2024-11-15)
• Updated input 'linux-hardened/nixpkgs':
    'github:NixOS/nixpkgs/aebe249544837ce42588aa4b2e7972222ba12e8f' (2024-11-10)
  → 'github:NixOS/nixpkgs/24f0d4acd634792badd6470134c387a3b039dace' (2024-11-13)
• Updated input 'lix':
    '8a9094303b.tar.gz?narHash=sha256-GoddkPg0/UDv06KcQJiOYP/2IzruYorbI03QRCjN3K8%3D&rev=8a9094303bc7873c979e54ea20b9f50464ee3965' (2024-11-11)
  → '43777939eb.tar.gz?narHash=sha256-1LGkwq9g/BfM0JuZmWPYwBX5RiqIpW/BxXcsLwkVcGg%3D&rev=43777939eb2253596ff822771929a8820916fb29' (2024-11-12)
• Updated input 'niri':
    'github:sodiboo/niri-flake/91097eb0301feecf3079af35dee05653129f98b7' (2024-11-13)
  → 'github:sodiboo/niri-flake/9bd436676472da23fefe06fb07fbb8ff7574a8f3' (2024-11-14)
• Updated input 'niri/niri-unstable':
    'github:YaLTeR/niri/0e5e764c78421dc61c82ca6df630f33e8221005a' (2024-11-12)
  → 'github:YaLTeR/niri/1a0612cbfd0abee0796efa86470226686ae78f21' (2024-11-14)
• Updated input 'niri/nixpkgs-stable':
    'github:NixOS/nixpkgs/9256f7c71a195ebe7a218043d9f93390d49e6884' (2024-11-10)
  → 'github:NixOS/nixpkgs/689fed12a013f56d4c4d3f612489634267d86529' (2024-11-12)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/aebe249544837ce42588aa4b2e7972222ba12e8f' (2024-11-10)
  → 'github:NixOS/nixpkgs/24f0d4acd634792badd6470134c387a3b039dace' (2024-11-13)
• Updated input 'nur':
    'github:nix-community/NUR/4ae1080fdf68e0c54c05860030861a852439223a' (2024-11-13)
  → 'github:nix-community/NUR/40254693c3500191c5a375cb4a42d3f0128f8a09' (2024-11-15)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/2c19bad6e881b5a154cafb7f9106879b5b356d1f' (2024-11-13)
  → 'github:oxalica/rust-overlay/db10c66da18e816030b884388545add8cf096647' (2024-11-15)
2024-11-15 14:24:03 +01:00
15 changed files with 400 additions and 238 deletions

View file

@ -58,11 +58,11 @@
"stable": "stable" "stable": "stable"
}, },
"locked": { "locked": {
"lastModified": 1731249827, "lastModified": 1731527002,
"narHash": "sha256-04iOZoJ0D+y3xhZtaCgSBOz8T4hED7oMVkuAOzXT8vU=", "narHash": "sha256-dI9I6suECoIAmbS4xcrqF8r2pbmed8WWm5LIF1yWPw8=",
"owner": "zhaofengli", "owner": "zhaofengli",
"repo": "colmena", "repo": "colmena",
"rev": "a2193487bcf70bbb998ad1a25a4ff02b8d55db7a", "rev": "e3ad42138015fcdf2524518dd564a13145c72ea1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -101,6 +101,24 @@
"type": "github" "type": "github"
} }
}, },
"firefox": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1731773001,
"narHash": "sha256-/3tpXzkJqSmJObEilZxeL4Mo1GsyNP0q15kIvw6+GEo=",
"ref": "refs/heads/main",
"rev": "bb30e67d1f3e5947d46c86dda2a567d16e9d3f52",
"revCount": 3,
"type": "git",
"url": "https://woof.rip/mikael/firefox.git"
},
"original": {
"type": "git",
"url": "https://woof.rip/mikael/firefox.git"
}
},
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -287,11 +305,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1731235328, "lastModified": 1731604581,
"narHash": "sha256-NjavpgE9/bMe/ABvZpyHIUeYF1mqR5lhaep3wB79ucs=", "narHash": "sha256-Qq2YZZaDTB3FZLWU/Hgh1uuWlUBl3cMLGB99bm7rFUM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "60bb110917844d354f3c18e05450606a435d2d10", "rev": "1d0862ee2d7c6f6cd720d6f32213fa425004be10",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -329,14 +347,14 @@
}, },
"linux-hardened": { "linux-hardened": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1731517078, "lastModified": 1731676971,
"narHash": "sha256-stbSazpb7K7EOtpkYBnXEMWSJFwkQhcsgTdBA4J4Xbs=", "narHash": "sha256-y+WFpBqDlcQN33mDIupZP75AgtgQGrcaAz4zIRsuH6U=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "f5fdee0638f03336c3fe32ddcb692ba1dbe601fa", "rev": "ebcc2dd38146a4c15c6f69d95c3873b429589422",
"revCount": 14, "revCount": 17,
"type": "git", "type": "git",
"url": "https://woof.rip/mikael/linux-hardened.git" "url": "https://woof.rip/mikael/linux-hardened.git"
}, },
@ -348,11 +366,11 @@
"lix": { "lix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1731334117, "lastModified": 1731416517,
"narHash": "sha256-GoddkPg0/UDv06KcQJiOYP/2IzruYorbI03QRCjN3K8=", "narHash": "sha256-1LGkwq9g/BfM0JuZmWPYwBX5RiqIpW/BxXcsLwkVcGg=",
"rev": "8a9094303bc7873c979e54ea20b9f50464ee3965", "rev": "43777939eb2253596ff822771929a8820916fb29",
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/8a9094303bc7873c979e54ea20b9f50464ee3965.tar.gz?rev=8a9094303bc7873c979e54ea20b9f50464ee3965" "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/43777939eb2253596ff822771929a8820916fb29.tar.gz?rev=43777939eb2253596ff822771929a8820916fb29"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
@ -394,11 +412,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable" "xwayland-satellite-unstable": "xwayland-satellite-unstable"
}, },
"locked": { "locked": {
"lastModified": 1731493674, "lastModified": 1731577605,
"narHash": "sha256-J01wasU1Bkyh5u7gD5Uo+H3EK56NY5PxNsXsbgYBpM0=", "narHash": "sha256-gT7+CbsPtNQXHL32Z4fUZinlVWZSgW87qFty9HMsFN4=",
"owner": "sodiboo", "owner": "sodiboo",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "91097eb0301feecf3079af35dee05653129f98b7", "rev": "9bd436676472da23fefe06fb07fbb8ff7574a8f3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -427,11 +445,11 @@
"niri-unstable": { "niri-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1731437040, "lastModified": 1731575130,
"narHash": "sha256-9CnE02lvO5p5JryrxEgin1mZhv6LbnJSg6Or7dNezRI=", "narHash": "sha256-V+bIsYXshtdMv7Ycw1Y/xVfKdWVywXuqHHII7FgV6dg=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "0e5e764c78421dc61c82ca6df630f33e8221005a", "rev": "1a0612cbfd0abee0796efa86470226686ae78f21",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -498,11 +516,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1731245184, "lastModified": 1731531548,
"narHash": "sha256-vmLS8+x+gHRv1yzj3n+GTAEObwmhxmkkukB2DwtJRdU=", "narHash": "sha256-sz8/v17enkYmfpgeeuyzniGJU0QQBfmAjlemAUYhfy8=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "aebe249544837ce42588aa4b2e7972222ba12e8f", "rev": "24f0d4acd634792badd6470134c387a3b039dace",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -530,11 +548,11 @@
}, },
"nixpkgs-stable_2": { "nixpkgs-stable_2": {
"locked": { "locked": {
"lastModified": 1731239293, "lastModified": 1731386116,
"narHash": "sha256-q2yjIWFFcTzp5REWQUOU9L6kHdCDmFDpqeix86SOvDc=", "narHash": "sha256-lKA770aUmjPHdTaJWnP3yQ9OI1TigenUqVC3wweqZuI=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9256f7c71a195ebe7a218043d9f93390d49e6884", "rev": "689fed12a013f56d4c4d3f612489634267d86529",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -562,11 +580,27 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1731245184, "lastModified": 1731531548,
"narHash": "sha256-vmLS8+x+gHRv1yzj3n+GTAEObwmhxmkkukB2DwtJRdU=", "narHash": "sha256-sz8/v17enkYmfpgeeuyzniGJU0QQBfmAjlemAUYhfy8=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "aebe249544837ce42588aa4b2e7972222ba12e8f", "rev": "24f0d4acd634792badd6470134c387a3b039dace",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1731531548,
"narHash": "sha256-sz8/v17enkYmfpgeeuyzniGJU0QQBfmAjlemAUYhfy8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "24f0d4acd634792badd6470134c387a3b039dace",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -578,11 +612,11 @@
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1731515340, "lastModified": 1731667778,
"narHash": "sha256-GE/kuwXQhmUynUPdRbWp3ccuqfFshF6oLMg7TGXgl+8=", "narHash": "sha256-YGoAGx65+ZB/v/PlBDLF6lefXH2hsirQ/TqXnV/yBIU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "4ae1080fdf68e0c54c05860030861a852439223a", "rev": "40254693c3500191c5a375cb4a42d3f0128f8a09",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -674,6 +708,7 @@
"catppuccin": "catppuccin", "catppuccin": "catppuccin",
"catppuccin-palette": "catppuccin-palette", "catppuccin-palette": "catppuccin-palette",
"colmena": "colmena", "colmena": "colmena",
"firefox": "firefox",
"home-manager": "home-manager", "home-manager": "home-manager",
"lanzaboote": "lanzaboote", "lanzaboote": "lanzaboote",
"linux-hardened": "linux-hardened", "linux-hardened": "linux-hardened",
@ -682,7 +717,7 @@
"niri": "niri", "niri": "niri",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_3",
"nur": "nur", "nur": "nur",
"ripgrep-all": "ripgrep-all", "ripgrep-all": "ripgrep-all",
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
@ -695,11 +730,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1731464916, "lastModified": 1731637922,
"narHash": "sha256-WZ5rpjr/wCt7yBOUsvDE2i22hYz9g8W921jlwVktRQ4=", "narHash": "sha256-6iuzRINXyPX4DfUQZIGafpJnzjFXjVRYMymB10/jFFY=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "2c19bad6e881b5a154cafb7f9106879b5b356d1f", "rev": "db10c66da18e816030b884388545add8cf096647",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -40,6 +40,7 @@
}; };
linux-hardened.url = "git+https://woof.rip/mikael/linux-hardened.git"; linux-hardened.url = "git+https://woof.rip/mikael/linux-hardened.git";
firefox.url = "git+https://woof.rip/mikael/firefox.git";
nix-index-database = { nix-index-database = {
url = "github:illdefined/nix-index-database"; url = "github:illdefined/nix-index-database";
@ -101,12 +102,25 @@
}; };
overlays = load ./overlay "overlay"; overlays = load ./overlay "overlay";
legacyPackages = eachSystem (system: platform: legacyPackages = eachSystem (system: platform: let
import nixpkgs { pkgs = import nixpkgs {
localSystem = builtins.currentSystem or platform; localSystem = {
inherit (platform) config;
};
crossSystem = platform; crossSystem = platform;
overlays = [ self.overlays.default ]; overlays = [ self.overlays.default ];
config.allowUnsupportedSystem = true; config = {
allowBroken = true;
allowUnsupportedSystem = true;
};
};
in pkgs // {
config = pkgs.config // {
replaceStdenv = { pkgs }: self.lib.stdenv pkgs pkgs.stdenv;
/*replaceCrossStdenv = { buildPackages, baseStdenv }:
self.lib.stdenv self.legacyPackages.${system} baseStdenv;*/
};
}); });
packages = eachSystem (system: platform: packages = eachSystem (system: platform:
@ -128,6 +142,15 @@
targetHost = config.networking.fqdnOrHostName; targetHost = config.networking.fqdnOrHostName;
targetUser = null; targetUser = null;
}; };
nixpkgs = let
platform = self.lib.platforms.x86_64-linux;
in {
buildPlatform = {
inherit (platform) config;
};
hostPlatform = platform;
};
}; };
}; };

View file

@ -1,4 +1,4 @@
{ ... }: { config, lib, pkgs, ... }@args: { firefox, ... }: { config, lib, pkgs, ... }@args:
let let
osConfig = args.osConfig or { }; osConfig = args.osConfig or { };
@ -12,7 +12,7 @@ let
in lib.mkIf (osConfig.hardware.graphics.enable or false) { in lib.mkIf (osConfig.hardware.graphics.enable or false) {
programs.firefox = { programs.firefox = {
enable = true; enable = true;
package = pkgs.firefox; package = firefox.packages.${pkgs.system}.firefox;
profiles = let profiles = let
extensions = with config.nur.repos.rycee.firefox-addons; [ extensions = with config.nur.repos.rycee.firefox-addons; [
clearurls clearurls
@ -30,16 +30,6 @@ in lib.mkIf (osConfig.hardware.graphics.enable or false) {
"intl.accept_languages" = "en-gb,en,de,fr,es-es,es,pt,ja"; "intl.accept_languages" = "en-gb,en,de,fr,es-es,es,pt,ja";
"intl.locale.requested" = "en-GB,en,de,fr,es-ES,es,pt,ja"; "intl.locale.requested" = "en-GB,en,de,fr,es-ES,es,pt,ja";
# use OS resolver
"network.trr.mode" = 5;
# force HTTPS
"dom.security.https_only_mode" = true;
"dom.security.https_only_mode_ever_enabled" = true;
# enable EME
"media.eme.enabled" = true;
# founts # founts
"font.default.x-unicode" = "sans-serif"; "font.default.x-unicode" = "sans-serif";
"font.default.x-western" = "sans-serif"; "font.default.x-western" = "sans-serif";
@ -49,87 +39,7 @@ in lib.mkIf (osConfig.hardware.graphics.enable or false) {
"font.name.monospace.x-western" = "Fira Code"; "font.name.monospace.x-western" = "Fira Code";
# hardware acceleration # hardware acceleration
"gfx.webrender.all" = true;
"layers.acceleration.force-enabled" = true; "layers.acceleration.force-enabled" = true;
"media.ffmpeg.vaapi.enabled" = true;
# always ask for download location
"browser.download.useDownloadDir" = false;
# disable firefox tab
"browser.tabs.firefox-view" = false;
# disable firefox intro tab
"browser.startup.homepage_override.mstone" = "ignore";
# disable default browser check
"browser.shell.checkDefaultBrowser" = false;
# private containor for new tab page thumbnails
"privacy.usercontext.about_newtab_segregation.enabled" = true;
# disable Beacons API
"beacon.enabled" = false;
# disable pings
"browser.send_pings" = false;
# strip query parameters
"privacy.query_stripping" = true;
# disable access to device sensors
"device.sensors.enabled" = false;
"dom.battery.enabled" = false;
# disable media autoplay
"media.autoplay.enabled" = false;
# block thirdparty cookies
"network.cookie.cookieBehavior" = 1;
# spoof referrer header
"network.http.referer.spoofSource" = true;
# isolate all browser identifier sources
"privacy.firstparty.isolate" = true;
# resist fingerprinting
#"privacy.resistFingerprinting" = true;
# enable builtin tracking protection
"privacy.trackingprotection.enabled" = true;
"privacy.trackingprotection.emailtracking.enabled" = true;
"privacy.trackingprotection.socialtracking.enabled" = true;
# disable data sharing
"app.normandy.enabled" = false;
"app.shield.optoutstudies.enabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
# disable safebrowsing
"browser.safebrowsing.downloads.enabled" = false;
"browser.safebrowsing.malware.enabled" = false;
"browser.safebrowsing.phishing.enabled" = false;
# disable firefox account
"identity.fxaccounts.enabled" = false;
# disable sponsored items
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.enhanced" = false;
# disable Pocket
"extensions.pocket.enabled" = false;
# disable crash reporting
"browser.tabs.crashReporting.sendReport" = false;
"breakpad.reportURL" = "";
# disable accessibility services
"accessibility.force_disabled" = true;
# disable password autofill
"signon.autofillForms" = false;
# enable user profile customisation # enable user profile customisation
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; "toolkit.legacyUserProfileCustomizations.stylesheets" = true;

View file

@ -11,7 +11,6 @@ in {
imports = [ imports = [
nur.hmModules.nur nur.hmModules.nur
self.homeModules.greedy self.homeModules.greedy
self.homeModules.locale-en_EU
catppuccin.homeManagerModules.catppuccin catppuccin.homeManagerModules.catppuccin
niri.homeModules.config niri.homeModules.config
] ++ self.lib.mods [ ] ++ self.lib.mods [
@ -212,7 +211,7 @@ in {
enable = true; enable = true;
envFile.text = let envFile.text = let
ls-colours = pkgs.runCommand "ls-colours" { } '' ls-colours = pkgs.runCommand "ls-colours" { } ''
${lib.getExe pkgs.vivid} generate catppuccin-mocha >$out ${lib.getExe pkgs.buildPackages.vivid} generate catppuccin-mocha >$out
'' |> builtins.readFile; '' |> builtins.readFile;
in '' in ''
load-env { load-env {

View file

@ -33,7 +33,7 @@ in lib.mkIf (osConfig.hardware.graphics.enable or false) {
}; };
services.mopidy = { services.mopidy = {
enable = true; # enable = true;
extensionPackages = with pkgs; [ extensionPackages = with pkgs; [
mopidy-iris mopidy-iris
mopidy-local mopidy-local

View file

@ -1,10 +1,10 @@
{ ... }: { config, lib, pkgs, ... }@args: { firefox, ... }: { config, lib, pkgs, ... }@args:
let let
osConfig = args.osConfig or { }; osConfig = args.osConfig or { };
in lib.mkIf (osConfig.hardware.graphics.enable or false) { in lib.mkIf (osConfig.hardware.graphics.enable or false) {
programs.thunderbird = { programs.thunderbird = {
enable = true; enable = true;
package = pkgs.thunderbird; package = firefox.packages.${pkgs.system}.thunderbird;
profiles = { }; profiles = { };
}; };
} }

View file

@ -4,13 +4,25 @@ let inherit (nixpkgs) lib;
in lib.mapAttrs (system: platform: lib.systems.elaborate platform) { in lib.mapAttrs (system: platform: lib.systems.elaborate platform) {
"x86_64-linux" = { "x86_64-linux" = {
system = "x86_64-linux"; system = "x86_64-linux";
config = "x86_64-unknown-linux-musl";
useLLVM = true;
linker = "lld";
gcc.arch = "x86-64-v3";
}; };
"aarch64-linux" = { "aarch64-linux" = {
system = "aarch64-linux"; system = "aarch64-linux";
config = "aarch64-unknown-linux-musl";
useLLVM = true;
linker = "lld";
gcc.arch = "armv8-a";
}; };
"riscv64-linux" = { "riscv64-linux" = {
system = "riscv64-linux"; system = "riscv64-linux";
config = "riscv64-unknown-linux-gnu";
useLLVM = true;
linker = "lld";
gcc.arch = "rv64imacfd";
}; };
} }

56
lib/stdenv.nix Normal file
View file

@ -0,0 +1,56 @@
{ ... }: pkgs: stdenv:
let
inherit (lib) optionalAttrs optionals toList;
inherit (pkgs) lib;
inherit (stdenv) targetPlatform;
in pkgs.addAttrsToDerivation (prevAttrs: let
overrideAlloc = prevAttrs.overrideAlloc or true;
inputs = optionals overrideAlloc [ pkgs.mimalloc ];
cflagsE = [ "-flto" ];
cflagsC = [ "-pipe" ];
cflagsL = [ /*"-fuse-ld=lld"*/ ];
ldflags = [
"-O2"
"--hash-style=gnu"
/*"--icf=safe"
"--lto-O2"*/
] ++ optionals overrideAlloc [ "-lmimalloc" ];
rustflags = [
"-C" "opt-level=2"
"-C" "linker-flavor=ld.lld"
"-C" "lto"
"-C" "linker-plugin-lto"
] ++ optionals (targetPlatform.isx86_64 && targetPlatform ? gcc.arch) [
"-C" "target-cpu=${targetPlatform.gcc.arch}"
] ++ (map (flag: [ "-C" "link-arg=${flag}" ]) ldflags |> lib.flatten);
goflags = [ "-ldflags=-linkmode=external" ];
in {
buildInputs = prevAttrs.buildInputs or [ ] ++ inputs;
env = prevAttrs.env or { } // optionalAttrs (!prevAttrs ? CFLAGS) {
CFLAGS = toList prevAttrs.CFLAGS or [ ] ++ cflagsE |> toString;
} // optionalAttrs (!prevAttrs ? NIX_CFLAGS_COMPILE) {
NIX_CFLAGS_COMPILE = toList prevAttrs.env.NIX_CFLAGS_COMPILE or [ ] ++ cflagsC |> toString;
} // optionalAttrs (!prevAttrs ? NIX_CFLAGS_LINK) {
NIX_CFLAGS_LINK = toList prevAttrs.env.NIX_CFLAGS_LINK or [ ] ++ cflagsL |> toString;
} // optionalAttrs (prevAttrs ? env.NIX_LDFLAGS) {
NIX_LDFLAGS = toList prevAttrs.NIX_LDFLAGS or [ ] ++ ldflags |> toString;
};
NIX_RUSTFLAGS = prevAttrs.NIX_RUSTFLAGS or [ ] ++ rustflags;
GOFLAGS = prevAttrs.GOFLAGS or [ ] ++ goflags;
} // optionalAttrs (prevAttrs ? CFLAGS) {
CFLAGS = toList prevAttrs.CFLAGS or [ ] ++ cflagsE;
} // optionalAttrs (prevAttrs ? NIX_CFLAGS_COMPILE) {
NIX_CFLAGS_COMPILE = toList prevAttrs.NIX_CFLAGS_COMPILE or [ ] ++ cflagsC;
} // optionalAttrs (prevAttrs ? NIX_CFLAGS_LINK) {
NIX_CFLAGS_LINK = toList prevAttrs.NIX_CFLAGS_LINK or [ ] ++ cflagsL;
} // optionalAttrs (!prevAttrs ? env.NIX_LDFLAGS) {
NIX_LDFLAGS = toList prevAttrs.NIX_LDFLAGS or [ ] ++ ldflags;
}) stdenv

26
nixos/config/soy.nix Normal file
View file

@ -0,0 +1,26 @@
{ self, nixos-hardware, ... }: { lib, config, pkgs, ... }: {
imports = with self.nixosModules; [
default
mimalloc
physical
graphical
wireless
];
boot = {
binfmt = {
emulatedSystems = [ "aarch64-linux" "x86_64-linux" ];
preferStaticEmulators = true;
};
};
nixpkgs = {
hostPlatform = {
system = "riscv64-linux";
config = "riscv64-unknown-linux-musl";
gcc.arch = "rv64imafdc";
useLLVM = true;
linker = "lld";
};
};
}

View file

@ -10,7 +10,7 @@
ephemeral ephemeral
iosched iosched
kernel kernel
locale-en_EU musl
network network
nix nix
openssh openssh

24
nixos/module/musl.nix Normal file
View file

@ -0,0 +1,24 @@
{ ...}: { modulesPath, config, lib, pkgs, ... }: {
disabledModules = [
(modulesPath + "/config/ldso.nix")
(modulesPath + "/config/stub-ld.nix")
(modulesPath + "/programs/nix-ld.nix")
];
config = lib.mkIf pkgs.hostPlatform.isMusl {
i18n.glibcLocales = pkgs.stdenvNoCC.mkDerivation {
pname = "locale-archive-stub";
version = "0";
buildCommand = ''
mkdir -p "$out/lib/locale"
touch "$out/lib/locale/locale-archive"
'';
} |> lib.mkDefault;
i18n.supportedLocales = lib.mkDefault [ ];
security.pam.services.login.updateWtmp = lib.mkForce false;
services.nscd.enable = lib.mkForce false;
system.nssModules = lib.mkForce [ ];
};
}

1
nixos/result Symbolic link
View file

@ -0,0 +1 @@
/nix/store/y9c8a19hbfqpfinhnd5d5hr1833wjy77-nixos-system-muon-24.11pre-git

View file

@ -1,9 +1,112 @@
{ nixpkgs, ... }: final: prev: { self, nixpkgs, ... }: final: prev:
let let
inherit (nixpkgs) lib; inherit (nixpkgs) lib;
inherit (lib) toList; inherit (lib) toList;
inherit (prev.stdenv) hostPlatform; inherit (prev.stdenv) buildPlatform hostPlatform;
inherit (self.lib) removePackages;
prev' = prev;
final' = final;
in { in {
gst_all_1 = prev.gst_all_1 // {
gst-plugins-bad = prev.gst_all_1.gst-plugins-bad.overrideAttrs (prevAttrs: {
buildInputs = prevAttrs.buildInputs or [ ] |> removePackages [ "libajantv2" ];
});
};
perlPackages = prev.perlPackages.overrideScope (final: prev: {
DBI = prev.DBI.overrideAttrs (prevAttrs: {
nativeBuildInputs = prevAttrs.nativeBuildInputs or [ ] ++ [
final'.stdenv.cc
final'.stdenv.cc.binutils
];
makeMakerFlags = prevAttrs.makeMakerFlags or [ ] ++ [
"CC=${final'.stdenv.cc.targetPrefix}cc"
"LD=${final'.stdenv.cc.targetPrefix}cc"
"CCFLAGS=-Doff64_t=off_t"
];
});
});
bind = prev.bind.overrideAttrs (prevAttrs: {
buildInputs = prevAttrs.buildInputs or [ ] |> removePackages [ "jemalloc" ];
});
diffutils = prev.diffutils.overrideAttrs (prevAttrs: {
configureFlags = prevAttrs.configureFlags or [ ] ++ [ "--disable-nls" ];
postPatch = ''
sed -E -i 's/test-getopt-(gnu|posix)//g' gnulib-tests/Makefile.in
'';
});
gnu-efi = prev.gnu-efi.overrideAttrs (prevAttrs: {
nativeBuildInputs = prevAttrs.nativeBuildInputs or [ ] ++ [ final.buildPackages.binutils ];
makeFlags = prevAttrs.makeFlags or [ ] ++ [ "CC=${final.stdenv.cc.targetPrefix}cc" ];
});
gsm = prev.gsm.overrideAttrs (prevAttrs: {
makeFlags = prevAttrs.makeFlags or [ ] ++ [ "CC=${final.stdenv.cc.targetPrefix}cc" ];
});
keyutils = prev.keyutils.overrideAttrs (prevAttrs: {
NIX_LDFLAGS = toList prevAttrs.NIX_LDFLAGS or [ ] ++ [ "--undefined-version" ];
});
kexec-tools = prev.kexec-tools.override { stdenv = final.gccStdenv; };
level-zero = prev.level-zero.overrideAttrs (prevAttrs: {
cmakeFlags = prevAttrs.cmakeFlags or [ ] ++ [ "-DCMAKE_CXX_FLAGS=-Wno-error=deprecated" ];
});
libcdio = prev.libcdio.overrideAttrs (prevAttrs: {
nativeBuildInputs = prevAttrs.nativeBuildInputs or [ ] ++ [ final.buildPackages.binutils ];
});
libjpeg = prev.libjpeg.overrideAttrs (prevAttrs: {
cmakeFlags = prevAttrs.cmakeFlags or [ ] ++ [ "-DFLOATTEST12=fp-contract" ];
});
liboping = prev.liboping.overrideAttrs (prevAttrs: {
configureFlags = prevAttrs.configureFlags or [ ] ++ [
"ac_cv_func_malloc_0_nonnull=yes"
"ac_cv_func_realloc_0_nonnull=yes"
];
});
libselinux = prev.libselinux.override { enablePython = false; };
liburing = prev.liburing.overrideAttrs (finalAttrs: prevAttrs: {
version = "2.8";
src = final.fetchFromGitHub {
owner = "axboe";
repo = "liburing";
rev = "refs/tags/liburing-${finalAttrs.version}";
hash = "sha256-10zmoMDzO41oNRVXE/6FzDGPVRVJTJTARVUmc1b7f+o=";
};
});
llvmPackages = prev.llvmPackages // {
libcxx = prev.llvmPackages.libcxx.override {
devExtraCmakeFlags = [ "-DLIBCXX_HAS_MUSL_LIBC=1" ];
};
};
lua = prev.lua.overrideAttrs (prevAttrs: {
env = prevAttrs.env or { } // { LD = "${final.stdenv.cc.targetPrefix}ld"; };
makeFlags = prevAttrs.makeFlags or [ ] ++ [ "LD=${final.stdenv.cc.targetPrefix}ld" ];
});
netbsd = prev.netbsd.overrideScope (final: prev: {
compatIfNeeded = [ final.compat ];
compat = prev.compat.overrideAttrs (prevAttrs: {
makeFlags = prevAttrs.makeFlags ++ [ "OBJCOPY=:" ];
});
});
numactl = prev.numactl.overrideAttrs (prevAttrs: { numactl = prev.numactl.overrideAttrs (prevAttrs: {
patches = prevAttrs.patches or [ ] ++ [ patches = prevAttrs.patches or [ ] ++ [
(final.fetchpatch { (final.fetchpatch {
@ -13,18 +116,59 @@ in {
]; ];
}); });
redis = prev.redis.overrideAttrs { python3 = (prev.python3.overrideAttrs (prevAttrs: {
doCheck = false; env = prevAttrs.env or { } // {
LD = "${final.stdenv.cc.bintools}/bin/${final.stdenv.cc.targetPrefix}ld";
}; };
python312 = prev.python312.override { configureFlags = prevAttrs.configureFlags or [ ] ++ [
"LD=${final.stdenv.cc.bintools}/bin/${final.stdenv.cc.targetPrefix}ld"
];
postFixup = prevAttrs.postFixup + ''
cat <<EOF >>"$out/nix-support/setup-hook"
setuptoolsDistutilsHook() {
export SETUPTOOLS_USE_DISTUTILS="stdlib"
}
addEnvHooks "\$hostOffset" setuptoolsDistutilsHook
EOF
'';
})).override {
packageOverrides = final: prev: { packageOverrides = final: prev: {
pywebview = prev.pywebview.overrideAttrs ({ defusedxml = prev.defusedxml.overrideAttrs {
doCheck = false; doCheck = false;
doInstallCheck = false; doInstallCheck = false;
};
html5-parser = prev.html5-parser.overrideAttrs (prevAttrs: {
env = prevAttrs.env or { } // {
LD = "${final.stdenv.cc.targetPrefix}cc";
};
}); });
netifaces = prev.netifaces.overrideAttrs (prevAttrs: {
env = prevAttrs.env or { } // {
NIX_CFLAGS_COMPILE = toList prevAttrs.env.NIX_CFLAGS_COMPILE or [ ] ++ [
"-Wno-error=int-conversion"
] |> toString;
};
});
pycparser = prev.pycparser.overrideAttrs {
doCheck = false;
doInstallCheck = false;
}; };
}; };
};
python3Packages = final.python3.pkgs;
redis = prev.redis.overrideAttrs { doCheck = false; };
sane-backends = prev.sane-backends.overrideAttrs (prevAttrs: {
buildInputs = prevAttrs.buildInputs or [ ] |> removePackages [ "net-snmp" ];
});
sioyek = prev.sioyek.overrideAttrs (prevAttrs: { sioyek = prev.sioyek.overrideAttrs (prevAttrs: {
env = prevAttrs.env or { } // { env = prevAttrs.env or { } // {
@ -33,10 +177,28 @@ in {
}; };
}); });
soundtouch = prev.soundtouch.overrideAttrs (prevAttrs: {
nativeBuildInputs = prevAttrs.nativeBuildInputs or [ ] ++ [ final.binutils ];
});
time = prev.time.overrideAttrs (prevAttrs: {
env = prevAttrs.env or { } // {
CFLAGS = toList prevAttrs.env.CFLAGS or [ ] ++ [
"-Wno-error=implicit-function-declaration"
] |> toString;
};
});
usrsctp = prev.usrsctp.overrideAttrs (prevAttrs: {
cmakeFlags = prevAttrs.cmakeFlags or [ ] ++ [ "-Dsctp_werror=0" ];
});
zeromq = prev.zeromq.overrideAttrs (prevAttrs: { zeromq = prev.zeromq.overrideAttrs (prevAttrs: {
postPatch = prevAttrs.postPatch or "" + '' postPatch = prevAttrs.postPatch or "" + ''
substituteInPlace CMakeLists.txt \ substituteInPlace CMakeLists.txt \
--replace-fail 'CACHELINE_SIZE EQUAL "undefined"' 'CACHELINE_SIZE STREQUAL "undefined"' --replace-fail 'CACHELINE_SIZE EQUAL "undefined"' 'CACHELINE_SIZE STREQUAL "undefined"'
''; '';
}); });
zlib = prev.zlib.override { splitStaticOutput = false; };
} }

View file

@ -4,6 +4,7 @@ let
inherit (nixpkgs) lib; inherit (nixpkgs) lib;
in { in {
mimalloc = (prev.mimalloc.overrideAttrs (prevAttrs: { mimalloc = (prev.mimalloc.overrideAttrs (prevAttrs: {
overrideAlloc = false;
postPatch = prevAttrs.postPatch or "" + '' postPatch = prevAttrs.postPatch or "" + ''
sed -E -i \ sed -E -i \
-e 's/(\{ )1(, UNINIT, MI_OPTION_LEGACY\(purge_decommits,reset_decommits\) \})/\10\2/' \ -e 's/(\{ )1(, UNINIT, MI_OPTION_LEGACY\(purge_decommits,reset_decommits\) \})/\10\2/' \
@ -15,28 +16,8 @@ in {
secureBuild = true; secureBuild = true;
}; };
firefox = (final.wrapFirefox final.firefox-unwrapped { }).overrideAttrs (prevAttrs: {
buildCommand = prevAttrs.buildCommand + ''
sed -i \
'$i export MIMALLOC_RESERVE_HUGE_OS_PAGES=2' \
"$out/bin/firefox"
'';
});
thunderbird = (final.wrapThunderbird final.thunderbird-unwrapped { }).overrideAttrs (prevAttrs: {
buildCommand = prevAttrs.buildCommand + ''
sed -i \
'$i export MIMALLOC_RESERVE_HUGE_OS_PAGES=2' \
"$out/bin/thunderbird"
'';
});
fractal = prev.fractal.overrideAttrs (prevAttrs: { fractal = prev.fractal.overrideAttrs (prevAttrs: {
nativeBuildInputs = prevAttrs.nativeBuildInputs or [ ] ++ [ final.makeBinaryWrapper ]; nativeBuildInputs = prevAttrs.nativeBuildInputs or [ ] ++ [ final.makeBinaryWrapper ];
buildInputs = prevAttrs.buildInputs or [ ] ++ [ final.mimalloc ];
NIX_RUSTFLAGS = lib.toList prevAttrs.NIX_RUSTFLAGS or [ ] ++ [ "-C" "link-arg=-lmimalloc" ];
postInstall = prevAttrs.postInstall or "" + '' postInstall = prevAttrs.postInstall or "" + ''
wrapProgram "$out/bin/fractal" \ wrapProgram "$out/bin/fractal" \
--set MIMALLOC_RESERVE_HUGE_OS_PAGES 1 --set MIMALLOC_RESERVE_HUGE_OS_PAGES 1
@ -47,47 +28,8 @@ in {
mpv = final.mpv-unwrapped; mpv = final.mpv-unwrapped;
extraMakeWrapperArgs = [ "--set" "MIMALLOC_RESERVE_HUGE_OS_PAGES" "1" ]; extraMakeWrapperArgs = [ "--set" "MIMALLOC_RESERVE_HUGE_OS_PAGES" "1" ];
}; };
} // lib.genAttrs [
"bat"
"bottom"
"cryptsetup"
"dbus-broker"
"erlang"
"fd"
"firefox-unwrapped"
"fuzzel"
"helix"
"kitty"
"mako"
"mpv-unwrapped"
"niri"
"nix"
"nushell"
"openssh"
"pipewire"
"pueue"
"ripgrep"
"sd"
"sioyek"
"sudo-rs"
"systemd"
"swayidle"
"swaylock"
"swaylock-effects"
"thunderbird-unwrapped"
"uutils-coreutils"
"uutils-coreutils-noprefix"
"waybar"
"wirepluber"
"xdg-desktop-portal-gnome"
"xdg-desktop-portal-gtk"
] (pkg: prev.${pkg}.overrideAttrs (prevAttrs: {
buildInputs = prevAttrs.buildInputs or [ ] ++ [ final.mimalloc ];
env = prevAttrs.env or { } // lib.optionalAttrs (prevAttrs ? env.NIX_LDFLAGS) {
NIX_LDFLAGS = toString (lib.toList prevAttrs.env.NIX_LDFLAGS or [ ] ++ [ "-lmimalloc" ]);
};
NIX_RUSTFLAGS = lib.toList prevAttrs.NIX_RUSTFLAGS or [ ] ++ [ "-C" "link-arg=-lmimalloc" ]; perl = prev.perl.overrideAttrs {
} // lib.optionalAttrs (!prevAttrs ? env.NIX_LDFLAGS) { overrideAlloc = false;
NIX_LDFLAGS = lib.toList prevAttrs.NIX_LDFLAGS or [ ] ++ [ "-lmimalloc" ]; };
})) }

View file

@ -91,23 +91,6 @@ in genAttrs [
withSsh = false; withSsh = false;
}; };
firefox-unwrapped = (prev.firefox-unwrapped.overrideAttrs (prevAttrs: {
buildInputs = prevAttrs.buildInputs or [ ]
++ [ final.alsa-lib ];
configureFlags = prevAttrs.configureFlags or [ ]
|> substituteFlags {
"--enable-default-toolkit=.*" = "--enable-default-toolkit=cairo-gtk3-wayland-only";
};
})).override {
alsaSupport = false;
gssSupport = false;
jemallocSupport = false;
sndioSupport = false;
};
firefox = final.wrapFirefox final.firefox-unwrapped { };
gammastep = prev.gammastep.override { gammastep = prev.gammastep.override {
withRandr = false; withRandr = false;
}; };
@ -344,17 +327,6 @@ in genAttrs [
withIptables = false; withIptables = false;
}; };
thunderbird-unwrapped = (prev.thunderbird-unwrapped.overrideAttrs (prevAttrs: {
configureFlags = prevAttrs.configureFlags or [ ]
|> substituteFlags {
"--enable-default-toolkit=.*" = "--enable-default-toolkit=cairo-gtk3-wayland-only";
};
})).override {
jemallocSupport = false;
};
thunderbird = final.wrapThunderbird final.thunderbird-unwrapped { };
w3m = prev.w3m.override { w3m = prev.w3m.override {
x11Support = false; x11Support = false;
imlib2 = final.imlib2; imlib2 = final.imlib2;