Unverified Commit 70653575 authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

nixbit: init at 0.1.5, nixos/nixbit: init module (#454801)

parents e94c582b 61d3a758
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -172,6 +172,8 @@

- [Tenstorrent](https://tenstorrent.com) hardware module has been added.

- [nixbit](https://github.com/pbek/nixbit), a GUI application for updating your NixOS system from a Nix Flakes Git repository. Available as [programs.nixbit](#opt-programs.nixbit.enable).

## Backward Incompatibilities {#sec-release-25.11-incompatibilities}

<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
+1 −0
Original line number Diff line number Diff line
@@ -277,6 +277,7 @@
  ./programs/nix-index.nix
  ./programs/nix-ld.nix
  ./programs/nix-required-mounts.nix
  ./programs/nixbit.nix
  ./programs/nm-applet.nix
  ./programs/nncp.nix
  ./programs/noisetorch.nix
+49 −0
Original line number Diff line number Diff line
{
  config,
  lib,
  pkgs,
  ...
}:

let
  inherit (lib)
    mkEnableOption
    mkIf
    mkOption
    mkPackageOption
    types
    ;
  cfg = config.programs.nixbit;
in
{
  options.programs.nixbit = {
    enable = mkEnableOption "Nixbit configuration";

    package = mkPackageOption pkgs "nixbit" { };

    repository = mkOption {
      type = types.str;
      description = "Git repository URL for Nixbit";
    };

    forceAutostart = mkEnableOption "" // {
      description = "Force creation of autostart desktop entry when application starts";
    };
  };

  config = mkIf cfg.enable {
    environment = {
      systemPackages = [ cfg.package ];

      etc."nixbit.conf".text =
        lib.optionalString (cfg.repository != "") ''
          [Repository]
          Url = ${cfg.repository}
        ''
        + ''
          [Autostart]
          Force = ${if cfg.forceAutostart then "true" else "false"}
        '';
    };
  };
}
+63 −0
Original line number Diff line number Diff line
{
  cmake,
  fetchFromGitHub,
  installShellFiles,
  kdePackages,
  lib,
  libgit2,
  ninja,
  pkg-config,
  qt6,
  stdenv,
  xvfb-run,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "nixbit";
  version = "0.1.5";

  src = fetchFromGitHub {
    owner = "pbek";
    repo = "nixbit";
    tag = "v${finalAttrs.version}";
    hash = "sha256-DpjLPvmn61rEn6ui8cFfqeZEPYGyCUVVP/V7mQw1l5Y=";
  };

  nativeBuildInputs = [
    cmake
    installShellFiles
    kdePackages.extra-cmake-modules
    ninja
    pkg-config
    qt6.wrapQtAppsHook
  ]
  ++ lib.optionals stdenv.hostPlatform.isLinux [ xvfb-run ];

  buildInputs = [
    kdePackages.kconfig
    kdePackages.kcoreaddons
    kdePackages.ki18n
    kdePackages.kirigami
    libgit2
    qt6.qtbase
    qt6.qtdeclarative
    qt6.qtwayland
  ];

  # Install shell completion on Linux (with xvfb-run)
  postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
    installShellCompletion --cmd nixbit \
      --bash <(xvfb-run $out/bin/nixbit --completion-bash) \
      --fish <(xvfb-run $out/bin/nixbit --completion-fish)
  '';

  meta = with lib; {
    description = "KDE Plasma application to update your NixOS system from a git repository";
    homepage = "https://github.com/pbek/nixbit";
    changelog = "https://github.com/pbek/nixbit/releases/tag/v${finalAttrs.version}";
    license = licenses.gpl3Plus;
    maintainers = with lib.maintainers; [ pbek ];
    platforms = platforms.linux;
    mainProgram = "nixbit";
  };
})