Sha256: 760c2e103cdd61b4d11826925f93d8a018871c9e33a3c890234ea00ab0eaebfa

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

# frozen_string_literal: true

module Getch
  module Gentoo
    class UseFlag
      def initialize
        @efi = Helpers.efi?
      end

      def apply
        systemd
        pam
        kernel
        kmod
        grub
        zfs
        lvm
        cryptsetup
      end

      private

      def systemd
        flags = []
        use = Getch::Gentoo::Use.new('sys-apps/systemd')
        flags << 'dns-over-tls'
        flags << 'gnuefi' if @efi
        use.add(flags)
      end

      def pam
        flags = []
        use = Getch::Gentoo::Use.new('sys-auth/pambase')
        flags << '-passwdqc'
        flags << 'pwquality'
        flags << 'sha512'
        use.add(flags)
      end

      def kernel
        use = Getch::Gentoo::Use.new('sys-kernel/gentoo-kernel')
        use.add('hardened')
      end

      def kmod
        use = Getch::Gentoo::Use.new('sys-apps/kmod')
        use.add('zstd', 'lzma')
      end

      def grub
        return if @efi

        flags = []
        use = Getch::Gentoo::Use.new('sys-boot/grub')
        flags << '-grub_platforms_efi-64'
        flags << 'libzfs' if Getch::OPTIONS[:fs] == 'zfs'
        flags << 'device-mapper' if Getch::OPTIONS[:fs] == 'lvm'
        use.add(flags)
      end

      def zfs
        return unless Getch::OPTIONS[:fs] == 'zfs'

        use = Getch::Gentoo::Use.new('sys-fs/zfs-kmod')
        use.add('rootfs')
        use = Getch::Gentoo::Use.new('sys-fs/zfs')
        use.add('rootfs')

        # https://wiki.gentoo.org/wiki/Project:Distribution_Kernel
        use = Getch::Gentoo::Use.new
        use.add_global('dist-kernel')
      end

      def lvm
        return unless Getch::OPTIONS[:fs] == 'lvm'

        use = Getch::Gentoo::Use.new
        use.add_global('lvm', 'device-mapper')
      end

      def cryptsetup
        return unless Getch::OPTIONS[:encrypt]

        use = Getch::Gentoo::Use.new
        use.add_global('cryptsetup')
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
getch-0.1.9 lib/getch/gentoo/use_flag.rb