⛏️ index : haiku.git

# This file defines the content of the minimum Haiku image.

SYSTEM_BIN = [ FFilterByBuildFeatures
	addattr
	alert
	arp
	autologin
	beep
	bfsinfo
	catattr
	checkfs
	checkitout
	chop
	clear
	collectcatkeys
	copyattr
	desklink
	df
	diskimage
	draggers
	driveinfo
	dstcheck
	dumpcatalog
	eject
	error
	fdinfo
	ffm
	filepanel
	finddir
	findpaths
	fortune
	fstrim
	ftpd
	getarch
	groupadd
	groupdel
	groupmod
	hd
	hey
	ifconfig
	iroster
	isvolume
	kernel_debugger
	keymap
	keystore
	launch_roster
	linkcatkeys
	listarea
	listattr
	listimage
	listdev
	listfont
	listport
	listres
	listsem
	listusb
	locale
	logger
	login
	lsindex
	makebootable
	message
	mimeset
	mkfs
	mkindex
	modifiers
	mount
	mountvolume
	netstat
	notify
	open
	package
	package_repo
	passwd
	pc
	ping
	pkgman
	prio
	profile
	ps
	query
	quit
	ramdisk
	rc
	reindex
	release
	renice
	resattr
	resizefs
	rmattr
	rmindex
	roster
	route
	safemode
	screen_blanker
	screeninfo
	screenmode
	setarch
	setmime
	settype
	setversion
	setvolume
	shutdown
	strace
	su
	sysinfo
	system_time
	tcptester
	telnet
	telnetd
	top
	traceroute
	trash
	unchop
	unmount
	urlwrapper
	useradd
	userdel
	version
	vmstat
	waitfor
	watch
	writembr@x86,x86_64
	xres
] ;

SYSTEM_APPS = [ FFilterByBuildFeatures
	AboutSystem
	BootManager@x86,x86_64
	CharacterMap
	Debugger@libedit
	DeskCalc
	Devices
	DiskProbe
	DiskUsage
	DriveSetup
	Expander
	Installer
	NetworkStatus
	ProcessController
	ShowImage
	StyledEdit
	Terminal
	TextSearch
	Workspaces
] ;

DESKBAR_APPLICATIONS =
	CharacterMap
	DeskCalc
	Devices
	DiskProbe
	DiskUsage
	DriveSetup
	Expander
	Installer
	StyledEdit
	Terminal
;

DESKBAR_DESKTOP_APPLETS =
	NetworkStatus
	ProcessController
	Workspaces
;

SYSTEM_PREFERENCES = [ FFilterByBuildFeatures
	Appearance
	Backgrounds
	<preference>Deskbar
	FileTypes
	Input
	Keymap
	Locale
	Network
	Notifications
	Screen
	Shortcuts
	Time
	<preference>Tracker
	VirtualMemory
] ;

SYSTEM_DEMOS = ;


rule HaikuImageGetSystemLibs
{
	return
		# libs with special grist
		[ MultiArchDefaultGristFiles libroot.so : revisioned ]
		[ Libstdc++ForImage ]
		# libs with standard grist
		[ MultiArchDefaultGristFiles [ FFilterByBuildFeatures
			libbe.so
			libbsd.so
			libbnetapi.so
			libdebug.so
			libdebugger.so@primary
			libdevice.so
			libgnu.so
			libnetwork.so
			libpackage.so
			libtextencoding.so
			libtracker.so
			libtranslation.so
		] ]
		;
}


rule HaikuImageGetPrivateSystemLibs
{
	return [ MultiArchDefaultGristFiles [ FFilterByBuildFeatures
		libalm.so
		libpackage-add-on-libsolv.so
		libroot-addon-icu.so
	] ] ;
}


SYSTEM_SERVERS = [ FFilterByBuildFeatures
	app_server
	debug_server
	dns_resolver_server
	input_server
	keystore_server
	launch_daemon
	mount_server
	net_server
	notification_server
	package_daemon
	power_daemon
	registrar
	syslog_daemon
] ;

SYSTEM_NETWORK_DEVICES =
	ethernet
	loopback
	tunnel
;

SYSTEM_NETWORK_DATALINK_PROTOCOLS =
	<module>arp
	ethernet_frame
	ipv6_datagram
	loopback_frame
;

#SYSTEM_NETWORK_PPP = ipcp modem pap pppoe KPPPManager ;

SYSTEM_NETWORK_PROTOCOLS =
	icmp
	icmp6
	ipv4
	ipv6
	tcp
	udp
	unix
;

SYSTEM_ADD_ONS_ACCELERANTS = [ FFilterByBuildFeatures
	framebuffer.accelerant
	x86,x86_64 @{
		vesa.accelerant
	}@ # x86,x86_64
	riscv64 @{
		# ati for qemu, radeon_hd for unmatched
		ati.accelerant
		radeon_hd.accelerant
	}@ # riscv64
] ;

SYSTEM_ADD_ONS_TRANSLATORS =
	STXTTranslator
;

SYSTEM_ADD_ONS_LOCALE_CATALOGS =
	<catalog-addon>plaintext
;

SYSTEM_ADD_ONS_MEDIA = ;

SYSTEM_ADD_ONS_MEDIA_PLUGINS =  ;

SYSTEM_ADD_ONS_PRINT = ;

SYSTEM_ADD_ONS_PRINT_TRANSPORT = ;

SYSTEM_ADD_ONS_SCREENSAVERS = ;

SYSTEM_ADD_ONS_DRIVERS_AUDIO = ;

SYSTEM_ADD_ONS_DRIVERS_AUDIO_OLD = ;

SYSTEM_ADD_ONS_DRIVERS_GRAPHICS = [ FFilterByBuildFeatures
	framebuffer
	x86,x86_64 @{
		vesa
	}@ # x86,x86_64
	riscv64 @{
		# ati for qemu, radeon_hd for unmatched
		ati
		radeon_hd
	}@ # riscv64
] ;

SYSTEM_ADD_ONS_DRIVERS_MIDI = ;

SYSTEM_ADD_ONS_DRIVERS_NET = [ FFilterByBuildFeatures
	x86,x86_64,riscv64 @{
		3com
		atheros813x
		atheros81xx
		attansic_l1
		attansic_l2
		broadcom440x
		broadcom570x
		dec21xxx
		ipro100
		ipro1000
		intel22x
		jmicron2x0
		marvell_yukon
		nforce
		pcnet
		rtl8125
		rtl8139
		rtl81xx
		sis19x
		sis900
		syskonnect
		via_rhine
		vmxnet
		vt612x
	}@ # x86,x86_64,riscv64

	etherpci
	pegasus
	usb_asix
	usb_davicom
	usb_rndis
	wb840
] ;

SYSTEM_ADD_ONS_DRIVERS_POWER = [ FFilterByBuildFeatures
	x86,x86_64 @{
		acpi_button
		acpi_thermal
		amd_thermal
		pch_thermal
	}@ # x86,x86_64
] ;

SYSTEM_ADD_ONS_DRIVERS_SENSOR = [ FFilterByBuildFeatures
	acpi_als@x86,x86_64
] ;


SYSTEM_ADD_ONS_BUS_MANAGERS = [ FFilterByBuildFeatures
	acpi@x86,x86_64,arm64
	agp_gart@x86,x86_64
	ata
	i2c@x86,x86_64
	isa@x86,x86_64
	mmc
	scsi
	pci
	ps2@x86,x86_64
	fdt@riscv64,arm,arm64
	random
	usb
	virtio
] ;

SYSTEM_ADD_ONS_FILE_SYSTEMS =
	attribute_overlay
	bfs
	bindfs
	btrfs
	exfat
	ext2
	fat
	iso9660
	log_overlay
	ntfs
	packagefs
	ramfs
	reiserfs
	udf
	write_overlay
;

# symlink to home on desktop
AddSymlinkToHaikuImage home Desktop : /boot/home : Home ;

# global settings when a package is installed in ~/config
AddDirectoryToHaikuImage home config settings global ;

# user scripts and data files
local userBootScripts = UserBootscript UserSetupEnvironment.sample ;
SEARCH on $(userBootScripts) = [ FDirName $(HAIKU_TOP) data config boot ] ;
AddFilesToHaikuImage home config settings boot : $(userBootScripts) ;

SEARCH on <user-first-login>first_login
	= [ FDirName $(HAIKU_TOP) data settings ] ;
AddFilesToHaikuImage home config settings : <user-first-login>first_login ;

local etcDir = [ FDirName $(HAIKU_TOP) data etc ] ;
local etcFiles = inputrc profile ;
etcFiles = $(etcFiles:G=etc) ;
SEARCH on $(etcFiles) = $(etcDir) ;
AddFilesToHaikuImage system settings etc : $(etcFiles) ;

local profileFiles = [ Glob $(etcDir)/profile.d : *.sh ] ;
profileFiles = $(profileFiles:G=profile-d) ;
AddDirectoryToHaikuImage system settings etc profile.d ;
AddFilesToHaikuImage system settings etc profile.d : $(profileFiles) ;

local driverSettingsFiles = <driver-settings>kernel ;
SEARCH on $(driverSettingsFiles)
	= [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ;
AddFilesToHaikuImage home config settings kernel drivers
	: $(driverSettingsFiles) ;

local networkSettingsFiles = <network-settings>services
	<network-settings>hosts ;

SEARCH on $(networkSettingsFiles)
	= [ FDirName $(HAIKU_TOP) data settings network ] ;
AddFilesToHaikuImage system settings network : $(networkSettingsFiles) ;

# repository config and cache files
local repository ;
for repository in $(HAIKU_REPOSITORIES) {
	local config = [ on $(repository) return $(HAIKU_REPOSITORY_CONFIG_FILE) ] ;
	local cache = [ on $(repository) return $(HAIKU_REPOSITORY_CACHE_FILE) ] ;
	if $(HAIKU_UPDATE_ALL_PACKAGES) {
		HAIKU_INCLUDE_IN_IMAGE on $(config) $(cache) = 1 ;
	}
	AddFilesToHaikuImage system settings package-repositories
		: $(config) : $(repository:G=) ;
	AddFilesToHaikuImage system cache package-repositories
		: $(cache) : $(repository:G=) ;
}