diff --git a/.github/workflows/build-darwin.yml b/.github/workflows/build-darwin.yml index 4c7b8a1..f0dd82e 100644 --- a/.github/workflows/build-darwin.yml +++ b/.github/workflows/build-darwin.yml @@ -19,13 +19,13 @@ jobs: - runtime: osx-arm64 os: macos-latest steps: - - uses: actions/checkout@v3.0.2 - - uses: cachix/install-nix-action@v17 + - uses: actions/checkout@v3.5.3 + - uses: cachix/install-nix-action@v22 with: install_url: https://github.com/numtide/nix-unstable-installer/releases/download/nix-2.10.0pre20220629_b7eb4ac/install extra_nix_config: | experimental-features = nix-command flakes - - uses: cachix/cachix-action@v10 + - uses: cachix/cachix-action@v12 with: name: fortuneteller2k authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 38fa18b..9660c7e 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -11,14 +11,14 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3.0.2 - - uses: cachix/install-nix-action@v17 + - uses: actions/checkout@v3.5.3 + - uses: cachix/install-nix-action@v22 with: install_url: https://github.com/numtide/nix-unstable-installer/releases/download/nix-2.10.0pre20220629_b7eb4ac/install extra_nix_config: | experimental-features = nix-command flakes - - uses: cachix/cachix-action@v10 + - uses: cachix/cachix-action@v12 with: name: fortuneteller2k authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - - run: nix build -L .#awesome-git .#awesome-composite-git .#awesome-luajit-git .#picom-git .#picom-dccsillag .#picom-ft-labs .#picom-pijulius .#glfw-wayland-minecraft .#mpv-discord .#mpv-discord-script .#lshw-git .#nvidia-exec .#wezterm-git + - run: nix build -L .#awesome-git .#awesome-composite-git .#awesome-luajit-git .#picom-git .#picom-dccsillag .#picom-ft-labs .#picom-pijulius .#mpv-discord .#mpv-discord-script .#lshw-git .#nvidia-exec .#wezterm-git diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index f2ceb42..84f8114 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -7,8 +7,8 @@ jobs: tests: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3.0.2 - - uses: cachix/install-nix-action@v17 + - uses: actions/checkout@v3.5.3 + - uses: cachix/install-nix-action@v22 with: install_url: https://github.com/numtide/nix-unstable-installer/releases/download/nix-2.9.0pre20220428_660835d/install extra_nix_config: | diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 267a955..2b53f0a 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -6,8 +6,8 @@ jobs: tests: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3.0.2 - - uses: cachix/install-nix-action@v17 + - uses: actions/checkout@v3.5.3 + - uses: cachix/install-nix-action@v22 with: install_url: https://github.com/numtide/nix-unstable-installer/releases/download/nix-2.9.0pre20220428_660835d/install extra_nix_config: | diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index f01c891..0ece14c 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -9,18 +9,18 @@ jobs: update-dependencies: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v18 + - uses: actions/checkout@v3.5.3 + - uses: cachix/install-nix-action@v22 with: install_url: https://github.com/nix-community/nix-unstable-installer/releases/download/nix-2.12.0pre20221026_bf2e6bc/install extra_nix_config: | experimental-features = nix-command flakes nix_path: nixpkgs=channel:nixos-unstable - run: nix run github:berberman/nvfetcher && nix flake update - - uses: cachix/cachix-action@v8 + - uses: cachix/cachix-action@v12 with: name: fortuneteller2k authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - - uses: stefanzweifel/git-auto-commit-action@v4 + - uses: stefanzweifel/git-auto-commit-action@v4.16.0 with: commit_message: "update dependencies" diff --git a/flake.lock b/flake.lock index 2b83da1..3dfdd2c 100644 --- a/flake.lock +++ b/flake.lock @@ -170,6 +170,24 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1688049487, + "narHash": "sha256-100g4iaKC9MalDjUW9iN6Jl/OocTDtXdeAj7pEGIRh4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "4bc72cae107788bf3f24f30db2e2f685c9298dc9", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-stable": { "locked": { "lastModified": 1688109178, @@ -202,12 +220,31 @@ "type": "github" } }, + "parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1688254665, + "narHash": "sha256-8FHEgBrr7gYNiS/NzCxIO3m4hvtLRW9YY1nYo1ivm3o=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "267149c58a14d15f7f81b4d737308421de9d7152", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "root": { "inputs": { "crane": "crane", "emacs": "emacs", "nixpkgs": "nixpkgs_2", - "nixpkgs-fmt": "nixpkgs-fmt" + "nixpkgs-fmt": "nixpkgs-fmt", + "parts": "parts" } }, "rust-analyzer-src": { diff --git a/flake.nix b/flake.nix index 67ca7f9..f25ea22 100644 --- a/flake.nix +++ b/flake.nix @@ -5,6 +5,7 @@ crane.url = "github:ipetkov/crane"; nixpkgs.url = "github:NixOS/nixpkgs/master"; nixpkgs-fmt.url = "github:nix-community/nixpkgs-fmt"; + parts.url = "github:hercules-ci/flake-parts"; emacs.url = "github:nix-community/emacs-overlay"; # follows @@ -12,350 +13,38 @@ nixpkgs-fmt.inputs.nixpkgs.follows = "nixpkgs"; }; - outputs = { self, emacs, nixpkgs, crane, nixpkgs-fmt, ... }: - let - linux = [ "x86_64-linux" ]; - darwin = [ "aarch64-darwin" "x86_64-darwin" ]; + outputs = inputs@{ self, parts, nixpkgs, emacs, nixpkgs-fmt, ... }: + parts.lib.mkFlake { inherit inputs; } { + imports = [ ./overlays ]; + systems = [ "aarch64-darwin" "x86_64-darwin" "x86_64-linux" ]; - pkgsFor = system: import nixpkgs { - inherit system; - allowUnfree = true; - allowUnsupportedSystem = true; + _module.args.getPackage = pname: pkgs: (pkgs.callPackage ./_sources/generated.nix { }).${pname}; - overlays = [ - self.overlays.default - emacs.overlay - ]; - }; - in - { - nixosModules = { - "nvidia-exec" = import ./modules/nvidia-exec.nix; - "stevenblack" = import ./modules/stevenblack.nix; - }; - - overlays = - let - getPackage = pname: pkgs: (import ./_sources/generated.nix { - inherit (pkgs) fetchgit fetchurl fetchFromGitHub dockerTools; - }).${pname}; - in - { - applications = final: prev: { - nvidia-exec = - let - package = getPackage "nvidia-exec" prev; - in - prev.callPackage ./pkgs/nvidia-exec { - inherit (package) src version; - lshw = final.lshw-git; - }; - - lshw-git = - let - package = getPackage "lshw" prev; - in - prev.lshw.overrideAttrs (old: { - inherit (package) src version; - - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ prev.gettext ]; - }); - }; - - compositors = - let - mkPicom = name: pkgs: - let - package = getPackage name pkgs; - in - pkgs.picom.overrideAttrs (old: { - inherit (package) src version; - buildInputs = (old.buildInputs or [ ]) ++ [ - pkgs.pcre2 - pkgs.xorg.xcbutil - ]; - }); - in - _: prev: { - picom-git = mkPicom "picom" prev; - picom-dccsillag = mkPicom "picom-dccsillag" prev; - picom-ft-labs = mkPicom "picom-ft-labs" prev; - picom-pijulius = mkPicom "picom-pijulius" prev; - }; - - # If using as an overlay, you need emacs.overlay from nix-community/emacs-overlay - editors = _: prev: { - emacs-plus-git = prev.emacsGit.overrideAttrs (fdrv: pdrv: { - pname = "emacs-plus-git"; - name = "${fdrv.pname}-${pdrv.version}"; - - # Taken from https://github.com/d12frosted/homebrew-emacs-plus/tree/master/patches/emacs-30 - patches = (pdrv.patches or [ ]) ++ [ - (prev.fetchpatch { - url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-29/poll.patch"; - hash = "sha256-jN9MlD8/ZrnLuP2/HUXXEVVd6A+aRZNYFdZF8ReJGfY="; - }) - - (prev.fetchpatch { - url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/round-undecorated-frame.patch"; - hash = "sha256-uYIxNTyfbprx5mCqMNFVrBcLeo+8e21qmBE3lpcnd+4="; - }) - - (prev.fetchpatch { - url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/fix-window-role.patch"; - hash = "sha256-+z/KfsBm1lvZTZNiMbxzXQGRTjkCFO4QPlEK35upjsE="; - }) - - (prev.fetchpatch { - url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/no-frame-refocus-cocoa.patch"; - hash = "sha256-QLGplGoRpM4qgrIAJIbVJJsa4xj34axwT3LiWt++j/c="; - }) - - (prev.fetchpatch { - url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/system-appearance.patch"; - hash = "sha256-oM6fXdXCWVcBnNrzXmF0ZMdp8j0pzkLE66WteeCutv8="; - }) - ]; - - platforms = prev.lib.platforms.darwin; - }); - }; - - fonts = _: prev: { - iosevka-ft = prev.iosevka.override { - privateBuildPlan = import ./pkgs/iosevka-ft/build-plan.nix; - set = "ft"; - }; - - iosevka-ft-qp = prev.iosevka.override { - privateBuildPlan = import ./pkgs/iosevka-ft/build-plan-qp.nix; - set = "ft-qp"; - }; - - iosevka-ft-bin = prev.callPackage ./pkgs/iosevka-ft { }; - iosevka-ft-qp-bin = prev.callPackage ./pkgs/iosevka-ft { proportional = true; }; - }; - - terminal-emulators = _: prev: { - wezterm-git = - let - package = getPackage "wezterm" prev; - in - prev.darwin.apple_sdk_11_0.callPackage ./pkgs/wezterm { - inherit (prev.darwin.apple_sdk_11_0.frameworks) Cocoa CoreGraphics Foundation UserNotifications; - inherit (package) src version; - crane-lib = crane.lib."${prev.system}"; - }; - }; - - themes = _: prev: { - phocus = - let - package = getPackage "phocus" prev; - in - prev.callPackage ./pkgs/phocus { - inherit (package) src version; - - inherit (prev.nodePackages) sass; - - colors = { - base00 = "212121"; - base01 = "303030"; - base02 = "353535"; - base03 = "4A4A4A"; - base04 = "B2CCD6"; - base05 = "EEFFFF"; - base06 = "EEFFFF"; - base07 = "FFFFFF"; - base08 = "F07178"; - base09 = "F78C6C"; - base0A = "FFCB6B"; - base0B = "C3E88D"; - base0C = "89DDFF"; - base0D = "82AAFF"; - base0E = "C792EA"; - base0F = "FF5370"; - }; - - primary = "F07178"; - secondary = "C3E88D"; - }; - }; - - misc = _: prev: { - glfw-wayland-minecraft = prev.glfw-wayland.overrideAttrs (_: { - patches = [ - # Don't crash on calls to focus or icon - (prev.fetchpatch { - url = "https://raw.githubusercontent.com/Admicos/minecraft-wayland/main/0003-Don-t-crash-on-calls-to-focus-or-icon.patch"; - hash = "sha256-3U/nzFUI8nz3ixxhRFzgppoWH62kNMlGJnXSaJPbtRY="; - }) - - # wayland: fix broken opengl screenshots on mutter - (prev.fetchpatch { - url = "https://raw.githubusercontent.com/Admicos/minecraft-wayland/main/0004-wayland-fix-broken-opengl-screenshots-on-mutter.patch"; - hash = "sha256-ZVlnXZkqp7B5WZzzkMGjAyYvjmidlZyYvpa0z3GNW4U="; - }) + perSystem = { lib, system, pkgs, ... }: { + _module.args.pkgs = import nixpkgs { + inherit system; + allowUnfree = true; + allowUnsupportedSystem = true; - # Add warning about being an unofficial patch - (prev.fetchpatch { - url = "https://raw.githubusercontent.com/Admicos/minecraft-wayland/main/0005-Add-warning-about-being-an-unofficial-patch.patch"; - hash = "sha256-j/z6c/bGKFtCwBvIVNGi63xa+7yIF1mRKc9q3Ykigaw="; - }) - ]; - }); - - mpv-discord = - let - package = getPackage "mpv-discord" prev; - in - prev.callPackage ./pkgs/mpv-discord { inherit (package) src version; }; - - mpv-discord-script = - let - package = getPackage "mpv-discord" prev; - in - prev.callPackage ./pkgs/mpv-discord/script.nix { inherit (package) src version; }; - - stevenblack-blocklist-git = (getPackage "stevenblack-blocklist" prev).src; - - prowovider = prev.darwin.apple_sdk_11_0.callPackage ./pkgs/prowovider { - inherit (prev.darwin.apple_sdk_11_0.frameworks) SystemConfiguration; - }; - }; - - window-managers = final: prev: - let - mkAwesome = name: pkgs: - let - package = getPackage name pkgs; - extraGIPackages = with pkgs; [ networkmanager upower playerctl ]; - in - (pkgs.awesome.override { gtk3Support = true; }).overrideAttrs (_: { - inherit (package) src version; - - patches = [ ]; - - postPatch = '' - patchShebangs tests/examples/_postprocess.lua - patchShebangs tests/examples/_postprocess_cleanup.lua - ''; - - GI_TYPELIB_PATH = - let - mkTypeLibPath = pkg: "${pkg}/lib/girepository-1.0"; - extraGITypeLibPaths = prev.lib.forEach extraGIPackages mkTypeLibPath; - in - prev.lib.concatStringsSep ":" (extraGITypeLibPaths ++ [ (mkTypeLibPath prev.pango.out) ]); - }); - in - { - awesome-git = mkAwesome "awesome" prev; - awesome-composite-git = mkAwesome "awesome-composite" prev; - - awesome-luajit-git = final.awesome-git.override { - lua = prev.luajit; - gtk3Support = true; - }; - - # Yes, it's a *compositor* because of how Wayland works, I can't be bothered. - river-git = - let - package = getPackage "river" prev; - in - prev.river.overrideAttrs (_: { - inherit (package) src version; - }); - }; - - stdenvs = final: prev: - let - commonFlags = [ - "-O3" - "-pipe" - "-ffloat-store" - "-fexcess-precision=fast" - "-ffast-math" - "-fno-rounding-math" - "-fno-signaling-nans" - "-fno-math-errno" - "-funsafe-math-optimizations" - "-fassociative-math" - "-freciprocal-math" - "-ffinite-math-only" - "-fno-signed-zeros" - "-fno-trapping-math" - "-frounding-math" - "-fsingle-precision-constant" - # not supported on clang 14 yet, and isn't ignored - # "-fcx-limited-range" - # "-fcx-fortran-rules" - ]; - - /* - Example: - - { lib, clangStdenv, ... }: - - (lib.optimizeStdenv "armv9-a" clangStdenv).mkDerivation { ... } - */ - optimizeStdenv = march: prev.stdenvAdapters.withCFlags (commonFlags ++ [ "-march=${march}" ]); - - /* - Example: - - { lib, stdenv, ... }: - - (lib.optimizeStdenvWithNative stdenv).mkDerivation { ... } - */ - optimizeStdenvWithNative = stdenv: prev.stdenvAdapters.impureUseNativeOptimizations (prev.stdenvAdapters.withCFlags commonFlags stdenv); - in - { - lib = prev.lib.extend (_: _: { inherit optimizeStdenv optimizeStdenvWithNative; }); - optimizedV4Stdenv = final.lib.optimizeStdenv "x86-64-v4" prev.stdenv; - optimizedV3Stdenv = final.lib.optimizeStdenv "x86-64-v3" prev.stdenv; - optimizedV2Stdenv = final.lib.optimizeStdenv "x86-64-v2" prev.stdenv; - optimizedNativeStdenv = prev.lib.warn "using native optimizations, forfeiting reproducibility" optimizeStdenvWithNative prev.stdenv; - optimizedV4ClangStdenv = final.lib.optimizeStdenv "x86-64-v4" prev.llvmPackages_14.stdenv; - optimizedV3ClangStdenv = final.lib.optimizeStdenv "x86-64-v3" prev.llvmPackages_14.stdenv; - optimizedV2ClangStdenv = final.lib.optimizeStdenv "x86-64-v2" prev.llvmPackages_14.stdenv; - optimizedNativeClangStdenv = prev.lib.warn "using native optimizations, forfeiting reproducibility" optimizeStdenvWithNative prev.llvmPackages_14.stdenv; - }; + overlays = [ + self.overlays.default + emacs.overlay + ]; + }; - darwin = final: prev: with self.overlays; - (fonts final prev) - // (editors final prev) - // (misc final prev) - // (terminal-emulators final prev) - // (stdenvs final prev); + packages = + if lib.hasSuffix "darwin" system + then builtins.removeAttrs (self.overlays.darwin pkgs pkgs) [ "lib" ] + else builtins.removeAttrs (self.overlays.linux pkgs pkgs) [ "lib" ]; - linux = final: prev: with self.overlays; - (applications final prev) - // (compositors final prev) - // (fonts final prev) - // (terminal-emulators final prev) - // (themes final prev) - // (misc final prev) - // (window-managers final prev) - // (stdenvs final prev); + formatter = nixpkgs-fmt.defaultPackage.${system}; + }; - default = self.overlays.linux; + flake = { + nixosModules = { + nvidia-exec = import ./modules/nvidia-exec.nix; + stevenblack = import ./modules/stevenblack.nix; }; - - packages = (nixpkgs.lib.genAttrs linux (system: - let - pkgs = pkgsFor system; - in - builtins.removeAttrs (self.overlays.linux pkgs pkgs) [ "lib" ] - )) - // - (nixpkgs.lib.genAttrs darwin (system: - let - pkgs = pkgsFor system; - in - builtins.removeAttrs (self.overlays.darwin pkgs pkgs) [ "lib" ] - )); - - formatter = nixpkgs.lib.genAttrs (darwin ++ linux) (system: nixpkgs-fmt.defaultPackage.${system}); + }; }; } diff --git a/overlays/applications.nix b/overlays/applications.nix new file mode 100644 index 0000000..fe92ddc --- /dev/null +++ b/overlays/applications.nix @@ -0,0 +1,24 @@ +{ getPackage, ... }: + +{ + flake.overlays.applications = final: prev: { + nvidia-exec = + let + package = getPackage "nvidia-exec" prev; + in + prev.callPackage ../pkgs/nvidia-exec { + inherit (package) src version; + lshw = final.lshw-git; + }; + + lshw-git = + let + package = getPackage "lshw" prev; + in + prev.lshw.overrideAttrs (old: { + inherit (package) src version; + + nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ prev.gettext ]; + }); + }; +} diff --git a/overlays/compositors.nix b/overlays/compositors.nix new file mode 100644 index 0000000..2dde0c2 --- /dev/null +++ b/overlays/compositors.nix @@ -0,0 +1,24 @@ +{ getPackage, ... }: + +{ + flake.overlays.compositors = + let + mkPicom = name: pkgs: + let + package = getPackage name pkgs; + in + pkgs.picom.overrideAttrs (old: { + inherit (package) src version; + buildInputs = (old.buildInputs or [ ]) ++ [ + pkgs.pcre2 + pkgs.xorg.xcbutil + ]; + }); + in + _: prev: { + picom-git = mkPicom "picom" prev; + picom-dccsillag = mkPicom "picom-dccsillag" prev; + picom-ft-labs = mkPicom "picom-ft-labs" prev; + picom-pijulius = mkPicom "picom-pijulius" prev; + }; +} diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..c72ac21 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,36 @@ +{ self, ... }: + +{ + imports = [ + ./applications.nix + ./compositors.nix + ./editors.nix + ./fonts.nix + ./misc.nix + ./stdenvs.nix + ./terminal-emulators.nix + ./themes.nix + ./window-managers.nix + ]; + + flake.overlays = { + darwin = final: prev: with self.overlays; + (fonts final prev) + // (editors final prev) + // (misc final prev) + // (terminal-emulators final prev) + // (stdenvs final prev); + + linux = final: prev: with self.overlays; + (applications final prev) + // (compositors final prev) + // (fonts final prev) + // (terminal-emulators final prev) + // (themes final prev) + // (misc final prev) + // (window-managers final prev) + // (stdenvs final prev); + + default = self.overlays.linux; + }; +} diff --git a/overlays/editors.nix b/overlays/editors.nix new file mode 100644 index 0000000..7654bcf --- /dev/null +++ b/overlays/editors.nix @@ -0,0 +1,41 @@ +{ getPackage, ... }: + +{ + # If using as an overlay, you need emacs.overlay from nix-community/emacs-overlay + flake.overlays.editors = _: prev: { + emacs-plus-git = prev.emacs-git.overrideAttrs (fdrv: pdrv: { + pname = "emacs-plus-git"; + name = "${fdrv.pname}-${pdrv.version}"; + + # Taken from https://github.com/d12frosted/homebrew-emacs-plus/tree/master/patches/emacs-30 + patches = (pdrv.patches or [ ]) ++ [ + (prev.fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-29/poll.patch"; + hash = "sha256-jN9MlD8/ZrnLuP2/HUXXEVVd6A+aRZNYFdZF8ReJGfY="; + }) + + (prev.fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/round-undecorated-frame.patch"; + hash = "sha256-uYIxNTyfbprx5mCqMNFVrBcLeo+8e21qmBE3lpcnd+4="; + }) + + (prev.fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/fix-window-role.patch"; + hash = "sha256-+z/KfsBm1lvZTZNiMbxzXQGRTjkCFO4QPlEK35upjsE="; + }) + + (prev.fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/no-frame-refocus-cocoa.patch"; + hash = "sha256-QLGplGoRpM4qgrIAJIbVJJsa4xj34axwT3LiWt++j/c="; + }) + + (prev.fetchpatch { + url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/system-appearance.patch"; + hash = "sha256-oM6fXdXCWVcBnNrzXmF0ZMdp8j0pzkLE66WteeCutv8="; + }) + ]; + + platforms = prev.lib.platforms.darwin; + }); + }; +} diff --git a/overlays/fonts.nix b/overlays/fonts.nix new file mode 100644 index 0000000..983add4 --- /dev/null +++ b/overlays/fonts.nix @@ -0,0 +1,18 @@ +{ getPackage, ... }: + +{ + flake.overlays.fonts = _: prev: { + iosevka-ft = prev.iosevka.override { + privateBuildPlan = import ../pkgs/iosevka-ft/build-plan.nix; + set = "ft"; + }; + + iosevka-ft-qp = prev.iosevka.override { + privateBuildPlan = import ../pkgs/iosevka-ft/build-plan-qp.nix; + set = "ft-qp"; + }; + + iosevka-ft-bin = prev.callPackage ../pkgs/iosevka-ft { }; + iosevka-ft-qp-bin = prev.callPackage ../pkgs/iosevka-ft { proportional = true; }; + }; +} diff --git a/overlays/misc.nix b/overlays/misc.nix new file mode 100644 index 0000000..6181bea --- /dev/null +++ b/overlays/misc.nix @@ -0,0 +1,23 @@ +{ getPackage, ... }: + +{ + flake.overlays.misc = _: prev: { + mpv-discord = + let + package = getPackage "mpv-discord" prev; + in + prev.callPackage ../pkgs/mpv-discord { inherit (package) src version; }; + + mpv-discord-script = + let + package = getPackage "mpv-discord" prev; + in + prev.callPackage ../pkgs/mpv-discord/script.nix { inherit (package) src version; }; + + stevenblack-blocklist-git = (getPackage "stevenblack-blocklist" prev).src; + + prowovider = prev.darwin.apple_sdk_11_0.callPackage ../pkgs/prowovider { + inherit (prev.darwin.apple_sdk_11_0.frameworks) SystemConfiguration; + }; + }; +} diff --git a/overlays/stdenvs.nix b/overlays/stdenvs.nix new file mode 100644 index 0000000..82d844a --- /dev/null +++ b/overlays/stdenvs.nix @@ -0,0 +1,57 @@ +{ getPackage, ... }: + +{ + flake.overlays.stdenvs = final: prev: + let + commonFlags = [ + "-O3" + "-pipe" + "-ffloat-store" + "-fexcess-precision=fast" + "-ffast-math" + "-fno-rounding-math" + "-fno-signaling-nans" + "-fno-math-errno" + "-funsafe-math-optimizations" + "-fassociative-math" + "-freciprocal-math" + "-ffinite-math-only" + "-fno-signed-zeros" + "-fno-trapping-math" + "-frounding-math" + "-fsingle-precision-constant" + # not supported on clang 14 yet, and isn't ignored + # "-fcx-limited-range" + # "-fcx-fortran-rules" + ]; + + /* + Example: + + { lib, clangStdenv, ... }: + + (lib.optimizeStdenv "armv9-a" clangStdenv).mkDerivation { ... } + */ + optimizeStdenv = march: prev.stdenvAdapters.withCFlags (commonFlags ++ [ "-march=${march}" ]); + + /* + Example: + + { lib, stdenv, ... }: + + (lib.optimizeStdenvWithNative stdenv).mkDerivation { ... } + */ + optimizeStdenvWithNative = stdenv: prev.stdenvAdapters.impureUseNativeOptimizations (prev.stdenvAdapters.withCFlags commonFlags stdenv); + in + { + lib = prev.lib.extend (_: _: { inherit optimizeStdenv optimizeStdenvWithNative; }); + optimizedV4Stdenv = final.lib.optimizeStdenv "x86-64-v4" prev.stdenv; + optimizedV3Stdenv = final.lib.optimizeStdenv "x86-64-v3" prev.stdenv; + optimizedV2Stdenv = final.lib.optimizeStdenv "x86-64-v2" prev.stdenv; + optimizedNativeStdenv = prev.lib.warn "using native optimizations, forfeiting reproducibility" optimizeStdenvWithNative prev.stdenv; + optimizedV4ClangStdenv = final.lib.optimizeStdenv "x86-64-v4" prev.llvmPackages_14.stdenv; + optimizedV3ClangStdenv = final.lib.optimizeStdenv "x86-64-v3" prev.llvmPackages_14.stdenv; + optimizedV2ClangStdenv = final.lib.optimizeStdenv "x86-64-v2" prev.llvmPackages_14.stdenv; + optimizedNativeClangStdenv = prev.lib.warn "using native optimizations, forfeiting reproducibility" optimizeStdenvWithNative prev.llvmPackages_14.stdenv; + }; +} diff --git a/overlays/terminal-emulators.nix b/overlays/terminal-emulators.nix new file mode 100644 index 0000000..4ced6d7 --- /dev/null +++ b/overlays/terminal-emulators.nix @@ -0,0 +1,15 @@ +{ inputs, getPackage, ... }: + +{ + flake.overlays.terminal-emulators = _: prev: { + wezterm-git = + let + package = getPackage "wezterm" prev; + in + prev.darwin.apple_sdk_11_0.callPackage ../pkgs/wezterm { + inherit (prev.darwin.apple_sdk_11_0.frameworks) Cocoa CoreGraphics Foundation UserNotifications; + inherit (package) src version; + crane-lib = inputs.crane.lib."${prev.system}"; + }; + }; +} diff --git a/overlays/themes.nix b/overlays/themes.nix new file mode 100644 index 0000000..5e771d3 --- /dev/null +++ b/overlays/themes.nix @@ -0,0 +1,37 @@ +{ getPackage, ... }: + +{ + flake.overlays.themes = _: prev: { + phocus = + let + package = getPackage "phocus" prev; + in + prev.callPackage ../pkgs/phocus { + inherit (package) src version; + + inherit (prev.nodePackages) sass; + + colors = { + base00 = "212121"; + base01 = "303030"; + base02 = "353535"; + base03 = "4A4A4A"; + base04 = "B2CCD6"; + base05 = "EEFFFF"; + base06 = "EEFFFF"; + base07 = "FFFFFF"; + base08 = "F07178"; + base09 = "F78C6C"; + base0A = "FFCB6B"; + base0B = "C3E88D"; + base0C = "89DDFF"; + base0D = "82AAFF"; + base0E = "C792EA"; + base0F = "FF5370"; + }; + + primary = "F07178"; + secondary = "C3E88D"; + }; + }; +} diff --git a/overlays/window-managers.nix b/overlays/window-managers.nix new file mode 100644 index 0000000..6f70bc4 --- /dev/null +++ b/overlays/window-managers.nix @@ -0,0 +1,47 @@ +{ getPackage, ... }: + +{ + flake.overlays.window-managers = final: prev: + let + mkAwesome = name: pkgs: + let + package = getPackage name pkgs; + extraGIPackages = with pkgs; [ networkmanager upower playerctl ]; + in + (pkgs.awesome.override { gtk3Support = true; }).overrideAttrs (_: { + inherit (package) src version; + + patches = [ ]; + + postPatch = '' + patchShebangs tests/examples/_postprocess.lua + patchShebangs tests/examples/_postprocess_cleanup.lua + ''; + + GI_TYPELIB_PATH = + let + mkTypeLibPath = pkg: "${pkg}/lib/girepository-1.0"; + extraGITypeLibPaths = prev.lib.forEach extraGIPackages mkTypeLibPath; + in + prev.lib.concatStringsSep ":" (extraGITypeLibPaths ++ [ (mkTypeLibPath prev.pango.out) ]); + }); + in + { + awesome-git = mkAwesome "awesome" prev; + awesome-composite-git = mkAwesome "awesome-composite" prev; + + awesome-luajit-git = final.awesome-git.override { + lua = prev.luajit; + gtk3Support = true; + }; + + # Yes, it's a *compositor* because of how Wayland works, I can't be bothered. + river-git = + let + package = getPackage "river" prev; + in + prev.river.overrideAttrs (_: { + inherit (package) src version; + }); + }; +} diff --git a/pkgs/prowovider/default.nix b/pkgs/prowovider/default.nix index 00e2414..873369b 100644 --- a/pkgs/prowovider/default.nix +++ b/pkgs/prowovider/default.nix @@ -20,7 +20,7 @@ rustPlatform.buildRustPackage { }; }; - nativeBuildInputs = []; + nativeBuildInputs = [ ]; buildInputs = lib.optionals stdenv.isDarwin [ SystemConfiguration ]; # needs an actual setup @@ -31,4 +31,4 @@ rustPlatform.buildRustPackage { homepage = ""; license = licenses.asl20; }; -} \ No newline at end of file +}