diff --git a/flake.lock b/flake.lock index ab7e6a327..ffbc8c9dc 100644 --- a/flake.lock +++ b/flake.lock @@ -1,30 +1,12 @@ { "nodes": { - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, - "locked": { - "lastModified": 1763759067, - "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1763934636, - "narHash": "sha256-9glbI7f1uU+yzQCq5LwLgdZqx6svOhZWkd4JRY265fc=", + "lastModified": 1784494590, + "narHash": "sha256-Gn7vGw9aIyoJy7GkNbsHXvSkvXeNLoP9ZiK1RtS/0M8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ee09932cedcef15aaf476f9343d1dea2cb77e261", + "rev": "472e4428b5aee60be7ac35c03662ebb36c901edd", "type": "github" }, "original": { @@ -34,24 +16,8 @@ "type": "github" } }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1761765539, - "narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "719359f4562934ae99f5443f20aa06c2ffff91fc", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, "root": { "inputs": { - "flake-parts": "flake-parts", "nixpkgs": "nixpkgs", "rust-overlay": "rust-overlay" } @@ -63,11 +29,11 @@ ] }, "locked": { - "lastModified": 1784611586, - "narHash": "sha256-OfqgY+0hp/zseZB7uyH0U8kIDPS4scZZCyAurEplvG0=", + "lastModified": 1784526465, + "narHash": "sha256-L37teKC6oINWG4PGZLIqbphMWvSQ0PEz+aWxAk+rIDw=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "14f58845249f3552a89b07772626b8d3c632fa86", + "rev": "58c6334db52d51fc5dd8877c90b01f00cf8a696b", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 27a262db1..7ff148ccf 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,6 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - flake-parts.url = "github:hercules-ci/flake-parts"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; @@ -11,193 +10,167 @@ }; outputs = - inputs@{ + { nixpkgs, - flake-parts, rust-overlay, ... }: - flake-parts.lib.mkFlake { inherit inputs; } ( - top@{ - config, - withSystem, - moduleWithSystem, - ... - }: - { - systems = [ - "i686-linux" - "x86_64-linux" - "aarch64-linux" - "x86_64-darwin" - "aarch64-darwin" - ]; - perSystem = - { - system, - lib, - inputs', - ... - }: + let + systems = [ + "i686-linux" + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + + overlays = [ rust-overlay.overlays.default ]; + + pkgsFor = + system: + import nixpkgs { + inherit system overlays; + }; + + forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f (pkgsFor system)); + in + { + formatter = forAllSystems (pkgs: pkgs.nixfmt-tree); + + # TODO: Create Redox OS Image as package + # TODO: No cross-compile for now, as there is no pkgsCross.aarch64-unknown-redox and so on + # TODO: Get rid of make env step: package custom libtool and setup rust toolchain properly + devShells = forAllSystems (pkgs: { + # Podman config taken from https://nixos.wiki/wiki/Podman and https://gist.github.com/adisbladis/187204cb772800489ee3dac4acdd9947 + # Provides a script that copies required files to ~/ + default = let - pkgs = import nixpkgs { - inherit system; - - overlays = [ rust-overlay.overlays.default ]; - }; - rust-bin = pkgs.rust-bin.nightly."2026-05-24".default.override { - extensions = [ - "rust-analyzer" - "rust-src" - ]; - targets = [ "x86_64-unknown-redox" ]; - }; - in - { - formatter = pkgs.nixfmt-rfc-style; - - # TODO: Create Redox OS Image as package - # TODO: No cross-compile for now, as there is no pkgsCross.aarch64-unknown-redox and so on - # TODO: Get rid of make env step: package custom libtool and setup rust toolchain properly - devShells = { - # Podman config taken from https://nixos.wiki/wiki/Podman and https://gist.github.com/adisbladis/187204cb772800489ee3dac4acdd9947 - # Provides a script that copies required files to ~/ - default = - let - rustPlatform = pkgs.makeRustPlatform { - cargo = rust-bin; - rustc = rust-bin; - }; - - podmanSetupScript = - let - registriesConf = pkgs.writeText "registries.conf" '' - [registries.search] - registries = ['docker.io'] - [registries.block] - registries = [] - ''; - in - pkgs.writeScript "podman-setup" '' - #!${pkgs.runtimeShell} - # Dont overwrite customised configuration - if ! test -f ~/.config/containers/policy.json; then - install -Dm555 ${pkgs.skopeo.src}/default-policy.json ~/.config/containers/policy.json - fi - if ! test -f ~/.config/containers/registries.conf; then - install -Dm555 ${registriesConf} ~/.config/containers/registries.conf - fi - systemctl --user start podman.socket || true - export PODMAN_SYSTEMD_UNIT=podman.socket - ''; - # Provides a fake "docker" binary mapping to podman - dockerCompat = pkgs.runCommand "docker-podman-compat" { } '' - mkdir -p $out/bin - ln -s ${pkgs.podman}/bin/podman $out/bin/docker - ''; - - in - pkgs.mkShell rec { - buildInputs = with pkgs; [ - # Podman - dockerCompat - podman # Docker compat - runc # Container runtime - conmon # Container runtime monitor - skopeo # Interact with container registry - slirp4netns # User-mode networking for unprivileged namespaces - fuse-overlayfs # CoW for images, much faster than default vfs - - # with FSTOOLS_IN_PODMAN=1 these are not needed - # without it, the installer fails to link FUSE somehow - #fuse - #rust-bin - qemu_kvm - ]; - - LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; - SKIP_CHECK_TOOLS = "1"; - FSTOOLS_IN_PODMAN = "1"; - PODMAN_BUILD = "1"; - shellHook = '' - # Install required configuration - ${podmanSetupScript} - echo "Redox podman build environment loaded" - ''; - }; - - #TODO: This isn't tested yet, use at your own risk - native = pkgs.mkShell rec { - nativeBuildInputs = - let - autoreconf269 = pkgs.writeShellScriptBin "autoreconf2.69" "${pkgs.autoconf269}/bin/autoreconf"; - in - with pkgs; - [ - ant - autoconf - autoreconf269 # gnu-binutils - automake - bison - cmake - curl - doxygen - file - flex - gettext - gnumake - gnupatch - gperf - help2man - just - llvmPackages.clang - llvmPackages.llvm - lua - m4 - meson - nasm - ninja - perl - perl540Packages.HTMLParser - perl540Packages.Po4a - pkg-config - pkgconf - (python3.withPackages (ps: with ps; [ mako ])) - qemu_kvm - rust-cbindgen - scons - texinfo - unzip - waf - wget - xdg-utils - xxd - zip - ] ++ pkgs.lib.optionals pkgs.stdenv.hostPlatform.isx86 [ - pkgs.syslinux - ]; - - buildInputs = with pkgs; [ - rust-bin - fuse # fuser - libpng # netsurf - fontconfig # orbutils - SDL # prboom - xorg.utilmacros # libX11 - xorg.xtrans # libX11 - ]; - - LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; - PERL_PATH = "${pkgs.perl}/bin/perl"; - SKIP_CHECK_TOOLS = "1"; - PODMAN_BUILD = "0"; - shellHook = with pkgs; '' - export PKG_CONFIG_PATH="${fuse.dev}/lib/pkgconfig\ - :${libpng.dev}/lib/pkgconfig" + podmanSetupScript = + let + registriesConf = pkgs.writeText "registries.conf" '' + [registries.search] + registries = ['docker.io'] + [registries.block] + registries = [] ''; - }; - }; + in + pkgs.writeScript "podman-setup" '' + #!${pkgs.runtimeShell} + # Dont overwrite customised configuration + if ! test -f ~/.config/containers/policy.json; then + install -Dm555 ${pkgs.skopeo.src}/default-policy.json ~/.config/containers/policy.json + fi + if ! test -f ~/.config/containers/registries.conf; then + install -Dm555 ${registriesConf} ~/.config/containers/registries.conf + fi + systemctl --user start podman.socket || true + export PODMAN_SYSTEMD_UNIT=podman.socket + ''; + # Provides a fake "docker" binary mapping to podman + dockerCompat = pkgs.runCommand "docker-podman-compat" { } '' + mkdir -p $out/bin + ln -s ${pkgs.podman}/bin/podman $out/bin/docker + ''; + in + pkgs.mkShell rec { + buildInputs = with pkgs; [ + # Podman + dockerCompat + podman # Docker compat + runc # Container runtime + conmon # Container runtime monitor + skopeo # Interact with container registry + slirp4netns # User-mode networking for unprivileged namespaces + fuse-overlayfs # CoW for images, much faster than default vfs + + # with FSTOOLS_IN_PODMAN=1 these are not needed + # without it, the installer fails to link FUSE somehow + #fuse + qemu_kvm + ]; + + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; + SKIP_CHECK_TOOLS = "1"; + FSTOOLS_IN_PODMAN = "1"; + PODMAN_BUILD = "1"; + shellHook = '' + # Install required configuration + ${podmanSetupScript} + echo "Redox podman build environment loaded" + ''; }; - } - ); + + #TODO: This isn't tested yet, use at your own risk + native = pkgs.mkShell rec { + nativeBuildInputs = + let + autoreconf269 = pkgs.writeShellScriptBin "autoreconf2.69" "${pkgs.autoconf269}/bin/autoreconf"; + in + with pkgs; + [ + ant + autoconf + autoreconf269 # gnu-binutils + automake + bison + cmake + curl + doxygen + file + flex + gettext + gnumake + gnupatch + gperf + help2man + just + llvmPackages.clang + llvmPackages.llvm + lua + m4 + meson + nasm + ninja + perl + perlPackages.HTMLParser + perlPackages.Po4a + pkg-config + pkgconf + (python3.withPackages (ps: with ps; [ mako ])) + qemu_kvm + rust-cbindgen + scons + texinfo + unzip + waf + wget + xdg-utils + xxd + zip + ] + ++ pkgs.lib.optionals pkgs.stdenv.hostPlatform.isx86 [ + pkgs.syslinux + ]; + + buildInputs = with pkgs; [ + (pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml) + fuse # fuser + libpng # netsurf + fontconfig # orbutils + SDL # prboom + utilmacros # libX11 + xtrans # libX11 + ]; + + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; + PERL_PATH = "${pkgs.perl}/bin/perl"; + SKIP_CHECK_TOOLS = "1"; + PODMAN_BUILD = "0"; + shellHook = with pkgs; '' + export PKG_CONFIG_PATH="${fuse.dev}/lib/pkgconfig\ + :${libpng.dev}/lib/pkgconfig" + ''; + }; + }); + }; }