From ec7c430e110c5f24a3de0f69f6e0e72babb7cbfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Schr=C3=B6ter?= Date: Sat, 22 Jul 2023 20:33:36 +0200 Subject: [PATCH] feat(flake): clean up & simplify config - remove unused wrappers - improve packages & overlays setup - simplify createSystem --- flake.nix | 78 +++++++------------ pkgs/default.nix | 5 ++ pkgs/generic-bin-wrapper/default.nix | 32 -------- pkgs/mullvad-exclude-wrapper/default.nix | 7 -- pkgs/vim-plugins/default.nix | 6 ++ .../nvim-kitty-navigator/default.nix | 8 ++ 6 files changed, 47 insertions(+), 89 deletions(-) create mode 100644 pkgs/default.nix delete mode 100644 pkgs/generic-bin-wrapper/default.nix delete mode 100644 pkgs/mullvad-exclude-wrapper/default.nix create mode 100644 pkgs/vim-plugins/default.nix create mode 100644 pkgs/vim-plugins/nvim-kitty-navigator/default.nix diff --git a/flake.nix b/flake.nix index b493b00..bd1440d 100644 --- a/flake.nix +++ b/flake.nix @@ -51,59 +51,20 @@ systems = [ "x86_64-linux" "aarch64-linux" ]; imports = [ ]; flake = rec { - overlays = { - unstable = final: prev: { - unstable = import nixpkgs-unstable { - inherit (prev) system; - config.allowUnfree = true; - }; - }; - neovim = final: prev: - let - buildVimPlugin = name: input: - prev.pkgs.vimUtils.buildVimPluginFrom2Nix { - pname = name; - version = input.rev; - versionSuffix = "-git"; - src = input; - }; - in { - vimPlugins = prev.vimPlugins // { - nvim-kitty-navigator = - buildVimPlugin "nvim-kitty-navigator" nvim-kitty-navigator; - }; - }; - deconz = final: prev: { - deconz = final.qt5.callPackage ./pkgs/deconz { }; - }; - wrappers = final: prev: { - genericBinWrapper = - final.callPackage ./pkgs/generic-bin-wrapper { }; - mullvadExcludeWrapper = - final.callPackage ./pkgs/mullvad-exclude-wrapper { }; - }; - }; - lib = rec { - systemDefaults = { - modules = - [ nixosModules.flakeDefaults agenix.nixosModules.default ]; - overlays = with overlays; [ - unstable - nur.overlay - neovim - deconz - wrappers - ]; - }; createSystem = hostName: { hardwareConfig, config }: ({ pkgs, lib, ... }: { networking.hostName = hostName; - nixpkgs.overlays = systemDefaults.overlays; + nixpkgs.overlays = [ nur.overlay self.overlays.default ]; - imports = systemDefaults.modules ++ [ hardwareConfig config ]; + imports = [ + nixosModules.flakeDefaults + agenix.nixosModules.default + hardwareConfig + config + ]; environment.systemPackages = [ agenix.packages.x86_64-linux.default ]; @@ -115,6 +76,16 @@ createMediaGroup = _: { users.groups.media.gid = 600; }; }; + overlays.default = final: prev: { + unstable = import nixpkgs-unstable { + inherit (prev) system; + config.allowUnfree = true; + }; + inherit (self.packages.${prev.system}) deconz; + vimPlugins = prev.vimPlugins + // final.callPackage ./pkgs/vim-plugins { inherit inputs; }; + }; + nixosModules = { flakeDefaults = import ./modules/flakeDefaults.nix; systemdNotify = import ./modules/systemdNotify.nix; @@ -207,13 +178,20 @@ }; }; }; - perSystem = { system, config, pkgs, ... }: rec { - packages = { deconz = pkgs.qt5.callPackage ./pkgs/deconz { }; }; + perSystem = { system, config, pkgs, ... }: { + _module.args.pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + }; - apps = { deconz = flake-utils.lib.mkApp { drv = packages.deconz; }; }; + packages = pkgs.callPackage ./pkgs { }; + + apps = { + deconz = flake-utils.lib.mkApp { drv = config.packages.deconz; }; + }; devShells.default = - pkgs.mkShell { inherit (checks.pre-commit) shellHook; }; + pkgs.mkShell { inherit (config.checks.pre-commit) shellHook; }; checks = deploy-rs.lib.${system}.deployChecks self.deploy // { pre-commit = pre-commit-hooks.lib.${system}.run { diff --git a/pkgs/default.nix b/pkgs/default.nix new file mode 100644 index 0000000..061bfea --- /dev/null +++ b/pkgs/default.nix @@ -0,0 +1,5 @@ +{ pkgs, ... }: + +{ + deconz = pkgs.callPackage ./deconz { }; +} diff --git a/pkgs/generic-bin-wrapper/default.nix b/pkgs/generic-bin-wrapper/default.nix deleted file mode 100644 index 2ec07ce..0000000 --- a/pkgs/generic-bin-wrapper/default.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ stdenv, callPackage }: - -{ package # pkg must contain $out/bin with executables within. -, binPath ? - "bin/${package.meta.mainProgram or package.pname}" # path to look for binary -, wrapper # wrapper must contain @EXECUTABLE@ as a placeholder for the binary to run. -}: - -# pass through all arguments to wrapped package to allow overriding -# arguments in wrapped package -callPackage (args: - stdenv.mkDerivation { - name = "${package.name}-wrapped"; - inherit (package) version; - src = package.override args; - dontUnpack = true; - - # inherit passthru - inherit (package) passthru; - - installPhase = '' - local executable=$out/${binPath} - install -D ${wrapper} "$executable" - substituteInPlace "$executable" --subst-var-by EXECUTABLE "$f" - - # Symlink the share directory so that .desktop files and such continue to work. - if [[ -d $src/share ]] - then - ln -s $src/share $out/share - fi - ''; - }) { } diff --git a/pkgs/mullvad-exclude-wrapper/default.nix b/pkgs/mullvad-exclude-wrapper/default.nix deleted file mode 100644 index abff3c3..0000000 --- a/pkgs/mullvad-exclude-wrapper/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ writeShellScript, genericBinWrapper, mullvad-vpn }: -args: -let - wrapper = writeShellScript "mullvad-exclude" '' - ${mullvad-vpn}/bin/mullvad-exclude "@EXECUTABLE@" "$@" - ''; -in genericBinWrapper (args // { inherit wrapper; }) diff --git a/pkgs/vim-plugins/default.nix b/pkgs/vim-plugins/default.nix new file mode 100644 index 0000000..905b690 --- /dev/null +++ b/pkgs/vim-plugins/default.nix @@ -0,0 +1,6 @@ +{ inputs, pkgs, ... }: + +{ + nvim-kitty-navigator = + pkgs.callPackage ./nvim-kitty-navigator { inherit inputs; }; +} diff --git a/pkgs/vim-plugins/nvim-kitty-navigator/default.nix b/pkgs/vim-plugins/nvim-kitty-navigator/default.nix new file mode 100644 index 0000000..ccdbc2b --- /dev/null +++ b/pkgs/vim-plugins/nvim-kitty-navigator/default.nix @@ -0,0 +1,8 @@ +{ inputs, pkgs, ... }: + +pkgs.vimUtils.buildVimPluginFrom2Nix { + pname = "nvim-kitty-navigator"; + version = inputs.nvim-kitty-navigator.rev; + versionSuffix = "-git"; + src = inputs.nvim-kitty-navigator; +}