From d37e45364390560e44b9fe06c1017d73b53e4edf Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:42:25 -0800 Subject: [PATCH 001/107] 2016-03: Retroactive initial commit --- LICENSE.txt | 7 + archlive/airootfs/etc/fstab | 0 archlive/airootfs/etc/hostname | 1 + archlive/airootfs/etc/locale.conf | 1 + archlive/airootfs/etc/machine-id | 0 .../etc/skel/.config/gtk-3.0/settings.ini | 15 ++ .../xfce4/desktop/icons.screen0-1008x672.rc | 11 ++ .../xfce4/desktop/icons.screen0-1008x711.rc | 19 ++ .../xfce4/desktop/icons.screen0-1008x752.rc | 11 ++ .../etc/skel/.config/xfce4/helpers.rc | 2 + .../skel/.config/xfce4/panel/cpugraph-9.rc | 17 ++ .../.config/xfce4/panel/whiskermenu-18.rc | 60 +++++++ .../skel/.config/xfce4/terminal/terminalrc | 26 +++ .../skel/.config/xfce4/xfce4-taskmanager.rc | 25 +++ .../xfconf/xfce-perchannel-xml/displays.xml | 18 ++ .../xfconf/xfce-perchannel-xml/keyboards.xml | 7 + .../xfconf/xfce-perchannel-xml/thunar.xml | 10 ++ .../xfce-perchannel-xml/xfce4-appfinder.xml | 46 +++++ .../xfce-perchannel-xml/xfce4-desktop.xml | 44 +++++ .../xfce4-keyboard-shortcuts.xml | 167 ++++++++++++++++++ .../xfce4-mime-settings.xml | 11 ++ .../xfce-perchannel-xml/xfce4-panel.xml | 46 +++++ .../xfce4-power-manager.xml | 10 ++ .../xfce-perchannel-xml/xfce4-session.xml | 46 +++++ .../xfce4-settings-editor.xml | 9 + .../xfce4-settings-manager.xml | 8 + .../xfconf/xfce-perchannel-xml/xfwm4.xml | 87 +++++++++ .../xfconf/xfce-perchannel-xml/xsettings.xml | 38 ++++ archlive/airootfs/etc/skel/.conky_start | 3 + archlive/airootfs/etc/skel/.conkyrc | 161 +++++++++++++++++ archlive/airootfs/etc/skel/.rsync_exclusions | 30 ++++ archlive/airootfs/etc/skel/.vimrc | 64 +++++++ archlive/airootfs/etc/skel/.xinitrc | 50 ++++++ archlive/airootfs/etc/skel/.zlogin | 1 + archlive/airootfs/etc/skel/.zsh_aliases | 31 ++++ archlive/airootfs/etc/skel/.zshrc | 86 +++++++++ .../getty@tty1.service.d/autologin.conf | 3 + .../airootfs/etc/udev/rules.d/81-dhcpcd.rules | 1 + archlive/airootfs/etc/vconsole.conf | 3 + archlive/airootfs/root/.automated_script.sh | 34 ++++ archlive/airootfs/root/.zlogin | 1 + archlive/airootfs/root/customize_airootfs.sh | 48 +++++ archlive/airootfs/root/install.txt | 3 + .../applications/Hardware Diagnostics.desktop | 10 ++ .../usr/share/applications/SpeedTest.desktop | 10 ++ archlive/mkinitcpio.conf | 2 + archlive/packages.both | 89 ++++++++++ archlive/packages.i686 | 0 archlive/packages.x86_64 | 0 archlive/pacman.conf | 92 ++++++++++ 50 files changed, 1464 insertions(+) create mode 100644 LICENSE.txt create mode 100644 archlive/airootfs/etc/fstab create mode 100644 archlive/airootfs/etc/hostname create mode 100644 archlive/airootfs/etc/locale.conf create mode 100644 archlive/airootfs/etc/machine-id create mode 100644 archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x672.rc create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x711.rc create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x752.rc create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/helpers.rc create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/panel/cpugraph-9.rc create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mime-settings.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml create mode 100644 archlive/airootfs/etc/skel/.conky_start create mode 100644 archlive/airootfs/etc/skel/.conkyrc create mode 100644 archlive/airootfs/etc/skel/.rsync_exclusions create mode 100644 archlive/airootfs/etc/skel/.vimrc create mode 100644 archlive/airootfs/etc/skel/.xinitrc create mode 100644 archlive/airootfs/etc/skel/.zlogin create mode 100644 archlive/airootfs/etc/skel/.zsh_aliases create mode 100644 archlive/airootfs/etc/skel/.zshrc create mode 100644 archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf create mode 100644 archlive/airootfs/etc/udev/rules.d/81-dhcpcd.rules create mode 100644 archlive/airootfs/etc/vconsole.conf create mode 100644 archlive/airootfs/root/.automated_script.sh create mode 100644 archlive/airootfs/root/.zlogin create mode 100644 archlive/airootfs/root/customize_airootfs.sh create mode 100644 archlive/airootfs/root/install.txt create mode 100644 archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop create mode 100644 archlive/airootfs/usr/share/applications/SpeedTest.desktop create mode 100644 archlive/mkinitcpio.conf create mode 100644 archlive/packages.both create mode 100644 archlive/packages.i686 create mode 100644 archlive/packages.x86_64 create mode 100644 archlive/pacman.conf diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..7734ae70 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,7 @@ +Copyright (c) 2016 Alan Mason + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/archlive/airootfs/etc/fstab b/archlive/airootfs/etc/fstab new file mode 100644 index 00000000..e69de29b diff --git a/archlive/airootfs/etc/hostname b/archlive/airootfs/etc/hostname new file mode 100644 index 00000000..2dbe21eb --- /dev/null +++ b/archlive/airootfs/etc/hostname @@ -0,0 +1 @@ +archiso diff --git a/archlive/airootfs/etc/locale.conf b/archlive/airootfs/etc/locale.conf new file mode 100644 index 00000000..01ec548f --- /dev/null +++ b/archlive/airootfs/etc/locale.conf @@ -0,0 +1 @@ +LANG=en_US.UTF-8 diff --git a/archlive/airootfs/etc/machine-id b/archlive/airootfs/etc/machine-id new file mode 100644 index 00000000..e69de29b diff --git a/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini b/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini new file mode 100644 index 00000000..55e57f9b --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini @@ -0,0 +1,15 @@ +[Settings] +gtk-theme-name=Numix +gtk-icon-theme-name=Adwaita +gtk-font-name=Noto Sans 10 +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintfull +gtk-xft-rgba=none diff --git a/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x672.rc b/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x672.rc new file mode 100644 index 00000000..dd31bbe4 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x672.rc @@ -0,0 +1,11 @@ +[xfdesktop-version-4.10.3+-rcfile_format] +4.10.3+=true + +[/] +row=0 +col=0 + +[/home/wktech] +row=1 +col=0 + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x711.rc b/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x711.rc new file mode 100644 index 00000000..f8a12092 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x711.rc @@ -0,0 +1,19 @@ +[xfdesktop-version-4.10.3+-rcfile_format] +4.10.3+=true + +[/home/wktech/Desktop/SpeedTest.desktop] +row=2 +col=0 + +[/home/wktech/Desktop/HW Diagnostics.desktop] +row=3 +col=0 + +[/] +row=0 +col=0 + +[/home/wktech] +row=1 +col=0 + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x752.rc b/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x752.rc new file mode 100644 index 00000000..dd31bbe4 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x752.rc @@ -0,0 +1,11 @@ +[xfdesktop-version-4.10.3+-rcfile_format] +4.10.3+=true + +[/] +row=0 +col=0 + +[/home/wktech] +row=1 +col=0 + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc b/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc new file mode 100644 index 00000000..149d8b72 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc @@ -0,0 +1,2 @@ +WebBrowser=chromium + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/panel/cpugraph-9.rc b/archlive/airootfs/etc/skel/.config/xfce4/panel/cpugraph-9.rc new file mode 100644 index 00000000..220e1d4b --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/panel/cpugraph-9.rc @@ -0,0 +1,17 @@ +UpdateInterval=0 +TimeScale=0 +Size=32 +Mode=0 +Frame=1 +Border=1 +Bars=0 +TrackedCore=0 +Command=xfce4-taskmanager +InTerminal=0 +StartupNotification=1 +ColorMode=0 +Foreground1=#2b2b6363b1b1 +Foreground2=#ffff00000000 +Foreground3=#00000000ffff +Background=#2b2b2e2e3737 + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc new file mode 100644 index 00000000..efcae705 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc @@ -0,0 +1,60 @@ +favorites=exo-file-manager.desktop,gparted.desktop,gsmartcontrol.desktop,truecrypt.desktop,exo-web-browser.desktop +recent=xfce4-settings-editor.desktop,xfce-session-settings.desktop,xfce-workspaces-settings.desktop,gsmartcontrol.desktop,gparted.desktop,gksu-properties.desktop,xfce-keyboard-settings.desktop,xfce-backdrop-settings.desktop,truecrypt.desktop,exo-web-browser.desktop +button-title=Applications +button-icon=desktop-environment-xfce +button-single-row=false +show-button-title=false +show-button-icon=true +launcher-show-name=true +launcher-show-description=true +item-icon-size=3 +hover-switch-category=false +category-icon-size=1 +load-hierarchy=false +recent-items-max=10 +favorites-in-recent=true +display-recent-default=false +position-search-alternate=false +position-commands-alternate=false +position-categories-alternate=false +menu-width=399 +menu-height=508 +menu-opacity=100 +command-settings=xfce4-settings-manager +show-command-settings=true +command-lockscreen=xflock4 +show-command-lockscreen=false +command-switchuser=gdmflexiserver +show-command-switchuser=false +command-logout=xfce4-session-logout +show-command-logout=true +command-menueditor=menulibre +show-command-menueditor=true +command-profile=mugshot +show-command-profile=false +search-actions=4 + +[action0] +name=Man Pages +pattern=# +command=exo-open --launch TerminalEmulator man %s +regex=false + +[action1] +name=Wikipedia +pattern=!w +command=exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u +regex=false + +[action2] +name=Run in Terminal +pattern=! +command=exo-open --launch TerminalEmulator %s +regex=false + +[action3] +name=Open URI +pattern=^(file|http|https):\\/\\/(.*)$ +command=exo-open \\0 +regex=true + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc b/archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc new file mode 100644 index 00000000..15984ea3 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc @@ -0,0 +1,26 @@ +[Configuration] +FontName=Inconsolata 13 +MiscAlwaysShowTabs=FALSE +MiscBell=FALSE +MiscBordersDefault=TRUE +MiscCursorBlinks=FALSE +MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK +MiscDefaultGeometry=80x24 +MiscInheritGeometry=FALSE +MiscMenubarDefault=TRUE +MiscMouseAutohide=FALSE +MiscToolbarDefault=FALSE +MiscConfirmClose=TRUE +MiscCycleTabs=TRUE +MiscTabCloseButtons=TRUE +MiscTabCloseMiddleClick=TRUE +MiscTabPosition=GTK_POS_TOP +MiscHighlightUrls=TRUE +ColorForeground=#839496 +ColorBackground=#002b36 +ColorCursor=#93a1a1 +ColorPalette=#073642;#dc322f;#859900;#b58900;#268bd2;#d33682;#2aa198;#eee8d5;#002b36;#cb4b16;#586e75;#657b83;#839496;#6c71c4;#93a1a1;#fdf6e3 +ColorBold=#93a1a1 +ColorBoldUseDefault=FALSE +TabActivityColor=#dc322f + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc b/archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc new file mode 100644 index 00000000..dfbd1328 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc @@ -0,0 +1,25 @@ +[Settings] +ShowAllProcesses=FALSE +MorePrecision=FALSE +FullCommandLine=FALSE +ShowStatusIcon=FALSE +ShowMemoryInXBytes=FALSE +MonitorPaintBox=TRUE +ShowApplicationIcons=TRUE +ToolbarStyle=DEFAULT +PromptTerminateTask=TRUE +RefreshRate=750 +ColumnUID=FALSE +ColumnPID=TRUE +ColumnPPID=FALSE +ColumnState=FALSE +ColumnVSZ=FALSE +ColumnRSS=TRUE +ColumnCPU=TRUE +ColumnPriority=FALSE +SortColumn=0 +SortType=0 +WindowWidth=838 +WindowHeight=591 +HandlePosition=100 +ProcessTreeView=FALSE diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml new file mode 100644 index 00000000..3fab8b73 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml new file mode 100644 index 00000000..9fd09d61 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml new file mode 100644 index 00000000..020078d0 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml new file mode 100644 index 00000000..c135c100 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml new file mode 100644 index 00000000..91600493 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml new file mode 100644 index 00000000..76dc6bac --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mime-settings.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mime-settings.xml new file mode 100644 index 00000000..33cccb13 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mime-settings.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml new file mode 100644 index 00000000..dc424b47 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml new file mode 100644 index 00000000..ff8fb309 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml new file mode 100644 index 00000000..0e99df2f --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml new file mode 100644 index 00000000..a7c84531 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml new file mode 100644 index 00000000..a9444be1 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml new file mode 100644 index 00000000..edfe5c35 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml new file mode 100644 index 00000000..c00d8438 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.conky_start b/archlive/airootfs/etc/skel/.conky_start new file mode 100644 index 00000000..95add4d0 --- /dev/null +++ b/archlive/airootfs/etc/skel/.conky_start @@ -0,0 +1,3 @@ +#!/bin/bash + +sleep 2s && conky diff --git a/archlive/airootfs/etc/skel/.conkyrc b/archlive/airootfs/etc/skel/.conkyrc new file mode 100644 index 00000000..796c3aee --- /dev/null +++ b/archlive/airootfs/etc/skel/.conkyrc @@ -0,0 +1,161 @@ +# For commands above TEXT check: +# http://conky.sourceforge.net/config_settings.html +# +# For commands available below TEXT check: +# http://conky.sourceforge.net/variables.html + +# Bunsen Labs Conky help threads +# http://crunchbang.org/forums/viewtopic.php?pid=371424#p371424 + +# beta tested by: smacz +# Enjoy! :) + +# pkill -xf "conky -q -c $HOME/.config/conky/BL-Default.conkyrc" & +### Begin Window Settings ##################### +own_window yes +own_window_type normal +own_window_transparent yes +own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky +own_window_colour 000000 +own_window_class Conky +#own_window_title Bunsen Labs Default Conky +own_window_title Default Conky + +### ARGB can be used for real transparency +### NOTE that a composite manager is required for real transparency. +### This option will not work as desired (in most cases) in conjunction with +### own_window_type normal +# own_window_argb_visual yes # Options: yes or no + +### When ARGB visuals are enabled, this use this to modify the alpha value +### Use: own_window_type normal +### Use: own_window_transparent no +### Valid range is 0-255, where 0 is 0% opacity, and 255 is 100% opacity. +# own_window_argb_value 50 + +minimum_size 180 0 ### width | height +maximum_width 180 + +gap_x 20 ### left | right +gap_y 45 ### up | down + +alignment tr +####################### End Window Settings ### +### Font Settings ############################# +# Use Xft (anti-aliased font and stuff) +use_xft yes +xftfont Inconsolata:bold:size=9 +#xftfont Liberation Sans:size=9 + +# Alpha of Xft font. Must be a value at or between 1 and 0 ### +xftalpha 1 +# Force UTF8? requires XFT ### +override_utf8_locale yes + +uppercase no +######################### End Font Settings ### +### Colour Settings ########################### +draw_shades no #yes +default_shade_color 000000 + +draw_outline no # amplifies text if yes +default_outline_color 000000 + +#default_color 656667 # Waldorf original colour +#default_color 7a7a7a # Flame & Bunsen Grey +#default_color 929292 # Labs Grey +default_color C0C0C0 # Silver +color0 B0E0E6 # PowderBlue +color1 778899 # LightSlateGray +color2 D8BFD8 # Thistle +color3 9ACD32 # YellowGreen +color4 FFA07A # LightSalmon +color5 FFDEAD # NavajoWhite +color6 00BFFF # DeepSkyBlue +color7 5F9EA0 # CadetBlue +color8 BDB76B # DarkKhaki +color9 CD5C5C # IndianRed +####################### End Colour Settings ### +### Borders Section ########################### +draw_borders no +# Stippled borders? +stippled_borders 5 +# border margins +border_inner_margin 5 +border_outer_margin 0 +# border width +border_width 2 +# graph borders +draw_graph_borders yes #no +#default_graph_size 15 40 +####################### End Borders Section ### +### Miscellaneous Section ##################### +# Boolean value, if true, Conky will be forked to background when started. +background yes + +# Adds spaces around certain objects to stop them from moving other things +# around, this only helps if you are using a mono font +# Options: right, left or none +use_spacer none + +# Default and Minimum size is 256 - needs more for single commands that +# "call" a lot of text IE: bash scripts +text_buffer_size 6144 + +# Subtract (file system) buffers from used memory? +no_buffers yes + +# change GiB to G and MiB to M +short_units yes + +# Like it says, ot pads the decimals on % values +# doesn't seem to work since v1.7.1 +pad_percents 2 + +# Imlib2 image cache size, in bytes. Default 4MiB Increase this value if you use +# $image lots. Set to 0 to disable the image cache. +imlib_cache_size 0 + +# Use the Xdbe extension? (eliminates flicker) +# It is highly recommended to use own window with this one +# so double buffer won't be so big. +double_buffer yes + +# Maximum size of user text buffer, i.e. layout below TEXT line in config file +# (default is 16384 bytes) +# max_user_text 16384 + +# Desired output unit of all objects displaying a temperature. Parameters are +# either "fahrenheit" or "celsius". The default unit is degree Celsius. +# temperature_unit Fahrenheit + +################# End Miscellaneous Section ### +#### ${font Monospace:bold:size=10}${alignc}${execpi 600 $HOME/.config/conky/scripts/bunsenweather.sh} +update_interval 1 + +TEXT +${color}${alignc}S Y S T E M I N F O +${hr} +Date:${alignr}${time %F} +Time:${alignr}${time %H:%M} +Uptime:${alignr}${uptime_short} + +CPU: ${if_match ${cpu cpu0}<10} ${cpu cpu0}\ +${else}${if_match ${cpu cpu0}<100} ${cpu cpu0}\ +${else}${cpu cpu0}${endif}${endif}% Used${alignr}${freq_g} GHz +${cpugraph cpu0 20,180 ${color} ${color}} +RAM: ${mem} Used${alignr}${memmax} +${memgraph 20,180 ${color} ${color}} +Disk I/O: +${diskiograph 20,180 ${color} ${color}} +Down: ${downspeed}${goto 115}Up:${alignr}${upspeed} + +${alignc}S H O R T C U T K E Y S +${hr} +[Win] + d${alignr}HW Diagnostics +[Win] + f${alignr}File Manager +[Win] + h${alignr}Task Manager +[Win] + r${alignr}Run Dialog +[Win] + t${alignr}Terminal +[Win] + w${alignr}Web Browser +[Win] + x${alignr}Logout diff --git a/archlive/airootfs/etc/skel/.rsync_exclusions b/archlive/airootfs/etc/skel/.rsync_exclusions new file mode 100644 index 00000000..a3586dc8 --- /dev/null +++ b/archlive/airootfs/etc/skel/.rsync_exclusions @@ -0,0 +1,30 @@ +$RECYCLE.BIN +$Recycle.Bin +.AppleDB +.AppleDesktop +.AppleDouble +.com.apple.timemachine.supported +.dbfseventsd +.DocumentRevisions-V100* +.DS_Store +.fseventsd +.PKInstallSandboxManager +.Spotlight* +.SymAV* +.symSchedScanLockxz +.TemporaryItems +.Trash* +.vol +.VolumeIcon.icns +desktop.ini +Desktop DB +Desktop DF +hiberfil.sys +lost+found +Network Trash Folder +pagefile.sys +Recycled +RECYCLER +System Volume Information +Temporary Items +Thumbs.db \ No newline at end of file diff --git a/archlive/airootfs/etc/skel/.vimrc b/archlive/airootfs/etc/skel/.vimrc new file mode 100644 index 00000000..d65c6a91 --- /dev/null +++ b/archlive/airootfs/etc/skel/.vimrc @@ -0,0 +1,64 @@ +" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just +" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime +" you can find below. If you wish to change any of those settings, you should +" do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten +" everytime an upgrade of the vim packages is performed. It is recommended to +" make changes after sourcing debian.vim since it alters the value of the +" 'compatible' option. + +" This line should not be removed as it ensures that various options are +" properly set to work with the Vim-related packages available in Debian. +runtime! debian.vim + +" Uncomment the next line to make Vim more Vi-compatible +" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous +" options, so any other options should be set AFTER setting 'compatible'. +"set compatible + +" Vim5 and later versions support syntax highlighting. Uncommenting the next +" line enables syntax highlighting by default. +syntax on + +" If using a dark background within the editing area and syntax highlighting +" turn on this option as well +set background=dark + +" Uncomment the following to have Vim jump to the last position when +" reopening a file +"if has("autocmd") +" au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif +"endif + +" Uncomment the following to have Vim load indentation rules and plugins +" according to the detected filetype. +"if has("autocmd") +" filetype plugin indent on +"endif + +" The following are commented out as they cause vim to behave a lot +" differently from regular Vi. They are highly recommended though. +"set showcmd " Show (partial) command in status line. +set showmatch " Show matching brackets. +"set ignorecase " Do case insensitive matching +"set smartcase " Do smart case matching +"set incsearch " Incremental search +"set autowrite " Automatically save before commands like :next and :make +"set hidden " Hide buffers when they are abandoned +"set mouse=a " Enable mouse usage (all modes) + +" Source a global configuration file if available +if filereadable("/etc/vim/vimrc.local") + source /etc/vim/vimrc.local +endif + +" 2Shirt Stuff +set autoindent " align the new line indent with the previous line +set expandtab " insert spaces when hitting TABs +set shiftround " round indent to multiple of 'shiftwidth' +set shiftwidth=4 " operation >> indents 4 columns; << unindents 4 columns +set softtabstop=4 " insert/delete 4 spaces when hitting a TAB/BACKSPACE +set tabstop=4 " an hard TAB displays as 4 columns + +" Python Stuff. +au FileType python set textwidth=79 " lines longer than 79 columns will be broken + diff --git a/archlive/airootfs/etc/skel/.xinitrc b/archlive/airootfs/etc/skel/.xinitrc new file mode 100644 index 00000000..5958cc9f --- /dev/null +++ b/archlive/airootfs/etc/skel/.xinitrc @@ -0,0 +1,50 @@ +#!/bin/sh + +userresources=$HOME/.Xresources +usermodmap=$HOME/.Xmodmap +sysresources=/etc/X11/xinit/.Xresources +sysmodmap=/etc/X11/xinit/.Xmodmap + +# merge in defaults and keymaps + +if [ -f $sysresources ]; then + + + + + + + + xrdb -merge $sysresources + +fi + +if [ -f $sysmodmap ]; then + xmodmap $sysmodmap +fi + +if [ -f "$userresources" ]; then + + + + + + + + xrdb -merge "$userresources" + +fi + +if [ -f "$usermodmap" ]; then + xmodmap "$usermodmap" +fi + +# Start GNOME-Keyring +eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) +export SSH_AUTH_SOCK + +# Start Openbox +#exec openbox-session + +# Start Xfce4 +exec startxfce4 diff --git a/archlive/airootfs/etc/skel/.zlogin b/archlive/airootfs/etc/skel/.zlogin new file mode 100644 index 00000000..70b70593 --- /dev/null +++ b/archlive/airootfs/etc/skel/.zlogin @@ -0,0 +1 @@ +[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx diff --git a/archlive/airootfs/etc/skel/.zsh_aliases b/archlive/airootfs/etc/skel/.zsh_aliases new file mode 100644 index 00000000..b7dc9bbc --- /dev/null +++ b/archlive/airootfs/etc/skel/.zsh_aliases @@ -0,0 +1,31 @@ +#!/bin/zsh +alias 7z0='7z a -t7z -mx=0' +alias 7z1='7z a -t7z -mx=1' +alias 7z3='7z a -t7z -mx=3' +alias 7z5='7z a -t7z -mx=5' +alias 7z7='7z a -t7z -mx=7' +alias 7z9='7z a -t7z -mx=9' +alias du='du -sch --apparent-size' +alias fix-perms='find -type d -exec chmod 755 "{}" \; && find -type f -exec chmod 644 "{}" \;' +alias less='less -S' +alias mkdir='mkdir -p' +alias mount='sudo mount' +alias mv='mv -nv' +alias photorec='sudo photorec' +alias q='clear && ls -lh' +alias q1='clear && ls -1' +alias q1a='clear && ls -1A' +alias qa='clear && ls -lAh' +alias qs='clear && ls' +alias qsa='clear && ls -A' +alias rm='rm -v' +alias rmdirs='find -depth -mindepth 1 -type d -exec rmdir "{}" --ignore-fail-on-non-empty \;' +alias rs='rsync -avhPS --stats --exclude-from="$HOME/.rsync_exclusions"' +alias rsz='rsync -avhzPS --stats --exclude-from="$HOME/.rsync_exclusions"' +alias sdu='sudo du -sch --apparent-size' +alias srmdirs='find -depth -mindepth 1 -type d -exec sudo rmdir "{}" --ignore-fail-on-non-empty \;' +alias srs='sudo rsync -avhPS --stats --exclude-from="$HOME/.rsync_exclusions"' +alias srsz='sudo rsync -avhzPS --stats --exclude-from="$HOME/.rsync_exclusions"' +alias testdisk='sudo testdisk' +alias umount='sudo umount' +alias unmount='sudo umount' diff --git a/archlive/airootfs/etc/skel/.zshrc b/archlive/airootfs/etc/skel/.zshrc new file mode 100644 index 00000000..1779863e --- /dev/null +++ b/archlive/airootfs/etc/skel/.zshrc @@ -0,0 +1,86 @@ +# Path to your oh-my-zsh installation. + export ZSH=$HOME/.oh-my-zsh + +# Set name of the theme to load. +# Look in ~/.oh-my-zsh/themes/ +# Optionally, if you set this to "random", it'll load a random theme each +# time that oh-my-zsh is loaded. +ZSH_THEME="lean" + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. Case +# sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" + +# Uncomment the following line to disable bi-weekly auto-update checks. +# DISABLE_AUTO_UPDATE="true" + +# Uncomment the following line to change how often to auto-update (in days). +# export UPDATE_ZSH_DAYS=13 + +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" + +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment the following line to enable command auto-correction. +# ENABLE_CORRECTION="true" + +# Uncomment the following line to display red dots whilst waiting for completion. +# COMPLETION_WAITING_DOTS="true" + +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +# HIST_STAMPS="mm/dd/yyyy" + +# Would you like to use another custom folder than $ZSH/custom? +# ZSH_CUSTOM=/path/to/new-custom-folder + +# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) +# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=(sudo) + +# User configuration + + export PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl" +# export MANPATH="/usr/local/man:$MANPATH" + +source $ZSH/oh-my-zsh.sh + +# You may need to manually set your language environment +# export LANG=en_US.UTF-8 + +# Preferred editor for local and remote sessions +# if [[ -n $SSH_CONNECTION ]]; then +# export EDITOR='vim' +# else +# export EDITOR='mvim' +# fi + +# Compilation flags +# export ARCHFLAGS="-arch x86_64" + +# ssh +# export SSH_KEY_PATH="~/.ssh/dsa_id" + +# Set personal aliases, overriding those provided by oh-my-zsh libs, +# plugins, and themes. Aliases can be placed here, though oh-my-zsh +# users are encouraged to define aliases within the ZSH_CUSTOM folder. +# For a full list of active aliases, run `alias`. +# +# Example aliases +# alias zshconfig="mate ~/.zshrc" +# alias ohmyzsh="mate ~/.oh-my-zsh" + +. ~/.zsh_aliases diff --git a/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf new file mode 100644 index 00000000..18966e67 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=-/sbin/agetty --autologin wktech --noclear %I 38400 linux diff --git a/archlive/airootfs/etc/udev/rules.d/81-dhcpcd.rules b/archlive/airootfs/etc/udev/rules.d/81-dhcpcd.rules new file mode 100644 index 00000000..1c4053c0 --- /dev/null +++ b/archlive/airootfs/etc/udev/rules.d/81-dhcpcd.rules @@ -0,0 +1 @@ +ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="en*|eth*", ENV{SYSTEMD_WANTS}="dhcpcd@$name.service" diff --git a/archlive/airootfs/etc/vconsole.conf b/archlive/airootfs/etc/vconsole.conf new file mode 100644 index 00000000..0a6a8587 --- /dev/null +++ b/archlive/airootfs/etc/vconsole.conf @@ -0,0 +1,3 @@ +KEYMAP=us +FONT=ter-u16n +FONT_MAP=8859-2 diff --git a/archlive/airootfs/root/.automated_script.sh b/archlive/airootfs/root/.automated_script.sh new file mode 100644 index 00000000..81a98a1a --- /dev/null +++ b/archlive/airootfs/root/.automated_script.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +script_cmdline () +{ + local param + for param in $(< /proc/cmdline); do + case "${param}" in + script=*) echo "${param#*=}" ; return 0 ;; + esac + done +} + +automated_script () +{ + local script rt + script="$(script_cmdline)" + if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then + if [[ "${script}" =~ ^http:// || "${script}" =~ ^ftp:// ]]; then + wget "${script}" --retry-connrefused -q -O /tmp/startup_script >/dev/null + rt=$? + else + cp "${script}" /tmp/startup_script + rt=$? + fi + if [[ ${rt} -eq 0 ]]; then + chmod +x /tmp/startup_script + /tmp/startup_script + fi + fi +} + +if [[ $(tty) == "/dev/tty1" ]]; then + automated_script +fi diff --git a/archlive/airootfs/root/.zlogin b/archlive/airootfs/root/.zlogin new file mode 100644 index 00000000..f598e43e --- /dev/null +++ b/archlive/airootfs/root/.zlogin @@ -0,0 +1 @@ +~/.automated_script.sh diff --git a/archlive/airootfs/root/customize_airootfs.sh b/archlive/airootfs/root/customize_airootfs.sh new file mode 100644 index 00000000..07bf9bc7 --- /dev/null +++ b/archlive/airootfs/root/customize_airootfs.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +set -e -u + +# Locale +sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen +locale-gen + +# Time Settings +ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime +#sed -i 's/#FallbackNTP/NTP/' /etc/systemd/timesyncd.conf +#timedatectl set-ntp true + +# root user settings +usermod -s /usr/bin/zsh root +cp -aT /etc/skel/ /root/ +rm /root/.zlogin +chmod 700 /root + +# Add wktech user +useradd -m -s /bin/zsh -G wheel -U wktech +echo "wktech:Abracadabra" | chpasswd + +# Enable sudo for %wheel +echo '%wheel ALL=(ALL) ALL' >> /etc/sudoers + +# Enable firewall +ufw enable + +# Set pacman mirrorlist +echo 'Server = http://arch.localmsp.org/arch/$repo/os/$arch' > /etc/pacman.d/mirrorlist +echo 'Server = http://arch.mirrors.ionfish.org/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://lug.mtu.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirror.rit.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirror.us.leaseweb.net/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist + +# journald settings (from archiso) +sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf + +# logind settings (from archiso) +sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' /etc/systemd/logind.conf +sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' /etc/systemd/logind.conf +sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf + +# Startup settings (from archiso) +systemctl enable pacman-init.service choose-mirror.service +systemctl enable NetworkManager.service +systemctl set-default multi-user.target diff --git a/archlive/airootfs/root/install.txt b/archlive/airootfs/root/install.txt new file mode 100644 index 00000000..3c8f171c --- /dev/null +++ b/archlive/airootfs/root/install.txt @@ -0,0 +1,3 @@ +View this installation guide online at +https://wiki.archlinux.org/index.php/Installation_Guide + diff --git a/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop b/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop new file mode 100644 index 00000000..8f6a5233 --- /dev/null +++ b/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Hardware Diagnostics +Comment= +Exec=xfce4-terminal -T "Hardware Diagnostics" -H -I xcos -x hw-diags +Icon=xcos +Path= +Terminal=false +StartupNotify=false diff --git a/archlive/airootfs/usr/share/applications/SpeedTest.desktop b/archlive/airootfs/usr/share/applications/SpeedTest.desktop new file mode 100644 index 00000000..eeb2e9be --- /dev/null +++ b/archlive/airootfs/usr/share/applications/SpeedTest.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=SpeedTest +Comment= +Exec=xfce4-terminal -T SpeedTest -H -I network-workgroup -x speedtest +Icon=network-workgroup +Path= +Terminal=false +StartupNotify=false diff --git a/archlive/mkinitcpio.conf b/archlive/mkinitcpio.conf new file mode 100644 index 00000000..2f46da49 --- /dev/null +++ b/archlive/mkinitcpio.conf @@ -0,0 +1,2 @@ +HOOKS="base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard" +COMPRESSION="xz" diff --git a/archlive/packages.both b/archlive/packages.both new file mode 100644 index 00000000..f77bca10 --- /dev/null +++ b/archlive/packages.both @@ -0,0 +1,89 @@ +arch-install-scripts +b43-fwcutter +btrfs-progs +chromium +clonezilla +crda +darkhttpd +ddrescue +dhclient +dialog +dmraid +dnsmasq +dnsutils +dosfstools +elinks +ethtool +f2fs-tools +fsarchiver +git +gnome-keyring +gnu-netcat +gparted +gptfdisk +grub +gsmartcontrol +gtk-engine-murrine +hdparm +ipw2100-fw +ipw2200-fw +iw +lftp +librsvg +linux-atm +mc +mtools +network-manager-applet +networkmanager +nfs-utils +nilfs-utils +nmap +noto-fonts +ntfs-3g +ntp +numix-themes +openconnect +openssh +openvpn +p7zip +partclone +parted +partimage +ppp +pptpclient +refind-efi +rfkill +rp-pppoe +rsync +smartmontools +speedtest-cli +speedtouch +sudo +tcpdump +terminus-font +testdisk +tmux +truecrypt +ttf-inconsolata +ufw +usb_modeswitch +vim +vpnc +wget +wireless_tools +wpa_actiond +wpa_supplicant +wvdial +xf86-video-amdgpu +xf86-video-ati +xf86-video-intel +xf86-video-nouveau +xf86-video-vesa +xfce4 +xfce4-goodies +xl2tpd +xorg-server +xorg-server-utils +xorg-xinit +zd1211-firmware +zsh diff --git a/archlive/packages.i686 b/archlive/packages.i686 new file mode 100644 index 00000000..e69de29b diff --git a/archlive/packages.x86_64 b/archlive/packages.x86_64 new file mode 100644 index 00000000..e69de29b diff --git a/archlive/pacman.conf b/archlive/pacman.conf new file mode 100644 index 00000000..45fe03dc --- /dev/null +++ b/archlive/pacman.conf @@ -0,0 +1,92 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -C - -f %u > %o +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +#UseDelta = 0.7 +Architecture = auto + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +#Color +#TotalDownload +# We cannot check disk space from within a chroot environment +#CheckSpace +#VerbosePkgLists + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional +LocalFileSigLevel = Optional +#RemoteFileSigLevel = Required + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +#[testing] +#Include = /etc/pacman.d/mirrorlist + +[core] +Include = /etc/pacman.d/mirrorlist + +[extra] +Include = /etc/pacman.d/mirrorlist + +#[community-testing] +#Include = /etc/pacman.d/mirrorlist + +[community] +Include = /etc/pacman.d/mirrorlist + +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs + From 10a70e519287b4d5e0b3c67c786b9c0a49d8e440 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:44:12 -0800 Subject: [PATCH 002/107] 2016-04: Retroactive Updates * Added HFS+ to udevil's allowed types. * Added mediainfo to meet photorec-sort requirements * Removed git * Switched out Chromium for Midori * Size reduction test * hw-diags now tests USB drives (except ARCH drives) * mount-all-volumes no longer opens the file browser Bugfix: mount-backup-shares should now work. --- archlive/airootfs/etc/hostname | 2 +- .../etc/lightdm/lightdm-gtk-greeter.conf | 64 +++ archlive/airootfs/etc/lightdm/lightdm.conf | 163 ++++++ archlive/airootfs/etc/skel/.Xresources | 35 ++ archlive/airootfs/etc/skel/.bash_logout | 3 + archlive/airootfs/etc/skel/.bash_profile | 5 + archlive/airootfs/etc/skel/.bashrc | 9 + .../etc/skel/.config/autostart/Conky.desktop | 12 + .../autostart/urxvt-default-res.desktop | 12 + .../etc/skel/.config/autostart/wifi.desktop | 12 + .../etc/skel/.config/xfce4/helpers.rc | 3 +- .../.config/xfce4/panel/whiskermenu-18.rc | 4 +- .../xfce-perchannel-xml/xfce4-desktop.xml | 2 +- .../xfce4-keyboard-shortcuts.xml | 5 +- .../xfce-perchannel-xml/xfce4-panel.xml | 11 +- archlive/airootfs/etc/skel/.conky_start | 2 +- archlive/airootfs/etc/skel/.conkyrc | 16 +- archlive/airootfs/etc/skel/.dmrc | 3 + .../skel/.local/share/keyrings/login.keyring | Bin 0 -> 105 bytes .../skel/.local/share/keyrings/user.keystore | Bin 0 -> 207 bytes archlive/airootfs/etc/skel/.tmux.conf | 1 + archlive/airootfs/etc/skel/.urxvt_default_res | 11 + archlive/airootfs/etc/skel/.wifi | 5 + archlive/airootfs/etc/skel/.xinitrc | 23 - archlive/airootfs/etc/skel/.zlogin | 1 - archlive/airootfs/etc/skel/.zsh_aliases | 17 +- archlive/airootfs/etc/skel/.zshrc | 2 +- ...bus-org.freedesktop.NetworkManager.service | 1 + ...dbus-org.freedesktop.nm-dispatcher.service | 1 + .../systemd/system/display-manager.service | 1 + .../getty.target.wants/getty@tty1.service | 1 + .../NetworkManager.service | 1 + .../multi-user.target.wants/remote-fs.target | 1 + archlive/airootfs/etc/udevil/udevil.conf | 336 ++++++++++++ archlive/airootfs/root/customize_airootfs.sh | 16 +- archlive/airootfs/usr/local/bin/hw-diags | 86 ++++ .../airootfs/usr/local/bin/hw-diags-audio | 11 + .../airootfs/usr/local/bin/hw-diags-badblocks | 25 + .../airootfs/usr/local/bin/hw-diags-inner | 483 ++++++++++++++++++ .../airootfs/usr/local/bin/hw-diags-prime95 | 20 + .../airootfs/usr/local/bin/hw-diags-progress | 10 + .../airootfs/usr/local/bin/hw-diags-sensors | 43 ++ .../airootfs/usr/local/bin/mount-all-volumes | 14 + .../usr/local/bin/mount-backup-shares | 10 + archlive/airootfs/usr/local/bin/msword-search | 30 ++ .../applications/Hardware Diagnostics.desktop | 2 +- .../usr/share/applications/SpeedTest.desktop | 2 +- archlive/packages.both | 36 +- 48 files changed, 1491 insertions(+), 62 deletions(-) create mode 100644 archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf create mode 100644 archlive/airootfs/etc/lightdm/lightdm.conf create mode 100644 archlive/airootfs/etc/skel/.Xresources create mode 100644 archlive/airootfs/etc/skel/.bash_logout create mode 100644 archlive/airootfs/etc/skel/.bash_profile create mode 100644 archlive/airootfs/etc/skel/.bashrc create mode 100644 archlive/airootfs/etc/skel/.config/autostart/Conky.desktop create mode 100644 archlive/airootfs/etc/skel/.config/autostart/urxvt-default-res.desktop create mode 100644 archlive/airootfs/etc/skel/.config/autostart/wifi.desktop create mode 100644 archlive/airootfs/etc/skel/.dmrc create mode 100644 archlive/airootfs/etc/skel/.local/share/keyrings/login.keyring create mode 100644 archlive/airootfs/etc/skel/.local/share/keyrings/user.keystore create mode 100644 archlive/airootfs/etc/skel/.tmux.conf create mode 100644 archlive/airootfs/etc/skel/.urxvt_default_res create mode 100644 archlive/airootfs/etc/skel/.wifi delete mode 100644 archlive/airootfs/etc/skel/.zlogin create mode 100644 archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service create mode 100644 archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service create mode 100644 archlive/airootfs/etc/systemd/system/display-manager.service create mode 100644 archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service create mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service create mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/remote-fs.target create mode 100644 archlive/airootfs/etc/udevil/udevil.conf create mode 100644 archlive/airootfs/usr/local/bin/hw-diags create mode 100644 archlive/airootfs/usr/local/bin/hw-diags-audio create mode 100644 archlive/airootfs/usr/local/bin/hw-diags-badblocks create mode 100644 archlive/airootfs/usr/local/bin/hw-diags-inner create mode 100644 archlive/airootfs/usr/local/bin/hw-diags-prime95 create mode 100644 archlive/airootfs/usr/local/bin/hw-diags-progress create mode 100644 archlive/airootfs/usr/local/bin/hw-diags-sensors create mode 100644 archlive/airootfs/usr/local/bin/mount-all-volumes create mode 100644 archlive/airootfs/usr/local/bin/mount-backup-shares create mode 100644 archlive/airootfs/usr/local/bin/msword-search diff --git a/archlive/airootfs/etc/hostname b/archlive/airootfs/etc/hostname index 2dbe21eb..5e647960 100644 --- a/archlive/airootfs/etc/hostname +++ b/archlive/airootfs/etc/hostname @@ -1 +1 @@ -archiso +arch-wk diff --git a/archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf b/archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf new file mode 100644 index 00000000..ac30a13a --- /dev/null +++ b/archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf @@ -0,0 +1,64 @@ +# LightDM GTK+ Configuration +# Available configuration options listed below. +# +# Appearance: +# theme-name = GTK+ theme to use +# icon-theme-name = Icon theme to use +# background = Background file to use, either an image path or a color (e.g. #772953) +# user-background = false|true ("true" by default) Display user background (if available) +# transition-duration = Length of time (in milliseconds) to transition between background images ("500" by default) +# transition-type = ease-in-out|linear|none ("ease-in-out" by default) +# +# Fonts: +# font-name = Font to use +# xft-antialias = false|true Whether to antialias Xft fonts +# xft-dpi = Resolution for Xft in dots per inch (e.g. 96) +# xft-hintstyle = none|slight|medium|hintfull What degree of hinting to use +# xft-rgba = none|rgb|bgr|vrgb|vbgr Type of subpixel antialiasing +# +# Login window: +# active-monitor = Monitor to display greeter window (name or number). Use #cursor value to display greeter at monitor with cursor. Can be a semicolon separated list +# position = x y ("50% 50%" by default) Login window position +# default-user-image = Image used as default user icon, path or #icon-name +# hide-user-image = false|true ("false" by default) +# +# Panel: +# panel-position = top|bottom ("top" by default) +# clock-format = strftime-format string, e.g. %H:%M +# indicators = semi-colon ";" separated list of allowed indicator modules. Built-in indicators include "~a11y", "~language", "~session", "~power", "~clock", "~host", "~spacer". Unity indicators can be represented by short name (e.g. "sound", "power"), service file name, or absolute path +# +# Accessibility: +# a11y-states = states of accessibility features: "name" - save state on exit, "-name" - disabled at start (default value for unlisted), "+name" - enabled at start. Allowed names: contrast, font, keyboard, reader. +# keyboard = command to launch on-screen keyboard (e.g. "onboard") +# keyboard-position = x y[;width height] ("50%,center -0;50% 25%" by default) Works only for "onboard" +# reader = command to launch screen reader (e.g. "orca") +# +# Security: +# allow-debugging = false|true ("false" by default) +# screensaver-timeout = Timeout (in seconds) until the screen blanks when the greeter is called as lockscreen +# +# Template for per-monitor configuration: +# [monitor: name] +# background = overrides default value +# user-background = overrides default value +# laptop = false|true ("false" by default) Marks monitor as laptop display +# transition-duration = overrides default value +# +[greeter] +background=/usr/share/wallpaper/wallhaven-105688.png +#user-background= +theme-name=Numix +icon-theme-name=Numix-Circle-Light +font-name=Noto-Sans +#xft-antialias= +#xft-dpi= +#xft-hintstyle= +#xft-rgba= +hide-user-image=true +#indicators= +clock-format=%H:%M +#keyboard= +#reader= +#position=50%,center 100%,bottom +position=5% 45%,center +#screensaver-timeout= diff --git a/archlive/airootfs/etc/lightdm/lightdm.conf b/archlive/airootfs/etc/lightdm/lightdm.conf new file mode 100644 index 00000000..2281dff8 --- /dev/null +++ b/archlive/airootfs/etc/lightdm/lightdm.conf @@ -0,0 +1,163 @@ +# +# General configuration +# +# start-default-seat = True to always start one seat if none are defined in the configuration +# greeter-user = User to run greeter as +# minimum-display-number = Minimum display number to use for X servers +# minimum-vt = First VT to run displays on +# lock-memory = True to prevent memory from being paged to disk +# user-authority-in-system-dir = True if session authority should be in the system location +# guest-account-script = Script to be run to setup guest account +# logind-check-graphical = True to on start seats that are marked as graphical by logind +# log-directory = Directory to log information to +# run-directory = Directory to put running state in +# cache-directory = Directory to cache to +# sessions-directory = Directory to find sessions +# remote-sessions-directory = Directory to find remote sessions +# greeters-directory = Directory to find greeters +# backup-logs = True to move add a .old suffix to old log files when opening new ones +# +[LightDM] +#start-default-seat=true +#greeter-user=lightdm +#minimum-display-number=0 +#minimum-vt=7 # Setting this to a value < 7 implies security issues, see FS#46799 +#lock-memory=true +#user-authority-in-system-dir=false +#guest-account-script=guest-account +#logind-check-graphical=false +#log-directory=/var/log/lightdm +run-directory=/run/lightdm +#cache-directory=/var/cache/lightdm +#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions +#remote-sessions-directory=/usr/share/lightdm/remote-sessions +#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters +#backup-logs=true + +# +# Seat configuration +# +# Seat configuration is matched against the seat name glob in the section, for example: +# [Seat:*] matches all seats and is applied first. +# [Seat:seat0] matches the seat named "seat0". +# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client". +# +# type = Seat type (xlocal, xremote, unity) +# pam-service = PAM service to use for login +# pam-autologin-service = PAM service to use for autologin +# pam-greeter-service = PAM service to use for greeters +# xserver-command = X server command to run (can also contain arguments e.g. X -special-option) +# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option) +# xserver-config = Config file to pass to X server +# xserver-layout = Layout to pass to X server +# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server +# xserver-share = True if the X server is shared for both greeter and session +# xserver-hostname = Hostname of X server (only for type=xremote) +# xserver-display-number = Display number of X server (only for type=xremote) +# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true) +# xdmcp-port = XDMCP UDP/IP port to communicate on +# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf) +# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option) +# unity-compositor-timeout = Number of seconds to wait for compositor to start +# greeter-session = Session to load for greeter +# greeter-hide-users = True to hide the user list +# greeter-allow-guest = True if the greeter should show a guest login option +# greeter-show-manual-login = True if the greeter should offer a manual login option +# greeter-show-remote-login = True if the greeter should offer a remote login option +# user-session = Session to load for users +# allow-user-switching = True if allowed to switch users +# allow-guest = True if guest login is allowed +# guest-session = Session to load for guests (overrides user-session) +# session-wrapper = Wrapper script to run session with +# greeter-wrapper = Wrapper script to run greeter with +# guest-wrapper = Wrapper script to run guest sessions with +# display-setup-script = Script to run when starting a greeter session (runs as root) +# display-stopped-script = Script to run after stopping the display server (runs as root) +# greeter-setup-script = Script to run when starting a greeter (runs as root) +# session-setup-script = Script to run when starting a user session (runs as root) +# session-cleanup-script = Script to run when quitting a user session (runs as root) +# autologin-guest = True to log in as guest by default +# autologin-user = User to log in with by default (overrides autologin-guest) +# autologin-user-timeout = Number of seconds to wait before loading default user +# autologin-session = Session to load for automatic login (overrides user-session) +# autologin-in-background = True if autologin session should not be immediately activated +# exit-on-failure = True if the daemon should exit if this seat fails +# +[Seat:*] +#type=xlocal +pam-service=lightdm +pam-autologin-service=lightdm-autologin +#pam-greeter-service=lightdm-greeter +#xserver-command=X +#xmir-command=Xmir +#xserver-config= +#xserver-layout= +#xserver-allow-tcp=false +#xserver-share=true +#xserver-hostname= +#xserver-display-number= +#xdmcp-manager= +#xdmcp-port=177 +#xdmcp-key= +#unity-compositor-command=unity-system-compositor +#unity-compositor-timeout=60 +#greeter-session=example-gtk-gnome +#greeter-hide-users=false +#greeter-allow-guest=true +#greeter-show-manual-login=false +#greeter-show-remote-login=true +#user-session=default +#allow-user-switching=true +#allow-guest=true +#guest-session= +session-wrapper=/etc/lightdm/Xsession +#greeter-wrapper= +#guest-wrapper= +#display-setup-script= +#display-stopped-script= +#greeter-setup-script= +#session-setup-script= +#session-cleanup-script= +#autologin-guest=false +autologin-user=wktech +autologin-user-timeout=0 +#autologin-in-background=false +#autologin-session= +#exit-on-failure=false + +# +# XDMCP Server configuration +# +# enabled = True if XDMCP connections should be allowed +# port = UDP/IP port to listen for connections on +# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present) +# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf) +# +# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively +# it can be a word and the first 7 characters are used as the key. +# +[XDMCPServer] +#enabled=false +#port=177 +#listen-address= +#key= + +# +# VNC Server configuration +# +# enabled = True if VNC connections should be allowed +# command = Command to run Xvnc server with +# port = TCP/IP port to listen for connections on +# listen-address = Host/address to listen for VNC connections (use all addresses if not present) +# width = Width of display to use +# height = Height of display to use +# depth = Color depth of display to use +# +[VNCServer] +#enabled=false +#command=Xvnc +#port=5900 +#listen-address= +#width=1024 +#height=768 +#depth=8 diff --git a/archlive/airootfs/etc/skel/.Xresources b/archlive/airootfs/etc/skel/.Xresources new file mode 100644 index 00000000..5a39a77c --- /dev/null +++ b/archlive/airootfs/etc/skel/.Xresources @@ -0,0 +1,35 @@ +URxvt*font: xft:Inconsolata:size=11 + +URxvt*geometry: 128x32+24+24 + +URxvt*scrollBar_right: True +URxvt*scrollstyle: plain + +URxvt*shading: 30 +URxvt*transparent: true + +! Base16 Isotope +! Scheme: Jan T. Sott +!! Modified by 2Shirt + +*.foreground: #d0d0d0 +*.background: #000000 +*.cursorColor: #d0d0d0 + +*.color0: #000000 +*.color1: #ff0000 +*.color2: #33ff00 +*.color3: #ffd000 +*.color4: #0066ff +*.color5: #cc00ff +*.color6: #00ffff +*.color7: #d0d0d0 + +*.color8: #808080 +*.color9: #ff9900 +*.color10: #404040 +*.color11: #606060 +*.color12: #c0c0c0 +*.color13: #e0e0e0 +*.color14: #3300ff +*.color15: #ffffff diff --git a/archlive/airootfs/etc/skel/.bash_logout b/archlive/airootfs/etc/skel/.bash_logout new file mode 100644 index 00000000..0e4e4f18 --- /dev/null +++ b/archlive/airootfs/etc/skel/.bash_logout @@ -0,0 +1,3 @@ +# +# ~/.bash_logout +# diff --git a/archlive/airootfs/etc/skel/.bash_profile b/archlive/airootfs/etc/skel/.bash_profile new file mode 100644 index 00000000..5545f007 --- /dev/null +++ b/archlive/airootfs/etc/skel/.bash_profile @@ -0,0 +1,5 @@ +# +# ~/.bash_profile +# + +[[ -f ~/.bashrc ]] && . ~/.bashrc diff --git a/archlive/airootfs/etc/skel/.bashrc b/archlive/airootfs/etc/skel/.bashrc new file mode 100644 index 00000000..a355b0cd --- /dev/null +++ b/archlive/airootfs/etc/skel/.bashrc @@ -0,0 +1,9 @@ +# +# ~/.bashrc +# + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +alias ls='ls --color=auto' +PS1='[\u@\h \W]\$ ' diff --git a/archlive/airootfs/etc/skel/.config/autostart/Conky.desktop b/archlive/airootfs/etc/skel/.config/autostart/Conky.desktop new file mode 100644 index 00000000..56eb2051 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/autostart/Conky.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=0.9.4 +Type=Application +Name=Conky +Comment=Conky +Exec=/home/wktech/.conky_start +OnlyShowIn=XFCE; +StartupNotify=false +Terminal=false +Hidden=false + diff --git a/archlive/airootfs/etc/skel/.config/autostart/urxvt-default-res.desktop b/archlive/airootfs/etc/skel/.config/autostart/urxvt-default-res.desktop new file mode 100644 index 00000000..7ee94394 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/autostart/urxvt-default-res.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=0.9.4 +Type=Application +Name=urxvt-Resolution +Comment=urxvt-Resolution +Exec=/home/wktech/.urxvt_default_res +OnlyShowIn=XFCE; +StartupNotify=false +Terminal=false +Hidden=false + diff --git a/archlive/airootfs/etc/skel/.config/autostart/wifi.desktop b/archlive/airootfs/etc/skel/.config/autostart/wifi.desktop new file mode 100644 index 00000000..2459b12d --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/autostart/wifi.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=0.9.4 +Type=Application +Name=WiFi +Comment=WiFi +Exec=/home/wktech/.wifi +OnlyShowIn=XFCE; +StartupNotify=false +Terminal=false +Hidden=false + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc b/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc index 149d8b72..889c575f 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc +++ b/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc @@ -1,2 +1,3 @@ -WebBrowser=chromium +WebBrowser=midori +TerminalEmulator=urxvt diff --git a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc index efcae705..00f15a7d 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc +++ b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc @@ -1,5 +1,5 @@ -favorites=exo-file-manager.desktop,gparted.desktop,gsmartcontrol.desktop,truecrypt.desktop,exo-web-browser.desktop -recent=xfce4-settings-editor.desktop,xfce-session-settings.desktop,xfce-workspaces-settings.desktop,gsmartcontrol.desktop,gparted.desktop,gksu-properties.desktop,xfce-keyboard-settings.desktop,xfce-backdrop-settings.desktop,truecrypt.desktop,exo-web-browser.desktop +favorites=exo-file-manager.desktop,hwdiags.desktop,gparted.desktop,gsmartcontrol.desktop,truecrypt.desktop,speedtest.desktop,exo-web-browser.desktop +recent=exo-web-browser.desktop button-title=Applications button-icon=desktop-environment-xfce button-single-row=false diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml index 91600493..0337f6f7 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -7,7 +7,7 @@ - + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml index 76dc6bac..f52b0e10 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -46,7 +46,10 @@ - + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml index dc424b47..bd7b830d 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -13,8 +13,9 @@ - + + @@ -40,7 +41,13 @@ - + + + + + + + diff --git a/archlive/airootfs/etc/skel/.conky_start b/archlive/airootfs/etc/skel/.conky_start index 95add4d0..811f7722 100644 --- a/archlive/airootfs/etc/skel/.conky_start +++ b/archlive/airootfs/etc/skel/.conky_start @@ -1,3 +1,3 @@ #!/bin/bash -sleep 2s && conky +sleep 3s && conky diff --git a/archlive/airootfs/etc/skel/.conkyrc b/archlive/airootfs/etc/skel/.conkyrc index 796c3aee..9dafc71e 100644 --- a/archlive/airootfs/etc/skel/.conkyrc +++ b/archlive/airootfs/etc/skel/.conkyrc @@ -152,10 +152,12 @@ Down: ${downspeed}${goto 115}Up:${alignr}${upspeed} ${alignc}S H O R T C U T K E Y S ${hr} -[Win] + d${alignr}HW Diagnostics -[Win] + f${alignr}File Manager -[Win] + h${alignr}Task Manager -[Win] + r${alignr}Run Dialog -[Win] + t${alignr}Terminal -[Win] + w${alignr}Web Browser -[Win] + x${alignr}Logout +[Super] + d${alignr}HW Diagnostics +[Super] + f${alignr}File Manager +[Super] + h${alignr}Task Manager +[Super] + m${alignr}Mount Volumes +[Super] + r${alignr}Run Dialog +[Super] + s${alignr}SMART Check +[Super] + t${alignr}Terminal +[Super] + w${alignr}Web Browser +[Super] + x${alignr}Logout diff --git a/archlive/airootfs/etc/skel/.dmrc b/archlive/airootfs/etc/skel/.dmrc new file mode 100644 index 00000000..9cd11917 --- /dev/null +++ b/archlive/airootfs/etc/skel/.dmrc @@ -0,0 +1,3 @@ +[Desktop] +Language=en_US.utf8 +Session=xfce diff --git a/archlive/airootfs/etc/skel/.local/share/keyrings/login.keyring b/archlive/airootfs/etc/skel/.local/share/keyrings/login.keyring new file mode 100644 index 0000000000000000000000000000000000000000..f312a94ad16406050b8f4aabc3475fdb6e7eb201 GIT binary patch literal 105 zcmZ?I%g;^qPOU7;%uDCuW#D3f09K#;^vpac2TX-CR$W2xx#Of2-*j_W1-wCsp|Aw@ UH!c68^t?QyhyTHO_4XnO0NoH2jQ{`u literal 0 HcmV?d00001 diff --git a/archlive/airootfs/etc/skel/.local/share/keyrings/user.keystore b/archlive/airootfs/etc/skel/.local/share/keyrings/user.keystore new file mode 100644 index 0000000000000000000000000000000000000000..2d8eee8d47066034e55dbe3c2bd664d776592f12 GIT binary patch literal 207 zcmZ?I%g;?!@J_8P%FIhw2rkJlN>wo8;$;8=9#5ADBM<`!asz_GKx}45*I*#U7VP0@ zWNOC1z`6&><9KVEapCuwjaPwe2d9rOt7fTZ=^x*;`GDF3e#OLao4<#94ILVu<|n%z zVObLyu)=n&hR/dev/null | grep '*' | sed -r 's/^\s+([0-9]+)x.*/\1/')" +XHEIGHT="$(xrandr 2>/dev/null | grep '*' | sed -r 's/^\s+[0-9]+x([0-9]+).*/\1/')" + +WIDTH="$(echo "${XWIDTH}*96/1024" | bc)" +HEIGHT="$(echo "${XHEIGHT}*32/768" | bc)" + +sed -i -r "s/96x32/${WIDTH}x${HEIGHT}/" ~/.Xresources +xrdb -merge ~/.Xresources + diff --git a/archlive/airootfs/etc/skel/.wifi b/archlive/airootfs/etc/skel/.wifi new file mode 100644 index 00000000..859c57b5 --- /dev/null +++ b/archlive/airootfs/etc/skel/.wifi @@ -0,0 +1,5 @@ +#!/bin/bash + +sleep 1s +nmcli dev wifi con "SomeWiFi" password "Abracadabra" + diff --git a/archlive/airootfs/etc/skel/.xinitrc b/archlive/airootfs/etc/skel/.xinitrc index 5958cc9f..f7420078 100644 --- a/archlive/airootfs/etc/skel/.xinitrc +++ b/archlive/airootfs/etc/skel/.xinitrc @@ -6,35 +6,15 @@ sysresources=/etc/X11/xinit/.Xresources sysmodmap=/etc/X11/xinit/.Xmodmap # merge in defaults and keymaps - if [ -f $sysresources ]; then - - - - - - - xrdb -merge $sysresources - fi - if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi - if [ -f "$userresources" ]; then - - - - - - - xrdb -merge "$userresources" - fi - if [ -f "$usermodmap" ]; then xmodmap "$usermodmap" fi @@ -43,8 +23,5 @@ fi eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) export SSH_AUTH_SOCK -# Start Openbox -#exec openbox-session - # Start Xfce4 exec startxfce4 diff --git a/archlive/airootfs/etc/skel/.zlogin b/archlive/airootfs/etc/skel/.zlogin deleted file mode 100644 index 70b70593..00000000 --- a/archlive/airootfs/etc/skel/.zlogin +++ /dev/null @@ -1 +0,0 @@ -[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx diff --git a/archlive/airootfs/etc/skel/.zsh_aliases b/archlive/airootfs/etc/skel/.zsh_aliases index b7dc9bbc..417a3e84 100644 --- a/archlive/airootfs/etc/skel/.zsh_aliases +++ b/archlive/airootfs/etc/skel/.zsh_aliases @@ -6,18 +6,19 @@ alias 7z5='7z a -t7z -mx=5' alias 7z7='7z a -t7z -mx=7' alias 7z9='7z a -t7z -mx=9' alias du='du -sch --apparent-size' +alias fidentify="/usr/bin/fidentify-wip$(getconf LONG_BIT)" alias fix-perms='find -type d -exec chmod 755 "{}" \; && find -type f -exec chmod 644 "{}" \;' alias less='less -S' alias mkdir='mkdir -p' alias mount='sudo mount' alias mv='mv -nv' -alias photorec='sudo photorec' -alias q='clear && ls -lh' -alias q1='clear && ls -1' -alias q1a='clear && ls -1A' -alias qa='clear && ls -lAh' -alias qs='clear && ls' -alias qsa='clear && ls -A' +alias photorec="sudo /usr/bin/photorec-wip$(getconf LONG_BIT)" +alias q1='clear && sudo ls -1' +alias q1a='clear && sudo ls -1A' +alias q='clear && sudo ls -lh' +alias qa='clear && sudo ls -lAh' +alias qs='clear && sudo ls' +alias qsa='clear && sudo ls -A' alias rm='rm -v' alias rmdirs='find -depth -mindepth 1 -type d -exec rmdir "{}" --ignore-fail-on-non-empty \;' alias rs='rsync -avhPS --stats --exclude-from="$HOME/.rsync_exclusions"' @@ -26,6 +27,6 @@ alias sdu='sudo du -sch --apparent-size' alias srmdirs='find -depth -mindepth 1 -type d -exec sudo rmdir "{}" --ignore-fail-on-non-empty \;' alias srs='sudo rsync -avhPS --stats --exclude-from="$HOME/.rsync_exclusions"' alias srsz='sudo rsync -avhzPS --stats --exclude-from="$HOME/.rsync_exclusions"' -alias testdisk='sudo testdisk' +alias testdisk="sudo /usr/bin/testdisk-wip$(getconf LONG_BIT)" alias umount='sudo umount' alias unmount='sudo umount' diff --git a/archlive/airootfs/etc/skel/.zshrc b/archlive/airootfs/etc/skel/.zshrc index 1779863e..d4a35296 100644 --- a/archlive/airootfs/etc/skel/.zshrc +++ b/archlive/airootfs/etc/skel/.zshrc @@ -15,7 +15,7 @@ ZSH_THEME="lean" # HYPHEN_INSENSITIVE="true" # Uncomment the following line to disable bi-weekly auto-update checks. -# DISABLE_AUTO_UPDATE="true" +DISABLE_AUTO_UPDATE="true" # Uncomment the following line to change how often to auto-update (in days). # export UPDATE_ZSH_DAYS=13 diff --git a/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service b/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service new file mode 100644 index 00000000..e874a9b3 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service b/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service new file mode 100644 index 00000000..a7e5cd4e --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager-dispatcher.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/display-manager.service b/archlive/airootfs/etc/systemd/system/display-manager.service new file mode 100644 index 00000000..5595cea3 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/display-manager.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/lightdm.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service b/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service new file mode 100644 index 00000000..7bfe0808 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/getty@.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service new file mode 100644 index 00000000..e874a9b3 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/remote-fs.target b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/remote-fs.target new file mode 100644 index 00000000..2bc8b1cc --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/remote-fs.target @@ -0,0 +1 @@ +/usr/lib/systemd/system/remote-fs.target \ No newline at end of file diff --git a/archlive/airootfs/etc/udevil/udevil.conf b/archlive/airootfs/etc/udevil/udevil.conf new file mode 100644 index 00000000..92f37043 --- /dev/null +++ b/archlive/airootfs/etc/udevil/udevil.conf @@ -0,0 +1,336 @@ +############################################################################## +# +# udevil configuration file /etc/udevil/udevil.conf +# +# This file controls what devices, networks, and files users may mount and +# unmount via udevil (set suid). +# +# IMPORTANT: IT IS POSSIBLE TO CREATE SERIOUS SECURITY PROBLEMS IF THIS FILE +# IS MISCONFIGURED - EDIT WITH CARE +# +# Note: For greater control for specific users, including root, copy this +# file to /etc/udevil/udevil-user-USERNAME.conf replacing USERNAME with the +# desired username (eg /etc/udevil/udevil-user-jim.conf). +# +# Format: +# OPTION = VALUE[, VALUE, ...] +# +# DO NOT USE QUOTES except literally +# Lines beginning with # are ignored +# +############################################################################## + + +# To log all uses of udevil, set log_file to a file path: +# log_file = /var/log/udevil.log + +# Approximate number of days to retain log entries (0=forever, max=60): +log_keep_days = 10 + + +# allowed_types determines what fstypes can be passed by a user to the u/mount +# program, what device filesystems may be un/mounted implicitly, and what +# network filesystems may be un/mounted. +# It may also include the 'file' keyword, indicating that the user is allowed +# to mount files (eg an ISO file). The $KNOWN_FILESYSTEMS variable may +# be included to include common local filesystems as well as those listed in +# /etc/filesystems and /proc/filesystems. +# allowed_types_USERNAME, if present, is used to override allowed_types for +# the specific user 'USERNAME'. For example, to allow user 'jim' to mount +# only vfat filesystems, add: +# allowed_types_jim = vfat +# Setting allowed_types = * does NOT allow all types, as this is a security +# risk, but does allow all recognized types. +# allowed_types = $KNOWN_FILESYSTEMS, file, cifs, smbfs, nfs, curlftpfs, ftpfs, sshfs, davfs, tmpfs, ramfs +allowed_types = $KNOWN_FILESYSTEMS, file, cifs, smbfs, nfs, hfsplus + + +# allowed_users is a list of users permitted to mount and unmount with udevil. +# Wildcards (* or ?) may be used in the usernames. To allow all users, +# specify "allowed_users=*". UIDs may be included using the form UID=1000. +# For example: allowed_users = carl, UID=1000, pre* +# Also note that permission to execute udevil may be limited to users belonging +# to the group that owns /usr/bin/udevil, such as 'plugdev' or 'storage', +# depending on installation. +# allowed_users_FSTYPE, if present, is used to override allowed_users when +# mounting or unmounting a specific fstype (eg nfs, ext3, file). +# Note that when mounting a file, fstype will always be 'file' regardless of +# the internal fstype of the file. +# For example, to allow only user 'bob' to mount nfs shares, add: +# allowed_users_nfs = bob +# The root user is NOT automatically allowed to use udevil in some cases unless +# listed here (except for unmounting anything or mounting fstab devices). +allowed_users = * + + +# allowed_groups is a list of groups permitted to mount and unmount with +# udevil. The user MUST belong to at least one of these groups. Wildcards +# or GIDs may NOT be used in group names, but a single * may be used to allow +# all groups. +# Also note that permission to execute udevil may be limited to users belonging +# to the group that owns /usr/bin/udevil, such as 'plugdev' or 'storage', +# depending on installation. +# allowed_groups_FSTYPE, if present, is used to override allowed_groups when +# mounting or unmounting a specific fstype (eg nfs, ext3, file). For example, +# to allow only members of the 'network' group to mount smb and nfs shares, +# use both of these lines: +# allowed_groups_smbfs = network +# allowed_groups_nfs = network +# The root user is NOT automatically allowed to use udevil in some cases unless +# listed here (except for unmounting anything or mounting fstab devices). +allowed_groups = * + + +# allowed_media_dirs specifies the media directories in which user mount points +# may be located. The first directory which exists and does not contain a +# wildcard will be used as the default media directory (normally /media or +# /media/$USER). +# The $USER variable, if included, will be replaced with the username of the +# user running udevil. Wildcards may also be used in any directory EXCEPT the +# default. Wildcards will not match a /, except a /** suffix for recursion. +# allowed_media_dirs_FSTYPE, if present, is used to override allowed_media_dirs +# when mounting or unmounting a specific fstype (eg ext2, nfs). For example, +# to cause /media/network to be used as the default media directory for +# nfs and ftpfs mounts, use these two lines: +# allowed_media_dirs_nfs = /media/network, /media, /media/$USER +# allowed_media_dirs_ftpfs = /media/network, /media, /media/$USER +# NOTE: If you want only the user who mounted a device to have access to it +# and be allowed to unmount it, specify /media/$USER as the first +# allowed media directory (only /media/$USER is created on demand). +# IMPORTANT: If an allowed file is mounted to a media directory, the user may +# be permitted to unmount its associated loop device even though internal. +# INCLUDING /MNT HERE IS NOT RECOMMENDED. ALL ALLOWED MEDIA DIRECTORIES +# SHOULD BE OWNED AND WRITABLE ONLY BY ROOT. +allowed_media_dirs = /media, /media/$USER, /run/media/$USER + + +# allowed_devices is the first criteria for what block devices users may mount +# or unmount. If a device is not listed in allowed_devices, it cannot be +# un/mounted (unless in fstab). However, even if a device is listed, other +# factors may prevent its use. For example, access to system internal devices +# will be denied to normal users even if they are included in allowed_devices. +# allowed_devices_FSTYPE, if present, is used to override allowed_devices when +# mounting or unmounting a specific fstype (eg ext3, ntfs). For example, to +# prevent all block devices containing an ext4 filesystem from being +# un/mounted use: +# allowed_devices_ext4 = +# Note: Wildcards may be used, but a wildcard will never match a /, except +# for "allowed_devices=*" which allows any device. The recommended setting is +# allowed_devices = /dev/* +# WARNING: ALLOWING USERS TO MOUNT DEVICES OUTSIDE OF /dev CAN CAUSE SERIOUS +# SECURITY PROBLEMS. DO NOT ALLOW DEVICES IN /dev/shm +allowed_devices = /dev/* + + +# allowed_internal_devices causes udevil to treat any listed block devices as +# removable, thus allowing normal users to un/mount them (providing they are +# also listed in allowed_devices). +# allowed_internal_devices_FSTYPE, if present, is used to override +# allowed_internal_devices when mounting or unmounting a specific fstype +# (eg ext3, ntfs). For example, to allow block devices containing a vfat +# filesystem to be un/mounted even if they are system internal devices, use: +# allowed_internal_devices_vfat = /dev/sdb* +# Some removable esata drives look like internal drives to udevil. To avoid +# this problem, they can be treated as removable with this setting. +# WARNING: SETTING A SYSTEM DEVICE HERE CAN CAUSE SERIOUS SECURITY PROBLEMS. +allowed_internal_devices = /dev/* + + +# allowed_internal_uuids and allowed_internal_uuids_FSTYPE work similarly to +# allowed_internal_devices, except that UUIDs are specified instead of devices. +# For example, to allow un/mounting of an internal filesystem based on UUID: +# allowed_internal_uuids = cc0c4489-8def-1e5b-a304-ab87c3cb626c0 +# WARNING: SETTING A SYSTEM DEVICE HERE CAN CAUSE SERIOUS SECURITY PROBLEMS. +# allowed_internal_uuids = + + +# forbidden_devices is used to prevent block devices from being un/mounted +# even if other settings would allow them (except devices in fstab). +# forbidden_devices_FSTYPE, if present, is used to override +# forbidden_devices when mounting or unmounting a specific fstype +# (eg ext3, ntfs). For example, to prevent device /dev/sdd1 from being +# mounted when it contains an ntfs filesystem, use: +# forbidden_devices_ntfs = /dev/sdd1 +# NOTE: device node paths are canonicalized before being tested, so forbidding +# a link to a device will have no effect. +forbidden_devices = + + +# allowed_networks determines what hosts may be un/mounted by udevil users when +# using nfs, cifs, smbfs, curlftpfs, ftpfs, or sshfs. Hosts may be specified +# using a hostname (eg myserver.com) or IP address (192.168.1.100). +# Wildcards may be used in hostnames and IP addresses, but CIDR notation +# (192.168.1.0/16) is NOT supported. IP v6 is supported. For example: +# allowed_networks = 127.0.0.1, 192.168.1.*, 10.0.0.*, localmachine, *.okay.com +# Or, to prevent un/mounting of any network shares, set: +# allowed_networks = +# allowed_networks_FSTYPE, if present, is used to override allowed_networks +# when mounting or unmounting a specific network fstype (eg nfs, cifs, sshfs, +# curlftpfs). For example, to limit nfs and samba shares to only local +# networks, use these two lines: +# allowed_networks_nfs = 192.168.1.*, 10.0.0.* +# allowed_networks_cifs = 192.168.1.*, 10.0.0.* +allowed_networks = * + + +# forbidden_networks and forbidden_networks_FSTYPE are used to specify networks +# that are never allowed, even if other settings allow them (except fstab). +# NO REVERSE LOOKUP IS PERFORMED, so including bad.com will only have an effect +# if the user uses that hostname. IP lookup is always performed, so forbidding +# an IP address will also forbid all corresponding hostnames. +forbidden_networks = + + +# allowed_files is used to determine what files in what directories may be +# un/mounted. A user must also have read permission on a file to mount it. +# Note: Wildcards may be used, but a wildcard will never match a /, except +# for "allowed_files=*" which allows any file, and a /** suffix, which matches +# all files recursively. +# For example, to allow only files in the /share directory to be mounted, use: +# allowed_files = /share/* +# To allow all files in the /share directory AND all subdirectories use: +# allowed_files = /share/** +# NOTE: Specifying allowed_files_FSTYPE will NOT work because the fstype of +# files is always 'file'. +allowed_files = * + + +# forbidden_files is used to specify files that are never allowed, even if +# other settings allow them (except fstab). Specify a full path. +# Note: Wildcards may be used, but a wildcard will never match a /, except +# for "forbidden_files = *", or a /** suffix, which matches all recursively. +# NOTE: file paths are canonicalized before being tested, so forbidding +# a link to a file will have no effect. +forbidden_files = + + +# default_options specifies what options are always included when performing +# a mount, in addition to any options the user may specify. +# Note: When a device is present in /etc/fstab, and the user does not specify +# a mount point, the device is mounted with normal user permissions using +# the fstab entry, without these options. +# default_options_FSTYPE, if present, is used to override default_options +# when mounting a specific fstype (eg ext2, nfs). +# The variables $USER, $UID, and $GID are changed to the user's username, UID, +# and GID. +# FOR GOOD SECURITY, default_options SHOULD ALWAYS INCLUDE: nosuid,noexec,nodev +# WARNING: OPTIONS PRESENT OR MISSING CAN CAUSE SERIOUS SECURITY PROBLEMS. +default_options = nosuid, noexec, nodev, noatime +default_options_file = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID, ro +# mount iso9660 with 'ro' to prevent mount read-only warning +default_options_iso9660 = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID, ro, utf8 +default_options_udf = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID +default_options_vfat = nosuid, noexec, nodev, noatime, fmask=0133, dmask=0022, uid=$UID, gid=$GID, utf8 +default_options_exfat = nosuid, noexec, nodev, noatime, umask=0077, uid=$UID, gid=$GID, iocharset=utf8, namecase=0, nonempty +default_options_hfsplus = nosuid, noexec, nodev, ro, uid=$UID, gid=$GID +default_options_msdos = nosuid, noexec, nodev, noatime, fmask=0133, dmask=0022, uid=$UID, gid=$GID +default_options_umsdos = nosuid, noexec, nodev, noatime, fmask=0133, dmask=0022, uid=$UID, gid=$GID +default_options_ntfs = nosuid, noexec, nodev, noatime, fmask=0133, uid=$UID, gid=$GID, utf8 +default_options_cifs = nosuid, noexec, nodev, uid=$UID, gid=$GID +default_options_smbfs = nosuid, noexec, nodev, uid=$UID, gid=$GID +default_options_sshfs = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID, nonempty, allow_other +default_options_curlftpfs = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID, nonempty, allow_other +default_options_ftpfs = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID +default_options_davfs = nosuid, noexec, nodev, uid=$UID, gid=$GID +default_options_tmpfs = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID +default_options_ramfs = nosuid, noexec, nodev, noatime, uid=$UID, gid=$GID + + +# allowed_options determines all options that a user may specify when mounting. +# All the options used in default_options above must be included here too, or +# they will be rejected. If the user attempts to use an option not included +# here, an error will result. Wildcards may be used. +# allowed_options_FSTYPE, if present, is used to override allowed_options +# when mounting a specific fstype (eg ext2, nfs). +# The variables $USER, $UID, and $GID are changed to the user's username, UID, +# and GID. +# If you want to forbid remounts, remove 'remount' from here. +# WARNING: OPTIONS HERE CAN CAUSE SERIOUS SECURITY PROBLEMS - CHOOSE CAREFULLY +allowed_options = nosuid, noexec, nodev, noatime, fmask=0133, dmask=0022, uid=$UID, gid=$GID, ro, rw, sync, flush, iocharset=*, utf8, remount +allowed_options_nfs = nosuid, noexec, nodev, noatime, ro, rw, sync, remount, port=*, rsize=*, wsize=*, hard, proto=*, timeo=*, retrans=* +allowed_options_cifs = nosuid, noexec, nodev, ro, rw, remount, port=*, user=*, username=*, pass=*, password=*, guest, domain=*, uid=$UID, gid=$GID, credentials=* +allowed_options_smbfs = nosuid, noexec, nodev, ro, rw, remount, port=*, user=*, username=*, pass=*, password=*, guest, domain=*, uid=$UID, gid=$GID, credentials=* +allowed_options_sshfs = nosuid, noexec, nodev, noatime, ro, rw, uid=$UID, gid=$GID, nonempty, allow_other, idmap=user, BatchMode=yes, port=* +allowed_options_curlftpfs = nosuid, noexec, nodev, noatime, ro, rw, uid=$UID, gid=$GID, nonempty, allow_other, user=* +allowed_options_ftpfs = nosuid, noexec, nodev, noatime, ro, rw, port=*, user=*, pass=*, root=*, uid=$UID, gid=$GID +allowed_options_exfat = nosuid, noexec, nodev, noatime, fmask=0133, dmask=0022, uid=$UID, gid=$GID, umask=0077, namecase=*, ro, rw, sync, flush, iocharset=*, remount, nonempty + + +# mount_point_mode, if present and set to a non-empty value, will cause udevil +# to set the mode (permissions) on the moint point after mounting If not +# specified or if left empty, the mode is not changed. Mode must be octal +# starting with a zero (0755). +# mount_point_mode_FSTYPE, if present, is used to override mount_point_mode +# when mounting a specific fstype (eg ext2, nfs). +# NOT SETTING A MODE CAN HAVE SECURITY IMPLICATIONS FOR SOME FSTYPES +mount_point_mode = 0755 +# don't set a mode for some types: +mount_point_mode_sshfs = +mount_point_mode_curlftpfs = +mount_point_mode_ftpfs = + + +# Use the settings below to change the default locations of programs used by +# udevil, or (advanced topic) to redirect commands to your scripts. +# When substituting scripts, make sure they are root-owned and accept the +# options used by udevil (for example, the mount_program must accept --fake, +# -o, -v, and other options valid to mount.) +# Be sure to specify the full path and include NO OPTIONS or other arguments. +# These programs may also be specified as configure options when building +# udevil. +# THESE PROGRAMS ARE RUN AS ROOT +# mount_program = /bin/mount +# umount_program = /bin/umount +# losetup_program = /sbin/losetup +# setfacl_program = /usr/bin/setfacl + + +# validate_exec specifies a program or script which provides additional +# validation of a mount or unmount command, beyond the checks performed by +# udevil. The program is run as a normal user (if root runs udevil, +# validate_exec will NOT be run). The program is NOT run if the user is +# mounting a device without root priviledges (a device in fstab). +# The program is passed the username, a printable description of what is +# happening, and the entire udevil command line as the first three arguments. +# The program must return an exit status of 0 to allow the mount or unmount +# to proceed. If it returns non-zero, the user will be denied permission. +# For example, validate_exec might specify a script which notifies you +# of the command being run, or performs additional steps to authenticate the +# user. +# Specify a full path to the program, with NO options or arguments. +# validate_exec = + + +# validate_rootexec works similarly to validate_exec, except that the program +# is run as root. validate_rootexec will also be run if the root user runs +# udevil. If both validate_exec and validate_rootexec are specified, +# validate_rootexec will run first, followed by validate_exec. +# The program must return an exit status of 0 to allow the mount or unmount +# to proceed. If it returns non-zero, the user will be denied permission. +# Unless you are familiar with writing root scripts, it is recommended that +# rootexec settings NOT be used, as it is easy to inadvertently open exploits. +# THIS PROGRAM IS ALWAYS RUN AS ROOT, even if the user running udevil is not. +# validate_rootexec = + + +# success_exec is run after a successful mount, remount, or unmount. The +# program is run as a normal user (if root runs udevil, success_exec +# will NOT be run). +# The program is passed the username, a printable description of what action +# was taken, and the entire udevil command line as the first three arguments. +# The program's exit status is ignored. +# For example, success_exec might run a script which informs you of what action +# was taken, and might perform further actions. +# Specify a full path to the program, with NO options or arguments. +# success_exec = + + +# success_rootexec works similarly to success_exec, except that the program is +# run as root. success_rootexec will also be run if the root user runs udevil. +# If both success_exec and success_rootexec are specified, success_rootexec +# will run first, followed by success_exec. +# Unless you are familiar with writing root scripts, it is recommended that +# rootexec settings NOT be used, as it is easy to inadvertently open exploits. +# THIS PROGRAM IS ALWAYS RUN AS ROOT, even if the user running udevil is not. +# success_rootexec = + diff --git a/archlive/airootfs/root/customize_airootfs.sh b/archlive/airootfs/root/customize_airootfs.sh index 07bf9bc7..022df645 100644 --- a/archlive/airootfs/root/customize_airootfs.sh +++ b/archlive/airootfs/root/customize_airootfs.sh @@ -14,18 +14,18 @@ ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime # root user settings usermod -s /usr/bin/zsh root cp -aT /etc/skel/ /root/ -rm /root/.zlogin chmod 700 /root +echo "root:Abracadabra" | chpasswd + +# Add autologin group +groupadd -r autologin # Add wktech user -useradd -m -s /bin/zsh -G wheel -U wktech +useradd -m -s /bin/zsh -G autologin,storage,wheel -U wktech echo "wktech:Abracadabra" | chpasswd # Enable sudo for %wheel -echo '%wheel ALL=(ALL) ALL' >> /etc/sudoers - -# Enable firewall -ufw enable +echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers # Set pacman mirrorlist echo 'Server = http://arch.localmsp.org/arch/$repo/os/$arch' > /etc/pacman.d/mirrorlist @@ -44,5 +44,5 @@ sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf # Startup settings (from archiso) systemctl enable pacman-init.service choose-mirror.service -systemctl enable NetworkManager.service -systemctl set-default multi-user.target +#systemctl set-default multi-user.target +systemctl set-default graphical.target diff --git a/archlive/airootfs/usr/local/bin/hw-diags b/archlive/airootfs/usr/local/bin/hw-diags new file mode 100644 index 00000000..af422a7d --- /dev/null +++ b/archlive/airootfs/usr/local/bin/hw-diags @@ -0,0 +1,86 @@ +#!/bin/bash +# +## WK HW diagnostics - Launcher + +MODE="$1" + +# Ensure a proper mode is selected +while :; do + if [[ "$MODE" =~ ^(all|cpu|drives|foh|smart|badblocks)$ ]]; then + break + else + clear + echo "Hardware Diagnostics" + echo "────────────────────" + echo "0: Quick drive test" + echo "1: All tests" + echo "2: Prime95" + echo "3: SMART & badblocks" + echo "4: SMART" + echo "5: badblocks" + echo "────────────────────" + if [[ -n $DISPLAY ]]; then + echo "6: Graphics Test - FurMark" + echo "7: Graphics Test - Piano" + echo "8: Graphics Test - Volplosion" + fi + echo "A: Speaker Test" + if [[ -n $DISPLAY ]]; then + echo "K: Keyboard Test" + fi + echo "────────────────────" + echo "" + echo "Q: Quit" + echo "" + read -r -p "Please make a selection: " MODE + + # Check input + case $MODE in + 0) + MODE=foh + break;; + 1) + MODE=all + break;; + 2) + MODE=cpu + break;; + 3) + MODE=drives + break;; + 4) + MODE=smart + break;; + 5) + MODE=badblocks + break;; + 6) + if [[ -n $DISPLAY ]]; then + gputest /fullscreen /test=fur + fi + ;; + 7) + if [[ -n $DISPLAY ]]; then + gputest /fullscreen /test=pixmark_piano + fi + ;; + 8) + if [[ -n $DISPLAY ]]; then + gputest /fullscreen /test=pixmark_volplosion + fi + ;; + a|A|audio|Audio) + hw-diags-audio;; + k|K|keyboard|Keyboard) + if [[ -n $DISPLAY ]]; then + xev + fi + ;; + q|Q|quit|Quit) + exit 1;; + esac + fi +done + +# Start tmux +tmux new-session -s 'hw-session' -n 'hw-window' "hw-diags-inner $MODE" diff --git a/archlive/airootfs/usr/local/bin/hw-diags-audio b/archlive/airootfs/usr/local/bin/hw-diags-audio new file mode 100644 index 00000000..eb6feef9 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/hw-diags-audio @@ -0,0 +1,11 @@ +#!/bin/bash +# +## WK HW diagnostics - Audio (Stereo) + +# Unmute and set volume +amixer -q set "Master" 80% unmute +amixer -q set "PCM" 90% unmute + +speaker-test -c 2 -l 1 -t pink +# speaker-test -c 2 -l 1 -t sine +speaker-test -c 2 -l 1 -t wav diff --git a/archlive/airootfs/usr/local/bin/hw-diags-badblocks b/archlive/airootfs/usr/local/bin/hw-diags-badblocks new file mode 100644 index 00000000..8b5d75dc --- /dev/null +++ b/archlive/airootfs/usr/local/bin/hw-diags-badblocks @@ -0,0 +1,25 @@ +#!/bin/bash +# +## WK HW diagnostics - badblocks + +function usage { + echo "Usage: $0 log-dir device" + echo " e.g. $0 /var/tmp/hw-diags/9001 /dev/sda" +} + +# Bail early +if [ ! -d "$1" ]; then + usage + exit 1 +fi +if [ ! -b "$2" ]; then + usage + exit 1 +fi + +# Run Badblocks +sudo badblocks -sv -e 1 "$2" +tmux capture-pane +tmux save-buffer "$1/bb_tmp.out" +grep -Ev '^$' "$1/bb_tmp.out" > "$1/${2##*/}_badblocks.log" +rm "$1/bb_tmp.out" diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/archlive/airootfs/usr/local/bin/hw-diags-inner new file mode 100644 index 00000000..28b4d600 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -0,0 +1,483 @@ +#!/bin/bash +# +## WK HW Diagnostics - Main script + +# Setup tmux +# tmux set remain-on-exit on +tmux set status off + +# Get TICKET# +TICKET="" +while [[ "$TICKET" == "" ]]; do + if [[ "$1" == "foh" ]]; then + TICKET="foh-consult" + else + echo -n "Please enter the Service Order #: " + read -r _ticket + if echo "$_ticket" | grep -Eq '^[0-9]+\S*$'; then + TICKET="$_ticket" + fi + fi +done + +# Init +DIAG_DATE="$(date "+%F_%H%M")" +DIAG_SERVER_AVAIL="False" +DIAG_SERVER="10.0.0.10" +DIAG_DEST="/srv/Diagnostics/${TICKET}/${DIAG_DATE}" +DIAG_USER="wkdiag" +TMP_DIR="/var/tmp/hw-diags/${TICKET}/${DIAG_DATE}" +ERRORS="False" +ERROR_IMG="$TMP_DIR/error.jpg" +PASSED_IMG="$TMP_DIR/passed.jpg" +TEST_CPU="False" +TEST_OVER="False" +TEST_SMART="False" +TEST_BADBLOCKS="False" +SKIP_SHORT_TEST="False" +LOG="$TMP_DIR/hw-diags.log" +OUT="$TMP_DIR/hw-diags.out" + +# Get list of drives to test (excluding any ARCH drives) +## Some code borrowed from stackoverflow.com/a/10020397 +ARCH_DRIVES=($(ls -l /dev/disk/by-label | grep -iE 'ARCH.*[hs]d[a-z]' | sed -r 's#.*/([hs]d[a-z])[0-9]+#\1#' | sort | uniq)) +DRIVES=($(inxi -Dxx -c 0 | grep -E "ID-[0-9]+" | sed -r 's#.*/dev/([hs]d[a-z]).*#\1#' | sort)) +for d in "${ARCH_DRIVES[@]}"; do + DRIVES=(${DRIVES[@]//*$d*}) +done + +# Test connection to DIAG_SERVER +if ip a | grep -q '192.168.1' && \ + ping -c 1 -q $DIAG_SERVER >/dev/null 2>&1; then + DIAG_SERVER_AVAIL="True" + ssh $DIAG_USER@$DIAG_SERVER mkdir -p "$DIAG_DEST" +fi + +# Setup Env +mkdir "$TMP_DIR" -p 2>/dev/null +pushd "$TMP_DIR" >/dev/null +touch "$OUT" +rm local.txt results.txt 2>/dev/null + +# Functions +CLEAR="\e[0m" +RED="\e[31m" +GREEN="\e[32m" +YELLOW="\e[33m" +BLUE="\e[34m" +function update_progress { + echo "HW Diagnostics" > "$LOG" + echo "${BLUE}HW Diagnostics${CLEAR}" > "$OUT" + echo "───────────────" >> "$LOG" + echo "───────────────" >> "$OUT" + + if [[ "$TEST_CPU" == "True" ]]; then + echo "" >> "$LOG" + echo "" >> "$OUT" + if [[ "$cpu_result" == "CS" ]]; then + echo "Prime95 CS" >> "$LOG" + echo "${BLUE}Prime95${CLEAR} ${GREEN}CS${CLEAR}" >> "$OUT" + elif [[ "$cpu_result" == "Working" ]]; then + echo "Prime95 Working" >> "$LOG" + echo "${BLUE}Prime95${CLEAR} ${YELLOW}Working${CLEAR}" >> "$OUT" + elif [[ "$cpu_result" == "Unknown" ]]; then + echo "Prime95 Unknown" >> "$LOG" + echo "${BLUE}Prime95${CLEAR} ${YELLOW}Unknown${CLEAR}" >> "$OUT" + else + echo "Prime95 NS" >> "$LOG" + echo "${BLUE}Prime95${CLEAR} ${RED}NS${CLEAR}" >> "$OUT" + fi + fi + + if [[ "$TEST_SMART" == "True" ]]; then + echo "" >> "$LOG" + echo "" >> "$OUT" + if [[ "$SKIP_SHORT_TEST" == "True" ]]; then + echo "SMART (Quick)" >> "$LOG" + echo "${BLUE}SMART${CLEAR} ${YELLOW}(Quick)${CLEAR}" >> "$OUT" + else + echo "SMART" >> "$LOG" + echo "${BLUE}SMART${CLEAR}" >> "$OUT" + fi + for d in "${DRIVES[@]}"; do + d_tmp="${d##*/}_smart_result" + eval "d_tmp=\$$d_tmp" + if [[ "$d_tmp" == "CS" ]]; then + echo "${d##*/} CS" >> "$LOG" + echo "${d##*/} ${GREEN}CS${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "Working" ]]; then + echo "${d##*/} Working" >> "$LOG" + echo "${d##*/} ${YELLOW}Working${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "Unknown" ]]; then + echo "${d##*/} Unknown" >> "$LOG" + echo "${d##*/} ${YELLOW}Unknown${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "NS" ]]; then + echo "${d##*/} NS" >> "$LOG" + echo "${d##*/} ${RED}NS${CLEAR}" >> "$OUT" + else + echo "${d##*/}" >> "$LOG" + echo "${d##*/}" >> "$OUT" + fi + done + fi + + if [[ "$TEST_BADBLOCKS" == "True" ]]; then + echo "" >> "$LOG" + echo "" >> "$OUT" + echo "Badblocks" >> "$LOG" + echo "${BLUE}Badblocks${CLEAR}" >> "$OUT" + for d in "${DRIVES[@]}"; do + d_tmp="${d##*/}_badblocks_result" + eval "d_tmp=\$$d_tmp" + if [[ "$d_tmp" == "CS" ]]; then + echo "${d##*/} CS" >> "$LOG" + echo "${d##*/} ${GREEN}CS${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "Working" ]]; then + echo "${d##*/} Working" >> "$LOG" + echo "${d##*/} ${YELLOW}Working${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "Skipped" ]]; then + echo "${d##*/} Skipped" >> "$LOG" + echo "${d##*/} ${RED}Skipped${CLEAR}" >> "$OUT" + elif [[ "$d_tmp" == "NS" ]]; then + echo "${d##*/} NS" >> "$LOG" + echo "${d##*/} ${RED}NS${CLEAR}" >> "$OUT" + else + echo "${d##*/}" >> "$LOG" + echo "${d##*/}" >> "$OUT" + fi + done + fi + + if [[ "$TEST_OVER" == "True" ]]; then + echo "" >> "$LOG" + echo "" >> "$OUT" + echo "───────────────" >> "$LOG" + echo "───────────────" >> "$OUT" + + if [[ "$ERRORS" == "True" ]]; then + echo "HW: Error(s)" >> "$LOG" + echo "${RED}HW: Error(s)${CLEAR}" >> "$OUT" + else + echo "HW: Passed" >> "$LOG" + echo "${GREEN}HW: Passed${CLEAR}" >> "$OUT" + fi + fi + + # Update Server + if [[ "$DIAG_SERVER_AVAIL" == "True" ]]; then + rsync -aqz "$TMP_DIR/" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/" --exclude '*.out' + fi +} + +# Select Tests +case "$1" in + all) + TEST_CPU="True" + TEST_SMART="True" + TEST_BADBLOCKS="True" + ;; + cpu) + TEST_CPU="True" + TEST_SMART="False" + TEST_BADBLOCKS="False" + ;; + drives) + TEST_CPU="False" + TEST_SMART="True" + TEST_BADBLOCKS="True" + ;; + foh) + TEST_CPU="False" + TEST_SMART="True" + TEST_BADBLOCKS="False" + SKIP_SHORT_TEST="True" + ;; + smart) + TEST_CPU="False" + TEST_SMART="True" + TEST_BADBLOCKS="False" + ;; + badblocks) + TEST_CPU="False" + TEST_SMART="False" + TEST_BADBLOCKS="True" + ;; +esac + +if [[ "$TEST_CPU" == "False" ]] && \ + [[ "$TEST_SMART" == "False" ]] && \ + [[ "$TEST_BADBLOCKS" == "False" ]]; then + echo -e "${YELLOW}Aborting HW diagnostics${CLEAR}" + exit 1 +fi + +# Configure display +tmux split-window -d -h -l 16 "hw-diags-progress $OUT" +update_progress + +# CPU +if [[ "$TEST_CPU" == "True" ]]; then + clear + CPU_ERRORS="False" + cpu_result="Working" + update_progress + (sleep 10m && killall -s INT "mprime$(getconf LONG_BIT)" >>/dev/null 2>&1) & + (sleep 10m && killall "hw-diags-sensors" >>/dev/null 2>&1) & + tmux split-window -d -v -l 10 "hw-diags-prime95 $TMP_DIR" + hw-diags-sensors "$TMP_DIR" 2>/dev/null + sleep 1s + # tmux kill-pane -t 1 + if [[ -f "results.txt" ]]; then + mv -nv results.txt "prime-results.txt" + if grep -q -iE '(error|fail)' "prime-results.txt"; then + cpu_result="NS" + CPU_ERRORS="True" + else + cpu_result="CS" + fi + elif [[ -f "prime.log" ]]; then + if grep -i 'completed' "prime.log" | grep -q -iv '0 errors, 0 warnings'; then + cpu_result="NS" + CPU_ERRORS="True" + else + cpu_result="CS" + fi + else + CPU_ERRORS="True" + cpu_result="Unknown" + fi + + update_progress + + if [[ "$CPU_ERRORS" == "True" ]]; then + ERRORS="True" + fi +fi + +# SMART +if [[ "$TEST_SMART" == "True" ]]; then + clear + SMART_ERRORS="False" + echo "Checking SMART status..." + for d in "${DRIVES[@]}"; do + tmp_device="${d##*/}" + eval "${tmp_device}_smart_result=Working" + inxi -Dxx | grep "/dev/${tmp_device}" | sed -r "s#.*/dev/${tmp_device} (.*)# \1#" > "${tmp_device}_report.out" + inxi -Dxxc 0 | grep "/dev/${tmp_device}" | sed -r "s#.*/dev/${tmp_device} (.*)# \1#" > "${tmp_device}_report.log" + update_progress + + # Attempt to enable SMART reporting + if sudo smartctl -s on "/dev/${tmp_device}" | grep -q 'device lacks SMART capability'; then + SMART_ERRORS="True" + eval "${tmp_device}_smart_result=Unknown" + echo " ${RED}ERROR: device lacks SMART capability${CLEAR}" >> "${tmp_device}_report.out" + echo " ERROR: device lacks SMART capability" >> "${tmp_device}_report.log" + sleep 1s + fi + + # Save current SMART values + sudo smartctl --all "/dev/${tmp_device}" >> "${tmp_device}-smart.log" + sudo smartctl -l error "/dev/${tmp_device}" >> "${tmp_device}-smart-err.log" + + # Check specific SMART results + sudo smartctl -A "/dev/${tmp_device}" | grep -E '^\s*(5|9|184|197|198)\s' >> "${tmp_device}-smart-attributes.log" + + # 5 - Reallocated Sectors + if grep -qE '^\s*5\s' "${tmp_device}-smart-attributes.log"; then + line="$(grep -E '^\s*5\s' "${tmp_device}-smart-attributes.log")" + value=$(echo "$line" | sed -r 's/.*\s([0-9]+).*/\1/') + echo " Reallocated Sectors: $value" >> "${tmp_device}_report.log" + if [[ "$value" -gt 0 ]]; then + SMART_ERRORS="True" + echo " ${RED}Reallocated Sectors: $value${CLEAR}" >> "${tmp_device}_report.out" + else + echo " ${GREEN}Reallocated Sectors: $value${CLEAR}" >> "${tmp_device}_report.out" + fi + fi + + # 9 - Power-on Hours (Warn, but don't prevent badblock scan) + if grep -qE '^\s*9\s' "${tmp_device}-smart-attributes.log"; then + line="$(grep -E '^\s*9\s' "${tmp_device}-smart-attributes.log")" + value=$(echo "$line" | sed -r 's/.*\s([0-9]+).*/\1/') + echo " Power-on Hours: $value" >> "${tmp_device}_report.log" + if [[ "$value" -gt 18000 ]]; then + #SMART_ERRORS="True" + echo " ${RED}Power-on Hours: $value (VERY OLD)${CLEAR}" >> "${tmp_device}_report.out" + elif [[ "$value" -gt 12000 ]]; then + echo " ${YELLOW}Power-on Hours: $value${CLEAR}" >> "${tmp_device}_report.out" + else + echo " ${GREEN}Power-on Hours: $value${CLEAR}" >> "${tmp_device}_report.out" + fi + fi + + # 184 - End-to-End Errors + if grep -qE '^\s*184\s' "${tmp_device}-smart-attributes.log"; then + line="$(grep -E '^\s*184\s' "${tmp_device}-smart-attributes.log")" + value=$(echo "$line" | sed -r 's/.*\s([0-9]+).*/\1/') + echo " End-to-End Errors: $value" >> "${tmp_device}_report.log" + if [[ "$value" -gt 0 ]]; then + SMART_ERRORS="True" + echo " ${RED}End-to-End Errors: $value${CLEAR}" >> "${tmp_device}_report.out" + else + echo " ${GREEN}End-to-End Errors: $value${CLEAR}" >> "${tmp_device}_report.out" + fi + fi + + # 197 - Current Pending Sectors + if grep -qE '^\s*197\s' "${tmp_device}-smart-attributes.log"; then + line="$(grep -E '^\s*197\s' "${tmp_device}-smart-attributes.log")" + value=$(echo "$line" | sed -r 's/.*\s([0-9]+).*/\1/') + echo " Current Pending Sectors: $value" >> "${tmp_device}_report.log" + if [[ "$value" -gt 0 ]]; then + SMART_ERRORS="True" + echo " ${RED}Current Pending Sectors: $value${CLEAR}" >> "${tmp_device}_report.out" + else + echo " ${GREEN}Current Pending Sectors: $value${CLEAR}" >> "${tmp_device}_report.out" + fi + fi + + # 198 - Offline Uncorrectable + if grep -qE '^\s*198\s' "${tmp_device}-smart-attributes.log"; then + line="$(grep -E '^\s*198\s' "${tmp_device}-smart-attributes.log")" + value=$(echo "$line" | sed -r 's/.*\s([0-9]+).*/\1/') + echo " Offline Uncorrectable: $value" >> "${tmp_device}_report.log" + if [[ "$value" -gt 0 ]]; then + SMART_ERRORS="True" + echo " ${RED}Offline Uncorrectable: $value${CLEAR}" >> "${tmp_device}_report.out" + else + echo " ${GREEN}Offline Uncorrectable: $value${CLEAR}" >> "${tmp_device}_report.out" + fi + fi + + if [[ "$SMART_ERRORS" == "False" ]] && [[ "$SKIP_SHORT_TEST" == "False" ]]; then + if sudo smartctl -c "/dev/${tmp_device}" >>/dev/null 2>&1; then + # Determine short-test polling time + wait_time=$(sudo smartctl -c "/dev/${tmp_device}" | grep -i 'polling time' | head -1 | sed -r 's/.*\( *([0-9]+)\).*/\1/') + wait_time=$(( wait_time + 5)) + + # Run short self-test + echo " Running SMART short self-test ($wait_time minutes)..." + sudo smartctl -t short "/dev/${tmp_device}" >/dev/null + sleep ${wait_time}m + sudo smartctl -l selftest "/dev/${tmp_device}" >> "${tmp_device}-smart-tests.log" + if grep '^#' "${tmp_device}-smart-tests.log" | head -1 | grep -iq 'completed without error'; then + echo " ${GREEN}Self-test: passed${CLEAR}" >> "${tmp_device}_report.out" + echo " Self-test: passed" >> "${tmp_device}_report.log" + else + echo " ${RED}Self-test: failed${CLEAR}" >> "${tmp_device}_report.out" + echo " Self-test: failed" >> "${tmp_device}_report.log" + SMART_ERRORS="True" + fi + else + echo " ${RED}ERROR: Unable to run SMART self-test.${CLEAR}" >> "${tmp_device}_report.out" + echo " ERROR: Unable to run SMART self-test." >> "${tmp_device}_report.log" + fi + fi + + if [[ "$SMART_ERRORS" == "False" ]]; then + eval "${tmp_device}_smart_result=CS" + else + ERRORS="True" + tmp_if="${tmp_device}_smart_result" + eval "tmp_if=\$$tmp_if" + if [[ "$tmp_if" != "Unknown" ]]; then + eval "${tmp_device}_smart_result=NS" + fi + fi + + update_progress + done +fi + +# Badblocks +if [[ "$TEST_BADBLOCKS" == "True" ]]; then + clear + for d in "${DRIVES[@]}"; do + # Get SMART results + tmp_device="${d##*/}" + d_smart="${tmp_device}_smart_result" + eval "d_smart=\$$d_smart" + + # Check SMART results + if [[ "$d_smart" == "NS" ]]; then + echo -e "${RED}Skipping drive: $tmp_device${CLEAR}" + eval "${tmp_device}_badblocks_result=Skipped" + else + eval "${tmp_device}_badblocks_result=Working" + update_progress + echo "Testing drive: ${tmp_device}" + + # Split and run + tmux split-window -d -v -l 7 "hw-diags-badblocks $TMP_DIR /dev/${tmp_device}" + + # Wait until done + sleep 2s + while pgrep -G 0 -U 0 -f "badblocks.*${tmp_device}" >/dev/null 2>&1; do + sleep 1s; + done + sleep 2s + + # Check log + if grep -q '0/0/0 errors' "${tmp_device}_badblocks.log"; then + eval "${tmp_device}_badblocks_result=CS" + else + eval "${tmp_device}_badblocks_result=NS" + fi + update_progress + fi + done +fi + +# Result Screen +TEST_OVER="True" +update_progress +clear +echo "─── RESULTS ───" +if [[ "$TEST_CPU" == "True" ]]; then + echo -e "${BLUE}CPU:${CLEAR}" + if [[ -f "results.txt" ]]; then + echo "results.txt" + if grep -q -iE '(error|fail)' "prime-results.txt"; then + echo -e "${RED}$(grep -q -iE '(error|fail)' "prime-results.txt" | sed -r 's/^/ /' | tail -4)${CLEAR}" + else + sed -r 's/^/ /' "prime-results.txt" 2>/dev/null | tail -4 + fi + echo "" + fi + if [[ -f "prime.log" ]]; then + echo "prime.log" + if grep -i 'completed' "prime.log" | grep -q -iv '0 errors, 0 warnings'; then + echo -e "${RED}$(grep -i 'completed' "prime.log" | grep -iv '0 errors, 0 warnings' | sed -r 's/^/ /' | tail -4)${CLEAR}" + else + grep -i 'completed' "prime.log" | grep -i '0 errors, 0 warnings' | sed -r 's/^.*(Worker #[0-9]+).*(Torture.*)/ \1 \2/' | tail -4 + fi + fi +fi +if [[ "$TEST_SMART" == "True" ]] || \ + [[ "$TEST_BADBLOCKS" == "True" ]]; then + for d in "${DRIVES[@]}"; do + echo -e "${BLUE}Drive $d:${CLEAR}" + if [[ -f "${d##*/}_report.out" ]]; then + echo -e "$(cat "${d##*/}_report.out" 2>/dev/null)" + fi + if [[ -f "${d##*/}_badblocks.log" ]]; then + grep 'Pass completed, ' "${d##*/}_badblocks.log" 2>/dev/null | sed -r 's/^Pass completed, / /' 2>/dev/null + fi + echo "" + done +fi + +# System info dump +sudo inxi -CDdGlMmNopRsc 0 | grep -Ev '(/dev/ram|No RAID devices|Display Server|multisession)' > "system_info.txt" + +# Cleanup +mkdir "$HOME/Tickets/$TICKET" -p 2>/dev/null +rsync -aS "$TMP_DIR" "$HOME/Tickets/" +popd >/dev/null +cd "$HOME/Tickets" && tar czf "${TICKET}.tgz" "$TICKET" + +# End +echo -n "Press Enter to exit..." +read -r +killall hw-diags-progress >>/dev/null 2>&1 +exit 0 diff --git a/archlive/airootfs/usr/local/bin/hw-diags-prime95 b/archlive/airootfs/usr/local/bin/hw-diags-prime95 new file mode 100644 index 00000000..191639e5 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/hw-diags-prime95 @@ -0,0 +1,20 @@ +#!/bin/bash +# +## WK HW diagnostics - Prime95 + +# Find executable +MPRIME="/usr/bin/mprime$(getconf LONG_BIT)" + +function usage { + echo "Usage: $0 log-dir" + echo " e.g. $0 /var/tmp/hw-diags/9001" +} + +# Bail early +if [ ! -d "$1" ]; then + usage + exit 1 +fi + +# Run Prime95 +$MPRIME -t | grep -iv --line-buffered 'stress.txt' | tee -a "$1/prime.log" diff --git a/archlive/airootfs/usr/local/bin/hw-diags-progress b/archlive/airootfs/usr/local/bin/hw-diags-progress new file mode 100644 index 00000000..83505276 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/hw-diags-progress @@ -0,0 +1,10 @@ +#!/bin/bash +# +## WK HW diagnostics - Progress + +# Loop forever +while :; do + clear + echo -e "$(cat "$1")" + sleep 1s +done diff --git a/archlive/airootfs/usr/local/bin/hw-diags-sensors b/archlive/airootfs/usr/local/bin/hw-diags-sensors new file mode 100644 index 00000000..66cddcc0 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/hw-diags-sensors @@ -0,0 +1,43 @@ +#!/bin/bash +# +## WK HW diagnostics - Sensors + +LOG_DIR="$1" + +function usage { + echo "Usage: $0 log-dir" + echo " e.g. $0 /var/tmp/hw-diags/9001" +} + +# Bail early +if [ ! -d "$LOG_DIR" ]; then + usage + exit 1 +fi + +# Run Sensor loop +if sensors >/dev/null 2>&1; then + while :; do + sensors -A | grep -E -i -v '(N/A|RPM|\d+\s+V\s+|^\s*$)' > "$LOG_DIR/sensors.out" 2>/dev/null + + # Colorize + # Blue: All temps (superseeded by other colors below) + sed -i -r 's#(\+[0-9]+\.[0-9].C)#\\e[34m\1\\e[0m#g' "$LOG_DIR/sensors.out" >/dev/null 2>&1 + # Green >= 60* C + sed -i -r 's#(\+6[0-9]\.[0-9].C)#\\e[32m\1\\e[0m#g' "$LOG_DIR/sensors.out" >/dev/null 2>&1 + # Yellow >= 70* C + sed -i -r 's#(\+7[0-9]\.[0-9].C)#\\e[33m\1\\e[0m#g' "$LOG_DIR/sensors.out" >/dev/null 2>&1 + # Orange >= 80* C + sed -i -r 's#(\+(8[0-9]|9[0-4])\.[0-9].C)#\\e[31\;1m\1\\e[0m#g' "$LOG_DIR/sensors.out" >/dev/null 2>&1 + # Red >= 95* C + sed -i -r 's#(\+(9[5-9]|1[0-9][0-9])\.[0-9].C)#\\e[31m\1\\e[0m#g' "$LOG_DIR/sensors.out" >/dev/null 2>&1 + + # Output data + clear + echo -e "$(cat "$LOG_DIR/sensors.out")" + sleep 1s + done +else + echo -e "\e[33mNo sensors found!\nPlease monitor temperatures manually\e[0m" + sleep 1h +fi diff --git a/archlive/airootfs/usr/local/bin/mount-all-volumes b/archlive/airootfs/usr/local/bin/mount-all-volumes new file mode 100644 index 00000000..fe50a427 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/mount-all-volumes @@ -0,0 +1,14 @@ +#!/bin/bash +# +## Mount all volumes read-only + +echo "Mounting all volumes" +regex="/dev/((h|s)d[a-z]|md)[0-9]+" +for v in $(inxi -Do | grep -E "$regex" | sed -r "s#.*($regex).*#\1#"); do + echo -n " $v: " + if udevil mount -o ro $v >>/dev/null 2>&1; then + echo "Mounted." + else + echo "Failed to mount." + fi +done diff --git a/archlive/airootfs/usr/local/bin/mount-backup-shares b/archlive/airootfs/usr/local/bin/mount-backup-shares new file mode 100644 index 00000000..be313995 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/mount-backup-shares @@ -0,0 +1,10 @@ +#!/bin/bash +# +## Mount NAS backup shares + +echo "Mounting NAS backup shares" +sudo mkdir /Backups/ServerOne +sudo mount //10.0.0.10/Backups /Backups/ServerOne -o username=backup,password=Abracadabra +sudo mkdir /Backups/ServerTwo +sudo mount //10.0.0.11/Backups /Backups/ServerTwo -o username=backup,password=Abracadabra + diff --git a/archlive/airootfs/usr/local/bin/msword-search b/archlive/airootfs/usr/local/bin/msword-search new file mode 100644 index 00000000..bc7d4aa5 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/msword-search @@ -0,0 +1,30 @@ +#!/bin/bash + +IFS=$'\n' +for s in $*; do + REGEX="$s" + REGEX=$(echo "$REGEX" | sed -r 's/\s+/\\s\*/g') + + # Word Doc + for d in *doc; do + if antiword "$d" | grep -iqsP "($REGEX)"; then + echo "Possible match: $d" + echo "$d" >> msword.tmp + fi + done + + # Word Docx + for d in *docx; do + if unzip -p "$d" word/document.xml | grep -iqsP "($REGEX)"; then + echo "Possible match: $d" + echo "$d" >> msword.tmp + fi + done + +done + +# Cleanup results +if [[ -f msword.tmp ]]; then + sort -u msword.tmp >> msword-matches.txt +fi + diff --git a/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop b/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop index 8f6a5233..02995642 100644 --- a/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop +++ b/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop @@ -3,7 +3,7 @@ Version=1.0 Type=Application Name=Hardware Diagnostics Comment= -Exec=xfce4-terminal -T "Hardware Diagnostics" -H -I xcos -x hw-diags +Exec=urxvt -title "Hardware Diagnostics" -hold -e hw-diags Icon=xcos Path= Terminal=false diff --git a/archlive/airootfs/usr/share/applications/SpeedTest.desktop b/archlive/airootfs/usr/share/applications/SpeedTest.desktop index eeb2e9be..cea5f356 100644 --- a/archlive/airootfs/usr/share/applications/SpeedTest.desktop +++ b/archlive/airootfs/usr/share/applications/SpeedTest.desktop @@ -3,7 +3,7 @@ Version=1.0 Type=Application Name=SpeedTest Comment= -Exec=xfce4-terminal -T SpeedTest -H -I network-workgroup -x speedtest +Exec=urxvt -titile SpeedTest -hold -e speedtest Icon=network-workgroup Path= Terminal=false diff --git a/archlive/packages.both b/archlive/packages.both index f77bca10..5db6acf4 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -1,22 +1,30 @@ arch-install-scripts +alsa-utils +antiword b43-fwcutter btrfs-progs -chromium +chntpw clonezilla +conky crda +curl darkhttpd ddrescue dhclient dialog +dmidecode dmraid dnsmasq dnsutils +dos2unix dosfstools elinks ethtool +exfat-utils f2fs-tools +ffmpeg fsarchiver -git +gcc-libs gnome-keyring gnu-netcat gparted @@ -25,14 +33,28 @@ grub gsmartcontrol gtk-engine-murrine hdparm +hfsprogs +htop +inxi ipw2100-fw ipw2200-fw iw lftp librsvg +lightdm +lightdm-gtk-greeter linux-atm +lm_sensors mc +mdadm +mediainfo +mesa +midori +mkvtoolnix-cli +mpv mtools +mupdf +ncdu network-manager-applet networkmanager nfs-utils @@ -51,10 +73,13 @@ parted partimage ppp pptpclient +pygtk +python2 refind-efi rfkill rp-pppoe rsync +rxvt-unicode smartmontools speedtest-cli speedtouch @@ -62,10 +87,12 @@ sudo tcpdump terminus-font testdisk +tk tmux truecrypt ttf-inconsolata -ufw +udevil +udisks2 usb_modeswitch vim vpnc @@ -74,6 +101,7 @@ wireless_tools wpa_actiond wpa_supplicant wvdial +xf86-input-synaptics xf86-video-amdgpu xf86-video-ati xf86-video-intel @@ -84,6 +112,8 @@ xfce4-goodies xl2tpd xorg-server xorg-server-utils +xorg-xdpyinfo +xorg-xev xorg-xinit zd1211-firmware zsh From 546a654c0f8ce96eedc9af98813c5867ab6c77cb Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:47:06 -0800 Subject: [PATCH 003/107] 2016-05: Retroactive Updates * Added build-wk script * This will (hopefully) keep the arch-hh folder clean allowing for a better git workflow * Rebuilt the default settings for wktech for most programs * Made the theme/icons more consistant between programs * Changed whiskermenu to more closely match a Windows Start Menu * Lots of hw-diags updates: * Connects to the network automatically * Copies all results files to $HOME/Tickets * Creates valid tgz archives of the results * Uses `mktemp` for setting TMP_DIR * mount-all-drives now opens the FileManager if lauched w/ Super+M * Probably more... --- .gitignore | 1 + archlive/airootfs/etc/skel/.Xresources | 3 +- .../etc/skel/.config/Thunar/accels.scm | 71 ++++++++++++++++++ .../airootfs/etc/skel/.config/Thunar/uca.xml | 13 ++++ .../etc/skel/.config/autostart/wifi.desktop | 12 --- .../skel/.config/gtk-2.0/gtkfilechooser.ini | 11 +++ .../etc/skel/.config/gtk-3.0/settings.ini | 16 +--- .../airootfs/etc/skel/.config/midori/config | 21 ++++++ .../airootfs/etc/skel/.config/mimeapps.list | 25 ++++++ .../xfce4/desktop/icons.screen0-1008x672.rc | 11 --- .../xfce4/desktop/icons.screen0-1008x711.rc | 19 ----- .../xfce4/desktop/icons.screen0-1008x752.rc | 11 --- .../etc/skel/.config/xfce4/helpers.rc | 1 + .../skel/.config/xfce4/panel/cpugraph-9.rc | 17 ----- .../{whiskermenu-18.rc => whiskermenu-1.rc} | 18 ++--- .../skel/.config/xfce4/terminal/terminalrc | 7 -- .../skel/.config/xfce4/xfce4-taskmanager.rc | 4 +- .../xfconf/xfce-perchannel-xml/ristretto.xml | 9 +++ .../xfconf/xfce-perchannel-xml/thunar.xml | 8 +- .../xfce-perchannel-xml/xfce4-desktop.xml | 12 +-- .../xfce4-keyboard-shortcuts.xml | 26 +++---- .../xfce4-mime-settings.xml | 11 --- .../xfce-perchannel-xml/xfce4-mixer.xml | 28 +++++++ .../xfce-perchannel-xml/xfce4-notifyd.xml | 5 ++ .../xfce-perchannel-xml/xfce4-panel.xml | 68 ++++++++++------- .../xfce4-power-manager.xml | 4 +- .../xfce-perchannel-xml/xfce4-session.xml | 22 ++---- .../xfce4-settings-manager.xml | 2 +- .../xfconf/xfce-perchannel-xml/xfwm4.xml | 14 ++-- .../xfconf/xfce-perchannel-xml/xsettings.xml | 4 +- archlive/airootfs/etc/skel/.conky_start | 2 +- .../skel/.gstreamer-0.10/registry.x86_64.bin | Bin 0 -> 101400 bytes .../etc/skel/.local/share/notes/Notes/Notes | 0 .../etc/skel/.local/share/recently-used.xbel | 16 ++++ archlive/airootfs/etc/skel/.tmux.conf | 1 + archlive/airootfs/etc/skel/.wifi | 5 -- archlive/airootfs/etc/skel/.zsh_aliases | 1 + .../airootfs/usr/local/bin/hw-diags-badblocks | 2 +- .../airootfs/usr/local/bin/hw-diags-inner | 38 ++++++++-- .../airootfs/usr/local/bin/hw-diags-prime95 | 2 +- .../airootfs/usr/local/bin/hw-diags-sensors | 2 +- .../airootfs/usr/local/bin/mount-all-volumes | 6 ++ .../usr/local/bin/mount-backup-shares | 4 +- archlive/airootfs/usr/local/bin/msword-search | 16 +++- archlive/packages.both | 7 +- build-wk | 13 ++++ 46 files changed, 370 insertions(+), 219 deletions(-) create mode 100644 .gitignore create mode 100644 archlive/airootfs/etc/skel/.config/Thunar/accels.scm create mode 100644 archlive/airootfs/etc/skel/.config/Thunar/uca.xml delete mode 100644 archlive/airootfs/etc/skel/.config/autostart/wifi.desktop create mode 100644 archlive/airootfs/etc/skel/.config/gtk-2.0/gtkfilechooser.ini create mode 100644 archlive/airootfs/etc/skel/.config/midori/config create mode 100644 archlive/airootfs/etc/skel/.config/mimeapps.list delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x672.rc delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x711.rc delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x752.rc delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/panel/cpugraph-9.rc rename archlive/airootfs/etc/skel/.config/xfce4/panel/{whiskermenu-18.rc => whiskermenu-1.rc} (68%) create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/ristretto.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mime-settings.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml create mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml create mode 100644 archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin create mode 100644 archlive/airootfs/etc/skel/.local/share/notes/Notes/Notes create mode 100644 archlive/airootfs/etc/skel/.local/share/recently-used.xbel delete mode 100644 archlive/airootfs/etc/skel/.wifi create mode 100644 build-wk diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..ba26e229 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +wk_tmp \ No newline at end of file diff --git a/archlive/airootfs/etc/skel/.Xresources b/archlive/airootfs/etc/skel/.Xresources index 5a39a77c..ce6e4b9a 100644 --- a/archlive/airootfs/etc/skel/.Xresources +++ b/archlive/airootfs/etc/skel/.Xresources @@ -1,6 +1,7 @@ URxvt*font: xft:Inconsolata:size=11 -URxvt*geometry: 128x32+24+24 +! The line below will be modified by ~/.urxvt_default_res +URxvt*geometry: 96x32+24+24 URxvt*scrollBar_right: True URxvt*scrollstyle: plain diff --git a/archlive/airootfs/etc/skel/.config/Thunar/accels.scm b/archlive/airootfs/etc/skel/.config/Thunar/accels.scm new file mode 100644 index 00000000..7876f2fe --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/Thunar/accels.scm @@ -0,0 +1,71 @@ +; Thunar GtkAccelMap rc-file -*- scheme -*- +; this file is an automated accelerator map dump +; +; (gtk_accel_path "/ThunarLauncher/sendto-desktop" "") +; (gtk_accel_path "/ThunarStandardView/create-folder" "n") +; (gtk_accel_path "/ThunarShortcutsPane/sendto-shortcuts" "") +; (gtk_accel_path "/ThunarWindow/view-side-pane-menu" "") +; (gtk_accel_path "/ThunarStandardView/paste-into-folder" "v") +; (gtk_accel_path "/ThunarWindow/open-home" "Home") +; (gtk_accel_path "/ThunarWindow/view-menu" "") +; (gtk_accel_path "/ThunarLauncher/open" "o") +; (gtk_accel_path "/ThunarWindow/go-menu" "") +; (gtk_accel_path "/ThunarActions/uca-action-1462127723240094-1" "") +; (gtk_accel_path "/ThunarWindow/open-file-system" "") +; (gtk_accel_path "/ThunarWindow/zoom-out" "minus") +; (gtk_accel_path "/ThunarStandardView/paste" "v") +; (gtk_accel_path "/ThunarLauncher/open-with-menu" "") +; (gtk_accel_path "/ThunarWindow/help-menu" "") +; (gtk_accel_path "/ThunarWindow/file-menu" "") +; (gtk_accel_path "/ThunarLauncher/open-with-other-in-menu" "") +; (gtk_accel_path "/ThunarWindow/detach-tab" "") +; (gtk_accel_path "/ThunarLauncher/open-in-new-tab" "p") +; (gtk_accel_path "/ThunarWindow/view-menubar" "m") +; (gtk_accel_path "/ThunarStandardView/back" "Left") +; (gtk_accel_path "/ThunarWindow/close-tab" "w") +; (gtk_accel_path "/ThunarWindow/view-as-compact-list" "3") +; (gtk_accel_path "/ThunarWindow/view-side-pane-tree" "e") +; (gtk_accel_path "/ThunarStandardView/restore" "") +; (gtk_accel_path "/ThunarWindow/open-network" "") +; (gtk_accel_path "/ThunarActions/Tap::create-archive" "") +; (gtk_accel_path "/ThunarWindow/new-tab" "t") +; (gtk_accel_path "/ThunarWindow/preferences" "") +; (gtk_accel_path "/ThunarStandardView/rename" "F2") +; (gtk_accel_path "/ThunarWindow/sendto-menu" "") +; (gtk_accel_path "/ThunarWindow/edit-menu" "") +; (gtk_accel_path "/ThunarLauncher/open-with-other" "") +; (gtk_accel_path "/ThunarWindow/view-location-selector-toolbar" "") +; (gtk_accel_path "/ThunarStandardView/invert-selection" "") +; (gtk_accel_path "/ThunarStandardView/make-link" "") +; (gtk_accel_path "/ThunarWindow/view-as-icons" "1") +; (gtk_accel_path "/ThunarWindow/new-window" "n") +; (gtk_accel_path "/ThunarStandardView/forward" "Right") +; (gtk_accel_path "/ThunarStandardView/move-to-trash" "") +; (gtk_accel_path "/ThunarStandardView/select-by-pattern" "s") +; (gtk_accel_path "/ThunarWindow/about" "") +; (gtk_accel_path "/ThunarStandardView/setup-columns" "") +; (gtk_accel_path "/ThunarWindow/contents" "F1") +; (gtk_accel_path "/ThunarWindow/open-desktop" "") +; (gtk_accel_path "/ThunarWindow/close-all-windows" "w") +; (gtk_accel_path "/ThunarWindow/zoom-in" "plus") +; (gtk_accel_path "/ThunarStandardView/duplicate" "") +; (gtk_accel_path "/ThunarWindow/open-parent" "Up") +; (gtk_accel_path "/ThunarWindow/view-side-pane-shortcuts" "b") +; (gtk_accel_path "/ThunarWindow/reload" "r") +; (gtk_accel_path "/ThunarWindow/open-templates" "") +; (gtk_accel_path "/ThunarStandardView/copy" "c") +; (gtk_accel_path "/ThunarWindow/view-location-selector-pathbar" "") +; (gtk_accel_path "/ThunarStandardView/properties" "Return") +; (gtk_accel_path "/ThunarStandardView/delete" "") +; (gtk_accel_path "/ThunarActions/Twp::setwallpaper" "") +; (gtk_accel_path "/ThunarWindow/empty-trash" "") +; (gtk_accel_path "/ThunarWindow/view-location-selector-menu" "") +; (gtk_accel_path "/ThunarLauncher/open-in-new-window" "o") +; (gtk_accel_path "/ThunarStandardView/cut" "x") +; (gtk_accel_path "/ThunarWindow/close-window" "q") +; (gtk_accel_path "/ThunarStandardView/select-all-files" "") +; (gtk_accel_path "/ThunarWindow/open-location" "l") +; (gtk_accel_path "/ThunarWindow/zoom-reset" "0") +; (gtk_accel_path "/ThunarWindow/view-statusbar" "") +; (gtk_accel_path "/ThunarWindow/show-hidden" "h") +; (gtk_accel_path "/ThunarWindow/view-as-detailed-list" "2") diff --git a/archlive/airootfs/etc/skel/.config/Thunar/uca.xml b/archlive/airootfs/etc/skel/.config/Thunar/uca.xml new file mode 100644 index 00000000..74185535 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/Thunar/uca.xml @@ -0,0 +1,13 @@ + + + + utilities-terminal + Open Terminal Here + 1462127723240094-1 + exo-open --working-directory %f --launch TerminalEmulator + Example for a custom action + * + + + + diff --git a/archlive/airootfs/etc/skel/.config/autostart/wifi.desktop b/archlive/airootfs/etc/skel/.config/autostart/wifi.desktop deleted file mode 100644 index 2459b12d..00000000 --- a/archlive/airootfs/etc/skel/.config/autostart/wifi.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=0.9.4 -Type=Application -Name=WiFi -Comment=WiFi -Exec=/home/wktech/.wifi -OnlyShowIn=XFCE; -StartupNotify=false -Terminal=false -Hidden=false - diff --git a/archlive/airootfs/etc/skel/.config/gtk-2.0/gtkfilechooser.ini b/archlive/airootfs/etc/skel/.config/gtk-2.0/gtkfilechooser.ini new file mode 100644 index 00000000..62930e9d --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/gtk-2.0/gtkfilechooser.ini @@ -0,0 +1,11 @@ +[Filechooser Settings] +LocationMode=path-bar +ShowHidden=false +ShowSizeColumn=true +GeometryX=-1 +GeometryY=-1 +GeometryWidth=-1 +GeometryHeight=-1 +SortColumn=name +SortOrder=ascending +StartupMode=recent diff --git a/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini b/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini index 55e57f9b..3a73097e 100644 --- a/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini +++ b/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini @@ -1,15 +1,5 @@ [Settings] -gtk-theme-name=Numix -gtk-icon-theme-name=Adwaita +gtk-theme-name=Arc +gtk-icon-theme-name=Numic Circle gtk-font-name=Noto Sans 10 -gtk-cursor-theme-size=0 -gtk-toolbar-style=GTK_TOOLBAR_BOTH -gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR -gtk-button-images=1 -gtk-menu-images=1 -gtk-enable-event-sounds=1 -gtk-enable-input-feedback-sounds=1 -gtk-xft-antialias=1 -gtk-xft-hinting=1 -gtk-xft-hintstyle=hintfull -gtk-xft-rgba=none + diff --git a/archlive/airootfs/etc/skel/.config/midori/config b/archlive/airootfs/etc/skel/.config/midori/config new file mode 100644 index 00000000..30a10bcf --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/midori/config @@ -0,0 +1,21 @@ +[settings] +default-encoding=ISO-8859-1 +default-font-family=Noto Sans +monospace-font-family=Noto Mono +enable-developer-extras=true +enable-site-specific-quirks=true +enable-javascript=true +default-charset=ISO-8859-1 +last-panel-position=249 +last-panel-page=3 +last-window-state=MIDORI_WINDOW_MAXIMIZED +location-entry-search=https://duckduckgo.com/?q=%s +toolbar-items=TabNew,Back,NextForward,ReloadStop,BookmarkAdd,Location,Search,Trash,CompactMenu +homepage=https://www.google.com/ +tabhome=about:dial +download-folder=/home/wktech +load-on-startup=MIDORI_STARTUP_HOMEPAGE +user-agent=Mozilla/5.0 (X11; Linux) AppleWebKit/538.15 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/538.15 Midori/0.5 + +[extensions] +libadblock.so=true diff --git a/archlive/airootfs/etc/skel/.config/mimeapps.list b/archlive/airootfs/etc/skel/.config/mimeapps.list new file mode 100644 index 00000000..e8beceeb --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/mimeapps.list @@ -0,0 +1,25 @@ +[Added Associations] +application/pdf=mupdf.desktop; +application/vnd.adobe.flash.movie=mpv.desktop; +application/vnd.ms-asf=mpv.desktop; +audio/flac=mpv.desktop; +audio/mp4=mpv.desktop; +audio/mpeg=mpv.desktop; +audio/x-vorbis+ogg=mpv.desktop; +image/bmp=ristretto.desktop; +image/gif=ristretto.desktop; +image/jpeg=ristretto.desktop; +image/png=ristretto.desktop; +image/vnd.microsoft.icon=ristretto.desktop; +inode/directory=exo-file-manager.desktop +text/plain=mousepad.desktop; +video/mp4=mpv.desktop; +video/mpeg=mpv.desktop; +video/quicktime=mpv.desktop; +video/x-flv=mpv.desktop; +video/x-matroska=mpv.desktop; +video/x-msvideo=mpv.desktop; +video/x-ms-wmv=mpv.desktop; +x-scheme-handler/http=exo-web-browser.desktop +x-scheme-handler/https=exo-web-browser.desktop +x-scheme-handler/trash=exo-file-manager.desktop diff --git a/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x672.rc b/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x672.rc deleted file mode 100644 index dd31bbe4..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x672.rc +++ /dev/null @@ -1,11 +0,0 @@ -[xfdesktop-version-4.10.3+-rcfile_format] -4.10.3+=true - -[/] -row=0 -col=0 - -[/home/wktech] -row=1 -col=0 - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x711.rc b/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x711.rc deleted file mode 100644 index f8a12092..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x711.rc +++ /dev/null @@ -1,19 +0,0 @@ -[xfdesktop-version-4.10.3+-rcfile_format] -4.10.3+=true - -[/home/wktech/Desktop/SpeedTest.desktop] -row=2 -col=0 - -[/home/wktech/Desktop/HW Diagnostics.desktop] -row=3 -col=0 - -[/] -row=0 -col=0 - -[/home/wktech] -row=1 -col=0 - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x752.rc b/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x752.rc deleted file mode 100644 index dd31bbe4..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/desktop/icons.screen0-1008x752.rc +++ /dev/null @@ -1,11 +0,0 @@ -[xfdesktop-version-4.10.3+-rcfile_format] -4.10.3+=true - -[/] -row=0 -col=0 - -[/home/wktech] -row=1 -col=0 - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc b/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc index 889c575f..61bd79cd 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc +++ b/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc @@ -1,3 +1,4 @@ WebBrowser=midori +FileManager=Thunar TerminalEmulator=urxvt diff --git a/archlive/airootfs/etc/skel/.config/xfce4/panel/cpugraph-9.rc b/archlive/airootfs/etc/skel/.config/xfce4/panel/cpugraph-9.rc deleted file mode 100644 index 220e1d4b..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/panel/cpugraph-9.rc +++ /dev/null @@ -1,17 +0,0 @@ -UpdateInterval=0 -TimeScale=0 -Size=32 -Mode=0 -Frame=1 -Border=1 -Bars=0 -TrackedCore=0 -Command=xfce4-taskmanager -InTerminal=0 -StartupNotification=1 -ColorMode=0 -Foreground1=#2b2b6363b1b1 -Foreground2=#ffff00000000 -Foreground3=#00000000ffff -Background=#2b2b2e2e3737 - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc similarity index 68% rename from archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc rename to archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc index 00f15a7d..93ffb654 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-18.rc +++ b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc @@ -1,12 +1,12 @@ -favorites=exo-file-manager.desktop,hwdiags.desktop,gparted.desktop,gsmartcontrol.desktop,truecrypt.desktop,speedtest.desktop,exo-web-browser.desktop -recent=exo-web-browser.desktop +favorites=Hardware Diagnostics.desktop,exo-file-manager.desktop,gparted.desktop,gsmartcontrol.desktop,SpeedTest.desktop,truecrypt.desktop,exo-web-browser.desktop +recent=xfce4-settings-editor.desktop,xfce-session-settings.desktop,xfce4-power-manager-settings.desktop,gsmartcontrol.desktop,gparted.desktop button-title=Applications -button-icon=desktop-environment-xfce +button-icon=distributor-logo-archlinux button-single-row=false show-button-title=false show-button-icon=true launcher-show-name=true -launcher-show-description=true +launcher-show-description=false item-icon-size=3 hover-switch-category=false category-icon-size=1 @@ -14,11 +14,11 @@ load-hierarchy=false recent-items-max=10 favorites-in-recent=true display-recent-default=false -position-search-alternate=false -position-commands-alternate=false +position-search-alternate=true +position-commands-alternate=true position-categories-alternate=false -menu-width=399 -menu-height=508 +menu-width=400 +menu-height=500 menu-opacity=100 command-settings=xfce4-settings-manager show-command-settings=true @@ -29,7 +29,7 @@ show-command-switchuser=false command-logout=xfce4-session-logout show-command-logout=true command-menueditor=menulibre -show-command-menueditor=true +show-command-menueditor=false command-profile=mugshot show-command-profile=false search-actions=4 diff --git a/archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc b/archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc index 15984ea3..41bfc4df 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc +++ b/archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc @@ -16,11 +16,4 @@ MiscTabCloseButtons=TRUE MiscTabCloseMiddleClick=TRUE MiscTabPosition=GTK_POS_TOP MiscHighlightUrls=TRUE -ColorForeground=#839496 -ColorBackground=#002b36 -ColorCursor=#93a1a1 -ColorPalette=#073642;#dc322f;#859900;#b58900;#268bd2;#d33682;#2aa198;#eee8d5;#002b36;#cb4b16;#586e75;#657b83;#839496;#6c71c4;#93a1a1;#fdf6e3 -ColorBold=#93a1a1 -ColorBoldUseDefault=FALSE -TabActivityColor=#dc322f diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc b/archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc index dfbd1328..bc341e3b 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc @@ -19,7 +19,7 @@ ColumnCPU=TRUE ColumnPriority=FALSE SortColumn=0 SortType=0 -WindowWidth=838 -WindowHeight=591 +WindowWidth=490 +WindowHeight=465 HandlePosition=100 ProcessTreeView=FALSE diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/ristretto.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/ristretto.xml new file mode 100644 index 00000000..781e4e71 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/ristretto.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml index 020078d0..567ac037 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml @@ -1,10 +1,12 @@ - + - + + + + - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml index 0337f6f7..f1b3664f 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -8,6 +8,7 @@ + @@ -27,18 +28,13 @@ - - - - - - - - + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml index f52b0e10..cf01628b 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -29,26 +29,20 @@ + + + + + + + + + - - - - - - - - - - - - - - - @@ -164,7 +158,7 @@ - + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mime-settings.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mime-settings.xml deleted file mode 100644 index 33cccb13..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mime-settings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml new file mode 100644 index 00000000..49d6bca6 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml new file mode 100644 index 00000000..5cf67af8 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml index bd7b830d..14332612 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -5,49 +5,61 @@ - - + + + + + - - - - - + + + + + - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - + + - + + + + + + + + + + + + + + + + + + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml index ff8fb309..94ae4a47 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml @@ -2,9 +2,9 @@ + - - + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml index 0e99df2f..bfaccb81 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml @@ -3,8 +3,9 @@ - + + @@ -23,24 +24,13 @@ - - - - - - - - - - - - + + + + - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml index a9444be1..cd059aab 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml @@ -2,7 +2,7 @@ - + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml index edfe5c35..aebf9edd 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml @@ -11,7 +11,7 @@ - + @@ -29,7 +29,7 @@ - + @@ -72,16 +72,16 @@ + + + + + - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml index c00d8438..2284a963 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml @@ -3,7 +3,7 @@ - + @@ -31,7 +31,7 @@ - + diff --git a/archlive/airootfs/etc/skel/.conky_start b/archlive/airootfs/etc/skel/.conky_start index 811f7722..8ebe5067 100644 --- a/archlive/airootfs/etc/skel/.conky_start +++ b/archlive/airootfs/etc/skel/.conky_start @@ -1,3 +1,3 @@ #!/bin/bash -sleep 3s && conky +sleep 5s && conky diff --git a/archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin b/archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin new file mode 100644 index 0000000000000000000000000000000000000000..e7f302f4c2fab287fd974ac9cf084d5bd1ba12c1 GIT binary patch literal 101400 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 rw?} + + + + + + + + + + + + \ No newline at end of file diff --git a/archlive/airootfs/etc/skel/.tmux.conf b/archlive/airootfs/etc/skel/.tmux.conf index cdf5a3f2..29cf429c 100644 --- a/archlive/airootfs/etc/skel/.tmux.conf +++ b/archlive/airootfs/etc/skel/.tmux.conf @@ -1 +1,2 @@ set -g status off +set -g pane-active-border-fg white diff --git a/archlive/airootfs/etc/skel/.wifi b/archlive/airootfs/etc/skel/.wifi deleted file mode 100644 index 859c57b5..00000000 --- a/archlive/airootfs/etc/skel/.wifi +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -sleep 1s -nmcli dev wifi con "SomeWiFi" password "Abracadabra" - diff --git a/archlive/airootfs/etc/skel/.zsh_aliases b/archlive/airootfs/etc/skel/.zsh_aliases index 417a3e84..b6c91916 100644 --- a/archlive/airootfs/etc/skel/.zsh_aliases +++ b/archlive/airootfs/etc/skel/.zsh_aliases @@ -5,6 +5,7 @@ alias 7z3='7z a -t7z -mx=3' alias 7z5='7z a -t7z -mx=5' alias 7z7='7z a -t7z -mx=7' alias 7z9='7z a -t7z -mx=9' +alias diff='colordiff' -ur alias du='du -sch --apparent-size' alias fidentify="/usr/bin/fidentify-wip$(getconf LONG_BIT)" alias fix-perms='find -type d -exec chmod 755 "{}" \; && find -type f -exec chmod 644 "{}" \;' diff --git a/archlive/airootfs/usr/local/bin/hw-diags-badblocks b/archlive/airootfs/usr/local/bin/hw-diags-badblocks index 8b5d75dc..817996d3 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-badblocks +++ b/archlive/airootfs/usr/local/bin/hw-diags-badblocks @@ -4,7 +4,7 @@ function usage { echo "Usage: $0 log-dir device" - echo " e.g. $0 /var/tmp/hw-diags/9001 /dev/sda" + echo " e.g. $0 /tmp/tmp.7Mh5f1RhSL9001 /dev/sda" } # Bail early diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/archlive/airootfs/usr/local/bin/hw-diags-inner index 28b4d600..1bc5bde3 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-inner +++ b/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -2,10 +2,6 @@ # ## WK HW Diagnostics - Main script -# Setup tmux -# tmux set remain-on-exit on -tmux set status off - # Get TICKET# TICKET="" while [[ "$TICKET" == "" ]]; do @@ -26,7 +22,7 @@ DIAG_SERVER_AVAIL="False" DIAG_SERVER="10.0.0.10" DIAG_DEST="/srv/Diagnostics/${TICKET}/${DIAG_DATE}" DIAG_USER="wkdiag" -TMP_DIR="/var/tmp/hw-diags/${TICKET}/${DIAG_DATE}" +TMP_DIR="$(mktemp -d)" ERRORS="False" ERROR_IMG="$TMP_DIR/error.jpg" PASSED_IMG="$TMP_DIR/passed.jpg" @@ -46,6 +42,29 @@ for d in "${ARCH_DRIVES[@]}"; do DRIVES=(${DRIVES[@]//*$d*}) done +# Connect to network +if ! ip a | grep -q '192.168.1'; then + # LAN + if ! ip l | grep -Eq '[0-9]+: +en'; then + ## Reload the tg3/broadcom driver (known fix for some Dell systems) + echo "No wired network adapters found; reloading drivers..." + sudo modprobe -r tg3 + sudo modprobe broadcom + sudo modprobe tg3 + sleep 5s + fi + + # WiFi + if ip l | grep -Eq '[0-9]+: +wl'; then + ## Skip if we're already connected (e.g. the code above worked) + if ! ip a | grep -q '192.168.1'; then + echo "Attempting to connect to SomeWiFi..." + nmcli dev wifi con "SomeWiFi" password "Abracadabra" + sleep 5s + fi + fi +fi + # Test connection to DIAG_SERVER if ip a | grep -q '192.168.1' && \ ping -c 1 -q $DIAG_SERVER >/dev/null 2>&1; then @@ -408,7 +427,7 @@ if [[ "$TEST_BADBLOCKS" == "True" ]]; then echo "Testing drive: ${tmp_device}" # Split and run - tmux split-window -d -v -l 7 "hw-diags-badblocks $TMP_DIR /dev/${tmp_device}" + tmux split-window -v -l 7 "hw-diags-badblocks $TMP_DIR /dev/${tmp_device}" # Wait until done sleep 2s @@ -472,10 +491,15 @@ sudo inxi -CDdGlMmNopRsc 0 | grep -Ev '(/dev/ram|No RAID devices|Display Server| # Cleanup mkdir "$HOME/Tickets/$TICKET" -p 2>/dev/null -rsync -aS "$TMP_DIR" "$HOME/Tickets/" +rsync -aS "$TMP_DIR/" "$HOME/Tickets/$TICKET/" popd >/dev/null cd "$HOME/Tickets" && tar czf "${TICKET}.tgz" "$TICKET" +# Update Server +if [[ "$DIAG_SERVER_AVAIL" == "True" ]]; then + rsync -aqz "$TMP_DIR/" "${TICKET}.tgz" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/" --exclude '*.out' +fi + # End echo -n "Press Enter to exit..." read -r diff --git a/archlive/airootfs/usr/local/bin/hw-diags-prime95 b/archlive/airootfs/usr/local/bin/hw-diags-prime95 index 191639e5..6e29b670 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-prime95 +++ b/archlive/airootfs/usr/local/bin/hw-diags-prime95 @@ -7,7 +7,7 @@ MPRIME="/usr/bin/mprime$(getconf LONG_BIT)" function usage { echo "Usage: $0 log-dir" - echo " e.g. $0 /var/tmp/hw-diags/9001" + echo " e.g. $0 /tmp/tmp.7Mh5f1RhSL9001" } # Bail early diff --git a/archlive/airootfs/usr/local/bin/hw-diags-sensors b/archlive/airootfs/usr/local/bin/hw-diags-sensors index 66cddcc0..32fa7dc4 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-sensors +++ b/archlive/airootfs/usr/local/bin/hw-diags-sensors @@ -6,7 +6,7 @@ LOG_DIR="$1" function usage { echo "Usage: $0 log-dir" - echo " e.g. $0 /var/tmp/hw-diags/9001" + echo " e.g. $0 /tmp/tmp.7Mh5f1RhSL9001" } # Bail early diff --git a/archlive/airootfs/usr/local/bin/mount-all-volumes b/archlive/airootfs/usr/local/bin/mount-all-volumes index fe50a427..edf3094a 100644 --- a/archlive/airootfs/usr/local/bin/mount-all-volumes +++ b/archlive/airootfs/usr/local/bin/mount-all-volumes @@ -12,3 +12,9 @@ for v in $(inxi -Do | grep -E "$regex" | sed -r "s#.*($regex).*#\1#"); do echo "Failed to mount." fi done + +if [[ "$1" == "foh" && -n $DISPLAY ]]; then + sleep 1s + exo-open --launch FileManager "$HOME" +fi +echo "Done." diff --git a/archlive/airootfs/usr/local/bin/mount-backup-shares b/archlive/airootfs/usr/local/bin/mount-backup-shares index be313995..36e44645 100644 --- a/archlive/airootfs/usr/local/bin/mount-backup-shares +++ b/archlive/airootfs/usr/local/bin/mount-backup-shares @@ -3,8 +3,8 @@ ## Mount NAS backup shares echo "Mounting NAS backup shares" -sudo mkdir /Backups/ServerOne +sudo mkdir /Backups/ServerOne -p sudo mount //10.0.0.10/Backups /Backups/ServerOne -o username=backup,password=Abracadabra -sudo mkdir /Backups/ServerTwo +sudo mkdir /Backups/ServerTwo -p sudo mount //10.0.0.11/Backups /Backups/ServerTwo -o username=backup,password=Abracadabra diff --git a/archlive/airootfs/usr/local/bin/msword-search b/archlive/airootfs/usr/local/bin/msword-search index bc7d4aa5..5917d660 100644 --- a/archlive/airootfs/usr/local/bin/msword-search +++ b/archlive/airootfs/usr/local/bin/msword-search @@ -1,5 +1,7 @@ #!/bin/bash +TMP_FILE="$(mktemp)" + IFS=$'\n' for s in $*; do REGEX="$s" @@ -9,7 +11,7 @@ for s in $*; do for d in *doc; do if antiword "$d" | grep -iqsP "($REGEX)"; then echo "Possible match: $d" - echo "$d" >> msword.tmp + echo "$d" >> "$TMP_FILE" fi done @@ -17,14 +19,20 @@ for s in $*; do for d in *docx; do if unzip -p "$d" word/document.xml | grep -iqsP "($REGEX)"; then echo "Possible match: $d" - echo "$d" >> msword.tmp + echo "$d" >> "$TMP_FILE" fi done done # Cleanup results -if [[ -f msword.tmp ]]; then - sort -u msword.tmp >> msword-matches.txt +if [[ -s "$TMP_FILE" ]]; then + sort -u "$TMP_FILE" >> "$HOME/msword-matches.txt" fi +rm "$TMP_FILE" +# Done +if [[ -s "$HOME/msword-matches.txt" ]]; then + echo "Found $(wc -l "$HOME/msword-matches.txt") possible matches" + echo "The results have been saved to $HOME" +fi \ No newline at end of file diff --git a/archlive/packages.both b/archlive/packages.both index 5db6acf4..b87730d9 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -5,6 +5,8 @@ b43-fwcutter btrfs-progs chntpw clonezilla +cmatrix +colordiff conky crda curl @@ -33,6 +35,7 @@ grub gsmartcontrol gtk-engine-murrine hdparm +hexedit hfsprogs htop inxi @@ -49,7 +52,8 @@ mc mdadm mediainfo mesa -midori +mesa-demos +midori-gtk2 mkvtoolnix-cli mpv mtools @@ -93,6 +97,7 @@ truecrypt ttf-inconsolata udevil udisks2 +unzip usb_modeswitch vim vpnc diff --git a/build-wk b/build-wk new file mode 100644 index 00000000..2ffa0d3b --- /dev/null +++ b/build-wk @@ -0,0 +1,13 @@ +#!/bin/bash + +# Set Vars +TMP_DIR="$(pwd)/wk_tmp" +OUT_DIR="$TMP_DIR/out" + +# Build ISO +mkdir $TMP_DIR +mkdir $OUT_DIR +./archlive/build.sh -N "arch-wk" -V "$(date +%F)" -L "ARCH_WK" -w "$TMP_DIR" -o "$OUT_DIR" -v + +# Cleanup +mv -nv "$OUT_DIR"/*iso "$HOME/" && rm "$TMP_DIR" -Rf From 8e36a24f3750b892f02c44314c91542b4d6b1139 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:49:18 -0800 Subject: [PATCH 004/107] 2016-06: Retroactive Updates * Added HW-Sensors alias and keyboard shortcut * Added new packages to packages.both (from 2016.06 archiso update) * Disabled gputests for i686 builds * Errors would cause an incomplete line to be left in the log causing a false-positive * HW-Diags will no longer upload results if the Ticket# starts with '0' * Added chmod flags to the rsync upload * Initial work to add custom-repos * Open GUI progs without entering a password (e.g. GParted) * The wallpaper should now be loaded from the UFD. * Still need to move scripts or add a "settings" file * mount-all-volumes now shows the mount-points while mounting (like running manually) * photorec-sort 7z archive testing is currently stalling, disabled for now --- .../etc/lightdm/lightdm-gtk-greeter.conf | 2 +- .../polkit-1/rules.d/49-nopasswd_global.rules | 5 ++ .../xfce4-keyboard-shortcuts.xml | 5 +- archlive/airootfs/etc/skel/.conky_start | 4 +- archlive/airootfs/etc/skel/.conkyrc | 1 + archlive/airootfs/etc/skel/.zsh_aliases | 6 +- archlive/airootfs/usr/local/bin/hw-diags | 8 +-- .../airootfs/usr/local/bin/hw-diags-inner | 72 +++++++++++-------- .../airootfs/usr/local/bin/hw-diags-prime95 | 7 +- .../airootfs/usr/local/bin/hw-diags-sensors | 5 +- .../airootfs/usr/local/bin/mount-all-volumes | 14 +--- archlive/packages.both | 12 ++++ archlive/packages.x86_64 | 1 + archlive/pacman.conf | 10 ++- 14 files changed, 83 insertions(+), 69 deletions(-) create mode 100644 archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules diff --git a/archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf b/archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf index ac30a13a..9b08ec3c 100644 --- a/archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf +++ b/archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf @@ -45,7 +45,7 @@ # transition-duration = overrides default value # [greeter] -background=/usr/share/wallpaper/wallhaven-105688.png +background=/usr/share/wallpaper/current.png #user-background= theme-name=Numix icon-theme-name=Numix-Circle-Light diff --git a/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules b/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules new file mode 100644 index 00000000..ce304018 --- /dev/null +++ b/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules @@ -0,0 +1,5 @@ +polkit.addRule(function(action, subject) { + if (subject.isInGroup("wheel")) { + return polkit.Result.YES; + } +}); diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml index cf01628b..7c785878 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -37,9 +37,8 @@ - - - + + diff --git a/archlive/airootfs/etc/skel/.conky_start b/archlive/airootfs/etc/skel/.conky_start index 8ebe5067..ce3fc10d 100644 --- a/archlive/airootfs/etc/skel/.conky_start +++ b/archlive/airootfs/etc/skel/.conky_start @@ -1,3 +1,5 @@ #!/bin/bash -sleep 5s && conky +sleep 2s && conky & +sleep 5s && killall conky +conky diff --git a/archlive/airootfs/etc/skel/.conkyrc b/archlive/airootfs/etc/skel/.conkyrc index 9dafc71e..3e84073e 100644 --- a/archlive/airootfs/etc/skel/.conkyrc +++ b/archlive/airootfs/etc/skel/.conkyrc @@ -159,5 +159,6 @@ ${hr} [Super] + r${alignr}Run Dialog [Super] + s${alignr}SMART Check [Super] + t${alignr}Terminal +[Super] + v${alignr}View Temps [Super] + w${alignr}Web Browser [Super] + x${alignr}Logout diff --git a/archlive/airootfs/etc/skel/.zsh_aliases b/archlive/airootfs/etc/skel/.zsh_aliases index b6c91916..7450b0c2 100644 --- a/archlive/airootfs/etc/skel/.zsh_aliases +++ b/archlive/airootfs/etc/skel/.zsh_aliases @@ -7,13 +7,13 @@ alias 7z7='7z a -t7z -mx=7' alias 7z9='7z a -t7z -mx=9' alias diff='colordiff' -ur alias du='du -sch --apparent-size' -alias fidentify="/usr/bin/fidentify-wip$(getconf LONG_BIT)" alias fix-perms='find -type d -exec chmod 755 "{}" \; && find -type f -exec chmod 644 "{}" \;' alias less='less -S' alias mkdir='mkdir -p' alias mount='sudo mount' alias mv='mv -nv' -alias photorec="sudo /usr/bin/photorec-wip$(getconf LONG_BIT)" +alias photorec="sudo photorec" +alias photorec-sort="sudo photorec-sort" alias q1='clear && sudo ls -1' alias q1a='clear && sudo ls -1A' alias q='clear && sudo ls -lh' @@ -28,6 +28,6 @@ alias sdu='sudo du -sch --apparent-size' alias srmdirs='find -depth -mindepth 1 -type d -exec sudo rmdir "{}" --ignore-fail-on-non-empty \;' alias srs='sudo rsync -avhPS --stats --exclude-from="$HOME/.rsync_exclusions"' alias srsz='sudo rsync -avhzPS --stats --exclude-from="$HOME/.rsync_exclusions"' -alias testdisk="sudo /usr/bin/testdisk-wip$(getconf LONG_BIT)" +alias testdisk="sudo testdisk" alias umount='sudo umount' alias unmount='sudo umount' diff --git a/archlive/airootfs/usr/local/bin/hw-diags b/archlive/airootfs/usr/local/bin/hw-diags index af422a7d..311e8f8e 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags +++ b/archlive/airootfs/usr/local/bin/hw-diags @@ -19,7 +19,7 @@ while :; do echo "4: SMART" echo "5: badblocks" echo "────────────────────" - if [[ -n $DISPLAY ]]; then + if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then echo "6: Graphics Test - FurMark" echo "7: Graphics Test - Piano" echo "8: Graphics Test - Volplosion" @@ -55,17 +55,17 @@ while :; do MODE=badblocks break;; 6) - if [[ -n $DISPLAY ]]; then + if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then gputest /fullscreen /test=fur fi ;; 7) - if [[ -n $DISPLAY ]]; then + if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then gputest /fullscreen /test=pixmark_piano fi ;; 8) - if [[ -n $DISPLAY ]]; then + if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then gputest /fullscreen /test=pixmark_volplosion fi ;; diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/archlive/airootfs/usr/local/bin/hw-diags-inner index 1bc5bde3..3b7ba213 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-inner +++ b/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -2,15 +2,20 @@ # ## WK HW Diagnostics - Main script -# Get TICKET# +# Get TICKET +SKIP_UPLOAD="" TICKET="" while [[ "$TICKET" == "" ]]; do if [[ "$1" == "foh" ]]; then TICKET="foh-consult" + SKIP_UPLOAD="True" else echo -n "Please enter the Service Order #: " read -r _ticket - if echo "$_ticket" | grep -Eq '^[0-9]+\S*$'; then + if echo "$_ticket" | grep -Eq '^[1-9]+\S*$'; then + TICKET="$_ticket" + elif echo "$_ticket" | grep -Eq '^0'; then + SKIP_UPLOAD="True" TICKET="$_ticket" fi fi @@ -35,6 +40,7 @@ LOG="$TMP_DIR/hw-diags.log" OUT="$TMP_DIR/hw-diags.out" # Get list of drives to test (excluding any ARCH drives) + ## Some code borrowed from stackoverflow.com/a/10020397 ARCH_DRIVES=($(ls -l /dev/disk/by-label | grep -iE 'ARCH.*[hs]d[a-z]' | sed -r 's#.*/([hs]d[a-z])[0-9]+#\1#' | sort | uniq)) DRIVES=($(inxi -Dxx -c 0 | grep -E "ID-[0-9]+" | sed -r 's#.*/dev/([hs]d[a-z]).*#\1#' | sort)) @@ -42,34 +48,38 @@ for d in "${ARCH_DRIVES[@]}"; do DRIVES=(${DRIVES[@]//*$d*}) done -# Connect to network -if ! ip a | grep -q '192.168.1'; then - # LAN - if ! ip l | grep -Eq '[0-9]+: +en'; then - ## Reload the tg3/broadcom driver (known fix for some Dell systems) - echo "No wired network adapters found; reloading drivers..." - sudo modprobe -r tg3 - sudo modprobe broadcom - sudo modprobe tg3 - sleep 5s - fi - - # WiFi - if ip l | grep -Eq '[0-9]+: +wl'; then - ## Skip if we're already connected (e.g. the code above worked) - if ! ip a | grep -q '192.168.1'; then - echo "Attempting to connect to SomeWiFi..." - nmcli dev wifi con "SomeWiFi" password "Abracadabra" +# Handle testing runs +if [[ "$SKIP_UPLOAD" != "True" ]]; then + # Connect to network + if ! ip a | grep -q '192.168.1'; then + # LAN + if ! ip l | grep -Eq '[0-9]+: +en'; then + ## Reload the tg3/broadcom driver (known fix for some Dell systems) + echo "No wired network adapters found; reloading drivers..." + sudo modprobe -r tg3 + sudo modprobe broadcom + sudo modprobe tg3 sleep 5s fi + + # WiFi + if ip l | grep -Eq '[0-9]+: +wl'; then + ## Skip if we're already connected (e.g. the code above worked) + if ! ip a | grep -q '192.168.1'; then + echo "Attempting to connect to SomeWiFi..." + nmcli dev wifi con "SomeWiFi" password "Abracadabra" + sleep 5s + fi + fi fi -fi -# Test connection to DIAG_SERVER -if ip a | grep -q '192.168.1' && \ - ping -c 1 -q $DIAG_SERVER >/dev/null 2>&1; then - DIAG_SERVER_AVAIL="True" - ssh $DIAG_USER@$DIAG_SERVER mkdir -p "$DIAG_DEST" + # Test connection to DIAG_SERVER + if ip a | grep -q '192.168.1' && \ + ping -c 1 -q $DIAG_SERVER >/dev/null 2>&1; then + DIAG_SERVER_AVAIL="True" + ssh $DIAG_USER@$DIAG_SERVER mkdir -p "$DIAG_DEST" + ssh $DIAG_USER@$DIAG_SERVER chmod 755 "$DIAG_DEST" + fi fi # Setup Env @@ -184,7 +194,7 @@ function update_progress { # Update Server if [[ "$DIAG_SERVER_AVAIL" == "True" ]]; then - rsync -aqz "$TMP_DIR/" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/" --exclude '*.out' + rsync -aqz --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "$TMP_DIR/" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/" --exclude '*.out' fi } @@ -240,7 +250,7 @@ if [[ "$TEST_CPU" == "True" ]]; then CPU_ERRORS="False" cpu_result="Working" update_progress - (sleep 10m && killall -s INT "mprime$(getconf LONG_BIT)" >>/dev/null 2>&1) & + (sleep 10m && killall -s INT "mprime" >>/dev/null 2>&1) & (sleep 10m && killall "hw-diags-sensors" >>/dev/null 2>&1) & tmux split-window -d -v -l 10 "hw-diags-prime95 $TMP_DIR" hw-diags-sensors "$TMP_DIR" 2>/dev/null @@ -437,7 +447,7 @@ if [[ "$TEST_BADBLOCKS" == "True" ]]; then sleep 2s # Check log - if grep -q '0/0/0 errors' "${tmp_device}_badblocks.log"; then + if grep -Eiq 'Pass completed.*0/0/0 errors' "${tmp_device}_badblocks.log"; then eval "${tmp_device}_badblocks_result=CS" else eval "${tmp_device}_badblocks_result=NS" @@ -491,13 +501,13 @@ sudo inxi -CDdGlMmNopRsc 0 | grep -Ev '(/dev/ram|No RAID devices|Display Server| # Cleanup mkdir "$HOME/Tickets/$TICKET" -p 2>/dev/null -rsync -aS "$TMP_DIR/" "$HOME/Tickets/$TICKET/" +rsync -aS --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "$TMP_DIR/" "$HOME/Tickets/$TICKET/" popd >/dev/null cd "$HOME/Tickets" && tar czf "${TICKET}.tgz" "$TICKET" # Update Server if [[ "$DIAG_SERVER_AVAIL" == "True" ]]; then - rsync -aqz "$TMP_DIR/" "${TICKET}.tgz" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/" --exclude '*.out' + rsync -aqz --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "$TMP_DIR/" "${TICKET}.tgz" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/" --exclude '*.out' fi # End diff --git a/archlive/airootfs/usr/local/bin/hw-diags-prime95 b/archlive/airootfs/usr/local/bin/hw-diags-prime95 index 6e29b670..4152a6a2 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-prime95 +++ b/archlive/airootfs/usr/local/bin/hw-diags-prime95 @@ -1,9 +1,6 @@ #!/bin/bash # -## WK HW diagnostics - Prime95 - -# Find executable -MPRIME="/usr/bin/mprime$(getconf LONG_BIT)" +## HW diagnostics - Prime95 function usage { echo "Usage: $0 log-dir" @@ -17,4 +14,4 @@ if [ ! -d "$1" ]; then fi # Run Prime95 -$MPRIME -t | grep -iv --line-buffered 'stress.txt' | tee -a "$1/prime.log" +mprime -t | grep -iv --line-buffered 'stress.txt' | tee -a "$1/prime.log" diff --git a/archlive/airootfs/usr/local/bin/hw-diags-sensors b/archlive/airootfs/usr/local/bin/hw-diags-sensors index 32fa7dc4..649601a8 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-sensors +++ b/archlive/airootfs/usr/local/bin/hw-diags-sensors @@ -9,10 +9,9 @@ function usage { echo " e.g. $0 /tmp/tmp.7Mh5f1RhSL9001" } -# Bail early +# Create directory if necessary if [ ! -d "$LOG_DIR" ]; then - usage - exit 1 + LOG_DIR="$(mktemp -d)" fi # Run Sensor loop diff --git a/archlive/airootfs/usr/local/bin/mount-all-volumes b/archlive/airootfs/usr/local/bin/mount-all-volumes index edf3094a..ec634b9a 100644 --- a/archlive/airootfs/usr/local/bin/mount-all-volumes +++ b/archlive/airootfs/usr/local/bin/mount-all-volumes @@ -4,17 +4,7 @@ echo "Mounting all volumes" regex="/dev/((h|s)d[a-z]|md)[0-9]+" -for v in $(inxi -Do | grep -E "$regex" | sed -r "s#.*($regex).*#\1#"); do - echo -n " $v: " - if udevil mount -o ro $v >>/dev/null 2>&1; then - echo "Mounted." - else - echo "Failed to mount." - fi +for v in $(inxi -Do | grep -E "$regex" | sed -r "s#.*($regex).*#\1#" | sort); do + udevil mount -o ro $v done - -if [[ "$1" == "foh" && -n $DISPLAY ]]; then - sleep 1s - exo-open --launch FileManager "$HOME" -fi echo "Done." diff --git a/archlive/packages.both b/archlive/packages.both index b87730d9..114bdf72 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -1,6 +1,7 @@ arch-install-scripts alsa-utils antiword +arc-icon-theme-git b43-fwcutter btrfs-progs chntpw @@ -34,6 +35,7 @@ gptfdisk grub gsmartcontrol gtk-engine-murrine +gtk-theme-arc-git hdparm hexedit hfsprogs @@ -42,12 +44,14 @@ inxi ipw2100-fw ipw2200-fw iw +ldns lftp librsvg lightdm lightdm-gtk-greeter linux-atm lm_sensors +lsscsi mc mdadm mediainfo @@ -55,10 +59,12 @@ mesa mesa-demos midori-gtk2 mkvtoolnix-cli +mprime-bin mpv mtools mupdf ncdu +ndisc6 network-manager-applet networkmanager nfs-utils @@ -67,7 +73,10 @@ nmap noto-fonts ntfs-3g ntp +numix-circle-icon-theme-git +numix-icon-theme-git numix-themes +numix-themes-git openconnect openssh openvpn @@ -84,6 +93,8 @@ rfkill rp-pppoe rsync rxvt-unicode +sdparm +sg3_utils smartmontools speedtest-cli speedtouch @@ -91,6 +102,7 @@ sudo tcpdump terminus-font testdisk +testdisk-wip tk tmux truecrypt diff --git a/archlive/packages.x86_64 b/archlive/packages.x86_64 index e69de29b..36c41284 100644 --- a/archlive/packages.x86_64 +++ b/archlive/packages.x86_64 @@ -0,0 +1 @@ +gputest diff --git a/archlive/pacman.conf b/archlive/pacman.conf index 45fe03dc..858b7c1b 100644 --- a/archlive/pacman.conf +++ b/archlive/pacman.conf @@ -69,6 +69,10 @@ LocalFileSigLevel = Optional # repo name header and Include lines. You can add preferred servers immediately # after the header, and they will be used before the default mirrors. +[customrepo] +SigLevel = Optional TrustAll +Server = file:///root/WK-Arch/custom-repo/$arch + #[testing] #Include = /etc/pacman.d/mirrorlist @@ -84,9 +88,3 @@ Include = /etc/pacman.d/mirrorlist [community] Include = /etc/pacman.d/mirrorlist -# An example of a custom package repository. See the pacman manpage for -# tips on creating your own repositories. -#[custom] -#SigLevel = Optional TrustAll -#Server = file:///home/custompkgs - From f67cd37a385ca37aef9870c6c8b454457c4d9c87 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:52:21 -0800 Subject: [PATCH 005/107] 2016-08: Retroactive Updates * Added arch.conf file which is loaded from the UFD * Allows configuration without rebuilding the ISO * Added connect-to-network script that uses arch.conf * Available for manual execution from the command line * Used by mount-backup-shares * Added hardinfo with Conky hint and keyboard shortcut (Super+i) * Avoid deleting a newly created iso right after building * Conky * Settings can now be stored on the UFD * Transparancy fixed * mount-all-volumes doesn't print the mountpoint for ARCH_HH * NetworkManager should no longer hold up the boot time * Prime95 * Adjusted default length due to the summer heat * Fixed bug where hw-diags would let it run forever * Removed extra themes to try and reduce the overall size * Switching to nodm over lightdm --- .../etc/lightdm/lightdm-gtk-greeter.conf | 64 ------- archlive/airootfs/etc/lightdm/lightdm.conf | 163 ------------------ archlive/airootfs/etc/nodm.conf | 22 +++ archlive/airootfs/etc/skel/.Xresources | 2 +- .../.config/autostart/NetworkManager.desktop | 12 ++ .../skel/.config/xfce4/panel/whiskermenu-1.rc | 2 +- .../xfce4-keyboard-shortcuts.xml | 1 + archlive/airootfs/etc/skel/.conky_start | 11 +- archlive/airootfs/etc/skel/.conkyrc | 9 +- .../skel/.local/share/keyrings/login.keyring | Bin 105 -> 0 bytes .../skel/.local/share/keyrings/user.keystore | Bin 207 -> 0 bytes archlive/airootfs/etc/skel/.network_start | 5 + .../systemd/system/NetworkManagerFork.service | 23 +++ ...bus-org.freedesktop.NetworkManager.service | 1 - .../systemd/system/display-manager.service | 2 +- .../NetworkManager.service | 1 - .../multi-user.target.wants/remote-fs.target | 1 - archlive/airootfs/root/customize_airootfs.sh | 3 +- archlive/airootfs/usr/local/bin/arch.conf | 44 +++++ .../airootfs/usr/local/bin/connect-to-network | 58 +++++++ .../airootfs/usr/local/bin/hw-diags-inner | 62 +++---- .../airootfs/usr/local/bin/mount-all-volumes | 23 ++- .../usr/local/bin/mount-backup-shares | 74 +++++++- .../applications/Hardware Information.desktop | 10 ++ archlive/packages.both | 10 +- build-wk | 2 +- 26 files changed, 318 insertions(+), 287 deletions(-) delete mode 100644 archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf delete mode 100644 archlive/airootfs/etc/lightdm/lightdm.conf create mode 100644 archlive/airootfs/etc/nodm.conf create mode 100644 archlive/airootfs/etc/skel/.config/autostart/NetworkManager.desktop delete mode 100644 archlive/airootfs/etc/skel/.local/share/keyrings/login.keyring delete mode 100644 archlive/airootfs/etc/skel/.local/share/keyrings/user.keystore create mode 100644 archlive/airootfs/etc/skel/.network_start create mode 100644 archlive/airootfs/etc/systemd/system/NetworkManagerFork.service delete mode 100644 archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service delete mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service delete mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/remote-fs.target create mode 100644 archlive/airootfs/usr/local/bin/arch.conf create mode 100644 archlive/airootfs/usr/local/bin/connect-to-network create mode 100644 archlive/airootfs/usr/share/applications/Hardware Information.desktop diff --git a/archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf b/archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf deleted file mode 100644 index 9b08ec3c..00000000 --- a/archlive/airootfs/etc/lightdm/lightdm-gtk-greeter.conf +++ /dev/null @@ -1,64 +0,0 @@ -# LightDM GTK+ Configuration -# Available configuration options listed below. -# -# Appearance: -# theme-name = GTK+ theme to use -# icon-theme-name = Icon theme to use -# background = Background file to use, either an image path or a color (e.g. #772953) -# user-background = false|true ("true" by default) Display user background (if available) -# transition-duration = Length of time (in milliseconds) to transition between background images ("500" by default) -# transition-type = ease-in-out|linear|none ("ease-in-out" by default) -# -# Fonts: -# font-name = Font to use -# xft-antialias = false|true Whether to antialias Xft fonts -# xft-dpi = Resolution for Xft in dots per inch (e.g. 96) -# xft-hintstyle = none|slight|medium|hintfull What degree of hinting to use -# xft-rgba = none|rgb|bgr|vrgb|vbgr Type of subpixel antialiasing -# -# Login window: -# active-monitor = Monitor to display greeter window (name or number). Use #cursor value to display greeter at monitor with cursor. Can be a semicolon separated list -# position = x y ("50% 50%" by default) Login window position -# default-user-image = Image used as default user icon, path or #icon-name -# hide-user-image = false|true ("false" by default) -# -# Panel: -# panel-position = top|bottom ("top" by default) -# clock-format = strftime-format string, e.g. %H:%M -# indicators = semi-colon ";" separated list of allowed indicator modules. Built-in indicators include "~a11y", "~language", "~session", "~power", "~clock", "~host", "~spacer". Unity indicators can be represented by short name (e.g. "sound", "power"), service file name, or absolute path -# -# Accessibility: -# a11y-states = states of accessibility features: "name" - save state on exit, "-name" - disabled at start (default value for unlisted), "+name" - enabled at start. Allowed names: contrast, font, keyboard, reader. -# keyboard = command to launch on-screen keyboard (e.g. "onboard") -# keyboard-position = x y[;width height] ("50%,center -0;50% 25%" by default) Works only for "onboard" -# reader = command to launch screen reader (e.g. "orca") -# -# Security: -# allow-debugging = false|true ("false" by default) -# screensaver-timeout = Timeout (in seconds) until the screen blanks when the greeter is called as lockscreen -# -# Template for per-monitor configuration: -# [monitor: name] -# background = overrides default value -# user-background = overrides default value -# laptop = false|true ("false" by default) Marks monitor as laptop display -# transition-duration = overrides default value -# -[greeter] -background=/usr/share/wallpaper/current.png -#user-background= -theme-name=Numix -icon-theme-name=Numix-Circle-Light -font-name=Noto-Sans -#xft-antialias= -#xft-dpi= -#xft-hintstyle= -#xft-rgba= -hide-user-image=true -#indicators= -clock-format=%H:%M -#keyboard= -#reader= -#position=50%,center 100%,bottom -position=5% 45%,center -#screensaver-timeout= diff --git a/archlive/airootfs/etc/lightdm/lightdm.conf b/archlive/airootfs/etc/lightdm/lightdm.conf deleted file mode 100644 index 2281dff8..00000000 --- a/archlive/airootfs/etc/lightdm/lightdm.conf +++ /dev/null @@ -1,163 +0,0 @@ -# -# General configuration -# -# start-default-seat = True to always start one seat if none are defined in the configuration -# greeter-user = User to run greeter as -# minimum-display-number = Minimum display number to use for X servers -# minimum-vt = First VT to run displays on -# lock-memory = True to prevent memory from being paged to disk -# user-authority-in-system-dir = True if session authority should be in the system location -# guest-account-script = Script to be run to setup guest account -# logind-check-graphical = True to on start seats that are marked as graphical by logind -# log-directory = Directory to log information to -# run-directory = Directory to put running state in -# cache-directory = Directory to cache to -# sessions-directory = Directory to find sessions -# remote-sessions-directory = Directory to find remote sessions -# greeters-directory = Directory to find greeters -# backup-logs = True to move add a .old suffix to old log files when opening new ones -# -[LightDM] -#start-default-seat=true -#greeter-user=lightdm -#minimum-display-number=0 -#minimum-vt=7 # Setting this to a value < 7 implies security issues, see FS#46799 -#lock-memory=true -#user-authority-in-system-dir=false -#guest-account-script=guest-account -#logind-check-graphical=false -#log-directory=/var/log/lightdm -run-directory=/run/lightdm -#cache-directory=/var/cache/lightdm -#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions -#remote-sessions-directory=/usr/share/lightdm/remote-sessions -#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters -#backup-logs=true - -# -# Seat configuration -# -# Seat configuration is matched against the seat name glob in the section, for example: -# [Seat:*] matches all seats and is applied first. -# [Seat:seat0] matches the seat named "seat0". -# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client". -# -# type = Seat type (xlocal, xremote, unity) -# pam-service = PAM service to use for login -# pam-autologin-service = PAM service to use for autologin -# pam-greeter-service = PAM service to use for greeters -# xserver-command = X server command to run (can also contain arguments e.g. X -special-option) -# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option) -# xserver-config = Config file to pass to X server -# xserver-layout = Layout to pass to X server -# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server -# xserver-share = True if the X server is shared for both greeter and session -# xserver-hostname = Hostname of X server (only for type=xremote) -# xserver-display-number = Display number of X server (only for type=xremote) -# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true) -# xdmcp-port = XDMCP UDP/IP port to communicate on -# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf) -# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option) -# unity-compositor-timeout = Number of seconds to wait for compositor to start -# greeter-session = Session to load for greeter -# greeter-hide-users = True to hide the user list -# greeter-allow-guest = True if the greeter should show a guest login option -# greeter-show-manual-login = True if the greeter should offer a manual login option -# greeter-show-remote-login = True if the greeter should offer a remote login option -# user-session = Session to load for users -# allow-user-switching = True if allowed to switch users -# allow-guest = True if guest login is allowed -# guest-session = Session to load for guests (overrides user-session) -# session-wrapper = Wrapper script to run session with -# greeter-wrapper = Wrapper script to run greeter with -# guest-wrapper = Wrapper script to run guest sessions with -# display-setup-script = Script to run when starting a greeter session (runs as root) -# display-stopped-script = Script to run after stopping the display server (runs as root) -# greeter-setup-script = Script to run when starting a greeter (runs as root) -# session-setup-script = Script to run when starting a user session (runs as root) -# session-cleanup-script = Script to run when quitting a user session (runs as root) -# autologin-guest = True to log in as guest by default -# autologin-user = User to log in with by default (overrides autologin-guest) -# autologin-user-timeout = Number of seconds to wait before loading default user -# autologin-session = Session to load for automatic login (overrides user-session) -# autologin-in-background = True if autologin session should not be immediately activated -# exit-on-failure = True if the daemon should exit if this seat fails -# -[Seat:*] -#type=xlocal -pam-service=lightdm -pam-autologin-service=lightdm-autologin -#pam-greeter-service=lightdm-greeter -#xserver-command=X -#xmir-command=Xmir -#xserver-config= -#xserver-layout= -#xserver-allow-tcp=false -#xserver-share=true -#xserver-hostname= -#xserver-display-number= -#xdmcp-manager= -#xdmcp-port=177 -#xdmcp-key= -#unity-compositor-command=unity-system-compositor -#unity-compositor-timeout=60 -#greeter-session=example-gtk-gnome -#greeter-hide-users=false -#greeter-allow-guest=true -#greeter-show-manual-login=false -#greeter-show-remote-login=true -#user-session=default -#allow-user-switching=true -#allow-guest=true -#guest-session= -session-wrapper=/etc/lightdm/Xsession -#greeter-wrapper= -#guest-wrapper= -#display-setup-script= -#display-stopped-script= -#greeter-setup-script= -#session-setup-script= -#session-cleanup-script= -#autologin-guest=false -autologin-user=wktech -autologin-user-timeout=0 -#autologin-in-background=false -#autologin-session= -#exit-on-failure=false - -# -# XDMCP Server configuration -# -# enabled = True if XDMCP connections should be allowed -# port = UDP/IP port to listen for connections on -# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present) -# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf) -# -# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively -# it can be a word and the first 7 characters are used as the key. -# -[XDMCPServer] -#enabled=false -#port=177 -#listen-address= -#key= - -# -# VNC Server configuration -# -# enabled = True if VNC connections should be allowed -# command = Command to run Xvnc server with -# port = TCP/IP port to listen for connections on -# listen-address = Host/address to listen for VNC connections (use all addresses if not present) -# width = Width of display to use -# height = Height of display to use -# depth = Color depth of display to use -# -[VNCServer] -#enabled=false -#command=Xvnc -#port=5900 -#listen-address= -#width=1024 -#height=768 -#depth=8 diff --git a/archlive/airootfs/etc/nodm.conf b/archlive/airootfs/etc/nodm.conf new file mode 100644 index 00000000..dfcb5113 --- /dev/null +++ b/archlive/airootfs/etc/nodm.conf @@ -0,0 +1,22 @@ +# nodm configuration file + +# Controls the user that is used to automatically log in +NODM_USER='wktech' + +# Options to pass to the X server (for example: "vt7 -nolisten tcp") +NODM_X_OPTIONS='vt7 -nolisten tcp' + +# Minimum time (in seconds) that a session should last in order for nodm to +# decide that it has not quit too soon. If an X session will run for less than +# this time, nodm will wait an increasing bit of time before restarting it. +NODM_MIN_SESSION_TIME=60 + +# Restart session after it ending? +NODM_RESTART_SESSION=0 + +# Path to the xinit program +NODM_XINIT='/usr/bin/xinit' + +# Path to the X session script (useful if using xinit instead of startx). +# NOTE: This file needs to be executable! +NODM_XSESSION='/home/wktech/.xinitrc' diff --git a/archlive/airootfs/etc/skel/.Xresources b/archlive/airootfs/etc/skel/.Xresources index ce6e4b9a..b349dcba 100644 --- a/archlive/airootfs/etc/skel/.Xresources +++ b/archlive/airootfs/etc/skel/.Xresources @@ -6,7 +6,7 @@ URxvt*geometry: 96x32+24+24 URxvt*scrollBar_right: True URxvt*scrollstyle: plain -URxvt*shading: 30 +URxvt*shading: 13 URxvt*transparent: true ! Base16 Isotope diff --git a/archlive/airootfs/etc/skel/.config/autostart/NetworkManager.desktop b/archlive/airootfs/etc/skel/.config/autostart/NetworkManager.desktop new file mode 100644 index 00000000..fc74de1b --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/autostart/NetworkManager.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=0.9.4 +Type=Application +Name=NetworkManager +Comment=NetworkManager +Exec=/home/wktech/.network_start +OnlyShowIn=XFCE; +StartupNotify=false +Terminal=false +Hidden=false + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc index 93ffb654..e0195106 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc +++ b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc @@ -1,4 +1,4 @@ -favorites=Hardware Diagnostics.desktop,exo-file-manager.desktop,gparted.desktop,gsmartcontrol.desktop,SpeedTest.desktop,truecrypt.desktop,exo-web-browser.desktop +favorites=Hardware Diagnostics.desktop,Hardware Information.desktop,exo-file-manager.desktop,gparted.desktop,gsmartcontrol.desktop,SpeedTest.desktop,exo-web-browser.desktop recent=xfce4-settings-editor.desktop,xfce-session-settings.desktop,xfce4-power-manager-settings.desktop,gsmartcontrol.desktop,gparted.desktop button-title=Applications button-icon=distributor-logo-archlinux diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml index 7c785878..f293434e 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -32,6 +32,7 @@ + diff --git a/archlive/airootfs/etc/skel/.conky_start b/archlive/airootfs/etc/skel/.conky_start index ce3fc10d..c7230b17 100644 --- a/archlive/airootfs/etc/skel/.conky_start +++ b/archlive/airootfs/etc/skel/.conky_start @@ -1,5 +1,10 @@ #!/bin/bash -sleep 2s && conky & -sleep 5s && killall conky -conky +CONKY_RC="$HOME/.conkyrc" +if [[ -f "/run/archiso/bootmnt/arch/conky.rc" ]]; then + CONKY_RC="/run/archiso/bootmnt/arch/conky.rc" +fi + +sleep 2s && conky -c "${CONKY_RC}" -dq +sleep 5s && killall conky -c "${CONKY_RC}" -dq + diff --git a/archlive/airootfs/etc/skel/.conkyrc b/archlive/airootfs/etc/skel/.conkyrc index 3e84073e..4782d0d8 100644 --- a/archlive/airootfs/etc/skel/.conkyrc +++ b/archlive/airootfs/etc/skel/.conkyrc @@ -14,9 +14,9 @@ ### Begin Window Settings ##################### own_window yes own_window_type normal -own_window_transparent yes +own_window_transparent no own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky -own_window_colour 000000 +own_window_colour 421114 own_window_class Conky #own_window_title Bunsen Labs Default Conky own_window_title Default Conky @@ -25,13 +25,13 @@ own_window_title Default Conky ### NOTE that a composite manager is required for real transparency. ### This option will not work as desired (in most cases) in conjunction with ### own_window_type normal -# own_window_argb_visual yes # Options: yes or no +own_window_argb_visual yes # Options: yes or no ### When ARGB visuals are enabled, this use this to modify the alpha value ### Use: own_window_type normal ### Use: own_window_transparent no ### Valid range is 0-255, where 0 is 0% opacity, and 255 is 100% opacity. -# own_window_argb_value 50 +own_window_argb_value 160 minimum_size 180 0 ### width | height maximum_width 180 @@ -155,6 +155,7 @@ ${hr} [Super] + d${alignr}HW Diagnostics [Super] + f${alignr}File Manager [Super] + h${alignr}Task Manager +[Super] + i${alignr}HW Information [Super] + m${alignr}Mount Volumes [Super] + r${alignr}Run Dialog [Super] + s${alignr}SMART Check diff --git a/archlive/airootfs/etc/skel/.local/share/keyrings/login.keyring b/archlive/airootfs/etc/skel/.local/share/keyrings/login.keyring deleted file mode 100644 index f312a94ad16406050b8f4aabc3475fdb6e7eb201..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmZ?I%g;^qPOU7;%uDCuW#D3f09K#;^vpac2TX-CR$W2xx#Of2-*j_W1-wCsp|Aw@ UH!c68^t?QyhyTHO_4XnO0NoH2jQ{`u diff --git a/archlive/airootfs/etc/skel/.local/share/keyrings/user.keystore b/archlive/airootfs/etc/skel/.local/share/keyrings/user.keystore deleted file mode 100644 index 2d8eee8d47066034e55dbe3c2bd664d776592f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmZ?I%g;?!@J_8P%FIhw2rkJlN>wo8;$;8=9#5ADBM<`!asz_GKx}45*I*#U7VP0@ zWNOC1z`6&><9KVEapCuwjaPwe2d9rOt7fTZ=^x*;`GDF3e#OLao4<#94ILVu<|n%z zVObLyu)=n&hR&2 + exit 1 +} + +# Load settings +if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then + source "/run/archiso/bootmnt/arch/arch.conf" || \ + die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" +else + source "/usr/local/bin/arch.conf" || \ + die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" + echo -n "ERROR: Settings file on ARCH_WK media missing. Using build version for now" + sleep 1s + echo -n "." + sleep 1s + echo -n "." + sleep 1s + echo "." +fi + +# Init +WIFI_SSID="${WIFI_SSID}" +WIFI_PASS="${WIFI_PASS}" + +# Connect to network +if ! ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+'; then + # LAN + if ! ip l | grep -Eq '[0-9]+: +en'; then + ## Reload the tg3/broadcom driver (known fix for some Dell systems) + echo "No wired network adapters found; reloading drivers..." + sudo modprobe -r tg3 + sudo modprobe broadcom + sudo modprobe tg3 + sleep 5s + fi + + # WiFi + if ip l | grep -Eq '[0-9]+: +wl'; then + ## Skip if we're already connected (i.e. the code above worked) + if ! ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+'; then + echo "Attempting to connect to ${WIFI_SSID}..." + nmcli dev wifi con "${WIFI_SSID}" password "${WIFI_PASS}" + sleep 5s + fi + fi +fi + +# Done +exit 0 diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/archlive/airootfs/usr/local/bin/hw-diags-inner index 3b7ba213..c805ce1a 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-inner +++ b/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -2,8 +2,30 @@ # ## WK HW Diagnostics - Main script +die () { + echo "$0:" "$@" >&2 + exit 1 +} + +# Load settings +if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then + source "/run/archiso/bootmnt/arch/arch.conf" || \ + die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" +else + source "/usr/local/bin/arch.conf" || \ + die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" + echo -n "ERROR: Settings file on ARCH_WK media missing. Using build version for now" + sleep 1s + echo -n "." + sleep 1s + echo -n "." + sleep 1s + echo "." +fi + # Get TICKET -SKIP_UPLOAD="" +## Inital SKIP_UPLOAD value loaded from arch.conf +SKIP_UPLOAD="${SKIP_UPLOAD}" TICKET="" while [[ "$TICKET" == "" ]]; do if [[ "$1" == "foh" ]]; then @@ -22,16 +44,16 @@ while [[ "$TICKET" == "" ]]; do done # Init +## Tautologies left to show which settings are coming from arch.conf DIAG_DATE="$(date "+%F_%H%M")" DIAG_SERVER_AVAIL="False" -DIAG_SERVER="10.0.0.10" -DIAG_DEST="/srv/Diagnostics/${TICKET}/${DIAG_DATE}" -DIAG_USER="wkdiag" +DIAG_SERVER="${DIAG_SERVER}" +DIAG_DEST="${DIAG_DEST}/${TICKET}/${DIAG_DATE}" +DIAG_USER="${DIAG_USER}" TMP_DIR="$(mktemp -d)" ERRORS="False" -ERROR_IMG="$TMP_DIR/error.jpg" -PASSED_IMG="$TMP_DIR/passed.jpg" TEST_CPU="False" +TEST_CPU_LENGTH="${TEST_CPU_LENGTH}" TEST_OVER="False" TEST_SMART="False" TEST_BADBLOCKS="False" @@ -51,30 +73,10 @@ done # Handle testing runs if [[ "$SKIP_UPLOAD" != "True" ]]; then # Connect to network - if ! ip a | grep -q '192.168.1'; then - # LAN - if ! ip l | grep -Eq '[0-9]+: +en'; then - ## Reload the tg3/broadcom driver (known fix for some Dell systems) - echo "No wired network adapters found; reloading drivers..." - sudo modprobe -r tg3 - sudo modprobe broadcom - sudo modprobe tg3 - sleep 5s - fi - - # WiFi - if ip l | grep -Eq '[0-9]+: +wl'; then - ## Skip if we're already connected (e.g. the code above worked) - if ! ip a | grep -q '192.168.1'; then - echo "Attempting to connect to SomeWiFi..." - nmcli dev wifi con "SomeWiFi" password "Abracadabra" - sleep 5s - fi - fi - fi + connect-to-network # Test connection to DIAG_SERVER - if ip a | grep -q '192.168.1' && \ + if ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+' && \ ping -c 1 -q $DIAG_SERVER >/dev/null 2>&1; then DIAG_SERVER_AVAIL="True" ssh $DIAG_USER@$DIAG_SERVER mkdir -p "$DIAG_DEST" @@ -250,8 +252,8 @@ if [[ "$TEST_CPU" == "True" ]]; then CPU_ERRORS="False" cpu_result="Working" update_progress - (sleep 10m && killall -s INT "mprime" >>/dev/null 2>&1) & - (sleep 10m && killall "hw-diags-sensors" >>/dev/null 2>&1) & + (sleep ${TEST_CPU_LENGTH}m && killall -s INT "mprime" >>/dev/null 2>&1) & + (sleep ${TEST_CPU_LENGTH}m && killall "hw-diags-sensors" >>/dev/null 2>&1) & tmux split-window -d -v -l 10 "hw-diags-prime95 $TMP_DIR" hw-diags-sensors "$TMP_DIR" 2>/dev/null sleep 1s diff --git a/archlive/airootfs/usr/local/bin/mount-all-volumes b/archlive/airootfs/usr/local/bin/mount-all-volumes index ec634b9a..40ddb671 100644 --- a/archlive/airootfs/usr/local/bin/mount-all-volumes +++ b/archlive/airootfs/usr/local/bin/mount-all-volumes @@ -2,9 +2,28 @@ # ## Mount all volumes read-only +# Fix issue where first device is mounted under /media/wktech/ +TMP_FILE=$(mktemp) +dd bs=1K count=64 if=/dev/zero of="$TMP_FILE" >/dev/null 2>&1 +mkfs.msdos "$TMP_FILE" >/dev/null 2>&1 +udevil mount -o ro "$TMP_FILE" >/dev/null 2>&1 +udevil umount "$TMP_FILE" >/dev/null 2>&1 + +# Mount all volumes echo "Mounting all volumes" regex="/dev/((h|s)d[a-z]|md)[0-9]+" -for v in $(inxi -Do | grep -E "$regex" | sed -r "s#.*($regex).*#\1#" | sort); do - udevil mount -o ro $v +for volume in $(inxi -Dopxx | grep -E "$regex" | sed -r "s#.*($regex).*#\1#" | sort); do + if grep -q "$volume" /proc/mounts; then + if ! mount | grep "/run/archiso/bootmnt" | grep -q "$volume"; then + # Show what's already mounted except the ARCH_WK boot device + echo "$volume: (Already) mounted at $(mount | grep "$volume" | awk '{print $3}') ($(df -h "$volume" | tail -1 | awk '{print $3, $4}' | sed -r 's/(K|M|G|T|) (.*[0-9])(K|M|G|T|)$/ \1b used, \2 \3b free/'))" + fi + else + if udevil mount -o ro $volume >/dev/null 2>&1; then + echo "$volume: Mounted at $(mount | grep "$volume" | awk '{print $3}') ($(df -h "$volume" | tail -1 | awk '{print $3, $4}' | sed -r 's/(K|M|G|T|) (.*[0-9])(K|M|G|T|)$/ \1b used, \2 \3b free/'))" + else + echo "$volume: Failed to mount" + fi + fi done echo "Done." diff --git a/archlive/airootfs/usr/local/bin/mount-backup-shares b/archlive/airootfs/usr/local/bin/mount-backup-shares index 36e44645..3e372bb3 100644 --- a/archlive/airootfs/usr/local/bin/mount-backup-shares +++ b/archlive/airootfs/usr/local/bin/mount-backup-shares @@ -2,9 +2,73 @@ # ## Mount NAS backup shares -echo "Mounting NAS backup shares" -sudo mkdir /Backups/ServerOne -p -sudo mount //10.0.0.10/Backups /Backups/ServerOne -o username=backup,password=Abracadabra -sudo mkdir /Backups/ServerTwo -p -sudo mount //10.0.0.11/Backups /Backups/ServerTwo -o username=backup,password=Abracadabra +die () { + echo "$0:" "$@" >&2 + exit 1 +} + +# Load settings +if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then + source "/run/archiso/bootmnt/arch/arch.conf" || \ + die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" +else + source "/usr/local/bin/arch.conf" || \ + die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" + echo -n "ERROR: Settings file on ARCH_WK media missing. Using build version for now" + sleep 1s + echo -n "." + sleep 1s + echo -n "." + sleep 1s + echo "." +fi + +# Connect to a network +connect-to-network + +# Mount loop +echo "Mounting NAS backup shares" +for x in {1..4}; do + _skip="False" + + # Load Backup share info + eval "declare -a _backup=(\${BACKUP_$x[@]})" + _name="${_backup[0]}" + _ip="${_backup[1]}" + _share="${_backup[2]}" + _user="${_backup[3]}" + _pass="${_backup[4]}" + + # Check backup share info + if echo "$_name" | grep -Eq '^\s*$'; then + _skip="True"; + fi + if echo "$_ip" | grep -Eq '^\s*$'; then + _skip="True"; + fi + if echo "$_share" | grep -Eq '^\s*$'; then + _skip="True"; + fi + if echo "$_user" | grep -Eq '^\s*$'; then + _skip="True"; + fi + if echo "$_pass" | grep -Eq '^\s*$'; then + _skip="True"; + fi + + # Mount + if [[ "$_skip" == "False" ]]; then + sudo mkdir "/Backups/$_name" -p + if mountpoint -q "/Backups/$_name"; then + echo "$_name: (Already) mounted at /Backups/$_name ($(df -h "/Backups/$_name" | tail -1 | awk '{print $4}' | sed -r 's/([KMGT])/ \1b/') free)" + else + if sudo mount "//$_ip/$_share" "/Backups/$_name" -o username=$_user,password=$_pass 2>/dev/null; then + echo "$_name: Mounted at /Backups/$_name ($(df -h "/Backups/$_name" | tail -1 | awk '{print $4}' | sed -r 's/([KMGT])/ \1b/') free)" + else + rmdir "/Backups/$_name" -p 2>/dev/null + echo "$_name: Failed to mount" + fi + fi + fi +done diff --git a/archlive/airootfs/usr/share/applications/Hardware Information.desktop b/archlive/airootfs/usr/share/applications/Hardware Information.desktop new file mode 100644 index 00000000..afe334bb --- /dev/null +++ b/archlive/airootfs/usr/share/applications/Hardware Information.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Hardware Information +Comment= +Exec=hardinfo +Icon=hardinfo +Path= +Terminal=false +StartupNotify=false diff --git a/archlive/packages.both b/archlive/packages.both index 114bdf72..979ae849 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -6,7 +6,6 @@ b43-fwcutter btrfs-progs chntpw clonezilla -cmatrix colordiff conky crda @@ -36,6 +35,7 @@ grub gsmartcontrol gtk-engine-murrine gtk-theme-arc-git +hardinfo hdparm hexedit hfsprogs @@ -46,9 +46,8 @@ ipw2200-fw iw ldns lftp +libewf librsvg -lightdm -lightdm-gtk-greeter linux-atm lm_sensors lsscsi @@ -70,13 +69,11 @@ networkmanager nfs-utils nilfs-utils nmap +nodm noto-fonts ntfs-3g ntp numix-circle-icon-theme-git -numix-icon-theme-git -numix-themes -numix-themes-git openconnect openssh openvpn @@ -101,7 +98,6 @@ speedtouch sudo tcpdump terminus-font -testdisk testdisk-wip tk tmux diff --git a/build-wk b/build-wk index 2ffa0d3b..07294750 100644 --- a/build-wk +++ b/build-wk @@ -10,4 +10,4 @@ mkdir $OUT_DIR ./archlive/build.sh -N "arch-wk" -V "$(date +%F)" -L "ARCH_WK" -w "$TMP_DIR" -o "$OUT_DIR" -v # Cleanup -mv -nv "$OUT_DIR"/*iso "$HOME/" && rm "$TMP_DIR" -Rf +mv --backup=t -v "$OUT_DIR"/*iso "$HOME/" && rm "$TMP_DIR" -Rf From 3bf0f54b1a4a7efcac12d759cdeac27c055daf34 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:53:59 -0800 Subject: [PATCH 006/107] 2016-09: Retroactive Updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Display Manager * nodm removed due to a dbus issue * Hopefully if Xorg can’t be run it will default to CLI * XFCE is now started by .zlogin * Removed the "Save Session" checkbox * Networking * Replaced NetworkManager with systemd-networkd * networkd had a 33% faster boot time than NetworkManager (-10s) * It also more directly prioritizes wired connections * NOTES: This removed the ability to easily connect to new networks * This is okay as the WiFi changes very infrequently * The WiFi settings are loaded from the UFD directly * Added linux-firmware to support more network devices * broadcom-wl wouldn't compile under i686 so it's x64 only ATM * Removed the udev rule forcing the dhcp delay during boot * Server IPs updated * Config files and wallpapers moved to /config * Fixed an issue where SMART was misreporting drives as bad * When a drive failed SMART, subsequent drives would always report "NS" --- .../airootfs/etc/netctl/interfaces/wl-any | 7 +++++ archlive/airootfs/etc/netctl/wireless | 6 ++++ archlive/airootfs/etc/nodm.conf | 22 -------------- archlive/airootfs/etc/pam.d/nodm | 5 ++++ archlive/airootfs/etc/resolv.conf | 8 +++++ .../xfce-perchannel-xml/xfce4-panel.xml | 1 - .../xfce-perchannel-xml/xfce4-session.xml | 3 +- archlive/airootfs/etc/skel/.conky_start | 4 +-- archlive/airootfs/etc/skel/.conkyrc | 2 +- archlive/airootfs/etc/skel/.network_start | 1 - archlive/airootfs/etc/skel/.xinitrc | 4 ++- archlive/airootfs/etc/skel/.zlogin | 29 +++++++++++++++++++ .../etc/systemd/network/wired.network | 9 ++++++ .../systemd/system/NetworkManagerFork.service | 23 --------------- ...dbus-org.freedesktop.nm-dispatcher.service | 1 - .../systemd/system/display-manager.service | 1 - .../systemd-networkd.service | 1 + .../systemd-networkd.socket | 1 + .../airootfs/etc/udev/rules.d/81-dhcpcd.rules | 1 - archlive/airootfs/etc/vconsole.conf | 1 - archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc | 3 ++ archlive/airootfs/root/customize_airootfs.sh | 24 +++++++++++++-- .../airootfs/usr/local/bin/connect-to-network | 6 ++-- .../airootfs/usr/local/bin/hw-diags-inner | 6 ++-- .../usr/local/bin/mount-backup-shares | 4 +-- archlive/airootfs/usr/local/bin/wifi.conf | 9 ++++++ archlive/packages.both | 11 ++++--- archlive/packages.x86_64 | 1 + 28 files changed, 121 insertions(+), 73 deletions(-) create mode 100644 archlive/airootfs/etc/netctl/interfaces/wl-any create mode 100644 archlive/airootfs/etc/netctl/wireless delete mode 100644 archlive/airootfs/etc/nodm.conf create mode 100644 archlive/airootfs/etc/pam.d/nodm create mode 100644 archlive/airootfs/etc/resolv.conf create mode 100644 archlive/airootfs/etc/skel/.zlogin create mode 100644 archlive/airootfs/etc/systemd/network/wired.network delete mode 100644 archlive/airootfs/etc/systemd/system/NetworkManagerFork.service delete mode 100644 archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service delete mode 100644 archlive/airootfs/etc/systemd/system/display-manager.service create mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service create mode 100644 archlive/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket delete mode 100644 archlive/airootfs/etc/udev/rules.d/81-dhcpcd.rules create mode 100644 archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc create mode 100644 archlive/airootfs/usr/local/bin/wifi.conf diff --git a/archlive/airootfs/etc/netctl/interfaces/wl-any b/archlive/airootfs/etc/netctl/interfaces/wl-any new file mode 100644 index 00000000..997c0ab3 --- /dev/null +++ b/archlive/airootfs/etc/netctl/interfaces/wl-any @@ -0,0 +1,7 @@ +#!/bin/bash +for interface in /sys/class/net/wl*; do + break +done + +Interface=$(basename $interface) +echo "wl-any: using interface $Interface" diff --git a/archlive/airootfs/etc/netctl/wireless b/archlive/airootfs/etc/netctl/wireless new file mode 100644 index 00000000..b0dee1a9 --- /dev/null +++ b/archlive/airootfs/etc/netctl/wireless @@ -0,0 +1,6 @@ +Description='A wpa_supplicant configuration file based wireless connection' +Interface=wl-any +Connection=wireless +Security=wpa-config +WPAConfigFile='/run/archiso/bootmnt/config/wifi.conf' +IP=dhcp diff --git a/archlive/airootfs/etc/nodm.conf b/archlive/airootfs/etc/nodm.conf deleted file mode 100644 index dfcb5113..00000000 --- a/archlive/airootfs/etc/nodm.conf +++ /dev/null @@ -1,22 +0,0 @@ -# nodm configuration file - -# Controls the user that is used to automatically log in -NODM_USER='wktech' - -# Options to pass to the X server (for example: "vt7 -nolisten tcp") -NODM_X_OPTIONS='vt7 -nolisten tcp' - -# Minimum time (in seconds) that a session should last in order for nodm to -# decide that it has not quit too soon. If an X session will run for less than -# this time, nodm will wait an increasing bit of time before restarting it. -NODM_MIN_SESSION_TIME=60 - -# Restart session after it ending? -NODM_RESTART_SESSION=0 - -# Path to the xinit program -NODM_XINIT='/usr/bin/xinit' - -# Path to the X session script (useful if using xinit instead of startx). -# NOTE: This file needs to be executable! -NODM_XSESSION='/home/wktech/.xinitrc' diff --git a/archlive/airootfs/etc/pam.d/nodm b/archlive/airootfs/etc/pam.d/nodm new file mode 100644 index 00000000..f9d49579 --- /dev/null +++ b/archlive/airootfs/etc/pam.d/nodm @@ -0,0 +1,5 @@ +#%PAM-1.0 + +auth include system-login +account include system-login +password include system-login diff --git a/archlive/airootfs/etc/resolv.conf b/archlive/airootfs/etc/resolv.conf new file mode 100644 index 00000000..db8b0a07 --- /dev/null +++ b/archlive/airootfs/etc/resolv.conf @@ -0,0 +1,8 @@ +nameserver 8.8.8.8 +nameserver 8.8.4.4 +#nameserver 2001:4860:4860::8888 +#nameserver 2001:4860:4860::8844 +nameserver 208.67.222.222 +nameserver 208.67.220.220 +#nameserver 2620:0:ccc::2 +#nameserver 2620:0:ccd::2 diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml index 14332612..aa79af3c 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -45,7 +45,6 @@ - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml index bfaccb81..fd93ee1c 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml @@ -30,7 +30,8 @@ - + + diff --git a/archlive/airootfs/etc/skel/.conky_start b/archlive/airootfs/etc/skel/.conky_start index c7230b17..5c12ed79 100644 --- a/archlive/airootfs/etc/skel/.conky_start +++ b/archlive/airootfs/etc/skel/.conky_start @@ -1,8 +1,8 @@ #!/bin/bash CONKY_RC="$HOME/.conkyrc" -if [[ -f "/run/archiso/bootmnt/arch/conky.rc" ]]; then - CONKY_RC="/run/archiso/bootmnt/arch/conky.rc" +if [[ -f "/run/archiso/bootmnt/config/conky.rc" ]]; then + CONKY_RC="/run/archiso/bootmnt/config/conky.rc" fi sleep 2s && conky -c "${CONKY_RC}" -dq diff --git a/archlive/airootfs/etc/skel/.conkyrc b/archlive/airootfs/etc/skel/.conkyrc index 4782d0d8..bd492c9b 100644 --- a/archlive/airootfs/etc/skel/.conkyrc +++ b/archlive/airootfs/etc/skel/.conkyrc @@ -16,7 +16,7 @@ own_window yes own_window_type normal own_window_transparent no own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky -own_window_colour 421114 +own_window_colour 000000 own_window_class Conky #own_window_title Bunsen Labs Default Conky own_window_title Default Conky diff --git a/archlive/airootfs/etc/skel/.network_start b/archlive/airootfs/etc/skel/.network_start index d6e16c7f..057cc627 100644 --- a/archlive/airootfs/etc/skel/.network_start +++ b/archlive/airootfs/etc/skel/.network_start @@ -1,5 +1,4 @@ #!/bin/bash -sudo systemctl start NetworkManager connect-to-network diff --git a/archlive/airootfs/etc/skel/.xinitrc b/archlive/airootfs/etc/skel/.xinitrc index f7420078..a949cf0b 100644 --- a/archlive/airootfs/etc/skel/.xinitrc +++ b/archlive/airootfs/etc/skel/.xinitrc @@ -24,4 +24,6 @@ eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) export SSH_AUTH_SOCK # Start Xfce4 -exec startxfce4 +if [ -z "$DISPLAY" ] && [ "$(fgconsole)" -eq 1 ]; then + exec startxfce4 +fi diff --git a/archlive/airootfs/etc/skel/.zlogin b/archlive/airootfs/etc/skel/.zlogin new file mode 100644 index 00000000..a949cf0b --- /dev/null +++ b/archlive/airootfs/etc/skel/.zlogin @@ -0,0 +1,29 @@ +#!/bin/sh + +userresources=$HOME/.Xresources +usermodmap=$HOME/.Xmodmap +sysresources=/etc/X11/xinit/.Xresources +sysmodmap=/etc/X11/xinit/.Xmodmap + +# merge in defaults and keymaps +if [ -f $sysresources ]; then + xrdb -merge $sysresources +fi +if [ -f $sysmodmap ]; then + xmodmap $sysmodmap +fi +if [ -f "$userresources" ]; then + xrdb -merge "$userresources" +fi +if [ -f "$usermodmap" ]; then + xmodmap "$usermodmap" +fi + +# Start GNOME-Keyring +eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) +export SSH_AUTH_SOCK + +# Start Xfce4 +if [ -z "$DISPLAY" ] && [ "$(fgconsole)" -eq 1 ]; then + exec startxfce4 +fi diff --git a/archlive/airootfs/etc/systemd/network/wired.network b/archlive/airootfs/etc/systemd/network/wired.network new file mode 100644 index 00000000..e11c5e7f --- /dev/null +++ b/archlive/airootfs/etc/systemd/network/wired.network @@ -0,0 +1,9 @@ +[Match] +Name=en* + +[Network] +DHCP=ipv4 +DNS=8.8.8.8 +DNS=8.8.4.4 +DNS=208.67.222.222 +DNS=208.67.220.220 diff --git a/archlive/airootfs/etc/systemd/system/NetworkManagerFork.service b/archlive/airootfs/etc/systemd/system/NetworkManagerFork.service deleted file mode 100644 index fe1944f7..00000000 --- a/archlive/airootfs/etc/systemd/system/NetworkManagerFork.service +++ /dev/null @@ -1,23 +0,0 @@ -[Unit] -Description=Network Manager -Wants=network.target -After=network-pre.target dbus.service -Before=network.target - -[Service] -Type=forking -PIDFile=/var/run/NetworkManager.pid -BusName=org.freedesktop.NetworkManager -ExecReload=/bin/kill -HUP $MAINPID -ExecStart=/usr/bin/NetworkManager --pid-file=/var/run/NetworkManager.pid --no-daemon -REstart=on-failure -# NM doesn't want systemd to kill its children for it -KillMode=process -CapabilityBoundingSet=CAP_NET_ADMIN CAP_DAC_OVERRIDE CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID CAP_SYS_MODULE CAP_AUDIT_WRITE CAP_KILL CAP_SYS_CHROOT -ProtectSystem=true -ProtectHome=read-only - -[Install] -WantedBy=multi-user.target -Alias=dbus-org.freedesktop.NetworkManager.service -Also=NetworkManager-dispatcher.service diff --git a/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service b/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service deleted file mode 100644 index a7e5cd4e..00000000 --- a/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/NetworkManager-dispatcher.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/display-manager.service b/archlive/airootfs/etc/systemd/system/display-manager.service deleted file mode 100644 index 0ce57dc6..00000000 --- a/archlive/airootfs/etc/systemd/system/display-manager.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/nodm.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service new file mode 100644 index 00000000..4c158e62 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/systemd-networkd.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket b/archlive/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket new file mode 100644 index 00000000..51942c8e --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket @@ -0,0 +1 @@ +/usr/lib/systemd/system/systemd-networkd.socket \ No newline at end of file diff --git a/archlive/airootfs/etc/udev/rules.d/81-dhcpcd.rules b/archlive/airootfs/etc/udev/rules.d/81-dhcpcd.rules deleted file mode 100644 index 1c4053c0..00000000 --- a/archlive/airootfs/etc/udev/rules.d/81-dhcpcd.rules +++ /dev/null @@ -1 +0,0 @@ -ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="en*|eth*", ENV{SYSTEMD_WANTS}="dhcpcd@$name.service" diff --git a/archlive/airootfs/etc/vconsole.conf b/archlive/airootfs/etc/vconsole.conf index 0a6a8587..9cec5feb 100644 --- a/archlive/airootfs/etc/vconsole.conf +++ b/archlive/airootfs/etc/vconsole.conf @@ -1,3 +1,2 @@ KEYMAP=us FONT=ter-u16n -FONT_MAP=8859-2 diff --git a/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc b/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc new file mode 100644 index 00000000..fec17f8a --- /dev/null +++ b/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc @@ -0,0 +1,3 @@ +[xfce4-session] +SaveSession=None + diff --git a/archlive/airootfs/root/customize_airootfs.sh b/archlive/airootfs/root/customize_airootfs.sh index 2f6ec861..ba4b425c 100644 --- a/archlive/airootfs/root/customize_airootfs.sh +++ b/archlive/airootfs/root/customize_airootfs.sh @@ -21,7 +21,7 @@ echo "root:Abracadabra" | chpasswd groupadd -r autologin # Add wktech user -useradd -m -s /bin/zsh -G autologin,storage,wheel -U wktech +useradd -m -s /bin/zsh -G autologin,power,storage,wheel -U wktech echo "wktech:Abracadabra" | chpasswd # Enable sudo for %wheel @@ -42,6 +42,24 @@ sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' /etc/systemd/logind.conf sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' /etc/systemd/logind.conf sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf +# DNS Settings +#echo "nameserver 8.8.8.8" > /etc/resolv.conf +#echo "nameserver 8.8.4.4" >> /etc/resolv.conf +#echo "nameserver 2001:4860:4860::8888" >> /etc/resolv.conf +#echo "nameserver 2001:4860:4860::8844" >> /etc/resolv.conf +#echo "nameserver 208.67.222.222" >> /etc/resolv.conf +#echo "nameserver 208.67.220.220" >> /etc/resolv.conf +#echo "nameserver 2620:0:ccc::2" >> /etc/resolv.conf +#echo "nameserver 2620:0:ccd::2" >> /etc/resolv.conf + # Startup settings -#systemctl set-default multi-user.target -systemctl set-default graphical.target +systemctl set-default multi-user.target +#systemctl set-default graphical.target + +# archiso cleanup +for file in /etc/systemd/system/{pacman-init.service,etc-pacman.d-gnupg.mount} /etc/systemd/scripts/choose-mirror /etc/udev/rules.d/81-dhcpcd.rules /etc/initcpio; do + if [ -e "$file" ]; then + rm "$file" -R + fi +done + diff --git a/archlive/airootfs/usr/local/bin/connect-to-network b/archlive/airootfs/usr/local/bin/connect-to-network index 94a6d257..95daacf4 100644 --- a/archlive/airootfs/usr/local/bin/connect-to-network +++ b/archlive/airootfs/usr/local/bin/connect-to-network @@ -12,8 +12,8 @@ die () { } # Load settings -if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then - source "/run/archiso/bootmnt/arch/arch.conf" || \ +if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then + source "/run/archiso/bootmnt/config/arch.conf" || \ die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" else source "/usr/local/bin/arch.conf" || \ @@ -48,7 +48,7 @@ if ! ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+'; then ## Skip if we're already connected (i.e. the code above worked) if ! ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+'; then echo "Attempting to connect to ${WIFI_SSID}..." - nmcli dev wifi con "${WIFI_SSID}" password "${WIFI_PASS}" + netctl start wireless sleep 5s fi fi diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/archlive/airootfs/usr/local/bin/hw-diags-inner index c805ce1a..2381af57 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-inner +++ b/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -8,8 +8,8 @@ die () { } # Load settings -if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then - source "/run/archiso/bootmnt/arch/arch.conf" || \ +if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then + source "/run/archiso/bootmnt/config/arch.conf" || \ die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" else source "/usr/local/bin/arch.conf" || \ @@ -288,9 +288,9 @@ fi # SMART if [[ "$TEST_SMART" == "True" ]]; then clear - SMART_ERRORS="False" echo "Checking SMART status..." for d in "${DRIVES[@]}"; do + SMART_ERRORS="False" tmp_device="${d##*/}" eval "${tmp_device}_smart_result=Working" inxi -Dxx | grep "/dev/${tmp_device}" | sed -r "s#.*/dev/${tmp_device} (.*)# \1#" > "${tmp_device}_report.out" diff --git a/archlive/airootfs/usr/local/bin/mount-backup-shares b/archlive/airootfs/usr/local/bin/mount-backup-shares index 3e372bb3..79f51bad 100644 --- a/archlive/airootfs/usr/local/bin/mount-backup-shares +++ b/archlive/airootfs/usr/local/bin/mount-backup-shares @@ -8,8 +8,8 @@ die () { } # Load settings -if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then - source "/run/archiso/bootmnt/arch/arch.conf" || \ +if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then + source "/run/archiso/bootmnt/config/arch.conf" || \ die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" else source "/usr/local/bin/arch.conf" || \ diff --git a/archlive/airootfs/usr/local/bin/wifi.conf b/archlive/airootfs/usr/local/bin/wifi.conf new file mode 100644 index 00000000..0b0d5850 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/wifi.conf @@ -0,0 +1,9 @@ +ctrl_interface=/var/run/wpa_supplicant +eapol_version=1 +ap_scan=1 +fast_reauth=1 +network={ + ssid="SomeWiFi" + psk="Abracadabra" + priority=5 +} diff --git a/archlive/packages.both b/archlive/packages.both index 979ae849..6010db11 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -1,8 +1,9 @@ arch-install-scripts +aic94xx-firmware alsa-utils antiword arc-icon-theme-git -b43-fwcutter +b43-firmware btrfs-progs chntpw clonezilla @@ -40,6 +41,7 @@ hdparm hexedit hfsprogs htop +ifplugd inxi ipw2100-fw ipw2200-fw @@ -49,6 +51,7 @@ lftp libewf librsvg linux-atm +linux-firmware lm_sensors lsscsi mc @@ -64,19 +67,15 @@ mtools mupdf ncdu ndisc6 -network-manager-applet -networkmanager nfs-utils nilfs-utils nmap -nodm noto-fonts ntfs-3g ntp numix-circle-icon-theme-git openconnect openssh -openvpn p7zip partclone parted @@ -109,9 +108,9 @@ unzip usb_modeswitch vim vpnc +wd719x-firmware wget wireless_tools -wpa_actiond wpa_supplicant wvdial xf86-input-synaptics diff --git a/archlive/packages.x86_64 b/archlive/packages.x86_64 index 36c41284..aa6a8d31 100644 --- a/archlive/packages.x86_64 +++ b/archlive/packages.x86_64 @@ -1 +1,2 @@ +broadcom-wl gputest From 3e57a6fb9e288d1dd357565500cf2b724c2349b3 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:54:34 -0800 Subject: [PATCH 007/107] 2016-10: Retroactive Updates * Added wimlib --- archlive/packages.both | 1 + 1 file changed, 1 insertion(+) diff --git a/archlive/packages.both b/archlive/packages.both index 6010db11..a765d07a 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -110,6 +110,7 @@ vim vpnc wd719x-firmware wget +wimlib wireless_tools wpa_supplicant wvdial From a83c28ca3bb50d83c49afb485792f97891d32546 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:55:06 -0800 Subject: [PATCH 008/107] 2016-11: Retroactive Updates * Enabling SSHD --- .../etc/systemd/system/multi-user.target.wants/sshd.service | 1 + 1 file changed, 1 insertion(+) create mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service new file mode 100644 index 00000000..d21ebd9d --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/sshd.service \ No newline at end of file From d8952ed26fcb6c8825ace73538e65481bbec0945 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:56:10 -0800 Subject: [PATCH 009/107] 2017-01: Retroactive Updates * Disabled gputest * The package is failing to install. * Now using Midori GTK3 build * GTK2 was pulled from main repos for security reasons * Removed warnings about missing UFD * For use with live sessions * Wallpaper updated for live sessions * Wallpaper is now set at startup * Checks for UFD source but defaults to included file * Bugfix: Wallpaper is now set for multiple monitor/workspace setups * Disabled choose-mirror service * Better permission handling * build-wk now checks if running as root * build-wk now sets permissions before calling build.sh * Should prevent build failues as build.sh expects files to be owned by root * build-wk sets ownership back to builduser.builduser during cleanup * Better menu for HW-Diags * The script now returns to the menu after running a selection * Unless the mode was set directly by passing a valid argument * NOTE: This allows for easier use in CLI mode * Add delay before removing /media/wktech * Adjusted TMP_DIR in build-wk * Fixed path to custom repo * Trimming the fat * hostname / hosts now configured by customize_airootfs.sh * removed files from etc that were at default settings * removed grml zsh config since oh-my-zsh/lean is used * Defined a LOG_DIR for build-wk * Introducing libinput * Switched to libinput over synaptics as it has been deprecated. * Should restore touchpad functionality going forward. * Full mount path SHOULD now be displayed for mount-all-volumes. * Added CLI Screensavers * diag-network works now * network connection tests now passes all ipv4 private ip ranges * 10.0.0.0/8, 172.16.0.0/12, & 192.168.0.0/24 * need to add ipv6 at some point * hw-diag menu flow adjusted * New hostname and more bugfixes * hostname switched to wk-arch * ufw package is now installed * adjusted upload section of hw-diags * Added alias for start-wifi * Booting to CLI mode will autologin wktech * When booting to the CLI the motd shows some avail commands * Adjusted HW-Diags menu for use in CLI mode --- LICENSE.txt | 2 +- archlive/airootfs/etc/default/ufw | 45 ++++ archlive/airootfs/etc/hostname | 1 - archlive/airootfs/etc/lightdm/lightdm.conf | 165 +++++++++++++++ archlive/airootfs/etc/locale.gen | 1 + archlive/airootfs/etc/motd | 9 + archlive/airootfs/etc/resolv.conf | 9 +- .../etc/skel/{.zsh_aliases => .aliases} | 25 ++- archlive/airootfs/etc/skel/.bashrc | 8 +- ...NetworkManager.desktop => Network.desktop} | 0 .../skel/.config/autostart/Wallpaper.desktop | 12 ++ .../airootfs/etc/skel/.config/htop/htoprc | 26 +++ .../skel/.config/xfce4/panel/whiskermenu-1.rc | 2 +- archlive/airootfs/etc/skel/.update_wallpaper | 23 +++ archlive/airootfs/etc/skel/.xinitrc | 4 - archlive/airootfs/etc/skel/.zlogin | 30 +-- archlive/airootfs/etc/skel/.zshrc | 27 ++- .../etc/systemd/network/wired.network | 9 +- .../etc/systemd/network/wireless.network | 8 + .../systemd/system/display-manager.service | 1 + .../systemd/system/etc-pacman.d-gnupg.mount | 8 + .../multi-user.target.wants/rngd.service | 1 + .../systemd-resolved.service | 1 + .../multi-user.target.wants/ufw.service | 1 + .../etc/systemd/system/pacman-init.service | 15 ++ archlive/airootfs/etc/ufw/after.init | 40 ++++ archlive/airootfs/etc/ufw/after.rules | 30 +++ archlive/airootfs/etc/ufw/after6.rules | 27 +++ .../etc/ufw/applications.d/ufw-bittorent | 19 ++ .../airootfs/etc/ufw/applications.d/ufw-chat | 35 ++++ .../ufw/applications.d/ufw-directoryserver | 29 +++ .../etc/ufw/applications.d/ufw-dnsserver | 4 + .../etc/ufw/applications.d/ufw-fileserver | 14 ++ .../etc/ufw/applications.d/ufw-loginserver | 14 ++ .../etc/ufw/applications.d/ufw-mailserver | 30 +++ .../etc/ufw/applications.d/ufw-printserver | 9 + .../etc/ufw/applications.d/ufw-proxyserver | 9 + .../etc/ufw/applications.d/ufw-webserver | 19 ++ archlive/airootfs/etc/ufw/before.init | 40 ++++ archlive/airootfs/etc/ufw/before.rules | 77 +++++++ archlive/airootfs/etc/ufw/before6.rules | 138 +++++++++++++ archlive/airootfs/etc/ufw/sysctl.conf | 57 +++++ archlive/airootfs/etc/ufw/ufw.conf | 10 + archlive/airootfs/etc/ufw/user.rules | 39 ++++ archlive/airootfs/etc/ufw/user6.rules | 39 ++++ archlive/airootfs/root/customize_airootfs.sh | 48 ++--- archlive/airootfs/usr/local/bin/arch.conf | 10 +- .../airootfs/usr/local/bin/connect-to-network | 32 +-- archlive/airootfs/usr/local/bin/hw-diags | 194 +++++++++++------- .../airootfs/usr/local/bin/hw-diags-audio | 1 + .../airootfs/usr/local/bin/hw-diags-inner | 25 +-- .../airootfs/usr/local/bin/hw-diags-network | 73 +++++++ .../airootfs/usr/local/bin/mount-all-volumes | 8 +- .../usr/local/bin/mount-backup-shares | 11 +- archlive/airootfs/usr/local/bin/start-wifi | 55 +++++ .../applications/Hardware Diagnostics.desktop | 4 +- .../applications/Hardware Information.desktop | 2 +- .../share/applications/NetworkTest.desktop | 10 + archlive/packages.both | 40 ++-- archlive/packages.x86_64 | 1 - archlive/pacman.conf | 8 +- build-wk | 28 ++- 62 files changed, 1417 insertions(+), 245 deletions(-) create mode 100644 archlive/airootfs/etc/default/ufw delete mode 100644 archlive/airootfs/etc/hostname create mode 100644 archlive/airootfs/etc/lightdm/lightdm.conf create mode 100644 archlive/airootfs/etc/locale.gen create mode 100644 archlive/airootfs/etc/motd rename archlive/airootfs/etc/skel/{.zsh_aliases => .aliases} (67%) rename archlive/airootfs/etc/skel/.config/autostart/{NetworkManager.desktop => Network.desktop} (100%) create mode 100644 archlive/airootfs/etc/skel/.config/autostart/Wallpaper.desktop create mode 100644 archlive/airootfs/etc/skel/.config/htop/htoprc create mode 100644 archlive/airootfs/etc/skel/.update_wallpaper create mode 100644 archlive/airootfs/etc/systemd/network/wireless.network create mode 100644 archlive/airootfs/etc/systemd/system/display-manager.service create mode 100644 archlive/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount create mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service create mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service create mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service create mode 100644 archlive/airootfs/etc/systemd/system/pacman-init.service create mode 100644 archlive/airootfs/etc/ufw/after.init create mode 100644 archlive/airootfs/etc/ufw/after.rules create mode 100644 archlive/airootfs/etc/ufw/after6.rules create mode 100644 archlive/airootfs/etc/ufw/applications.d/ufw-bittorent create mode 100644 archlive/airootfs/etc/ufw/applications.d/ufw-chat create mode 100644 archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver create mode 100644 archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver create mode 100644 archlive/airootfs/etc/ufw/applications.d/ufw-fileserver create mode 100644 archlive/airootfs/etc/ufw/applications.d/ufw-loginserver create mode 100644 archlive/airootfs/etc/ufw/applications.d/ufw-mailserver create mode 100644 archlive/airootfs/etc/ufw/applications.d/ufw-printserver create mode 100644 archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver create mode 100644 archlive/airootfs/etc/ufw/applications.d/ufw-webserver create mode 100644 archlive/airootfs/etc/ufw/before.init create mode 100644 archlive/airootfs/etc/ufw/before.rules create mode 100644 archlive/airootfs/etc/ufw/before6.rules create mode 100644 archlive/airootfs/etc/ufw/sysctl.conf create mode 100644 archlive/airootfs/etc/ufw/ufw.conf create mode 100644 archlive/airootfs/etc/ufw/user.rules create mode 100644 archlive/airootfs/etc/ufw/user6.rules create mode 100644 archlive/airootfs/usr/local/bin/hw-diags-network create mode 100644 archlive/airootfs/usr/local/bin/start-wifi create mode 100644 archlive/airootfs/usr/share/applications/NetworkTest.desktop diff --git a/LICENSE.txt b/LICENSE.txt index 7734ae70..7caf44d1 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2016 Alan Mason +Copyright (c) 2017 Alan Mason Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/archlive/airootfs/etc/default/ufw b/archlive/airootfs/etc/default/ufw new file mode 100644 index 00000000..665806f3 --- /dev/null +++ b/archlive/airootfs/etc/default/ufw @@ -0,0 +1,45 @@ +# /etc/default/ufw +# + +# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback +# accepted). You will need to 'disable' and then 'enable' the firewall for +# the changes to take affect. +IPV6=yes + +# Set the default input policy to ACCEPT, DROP, or REJECT. Please note that if +# you change this you will most likely want to adjust your rules. +DEFAULT_INPUT_POLICY="DROP" + +# Set the default output policy to ACCEPT, DROP, or REJECT. Please note that if +# you change this you will most likely want to adjust your rules. +DEFAULT_OUTPUT_POLICY="ACCEPT" + +# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that +# if you change this you will most likely want to adjust your rules +DEFAULT_FORWARD_POLICY="DROP" + +# Set the default application policy to ACCEPT, DROP, REJECT or SKIP. Please +# note that setting this to ACCEPT may be a security risk. See 'man ufw' for +# details +DEFAULT_APPLICATION_POLICY="SKIP" + +# By default, ufw only touches its own chains. Set this to 'yes' to have ufw +# manage the built-in chains too. Warning: setting this to 'yes' will break +# non-ufw managed firewall rules +MANAGE_BUILTINS=no + +# +# IPT backend +# +# only enable if using iptables backend +IPT_SYSCTL=/etc/ufw/sysctl.conf + +# Extra connection tracking modules to load. Complete list can be found in +# net/netfilter/Kconfig of your kernel source. Some common modules: +# nf_conntrack_irc, nf_nat_irc: DCC (Direct Client to Client) support +# nf_conntrack_netbios_ns: NetBIOS (samba) client support +# nf_conntrack_pptp, nf_nat_pptp: PPTP over stateful firewall/NAT +# nf_conntrack_ftp, nf_nat_ftp: active FTP support +# nf_conntrack_tftp, nf_nat_tftp: TFTP support (server side) +IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns" + diff --git a/archlive/airootfs/etc/hostname b/archlive/airootfs/etc/hostname deleted file mode 100644 index 5e647960..00000000 --- a/archlive/airootfs/etc/hostname +++ /dev/null @@ -1 +0,0 @@ -arch-wk diff --git a/archlive/airootfs/etc/lightdm/lightdm.conf b/archlive/airootfs/etc/lightdm/lightdm.conf new file mode 100644 index 00000000..5aea533a --- /dev/null +++ b/archlive/airootfs/etc/lightdm/lightdm.conf @@ -0,0 +1,165 @@ +# +# General configuration +# +# start-default-seat = True to always start one seat if none are defined in the configuration +# greeter-user = User to run greeter as +# minimum-display-number = Minimum display number to use for X servers +# minimum-vt = First VT to run displays on +# lock-memory = True to prevent memory from being paged to disk +# user-authority-in-system-dir = True if session authority should be in the system location +# guest-account-script = Script to be run to setup guest account +# logind-check-graphical = True to on start seats that are marked as graphical by logind +# log-directory = Directory to log information to +# run-directory = Directory to put running state in +# cache-directory = Directory to cache to +# sessions-directory = Directory to find sessions +# remote-sessions-directory = Directory to find remote sessions +# greeters-directory = Directory to find greeters +# backup-logs = True to move add a .old suffix to old log files when opening new ones +# +[LightDM] +#start-default-seat=true +#greeter-user=lightdm +#minimum-display-number=0 +#minimum-vt=7 # Setting this to a value < 7 implies security issues, see FS#46799 +#lock-memory=true +#user-authority-in-system-dir=false +#guest-account-script=guest-account +#logind-check-graphical=false +#log-directory=/var/log/lightdm +run-directory=/run/lightdm +#cache-directory=/var/cache/lightdm +#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions +#remote-sessions-directory=/usr/share/lightdm/remote-sessions +#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters +#backup-logs=true + +# +# Seat configuration +# +# Seat configuration is matched against the seat name glob in the section, for example: +# [Seat:*] matches all seats and is applied first. +# [Seat:seat0] matches the seat named "seat0". +# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client". +# +# type = Seat type (xlocal, xremote, unity) +# pam-service = PAM service to use for login +# pam-autologin-service = PAM service to use for autologin +# pam-greeter-service = PAM service to use for greeters +# xserver-command = X server command to run (can also contain arguments e.g. X -special-option) +# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option) +# xserver-config = Config file to pass to X server +# xserver-layout = Layout to pass to X server +# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server +# xserver-share = True if the X server is shared for both greeter and session +# xserver-hostname = Hostname of X server (only for type=xremote) +# xserver-display-number = Display number of X server (only for type=xremote) +# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true) +# xdmcp-port = XDMCP UDP/IP port to communicate on +# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf) +# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option) +# unity-compositor-timeout = Number of seconds to wait for compositor to start +# greeter-session = Session to load for greeter +# greeter-hide-users = True to hide the user list +# greeter-allow-guest = True if the greeter should show a guest login option +# greeter-show-manual-login = True if the greeter should offer a manual login option +# greeter-show-remote-login = True if the greeter should offer a remote login option +# user-session = Session to load for users +# allow-user-switching = True if allowed to switch users +# allow-guest = True if guest login is allowed +# guest-session = Session to load for guests (overrides user-session) +# session-wrapper = Wrapper script to run session with +# greeter-wrapper = Wrapper script to run greeter with +# guest-wrapper = Wrapper script to run guest sessions with +# display-setup-script = Script to run when starting a greeter session (runs as root) +# display-stopped-script = Script to run after stopping the display server (runs as root) +# greeter-setup-script = Script to run when starting a greeter (runs as root) +# session-setup-script = Script to run when starting a user session (runs as root) +# session-cleanup-script = Script to run when quitting a user session (runs as root) +# autologin-guest = True to log in as guest by default +# autologin-user = User to log in with by default (overrides autologin-guest) +# autologin-user-timeout = Number of seconds to wait before loading default user +# autologin-session = Session to load for automatic login (overrides user-session) +# autologin-in-background = True if autologin session should not be immediately activated +# exit-on-failure = True if the daemon should exit if this seat fails +# +[Seat:*] +#type=xlocal +pam-service=lightdm +pam-autologin-service=lightdm-autologin +#pam-greeter-service=lightdm-greeter +#xserver-command=X +#xmir-command=Xmir +#xserver-config= +#xserver-layout= +#xserver-allow-tcp=false +#xserver-share=true +#xserver-hostname= +#xserver-display-number= +#xdmcp-manager= +#xdmcp-port=177 +#xdmcp-key= +#unity-compositor-command=unity-system-compositor +#unity-compositor-timeout=60 +#greeter-session=example-gtk-gnome +#greeter-hide-users=false +#greeter-allow-guest=true +#greeter-show-manual-login=false +#greeter-show-remote-login=true +#user-session=default +#allow-user-switching=true +#allow-guest=true +#guest-session= +session-wrapper=/etc/lightdm/Xsession +#greeter-wrapper= +#guest-wrapper= +#display-setup-script= +#display-stopped-script= +#greeter-setup-script= +#session-setup-script= +#session-cleanup-script= +#autologin-guest=false +autologin-user=wktech +autologin-user-timeout=0 +#autologin-in-background=false +#autologin-session= +#exit-on-failure=false + +# +# XDMCP Server configuration +# +# enabled = True if XDMCP connections should be allowed +# port = UDP/IP port to listen for connections on +# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present) +# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf) +# hostname = Hostname to report to XDMCP clients (defaults to system hostname if unset) +# +# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively +# it can be a word and the first 7 characters are used as the key. +# +[XDMCPServer] +#enabled=false +#port=177 +#listen-address= +#key= +#hostname= + +# +# VNC Server configuration +# +# enabled = True if VNC connections should be allowed +# command = Command to run Xvnc server with +# port = TCP/IP port to listen for connections on +# listen-address = Host/address to listen for VNC connections (use all addresses if not present) +# width = Width of display to use +# height = Height of display to use +# depth = Color depth of display to use +# +[VNCServer] +#enabled=false +#command=Xvnc +#port=5900 +#listen-address= +#width=1024 +#height=768 +#depth=8 diff --git a/archlive/airootfs/etc/locale.gen b/archlive/airootfs/etc/locale.gen new file mode 100644 index 00000000..a1b8ba14 --- /dev/null +++ b/archlive/airootfs/etc/locale.gen @@ -0,0 +1 @@ +en_US.UTF-8 UTF-8 \ No newline at end of file diff --git a/archlive/airootfs/etc/motd b/archlive/airootfs/etc/motd new file mode 100644 index 00000000..649aa912 --- /dev/null +++ b/archlive/airootfs/etc/motd @@ -0,0 +1,9 @@ +Welcome to the WK Linux Toolbox + +Some common commands: +% hw-diags +% hw-info +% mount-all-volumes +% mount-backup-shares +% start-wifi + diff --git a/archlive/airootfs/etc/resolv.conf b/archlive/airootfs/etc/resolv.conf index db8b0a07..89efb950 100644 --- a/archlive/airootfs/etc/resolv.conf +++ b/archlive/airootfs/etc/resolv.conf @@ -1,8 +1 @@ -nameserver 8.8.8.8 -nameserver 8.8.4.4 -#nameserver 2001:4860:4860::8888 -#nameserver 2001:4860:4860::8844 -nameserver 208.67.222.222 -nameserver 208.67.220.220 -#nameserver 2620:0:ccc::2 -#nameserver 2620:0:ccd::2 +/run/systemd/resolve/resolv.conf \ No newline at end of file diff --git a/archlive/airootfs/etc/skel/.zsh_aliases b/archlive/airootfs/etc/skel/.aliases similarity index 67% rename from archlive/airootfs/etc/skel/.zsh_aliases rename to archlive/airootfs/etc/skel/.aliases index 7450b0c2..1dfb6fa2 100644 --- a/archlive/airootfs/etc/skel/.zsh_aliases +++ b/archlive/airootfs/etc/skel/.aliases @@ -1,4 +1,3 @@ -#!/bin/zsh alias 7z0='7z a -t7z -mx=0' alias 7z1='7z a -t7z -mx=1' alias 7z3='7z a -t7z -mx=3' @@ -8,26 +7,30 @@ alias 7z9='7z a -t7z -mx=9' alias diff='colordiff' -ur alias du='du -sch --apparent-size' alias fix-perms='find -type d -exec chmod 755 "{}" \; && find -type f -exec chmod 644 "{}" \;' +alias hw-info='sudo inxi -ACDdGlMmNopRsxxc 25' alias less='less -S' +alias ls='ls --color=auto' alias mkdir='mkdir -p' alias mount='sudo mount' alias mv='mv -nv' -alias photorec="sudo photorec" -alias photorec-sort="sudo photorec-sort" -alias q1='clear && sudo ls -1' -alias q1a='clear && sudo ls -1A' -alias q='clear && sudo ls -lh' -alias qa='clear && sudo ls -lAh' -alias qs='clear && sudo ls' -alias qsa='clear && sudo ls -A' +alias photorec-sort='sudo photorec-sort' +alias photorec='sudo photorec' +alias q1='clear && ls -1' +alias q1a='clear && ls -1A' +alias q='clear && ls -lh' +alias qa='clear && ls -lAh' +alias qs='clear && ls' +alias qsa='clear && ls -A' alias rm='rm -v' alias rmdirs='find -depth -mindepth 1 -type d -exec rmdir "{}" --ignore-fail-on-non-empty \;' alias rs='rsync -avhPS --stats --exclude-from="$HOME/.rsync_exclusions"' alias rsz='rsync -avhzPS --stats --exclude-from="$HOME/.rsync_exclusions"' alias sdu='sudo du -sch --apparent-size' -alias srmdirs='find -depth -mindepth 1 -type d -exec sudo rmdir "{}" --ignore-fail-on-non-empty \;' +alias srmdirs='sudo find -depth -mindepth 1 -type d -exec rmdir "{}" --ignore-fail-on-non-empty \;' alias srs='sudo rsync -avhPS --stats --exclude-from="$HOME/.rsync_exclusions"' alias srsz='sudo rsync -avhzPS --stats --exclude-from="$HOME/.rsync_exclusions"' -alias testdisk="sudo testdisk" +alias start-wifi='sudo start-wifi' +alias td='tmux detach' +alias testdisk='sudo testdisk' alias umount='sudo umount' alias unmount='sudo umount' diff --git a/archlive/airootfs/etc/skel/.bashrc b/archlive/airootfs/etc/skel/.bashrc index a355b0cd..a76d83ac 100644 --- a/archlive/airootfs/etc/skel/.bashrc +++ b/archlive/airootfs/etc/skel/.bashrc @@ -5,5 +5,11 @@ # If not running interactively, don't do anything [[ $- != *i* ]] && return -alias ls='ls --color=auto' PS1='[\u@\h \W]\$ ' + +## Load aliases +. $HOME/.aliases + +## Start ssh agent +eval $(/usr/bin/ssh-agent) + diff --git a/archlive/airootfs/etc/skel/.config/autostart/NetworkManager.desktop b/archlive/airootfs/etc/skel/.config/autostart/Network.desktop similarity index 100% rename from archlive/airootfs/etc/skel/.config/autostart/NetworkManager.desktop rename to archlive/airootfs/etc/skel/.config/autostart/Network.desktop diff --git a/archlive/airootfs/etc/skel/.config/autostart/Wallpaper.desktop b/archlive/airootfs/etc/skel/.config/autostart/Wallpaper.desktop new file mode 100644 index 00000000..49037aa4 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/autostart/Wallpaper.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=0.0.1 +Type=Application +Name=Update Wallpaper +Comment=Update Wallpaper +Exec=/home/wktech/.update_wallpaper +OnlyShowIn=XFCE; +StartupNotify=false +Terminal=false +Hidden=false + diff --git a/archlive/airootfs/etc/skel/.config/htop/htoprc b/archlive/airootfs/etc/skel/.config/htop/htoprc new file mode 100644 index 00000000..37f78cb4 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/htop/htoprc @@ -0,0 +1,26 @@ +# Beware! This file is rewritten by htop when settings are changed in the interface. +# The parser is also very primitive, and not human-friendly. +fields=0 48 17 18 38 39 40 2 46 47 49 1 +sort_key=46 +sort_direction=1 +hide_threads=0 +hide_kernel_threads=1 +hide_userland_threads=0 +shadow_other_users=0 +show_thread_names=0 +show_program_path=1 +highlight_base_name=0 +highlight_megabytes=1 +highlight_threads=1 +tree_view=0 +header_margin=1 +detailed_cpu_time=0 +cpu_count_from_zero=0 +update_process_names=0 +account_guest_in_cpu_meter=0 +color_scheme=0 +delay=15 +left_meters=AllCPUs Memory Swap +left_meter_modes=1 1 1 +right_meters=Tasks LoadAverage Uptime +right_meter_modes=2 2 2 diff --git a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc index e0195106..78004419 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc +++ b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc @@ -1,4 +1,4 @@ -favorites=Hardware Diagnostics.desktop,Hardware Information.desktop,exo-file-manager.desktop,gparted.desktop,gsmartcontrol.desktop,SpeedTest.desktop,exo-web-browser.desktop +favorites=Hardware Diagnostics.desktop,Hardware Information.desktop,exo-file-manager.desktop,gparted.desktop,gsmartcontrol.desktop,NetworkTest.desktop,exo-web-browser.desktop recent=xfce4-settings-editor.desktop,xfce-session-settings.desktop,xfce4-power-manager-settings.desktop,gsmartcontrol.desktop,gparted.desktop button-title=Applications button-icon=distributor-logo-archlinux diff --git a/archlive/airootfs/etc/skel/.update_wallpaper b/archlive/airootfs/etc/skel/.update_wallpaper new file mode 100644 index 00000000..0e5d03dc --- /dev/null +++ b/archlive/airootfs/etc/skel/.update_wallpaper @@ -0,0 +1,23 @@ +#!/bin/bash + +UFD_PATH="/run/archiso/bootmnt/config/" +WALLPAPER="/usr/share/wallpaper/current.png" + +function link_wall() { + sudo rm "$WALLPAPER" + sudo ls -s "$UFD_PATH/Arch.png" "$WALLPAPER" +} + +# Check for UFD source +if [[ -f "$UFD_PATH/Arch.png" ]]; then + link_wall "$UFD_PATH/Arch.png" +elif [[ -f "$UFD_PATH/Arch.jpg" ]]; then + link_wall "$UFD_PATH/Arch.jpg" +fi + +# Update Xfce4 (mostly redundant, but will catch multi-display setups) +for monitor in monitor{0..2}; do + for workspace in workspace{0..3}; do + xfconf-query -c xfce4-desktop -p /backdrop/screen0/$monitor/$workspace/last-image -s "$WALLPAPER" 2>/dev/null + done +done diff --git a/archlive/airootfs/etc/skel/.xinitrc b/archlive/airootfs/etc/skel/.xinitrc index a949cf0b..bb0a24da 100644 --- a/archlive/airootfs/etc/skel/.xinitrc +++ b/archlive/airootfs/etc/skel/.xinitrc @@ -23,7 +23,3 @@ fi eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) export SSH_AUTH_SOCK -# Start Xfce4 -if [ -z "$DISPLAY" ] && [ "$(fgconsole)" -eq 1 ]; then - exec startxfce4 -fi diff --git a/archlive/airootfs/etc/skel/.zlogin b/archlive/airootfs/etc/skel/.zlogin index a949cf0b..ae4dabb9 100644 --- a/archlive/airootfs/etc/skel/.zlogin +++ b/archlive/airootfs/etc/skel/.zlogin @@ -1,29 +1,3 @@ -#!/bin/sh - -userresources=$HOME/.Xresources -usermodmap=$HOME/.Xmodmap -sysresources=/etc/X11/xinit/.Xresources -sysmodmap=/etc/X11/xinit/.Xmodmap - -# merge in defaults and keymaps -if [ -f $sysresources ]; then - xrdb -merge $sysresources -fi -if [ -f $sysmodmap ]; then - xmodmap $sysmodmap -fi -if [ -f "$userresources" ]; then - xrdb -merge "$userresources" -fi -if [ -f "$usermodmap" ]; then - xmodmap "$usermodmap" -fi - -# Start GNOME-Keyring -eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) -export SSH_AUTH_SOCK - -# Start Xfce4 -if [ -z "$DISPLAY" ] && [ "$(fgconsole)" -eq 1 ]; then - exec startxfce4 +if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then + hw-diags cli fi diff --git a/archlive/airootfs/etc/skel/.zshrc b/archlive/airootfs/etc/skel/.zshrc index d4a35296..6c8cde57 100644 --- a/archlive/airootfs/etc/skel/.zshrc +++ b/archlive/airootfs/etc/skel/.zshrc @@ -1,10 +1,12 @@ +# If you come from bash you might have to change your $PATH. +# export PATH=$HOME/bin:/usr/local/bin:$PATH + # Path to your oh-my-zsh installation. export ZSH=$HOME/.oh-my-zsh -# Set name of the theme to load. -# Look in ~/.oh-my-zsh/themes/ -# Optionally, if you set this to "random", it'll load a random theme each -# time that oh-my-zsh is loaded. +# Set name of the theme to load. Optionally, if you set this to "random" +# it'll load a random theme each time that oh-my-zsh is loaded. +# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes ZSH_THEME="lean" # Uncomment the following line to use case-sensitive completion. @@ -40,7 +42,7 @@ DISABLE_AUTO_UPDATE="true" # Uncomment the following line if you want to change the command execution time # stamp shown in the history command output. # The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" -# HIST_STAMPS="mm/dd/yyyy" +HIST_STAMPS="yyyy-mm-dd" # Would you like to use another custom folder than $ZSH/custom? # ZSH_CUSTOM=/path/to/new-custom-folder @@ -49,15 +51,13 @@ DISABLE_AUTO_UPDATE="true" # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ # Example format: plugins=(rails git textmate ruby lighthouse) # Add wisely, as too many plugins slow down shell startup. -plugins=(sudo) +plugins=(archlinux git sudo systemd tmux) +source $ZSH/oh-my-zsh.sh # User configuration - export PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl" # export MANPATH="/usr/local/man:$MANPATH" -source $ZSH/oh-my-zsh.sh - # You may need to manually set your language environment # export LANG=en_US.UTF-8 @@ -72,7 +72,7 @@ source $ZSH/oh-my-zsh.sh # export ARCHFLAGS="-arch x86_64" # ssh -# export SSH_KEY_PATH="~/.ssh/dsa_id" +# export SSH_KEY_PATH="~/.ssh/rsa_id" # Set personal aliases, overriding those provided by oh-my-zsh libs, # plugins, and themes. Aliases can be placed here, though oh-my-zsh @@ -83,4 +83,9 @@ source $ZSH/oh-my-zsh.sh # alias zshconfig="mate ~/.zshrc" # alias ohmyzsh="mate ~/.oh-my-zsh" -. ~/.zsh_aliases +## Load aliases +. $HOME/.aliases + +## Start ssh agent +eval $(/usr/bin/ssh-agent)>/dev/null + diff --git a/archlive/airootfs/etc/systemd/network/wired.network b/archlive/airootfs/etc/systemd/network/wired.network index e11c5e7f..8a23b1c5 100644 --- a/archlive/airootfs/etc/systemd/network/wired.network +++ b/archlive/airootfs/etc/systemd/network/wired.network @@ -2,8 +2,7 @@ Name=en* [Network] -DHCP=ipv4 -DNS=8.8.8.8 -DNS=8.8.4.4 -DNS=208.67.222.222 -DNS=208.67.220.220 +DHCP=yes + +[DHCP] +RouteMetric=10 diff --git a/archlive/airootfs/etc/systemd/network/wireless.network b/archlive/airootfs/etc/systemd/network/wireless.network new file mode 100644 index 00000000..94a986b0 --- /dev/null +++ b/archlive/airootfs/etc/systemd/network/wireless.network @@ -0,0 +1,8 @@ +[Match] +Name=wl* + +[Network] +DHCP=yes + +[DHCP] +RouteMetric=20 diff --git a/archlive/airootfs/etc/systemd/system/display-manager.service b/archlive/airootfs/etc/systemd/system/display-manager.service new file mode 100644 index 00000000..5595cea3 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/display-manager.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/lightdm.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount b/archlive/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount new file mode 100644 index 00000000..4eab5513 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount @@ -0,0 +1,8 @@ +[Unit] +Description=Temporary /etc/pacman.d/gnupg directory + +[Mount] +What=tmpfs +Where=/etc/pacman.d/gnupg +Type=tmpfs +Options=mode=0755 diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service new file mode 100644 index 00000000..5f6432cf --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/rngd.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service new file mode 100644 index 00000000..4f6ae342 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/systemd-resolved.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service new file mode 100644 index 00000000..86a21504 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/ufw.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/pacman-init.service b/archlive/airootfs/etc/systemd/system/pacman-init.service new file mode 100644 index 00000000..23b81445 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/pacman-init.service @@ -0,0 +1,15 @@ +[Unit] +Description=Initializes Pacman keyring +Wants=haveged.service +After=haveged.service +Requires=etc-pacman.d-gnupg.mount +After=etc-pacman.d-gnupg.mount + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/pacman-key --init +ExecStart=/usr/bin/pacman-key --populate archlinux + +[Install] +WantedBy=multi-user.target diff --git a/archlive/airootfs/etc/ufw/after.init b/archlive/airootfs/etc/ufw/after.init new file mode 100644 index 00000000..e89217d5 --- /dev/null +++ b/archlive/airootfs/etc/ufw/after.init @@ -0,0 +1,40 @@ +#!/bin/sh +# +# after.init: if executable, called by ufw-init. See 'man ufw-framework' for +# details. Note that output from these scripts is not seen via the +# the ufw command, but instead via ufw-init. +# +# Copyright 2013 Canonical Ltd. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +set -e + +case "$1" in +start) + # typically required + ;; +stop) + # typically required + ;; +status) + # optional + ;; +flush-all) + # optional + ;; +*) + echo "'$1' not supported" + echo "Usage: after.init {start|stop|flush-all|status}" + ;; +esac diff --git a/archlive/airootfs/etc/ufw/after.rules b/archlive/airootfs/etc/ufw/after.rules new file mode 100644 index 00000000..0d6c6461 --- /dev/null +++ b/archlive/airootfs/etc/ufw/after.rules @@ -0,0 +1,30 @@ +# +# rules.input-after +# +# Rules that should be run after the ufw command line added rules. Custom +# rules should be added to one of these chains: +# ufw-after-input +# ufw-after-output +# ufw-after-forward +# + +# Don't delete these required lines, otherwise there will be errors +*filter +:ufw-after-input - [0:0] +:ufw-after-output - [0:0] +:ufw-after-forward - [0:0] +# End required lines + +# don't log noisy services by default +-A ufw-after-input -p udp --dport 137 -j ufw-skip-to-policy-input +-A ufw-after-input -p udp --dport 138 -j ufw-skip-to-policy-input +-A ufw-after-input -p tcp --dport 139 -j ufw-skip-to-policy-input +-A ufw-after-input -p tcp --dport 445 -j ufw-skip-to-policy-input +-A ufw-after-input -p udp --dport 67 -j ufw-skip-to-policy-input +-A ufw-after-input -p udp --dport 68 -j ufw-skip-to-policy-input + +# don't log noisy broadcast +-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input + +# don't delete the 'COMMIT' line or these rules won't be processed +COMMIT diff --git a/archlive/airootfs/etc/ufw/after6.rules b/archlive/airootfs/etc/ufw/after6.rules new file mode 100644 index 00000000..0d996726 --- /dev/null +++ b/archlive/airootfs/etc/ufw/after6.rules @@ -0,0 +1,27 @@ +# +# rules.input-after +# +# Rules that should be run after the ufw command line added rules. Custom +# rules should be added to one of these chains: +# ufw6-after-input +# ufw6-after-output +# ufw6-after-forward +# + +# Don't delete these required lines, otherwise there will be errors +*filter +:ufw6-after-input - [0:0] +:ufw6-after-output - [0:0] +:ufw6-after-forward - [0:0] +# End required lines + +# don't log noisy services by default +-A ufw6-after-input -p udp --dport 137 -j ufw6-skip-to-policy-input +-A ufw6-after-input -p udp --dport 138 -j ufw6-skip-to-policy-input +-A ufw6-after-input -p tcp --dport 139 -j ufw6-skip-to-policy-input +-A ufw6-after-input -p tcp --dport 445 -j ufw6-skip-to-policy-input +-A ufw6-after-input -p udp --dport 546 -j ufw6-skip-to-policy-input +-A ufw6-after-input -p udp --dport 547 -j ufw6-skip-to-policy-input + +# don't delete the 'COMMIT' line or these rules won't be processed +COMMIT diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent b/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent new file mode 100644 index 00000000..bdaa7431 --- /dev/null +++ b/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent @@ -0,0 +1,19 @@ +[Transmission] +title=Transmission +description=Transmission BitTorrent client +ports=51413/tcp + +[Deluge] +title=Deluge +description=Deluge BitTorrent client +ports=6881:6891/tcp + +[KTorrent] +title=KTorrent +description=KTorrent BitTorrent client +ports=6881/tcp|4444/udp + +[qBittorrent] +title=qBittorrent +description=qBittorrent BitTorrent client +ports=6881/tcp diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-chat b/archlive/airootfs/etc/ufw/applications.d/ufw-chat new file mode 100644 index 00000000..32b4fe70 --- /dev/null +++ b/archlive/airootfs/etc/ufw/applications.d/ufw-chat @@ -0,0 +1,35 @@ +[PeopleNearby] +title=People Nearby +description=People Nearby (Bonjour/Salut) functionality in Empathy +ports=5353/udp|5298 + +[Bonjour] +title=Bonjour +description=Bonjour protocol +ports=5353/udp|5298 + +[MSN] +title=MSN Chat +description=MSN chat protocol (with file transfer and voice) +ports=1863|6891:6900/tcp|6901 + +[MSN SSL] +title=MSN Chat (SSL) +description=MSN chat protocol (SSL) +ports=443/tcp + +[AIM] +title=AIM Talk +description=AIM talk protocol +ports=5190/tcp + +[Yahoo] +title=Yahoo Chat +description=Yahoo chat protocol +ports=5050 + +[XMPP] +title=XMPP Chat +description=XMPP protocol (Jabber and Google Talk) +ports=5222/tcp|5269/tcp + diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver b/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver new file mode 100644 index 00000000..90fa2f75 --- /dev/null +++ b/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver @@ -0,0 +1,29 @@ +[Kerberos KDC] +title=Kerberos v5 KDC server +description=Kerberos v5 KDC server +ports=88 + +[Kerberos Admin] +title=Kerberos v5 admin +description=Kerberos v5 server +ports=749/tcp + +[Kerberos Password] +title=Kerberos v5 password +description=Kerberos v5 password +ports=464/udp + +[Kerberos Full] +title=Kerberos v5 server +description=Kerberos v5 server +ports=88,749/tcp|464/udp + +[LDAP] +title=LDAP server +description=LDAP server +ports=389/tcp + +[LDAPS] +title=LDAP server (LDAPS) +description=LDAP server (LDAPS) +ports=636/tcp diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver b/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver new file mode 100644 index 00000000..7a617811 --- /dev/null +++ b/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver @@ -0,0 +1,4 @@ +[DNS] +title=Internet Domain Name Server +description=Internet Domain Name Server +ports=53 diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver b/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver new file mode 100644 index 00000000..6cb4c77b --- /dev/null +++ b/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver @@ -0,0 +1,14 @@ +[CIFS] +title=SMB/CIFS server +description=SMB/CIFS server +ports=137,138/udp|139,445/tcp + +[NFS] +title=NFS server +description=NFS and portmap server. Will also need access to mountd, statd and possibly others +ports=2049,111/tcp|2049,111/udp + +[svnserve] +title=Subversion server +description=Subversion server for access to Subversion repositories. +ports=3690/tcp diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver b/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver new file mode 100644 index 00000000..5f018530 --- /dev/null +++ b/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver @@ -0,0 +1,14 @@ +[Telnet] +title=Telnet server (insecure) +description=Telnet server (insecure) +ports=23/tcp + +[SSH] +title=SSH server +description=SSH server +ports=22/tcp + +[VNC] +title=VNC server +description=VNC server +ports=5900/tcp diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver b/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver new file mode 100644 index 00000000..dd55cc07 --- /dev/null +++ b/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver @@ -0,0 +1,30 @@ +[POP3] +title=Mail server (POP3) +description=Mail server (POP3) +ports=110/tcp + +[POP3S] +title=Secure mail server (POP3S) +description=Secure mail server (POP3S) +ports=995/tcp + +[IMAP] +title=Mail server (IMAP) +description=Mail server (IMAP) +ports=143/tcp + +[IMAPS] +title=Secure mail server (IMAPS) +description=Secure mail server (IMAPS) +ports=993/tcp + +[SMTP] +title=Mail server (SMTP) +description=Mail server (SMTP) +ports=25/tcp + +[Mail submission] +title=Mail server (Submission) +description=Mail server (Submission) +ports=587/tcp + diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-printserver b/archlive/airootfs/etc/ufw/applications.d/ufw-printserver new file mode 100644 index 00000000..e634b612 --- /dev/null +++ b/archlive/airootfs/etc/ufw/applications.d/ufw-printserver @@ -0,0 +1,9 @@ +[IPP] +title=Cups server (IPP) +description=Cups server (IPP) +ports=631 + +[LPD] +title=LPD server +description=LPD server +ports=515/tcp diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver b/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver new file mode 100644 index 00000000..a598c980 --- /dev/null +++ b/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver @@ -0,0 +1,9 @@ +[Socks] +title=Socks proxy +description=Socks proxy +ports=1080/tcp + +[Transparent Proxy] +title=Transparent proxy +description=Transparent proxy +ports=8081/tcp diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-webserver b/archlive/airootfs/etc/ufw/applications.d/ufw-webserver new file mode 100644 index 00000000..fab4b822 --- /dev/null +++ b/archlive/airootfs/etc/ufw/applications.d/ufw-webserver @@ -0,0 +1,19 @@ +[WWW] +title=Web Server +description=Web server +ports=80/tcp + +[WWW Secure] +title=Web Server (HTTPS) +description=Web Server (HTTPS) +ports=443/tcp + +[WWW Full] +title=Web Server (HTTP,HTTPS) +description=Web Server (HTTP,HTTPS) +ports=80,443/tcp + +[WWW Cache] +title=Web Server (8080) +description=Web Server (8080) +ports=8080/tcp diff --git a/archlive/airootfs/etc/ufw/before.init b/archlive/airootfs/etc/ufw/before.init new file mode 100644 index 00000000..1348cb12 --- /dev/null +++ b/archlive/airootfs/etc/ufw/before.init @@ -0,0 +1,40 @@ +#!/bin/sh +# +# before.init: if executable, called by ufw-init. See 'man ufw-framework' for +# details. Note that output from these scripts is not seen via the +# the ufw command, but instead via ufw-init. +# +# Copyright 2013 Canonical Ltd. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +set -e + +case "$1" in +start) + # typically required + ;; +stop) + # typically required + ;; +status) + # optional + ;; +flush-all) + # optional + ;; +*) + echo "'$1' not supported" + echo "Usage: before.init {start|stop|flush-all|status}" + ;; +esac diff --git a/archlive/airootfs/etc/ufw/before.rules b/archlive/airootfs/etc/ufw/before.rules new file mode 100644 index 00000000..0addd54c --- /dev/null +++ b/archlive/airootfs/etc/ufw/before.rules @@ -0,0 +1,77 @@ +# +# rules.before +# +# Rules that should be run before the ufw command line added rules. Custom +# rules should be added to one of these chains: +# ufw-before-input +# ufw-before-output +# ufw-before-forward +# + +# Don't delete these required lines, otherwise there will be errors +*filter +:ufw-before-input - [0:0] +:ufw-before-output - [0:0] +:ufw-before-forward - [0:0] +:ufw-not-local - [0:0] +# End required lines + + +# allow all on loopback +-A ufw-before-input -i lo -j ACCEPT +-A ufw-before-output -o lo -j ACCEPT + +# quickly process packets for which we already have a connection +-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT + +# drop INVALID packets (logs these in loglevel medium and higher) +-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny +-A ufw-before-input -m conntrack --ctstate INVALID -j DROP + +# ok icmp codes for INPUT +-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT +-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT +-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT +-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT +-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT + +# ok icmp code for FORWARD +-A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT +-A ufw-before-forward -p icmp --icmp-type source-quench -j ACCEPT +-A ufw-before-forward -p icmp --icmp-type time-exceeded -j ACCEPT +-A ufw-before-forward -p icmp --icmp-type parameter-problem -j ACCEPT +-A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT + +# allow dhcp client to work +-A ufw-before-input -p udp --sport 67 --dport 68 -j ACCEPT + +# +# ufw-not-local +# +-A ufw-before-input -j ufw-not-local + +# if LOCAL, RETURN +-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN + +# if MULTICAST, RETURN +-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN + +# if BROADCAST, RETURN +-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN + +# all other non-local packets are dropped +-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny +-A ufw-not-local -j DROP + +# allow MULTICAST mDNS for service discovery (be sure the MULTICAST line above +# is uncommented) +-A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT + +# allow MULTICAST UPnP for service discovery (be sure the MULTICAST line above +# is uncommented) +-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT + +# don't delete the 'COMMIT' line or these rules won't be processed +COMMIT diff --git a/archlive/airootfs/etc/ufw/before6.rules b/archlive/airootfs/etc/ufw/before6.rules new file mode 100644 index 00000000..1102d3f7 --- /dev/null +++ b/archlive/airootfs/etc/ufw/before6.rules @@ -0,0 +1,138 @@ +# +# rules.before +# +# Rules that should be run before the ufw command line added rules. Custom +# rules should be added to one of these chains: +# ufw6-before-input +# ufw6-before-output +# ufw6-before-forward +# + +# Don't delete these required lines, otherwise there will be errors +*filter +:ufw6-before-input - [0:0] +:ufw6-before-output - [0:0] +:ufw6-before-forward - [0:0] +# End required lines + + +# allow all on loopback +-A ufw6-before-input -i lo -j ACCEPT +-A ufw6-before-output -o lo -j ACCEPT + +# drop packets with RH0 headers +-A ufw6-before-input -m rt --rt-type 0 -j DROP +-A ufw6-before-forward -m rt --rt-type 0 -j DROP +-A ufw6-before-output -m rt --rt-type 0 -j DROP + +# quickly process packets for which we already have a connection +-A ufw6-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A ufw6-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A ufw6-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT + +# drop INVALID packets (logs these in loglevel medium and higher) +-A ufw6-before-input -m conntrack --ctstate INVALID -j ufw6-logging-deny +-A ufw6-before-input -m conntrack --ctstate INVALID -j DROP + +# ok icmp codes for INPUT (rfc4890, 4.4.1 and 4.4.2) +-A ufw6-before-input -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT +# codes 0 and 1 +-A ufw6-before-input -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT +# codes 0-2 +-A ufw6-before-input -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type echo-reply -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT +# IND solicitation +-A ufw6-before-input -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT +# IND advertisement +-A ufw6-before-input -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT +# MLD query +-A ufw6-before-input -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT +# MLD report +-A ufw6-before-input -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT +# MLD done +-A ufw6-before-input -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT +# MLD report v2 +-A ufw6-before-input -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT +# SEND certificate path solicitation +-A ufw6-before-input -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT +# SEND certificate path advertisement +-A ufw6-before-input -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT +# MR advertisement +-A ufw6-before-input -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT +# MR solicitation +-A ufw6-before-input -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT +# MR termination +-A ufw6-before-input -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT + +# ok icmp codes for OUTPUT (rfc4890, 4.4.1 and 4.4.2) +-A ufw6-before-output -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT +-A ufw6-before-output -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT +# codes 0 and 1 +-A ufw6-before-output -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT +# codes 0-2 +-A ufw6-before-output -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -j ACCEPT +-A ufw6-before-input -p icmpv6 --icmpv6-type echo-reply -j ACCEPT +-A ufw6-before-output -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-output -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-output -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT +-A ufw6-before-output -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT +# IND solicitation +-A ufw6-before-output -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT +# IND advertisement +-A ufw6-before-output -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT +# MLD query +-A ufw6-before-output -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT +# MLD report +-A ufw6-before-output -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT +# MLD done +-A ufw6-before-output -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT +# MLD report v2 +-A ufw6-before-output -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT +# SEND certificate path solicitation +-A ufw6-before-output -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT +# SEND certificate path advertisement +-A ufw6-before-output -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT +# MR advertisement +-A ufw6-before-output -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT +# MR solicitation +-A ufw6-before-output -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT +# MR termination +-A ufw6-before-output -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT + +# ok icmp codes for FORWARD (rfc4890, 4.3.1) +-A ufw6-before-forward -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT +-A ufw6-before-forward -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT +# codes 0 and 1 +-A ufw6-before-forward -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT +# codes 0-2 +-A ufw6-before-forward -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT +-A ufw6-before-forward -p icmpv6 --icmpv6-type echo-request -j ACCEPT +-A ufw6-before-forward -p icmpv6 --icmpv6-type echo-reply -j ACCEPT +# ok icmp codes for FORWARD (rfc4890, 4.3.2) +# Home Agent Address Discovery Reques +-A ufw6-before-input -p icmpv6 --icmpv6-type 144 -j ACCEPT +# Home Agent Address Discovery Reply +-A ufw6-before-input -p icmpv6 --icmpv6-type 145 -j ACCEPT +# Mobile Prefix Solicitation +-A ufw6-before-input -p icmpv6 --icmpv6-type 146 -j ACCEPT +# Mobile Prefix Advertisement +-A ufw6-before-input -p icmpv6 --icmpv6-type 147 -j ACCEPT + +# allow dhcp client to work +-A ufw6-before-input -p udp -s fe80::/10 --sport 547 -d fe80::/10 --dport 546 -j ACCEPT + +# allow MULTICAST mDNS for service discovery +-A ufw6-before-input -p udp -d ff02::fb --dport 5353 -j ACCEPT + +# allow MULTICAST UPnP for service discovery +-A ufw6-before-input -p udp -d ff02::f --dport 1900 -j ACCEPT + +# don't delete the 'COMMIT' line or these rules won't be processed +COMMIT diff --git a/archlive/airootfs/etc/ufw/sysctl.conf b/archlive/airootfs/etc/ufw/sysctl.conf new file mode 100644 index 00000000..87070322 --- /dev/null +++ b/archlive/airootfs/etc/ufw/sysctl.conf @@ -0,0 +1,57 @@ +# +# Configuration file for setting network variables. Please note these settings +# override /etc/sysctl.conf. If you prefer to use /etc/sysctl.conf, please +# adjust IPT_SYSCTL in /etc/default/ufw. +# + +# Uncomment this to allow this host to route packets between interfaces +#net/ipv4/ip_forward=1 +#net/ipv6/conf/default/forwarding=1 +#net/ipv6/conf/all/forwarding=1 + +# Turn on Source Address Verification in all interfaces to prevent some +# spoofing attacks +net/ipv4/conf/default/rp_filter=1 +net/ipv4/conf/all/rp_filter=1 + +# Do not accept IP source route packets (we are not a router) +net/ipv4/conf/default/accept_source_route=0 +net/ipv4/conf/all/accept_source_route=0 +net/ipv6/conf/default/accept_source_route=0 +net/ipv6/conf/all/accept_source_route=0 + +# Disable ICMP redirects. ICMP redirects are rarely used but can be used in +# MITM (man-in-the-middle) attacks. Disabling ICMP may disrupt legitimate +# traffic to those sites. +net/ipv4/conf/default/accept_redirects=0 +net/ipv4/conf/all/accept_redirects=0 +net/ipv6/conf/default/accept_redirects=0 +net/ipv6/conf/all/accept_redirects=0 + +# Ignore bogus ICMP errors +net/ipv4/icmp_echo_ignore_broadcasts=1 +net/ipv4/icmp_ignore_bogus_error_responses=1 +net/ipv4/icmp_echo_ignore_all=0 + +# Don't log Martian Packets (impossible packets) +net/ipv4/conf/default/log_martians=0 +net/ipv4/conf/all/log_martians=0 + +# Change to '1' to enable TCP/IP SYN cookies This disables TCP Window Scaling +# (http://lkml.org/lkml/2008/2/5/167) +net/ipv4/tcp_syncookies=0 + +#net/ipv4/tcp_fin_timeout=30 +#net/ipv4/tcp_keepalive_intvl=1800 + +# normally allowing tcp_sack is ok, but if going through OpenBSD 3.8 RELEASE or +# earlier pf firewall, should set this to 0 +net/ipv4/tcp_sack=1 + +# Uncomment this to turn off ipv6 autoconfiguration +#net/ipv6/conf/default/autoconf=0 +#net/ipv6/conf/all/autoconf=0 + +# Uncomment this to enable ipv6 privacy addressing +#net/ipv6/conf/default/use_tempaddr=2 +#net/ipv6/conf/all/use_tempaddr=2 diff --git a/archlive/airootfs/etc/ufw/ufw.conf b/archlive/airootfs/etc/ufw/ufw.conf new file mode 100644 index 00000000..28fe5341 --- /dev/null +++ b/archlive/airootfs/etc/ufw/ufw.conf @@ -0,0 +1,10 @@ +# /etc/ufw/ufw.conf +# + +# Set to yes to start on boot. If setting this remotely, be sure to add a rule +# to allow your remote connection before starting ufw. Eg: 'ufw allow 22/tcp' +ENABLED=yes + +# Please use the 'ufw' command to set the loglevel. Eg: 'ufw logging medium'. +# See 'man ufw' for details. +LOGLEVEL=low diff --git a/archlive/airootfs/etc/ufw/user.rules b/archlive/airootfs/etc/ufw/user.rules new file mode 100644 index 00000000..aa30960c --- /dev/null +++ b/archlive/airootfs/etc/ufw/user.rules @@ -0,0 +1,39 @@ +*filter +:ufw-user-input - [0:0] +:ufw-user-output - [0:0] +:ufw-user-forward - [0:0] +:ufw-before-logging-input - [0:0] +:ufw-before-logging-output - [0:0] +:ufw-before-logging-forward - [0:0] +:ufw-user-logging-input - [0:0] +:ufw-user-logging-output - [0:0] +:ufw-user-logging-forward - [0:0] +:ufw-after-logging-input - [0:0] +:ufw-after-logging-output - [0:0] +:ufw-after-logging-forward - [0:0] +:ufw-logging-deny - [0:0] +:ufw-logging-allow - [0:0] +:ufw-user-limit - [0:0] +:ufw-user-limit-accept - [0:0] +### RULES ### + +### tuple ### allow any 22 0.0.0.0/0 any 0.0.0.0/0 in +-A ufw-user-input -p tcp --dport 22 -j ACCEPT +-A ufw-user-input -p udp --dport 22 -j ACCEPT + +### END RULES ### + +### LOGGING ### +-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-I ufw-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10 +-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10 +### END LOGGING ### + +### RATE LIMITING ### +-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] " +-A ufw-user-limit -j REJECT +-A ufw-user-limit-accept -j ACCEPT +### END RATE LIMITING ### +COMMIT diff --git a/archlive/airootfs/etc/ufw/user6.rules b/archlive/airootfs/etc/ufw/user6.rules new file mode 100644 index 00000000..47d96108 --- /dev/null +++ b/archlive/airootfs/etc/ufw/user6.rules @@ -0,0 +1,39 @@ +*filter +:ufw6-user-input - [0:0] +:ufw6-user-output - [0:0] +:ufw6-user-forward - [0:0] +:ufw6-before-logging-input - [0:0] +:ufw6-before-logging-output - [0:0] +:ufw6-before-logging-forward - [0:0] +:ufw6-user-logging-input - [0:0] +:ufw6-user-logging-output - [0:0] +:ufw6-user-logging-forward - [0:0] +:ufw6-after-logging-input - [0:0] +:ufw6-after-logging-output - [0:0] +:ufw6-after-logging-forward - [0:0] +:ufw6-logging-deny - [0:0] +:ufw6-logging-allow - [0:0] +:ufw6-user-limit - [0:0] +:ufw6-user-limit-accept - [0:0] +### RULES ### + +### tuple ### allow any 22 ::/0 any ::/0 in +-A ufw6-user-input -p tcp --dport 22 -j ACCEPT +-A ufw6-user-input -p udp --dport 22 -j ACCEPT + +### END RULES ### + +### LOGGING ### +-A ufw6-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-A ufw6-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-I ufw6-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10 +-A ufw6-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 +-A ufw6-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10 +### END LOGGING ### + +### RATE LIMITING ### +-A ufw6-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] " +-A ufw6-user-limit -j REJECT +-A ufw6-user-limit-accept -j ACCEPT +### END RATE LIMITING ### +COMMIT diff --git a/archlive/airootfs/root/customize_airootfs.sh b/archlive/airootfs/root/customize_airootfs.sh index ba4b425c..7eba30ce 100644 --- a/archlive/airootfs/root/customize_airootfs.sh +++ b/archlive/airootfs/root/customize_airootfs.sh @@ -2,18 +2,23 @@ set -e -u -# Locale +# Set hostname +echo "wk-arch" > /etc/hostname +echo "127.0.1.1 wk-arch.localdomain wk-arch" >> /etc/hosts + +# Set locale sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen locale-gen # Time Settings ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime -#sed -i 's/#FallbackNTP/NTP/' /etc/systemd/timesyncd.conf +sed -i 's/#FallbackNTP/NTP/' /etc/systemd/timesyncd.conf #timedatectl set-ntp true # root user settings usermod -s /usr/bin/zsh root cp -aT /etc/skel/ /root/ +rm /root/.zlogin chmod 700 /root echo "root:Abracadabra" | chpasswd @@ -27,12 +32,16 @@ echo "wktech:Abracadabra" | chpasswd # Enable sudo for %wheel echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers -# Set pacman mirrorlist -echo 'Server = http://arch.localmsp.org/arch/$repo/os/$arch' > /etc/pacman.d/mirrorlist -echo 'Server = http://arch.mirrors.ionfish.org/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://lug.mtu.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirror.rit.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirror.us.leaseweb.net/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +# Set mirrorlist. Process: +## Replace newlines with ~ to treat as single line +## Uncomment all US mirrors +## Resetore newlines +## Rank mirrors to only use the top 10 mirrors +mv -b /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak +tmp_file="$(mktemp)" +tr '\n' '~' < /etc/pacman.d/mirrorlist.bak | sed -r 's/([0-1]\.[0-9], United States)~#/\1~/g' | tr '~' '\n' > "$tmp_file" +rankmirrors -n 10 "$tmp_file" | egrep '^S' > /etc/pacman.d/mirrorlist +rm -v "$tmp_file" # journald settings (from archiso) sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf @@ -42,24 +51,5 @@ sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' /etc/systemd/logind.conf sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' /etc/systemd/logind.conf sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf -# DNS Settings -#echo "nameserver 8.8.8.8" > /etc/resolv.conf -#echo "nameserver 8.8.4.4" >> /etc/resolv.conf -#echo "nameserver 2001:4860:4860::8888" >> /etc/resolv.conf -#echo "nameserver 2001:4860:4860::8844" >> /etc/resolv.conf -#echo "nameserver 208.67.222.222" >> /etc/resolv.conf -#echo "nameserver 208.67.220.220" >> /etc/resolv.conf -#echo "nameserver 2620:0:ccc::2" >> /etc/resolv.conf -#echo "nameserver 2620:0:ccd::2" >> /etc/resolv.conf - -# Startup settings -systemctl set-default multi-user.target -#systemctl set-default graphical.target - -# archiso cleanup -for file in /etc/systemd/system/{pacman-init.service,etc-pacman.d-gnupg.mount} /etc/systemd/scripts/choose-mirror /etc/udev/rules.d/81-dhcpcd.rules /etc/initcpio; do - if [ -e "$file" ]; then - rm "$file" -R - fi -done - +#systemctl enable pacman-init.service choose-mirror.service +systemctl set-default graphical.target diff --git a/archlive/airootfs/usr/local/bin/arch.conf b/archlive/airootfs/usr/local/bin/arch.conf index 1cda4d51..06d8c761 100644 --- a/archlive/airootfs/usr/local/bin/arch.conf +++ b/archlive/airootfs/usr/local/bin/arch.conf @@ -3,14 +3,14 @@ # Backup options declare -a BACKUP_1=( "ServerOne" # Server name - "10.0.0.10" # IP + "10.0.0.10" # IP "Backups" # Share name "backup" # User name "Abracadabra" # Password ) declare -a BACKUP_2=( "ServerTwo" # Server name - "10.0.0.11" # IP + "10.0.0.11" # IP "Backups" # Share name "backup" # User name "Abracadabra" # Password @@ -31,7 +31,7 @@ declare -a BACKUP_4=( ) # Hardware testing options -TEST_CPU_LENGTH="7" # Time in minutes to run Prime95 +TEST_CPU_LENGTH="7" # Time in minutes to run Prime95 # Network options WIFI_SSID="SomeWiFi" # Use the 2.4Ghz network for better compatability @@ -39,6 +39,6 @@ WIFI_PASS="Abracadabra" # Results upload options SKIP_UPLOAD="False" # Set to "True" to disable all uploads -DIAG_SERVER="10.0.0.10" # Use the IP and not the server name +DIAG_SERVER="10.0.0.10" # Use the IP and not the server name +DIAG_SHARE="/srv/ClientInfo" # Full path to shared folder (relative to the server's root) DIAG_USER="wkdiag" # User used to connect to the server via SSH -DIAG_DEST="/srv/Diagnostics" # Full path to dest folder (on server) diff --git a/archlive/airootfs/usr/local/bin/connect-to-network b/archlive/airootfs/usr/local/bin/connect-to-network index 95daacf4..487877bf 100644 --- a/archlive/airootfs/usr/local/bin/connect-to-network +++ b/archlive/airootfs/usr/local/bin/connect-to-network @@ -11,20 +11,21 @@ die () { exit 1 } +function test_connection() { + if ip a | grep -Eq '(10.[0-9]+|172.(1[6-9]|2[0-9]|3[0-1]).[0-9]+|192.168).[0-9]+.[0-9]+'; then + return 0 + else + return 1 + fi +} + # Load settings if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then source "/run/archiso/bootmnt/config/arch.conf" || \ - die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" + die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" else source "/usr/local/bin/arch.conf" || \ - die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" - echo -n "ERROR: Settings file on ARCH_WK media missing. Using build version for now" - sleep 1s - echo -n "." - sleep 1s - echo -n "." - sleep 1s - echo "." + die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" fi # Init @@ -32,7 +33,7 @@ WIFI_SSID="${WIFI_SSID}" WIFI_PASS="${WIFI_PASS}" # Connect to network -if ! ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+'; then +if ! test_connection; then # LAN if ! ip l | grep -Eq '[0-9]+: +en'; then ## Reload the tg3/broadcom driver (known fix for some Dell systems) @@ -46,13 +47,18 @@ if ! ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+'; then # WiFi if ip l | grep -Eq '[0-9]+: +wl'; then ## Skip if we're already connected (i.e. the code above worked) - if ! ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+'; then + if ! test_connection; then echo "Attempting to connect to ${WIFI_SSID}..." - netctl start wireless + sudo start-wifi sleep 5s fi fi fi # Done -exit 0 +if test_connection; then + exit 0 +else + exit 1 +fi + diff --git a/archlive/airootfs/usr/local/bin/hw-diags b/archlive/airootfs/usr/local/bin/hw-diags index 311e8f8e..621ac0e8 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags +++ b/archlive/airootfs/usr/local/bin/hw-diags @@ -3,84 +3,128 @@ ## WK HW diagnostics - Launcher MODE="$1" +SHOW_MENU="True" +if [[ "$MODE" =~ ^(all|cpu|drives|foh|smart|badblocks)$ ]]; then + SHOW_MENU="False" +fi -# Ensure a proper mode is selected +function pause() { + # Pause to review output + echo "" + echo "$1" + read +} + +function menu() { + while :; do + if [[ "$SHOW_MENU" == "False" ]]; then + break + else + clear + echo "Hardware Diagnostics" + echo "────────────────────" + echo "0: Quick drive test" + echo "1: All tests" + echo "2: Prime95" + echo "3: SMART & badblocks" + echo "4: SMART" + echo "5: badblocks" + echo "────────────────────" + #if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then + # echo "6: Graphics Test - FurMark" + # echo "7: Graphics Test - Piano" + # echo "8: Graphics Test - Volplosion" + #fi + echo "A: Speaker Test" + if [[ -n $DISPLAY ]]; then + echo "K: Keyboard Test" + fi + echo "N: Network Test" + echo "────────────────────" + echo "M: Screen Saver - Matrix" + echo "P: Screen Saver - Pipes" + echo "────────────────────" + echo "Q: Quit" + if [[ "$MODE" =~ ^cli$ ]]; then + echo "R: Reboot" + echo "S: Shutdown" + fi + echo "" + read -r -p "Please make a selection: " MODE + + # Check input + case $MODE in + 0) + MODE=foh + break;; + 1) + MODE=all + break;; + 2) + MODE=cpu + break;; + 3) + MODE=drives + break;; + 4) + MODE=smart + break;; + 5) + MODE=badblocks + break;; + #6) + # if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then + # gputest /fullscreen /test=fur + # fi + # ;; + #7) + # if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then + # gputest /fullscreen /test=pixmark_piano + # fi + # ;; + #8) + # if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then + # gputest /fullscreen /test=pixmark_volplosion + # fi + # ;; + a|A|audio|Audio) + clear + hw-diags-audio + pause "Press Enter to return to menu...";; + k|K|keyboard|Keyboard) + if [[ -n $DISPLAY ]]; then + xev + fi + ;; + m|M) + cmatrix -abs + reset + clear;; + n|N) + clear + hw-diags-network + pause "Press Enter to return to menu...";; + p|P) + pipes -t 0 -t 1 -t 2 -t 3 -p 5 -R -r 4000 + reset + clear;; + q|Q|quit|Quit) + exit 0;; + r|R) + sudo reboot;; + s|S) + sudo poweroff;; + esac + fi + done +} + +# Main Loop while :; do - if [[ "$MODE" =~ ^(all|cpu|drives|foh|smart|badblocks)$ ]]; then + menu + tmux new-session -s 'hw-session' -n 'hw-window' "hw-diags-inner $MODE" + if [[ "$SHOW_MENU" == "False" ]]; then break - else - clear - echo "Hardware Diagnostics" - echo "────────────────────" - echo "0: Quick drive test" - echo "1: All tests" - echo "2: Prime95" - echo "3: SMART & badblocks" - echo "4: SMART" - echo "5: badblocks" - echo "────────────────────" - if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then - echo "6: Graphics Test - FurMark" - echo "7: Graphics Test - Piano" - echo "8: Graphics Test - Volplosion" - fi - echo "A: Speaker Test" - if [[ -n $DISPLAY ]]; then - echo "K: Keyboard Test" - fi - echo "────────────────────" - echo "" - echo "Q: Quit" - echo "" - read -r -p "Please make a selection: " MODE - - # Check input - case $MODE in - 0) - MODE=foh - break;; - 1) - MODE=all - break;; - 2) - MODE=cpu - break;; - 3) - MODE=drives - break;; - 4) - MODE=smart - break;; - 5) - MODE=badblocks - break;; - 6) - if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then - gputest /fullscreen /test=fur - fi - ;; - 7) - if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then - gputest /fullscreen /test=pixmark_piano - fi - ;; - 8) - if [[ -n $DISPLAY ]] && [[ $(getconf LONG_BIT) -eq "64" ]]; then - gputest /fullscreen /test=pixmark_volplosion - fi - ;; - a|A|audio|Audio) - hw-diags-audio;; - k|K|keyboard|Keyboard) - if [[ -n $DISPLAY ]]; then - xev - fi - ;; - q|Q|quit|Quit) - exit 1;; - esac fi done -# Start tmux -tmux new-session -s 'hw-session' -n 'hw-window' "hw-diags-inner $MODE" diff --git a/archlive/airootfs/usr/local/bin/hw-diags-audio b/archlive/airootfs/usr/local/bin/hw-diags-audio index eb6feef9..f46135fb 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-audio +++ b/archlive/airootfs/usr/local/bin/hw-diags-audio @@ -9,3 +9,4 @@ amixer -q set "PCM" 90% unmute speaker-test -c 2 -l 1 -t pink # speaker-test -c 2 -l 1 -t sine speaker-test -c 2 -l 1 -t wav + diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/archlive/airootfs/usr/local/bin/hw-diags-inner index 2381af57..a14dff14 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-inner +++ b/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -10,17 +10,10 @@ die () { # Load settings if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then source "/run/archiso/bootmnt/config/arch.conf" || \ - die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" + die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" else source "/usr/local/bin/arch.conf" || \ - die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" - echo -n "ERROR: Settings file on ARCH_WK media missing. Using build version for now" - sleep 1s - echo -n "." - sleep 1s - echo -n "." - sleep 1s - echo "." + die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" fi # Get TICKET @@ -48,7 +41,9 @@ done DIAG_DATE="$(date "+%F_%H%M")" DIAG_SERVER_AVAIL="False" DIAG_SERVER="${DIAG_SERVER}" -DIAG_DEST="${DIAG_DEST}/${TICKET}/${DIAG_DATE}" +DIAG_SHARE="${DIAG_SHARE}" +DIAG_DEST="${DIAG_SHARE}/${TICKET}" +DIAG_UPLOAD_NAME="HW-Diagnostics_${DIAG_DATE}" DIAG_USER="${DIAG_USER}" TMP_DIR="$(mktemp -d)" ERRORS="False" @@ -76,9 +71,10 @@ if [[ "$SKIP_UPLOAD" != "True" ]]; then connect-to-network # Test connection to DIAG_SERVER - if ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+' && \ + if ip a | grep -Eq '(10.[0-9]+|172.(1[6-9]|2[0-9]|3[0-1])|192.168).[0-9]+.[0-9]+' && \ ping -c 1 -q $DIAG_SERVER >/dev/null 2>&1; then DIAG_SERVER_AVAIL="True" + ssh-add ssh $DIAG_USER@$DIAG_SERVER mkdir -p "$DIAG_DEST" ssh $DIAG_USER@$DIAG_SERVER chmod 755 "$DIAG_DEST" fi @@ -196,7 +192,7 @@ function update_progress { # Update Server if [[ "$DIAG_SERVER_AVAIL" == "True" ]]; then - rsync -aqz --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "$TMP_DIR/" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/" --exclude '*.out' + rsync -aqz --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "$TMP_DIR/" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/${DIAG_UPLOAD_NAME}/" --exclude '*.out' fi } @@ -497,6 +493,7 @@ if [[ "$TEST_SMART" == "True" ]] || \ echo "" done fi +update_progress # System info dump sudo inxi -CDdGlMmNopRsc 0 | grep -Ev '(/dev/ram|No RAID devices|Display Server|multisession)' > "system_info.txt" @@ -505,11 +502,11 @@ sudo inxi -CDdGlMmNopRsc 0 | grep -Ev '(/dev/ram|No RAID devices|Display Server| mkdir "$HOME/Tickets/$TICKET" -p 2>/dev/null rsync -aS --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "$TMP_DIR/" "$HOME/Tickets/$TICKET/" popd >/dev/null -cd "$HOME/Tickets" && tar czf "${TICKET}.tgz" "$TICKET" +cd "$HOME/Tickets" && tar czf "${DIAG_UPLOAD_NAME}.tgz" "$TICKET" # Update Server if [[ "$DIAG_SERVER_AVAIL" == "True" ]]; then - rsync -aqz --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "$TMP_DIR/" "${TICKET}.tgz" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/" --exclude '*.out' + rsync -aqz --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "${DIAG_UPLOAD_NAME}.tgz" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/" fi # End diff --git a/archlive/airootfs/usr/local/bin/hw-diags-network b/archlive/airootfs/usr/local/bin/hw-diags-network new file mode 100644 index 00000000..b1ba805d --- /dev/null +++ b/archlive/airootfs/usr/local/bin/hw-diags-network @@ -0,0 +1,73 @@ +#!/bin/bash +# +## WK HW diagnostics - Network + +function test_connection() { + cmd="a" + if [[ -e "/sys/class/net/$1" ]]; then + cmd="a show $1" + fi + if ip $cmd | grep -Eq '(10.[0-9]+|172.(1[6-9]|2[0-9]|3[0-1]).[0-9]+|192.168).[0-9]+.[0-9]+'; then + return 0 + else + return 1 + fi +} + + +CLEAR="\e[0m" +RED="\e[31m" +GREEN="\e[32m" +YELLOW="\e[33m" +BLUE="\e[34m" + +# Header +echo "WK HW Diagnostics - Network" +echo "" + +# Start Wifi if necessary +echo "Initializing..." +connect-to-network >/dev/null 2>&1 + +# Check network connection +echo -n "Network connection: " +if test_connection; then + echo -e "${GREEN}OK${CLEAR}" +else + echo -e "${RED}No access${CLEAR}" + exit 1 +fi + +# Check IP addresses +for d in /sys/class/net/*; do + device="$(basename $d)" + if [ "$device" != "lo" ]; then + if test_connection $device; then + ip="$(ip a show $device | egrep 'inet [0-9]' | sed -r 's#.*inet (.*?/[0-9]+).*#\1#')" + echo "$device: $ip" | awk '{printf " %-16s %s\n", $1, $2}' + fi + fi +done + +# Check internet connection +echo -n "Internet connection: " +if ping -c 2 -q 8.8.8.8 >/dev/null 2>&1; then + echo -e "${GREEN}OK${CLEAR}" +else + echo -e "${RED}No access${CLEAR}" + exit 1 +fi + +# Check DNS +echo -n "DNS Resolution: " +if ping -c 2 -q google.com >/dev/null 2>&1; then + echo -e "${GREEN}OK${CLEAR}" +else + echo -e "${RED}Unable to resolve google.com${CLEAR}" + exit 1 +fi + +# Check speed +echo "Speedtest:" +speedtest-cli --simple | awk '{printf " %-16s %6.2f %s\n", $1, $2, $3}' + diff --git a/archlive/airootfs/usr/local/bin/mount-all-volumes b/archlive/airootfs/usr/local/bin/mount-all-volumes index 40ddb671..417fa27c 100644 --- a/archlive/airootfs/usr/local/bin/mount-all-volumes +++ b/archlive/airootfs/usr/local/bin/mount-all-volumes @@ -8,6 +8,8 @@ dd bs=1K count=64 if=/dev/zero of="$TMP_FILE" >/dev/null 2>&1 mkfs.msdos "$TMP_FILE" >/dev/null 2>&1 udevil mount -o ro "$TMP_FILE" >/dev/null 2>&1 udevil umount "$TMP_FILE" >/dev/null 2>&1 +sleep 1s +rmdir /media/wktech >/dev/null 2>&1 # Mount all volumes echo "Mounting all volumes" @@ -15,12 +17,12 @@ regex="/dev/((h|s)d[a-z]|md)[0-9]+" for volume in $(inxi -Dopxx | grep -E "$regex" | sed -r "s#.*($regex).*#\1#" | sort); do if grep -q "$volume" /proc/mounts; then if ! mount | grep "/run/archiso/bootmnt" | grep -q "$volume"; then - # Show what's already mounted except the ARCH_WK boot device - echo "$volume: (Already) mounted at $(mount | grep "$volume" | awk '{print $3}') ($(df -h "$volume" | tail -1 | awk '{print $3, $4}' | sed -r 's/(K|M|G|T|) (.*[0-9])(K|M|G|T|)$/ \1b used, \2 \3b free/'))" + # Show what's already mounted except the WK_ARCH boot device + echo "$volume: (Already) mounted $(mount | grep "$volume" | sed -r 's/^\S+ (on.*) type .*/\1/') ($(df -h "$volume" | tail -1 | awk '{print $3, $4}' | sed -r 's/(K|M|G|T|) (.*[0-9])(K|M|G|T|)$/ \1b used, \2 \3b free/'))" fi else if udevil mount -o ro $volume >/dev/null 2>&1; then - echo "$volume: Mounted at $(mount | grep "$volume" | awk '{print $3}') ($(df -h "$volume" | tail -1 | awk '{print $3, $4}' | sed -r 's/(K|M|G|T|) (.*[0-9])(K|M|G|T|)$/ \1b used, \2 \3b free/'))" + echo "$volume: Mounted $(mount | grep "$volume" | sed -r 's/^\S+ (on.*) type .*/\1/') ($(df -h "$volume" | tail -1 | awk '{print $3, $4}' | sed -r 's/(K|M|G|T|) (.*[0-9])(K|M|G|T|)$/ \1b used, \2 \3b free/'))" else echo "$volume: Failed to mount" fi diff --git a/archlive/airootfs/usr/local/bin/mount-backup-shares b/archlive/airootfs/usr/local/bin/mount-backup-shares index 79f51bad..f92675ec 100644 --- a/archlive/airootfs/usr/local/bin/mount-backup-shares +++ b/archlive/airootfs/usr/local/bin/mount-backup-shares @@ -10,17 +10,10 @@ die () { # Load settings if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then source "/run/archiso/bootmnt/config/arch.conf" || \ - die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" + die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" else source "/usr/local/bin/arch.conf" || \ - die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" - echo -n "ERROR: Settings file on ARCH_WK media missing. Using build version for now" - sleep 1s - echo -n "." - sleep 1s - echo -n "." - sleep 1s - echo "." + die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" fi # Connect to a network diff --git a/archlive/airootfs/usr/local/bin/start-wifi b/archlive/airootfs/usr/local/bin/start-wifi new file mode 100644 index 00000000..02a34e9d --- /dev/null +++ b/archlive/airootfs/usr/local/bin/start-wifi @@ -0,0 +1,55 @@ +#!/bin/bash +# +## Creates network configs for all WLAN adapters + + +die () { + echo "$0:" "$@" >&2 + exit 1 +} + +# Load settings +if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then + source "/run/archiso/bootmnt/config/arch.conf" || \ + die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" +else + source "/usr/local/bin/arch.conf" || \ + die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" +fi + +# Init +WIFI_SSID="${WIFI_SSID}" +WIFI_PASS="${WIFI_PASS}" +metric_value=20 + +# Add WLAN cards to config +for d in /sys/class/net/wl*; do + device="$(basename $d)" + # Create networkd entry + echo "[Match]" > /etc/systemd/network/$device.network + echo "Name=$device" >> /etc/systemd/network/$device.network + echo "" >> /etc/systemd/network/$device.network + echo "[Network]" >> /etc/systemd/network/$device.network + echo "DHCP=yes" >> /etc/systemd/network/$device.network + echo "" >> /etc/systemd/network/$device.network + echo "[DHCP]" >> /etc/systemd/network/$device.network + echo "RouteMetric=$metric_value" >> /etc/systemd/network/$device.network + metric_value=$((metric_value+1)) + + # Create wpa_supplicant entry + if [[ -f "/run/archiso/bootmnt/config/wifi.conf" ]]; then + cp -f "/run/archiso/bootmnt/config/wifi.conf" "/etc/wpa_supplicant/wpa_supplicant-$device.conf" + elif [[ -f "/usr/local/bin/arch.conf" ]]; then + cp -f "/usr/local/bin/arch.conf" "/etc/wpa_supplicant/wpa_supplicant-$device.conf" + else + die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" + fi +done + +# Enable WLAN devices +systemctl restart systemd-networkd.service +for d in /sys/class/net/wl*; do + device="$(basename $d)" + systemctl start wpa_supplicant@$device.service +done + diff --git a/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop b/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop index 02995642..f502d1a2 100644 --- a/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop +++ b/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop @@ -2,8 +2,8 @@ Version=1.0 Type=Application Name=Hardware Diagnostics -Comment= -Exec=urxvt -title "Hardware Diagnostics" -hold -e hw-diags +Comment=Hardware Diagnostics +Exec=urxvt -title "Hardware Diagnostics" -e hw-diags Icon=xcos Path= Terminal=false diff --git a/archlive/airootfs/usr/share/applications/Hardware Information.desktop b/archlive/airootfs/usr/share/applications/Hardware Information.desktop index afe334bb..432cb2cb 100644 --- a/archlive/airootfs/usr/share/applications/Hardware Information.desktop +++ b/archlive/airootfs/usr/share/applications/Hardware Information.desktop @@ -2,7 +2,7 @@ Version=1.0 Type=Application Name=Hardware Information -Comment= +Comment=Hardware Information Exec=hardinfo Icon=hardinfo Path= diff --git a/archlive/airootfs/usr/share/applications/NetworkTest.desktop b/archlive/airootfs/usr/share/applications/NetworkTest.desktop new file mode 100644 index 00000000..c89e0ae1 --- /dev/null +++ b/archlive/airootfs/usr/share/applications/NetworkTest.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=NetworkTest +Comment=Diagnose network connectivity +Exec=urxvt -title "Network Diagnostics" -hold -e hw-diags-network +Icon=network-workgroup +Path= +Terminal=false +StartupNotify=false diff --git a/archlive/packages.both b/archlive/packages.both index a765d07a..7061a707 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -1,14 +1,17 @@ -arch-install-scripts aic94xx-firmware alsa-utils antiword arc-icon-theme-git -b43-firmware +arch-install-scripts +b43-fwcutter +bash-pipes +bc btrfs-progs chntpw -clonezilla +cmatrix colordiff conky +cower crda curl darkhttpd @@ -21,35 +24,35 @@ dnsmasq dnsutils dos2unix dosfstools +e2fsprogs elinks ethtool exfat-utils f2fs-tools ffmpeg fsarchiver -gcc-libs gnome-keyring gnu-netcat gparted gptfdisk grub gsmartcontrol -gtk-engine-murrine gtk-theme-arc-git hardinfo hdparm hexedit hfsprogs htop -ifplugd inxi ipw2100-fw ipw2200-fw -iw +irssi ldns lftp libewf -librsvg +libinput +lightdm +lightdm-gtk-greeter linux-atm linux-firmware lm_sensors @@ -57,9 +60,8 @@ lsscsi mc mdadm mediainfo -mesa mesa-demos -midori-gtk2 +midori mkvtoolnix-cli mprime-bin mpv @@ -76,16 +78,17 @@ ntp numix-circle-icon-theme-git openconnect openssh +openvpn p7zip partclone parted partimage ppp pptpclient -pygtk -python2 refind-efi +reiserfsprogs rfkill +rng-tools rp-pppoe rsync rxvt-unicode @@ -100,23 +103,28 @@ terminus-font testdisk-wip tk tmux -truecrypt +tree ttf-inconsolata udevil udisks2 +ufw unzip usb_modeswitch +veracrypt vim +virtualbox-guest-modules-arch +virtualbox-guest-utils-nox vpnc wd719x-firmware wget wimlib wireless_tools -wpa_supplicant +wpa_actiond wvdial -xf86-input-synaptics +xf86-input-libinput xf86-video-amdgpu xf86-video-ati +xf86-video-fbdev xf86-video-intel xf86-video-nouveau xf86-video-vesa @@ -127,6 +135,6 @@ xorg-server xorg-server-utils xorg-xdpyinfo xorg-xev -xorg-xinit +xorg-xinput zd1211-firmware zsh diff --git a/archlive/packages.x86_64 b/archlive/packages.x86_64 index aa6a8d31..93647f14 100644 --- a/archlive/packages.x86_64 +++ b/archlive/packages.x86_64 @@ -1,2 +1 @@ broadcom-wl -gputest diff --git a/archlive/pacman.conf b/archlive/pacman.conf index 858b7c1b..aed6a94d 100644 --- a/archlive/pacman.conf +++ b/archlive/pacman.conf @@ -71,7 +71,7 @@ LocalFileSigLevel = Optional [customrepo] SigLevel = Optional TrustAll -Server = file:///root/WK-Arch/custom-repo/$arch +Server = file:///root/wk-arch/custom-repo/$arch #[testing] #Include = /etc/pacman.d/mirrorlist @@ -88,3 +88,9 @@ Include = /etc/pacman.d/mirrorlist [community] Include = /etc/pacman.d/mirrorlist +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs + diff --git a/build-wk b/build-wk index 07294750..630692cc 100644 --- a/build-wk +++ b/build-wk @@ -1,13 +1,31 @@ #!/bin/bash # Set Vars -TMP_DIR="$(pwd)/wk_tmp" -OUT_DIR="$TMP_DIR/out" +LOG_DIR="/$HOME/ArchBuilds/BuildLogs" +OUT_DIR="/$HOME/ArchBuilds" +TMP_DIR="/$HOME/TMP_WK_ARCH" +DATE="$(date +%F)" +DATETIME="$(date +%F_%H%M)" + +# Ensure that we're running with root privileges +if [[ "$EUID" -ne 0 ]]; then + echo "Please run with root permissions (i.e. sudo $0)" + exit +fi + +# Set permissions +echo "Setting permissions..." +chown root.root archlive -R # Build ISO -mkdir $TMP_DIR +mkdir $LOG_DIR mkdir $OUT_DIR -./archlive/build.sh -N "arch-wk" -V "$(date +%F)" -L "ARCH_WK" -w "$TMP_DIR" -o "$OUT_DIR" -v +mkdir $TMP_DIR +./archlive/build.sh -N "wk-arch" -V "$DATE" -L "WK_ARCH" -w "$TMP_DIR" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" # Cleanup -mv --backup=t -v "$OUT_DIR"/*iso "$HOME/" && rm "$TMP_DIR" -Rf +echo "Removing temp files..." +rm "$TMP_DIR" -Rf | tee -a "$LOG_DIR/$DATETIME.log" + +echo "Reverting permissions..." +chown builduser.builduser archlive -R From 1297501714c2a7ac76bd31a918428b00ada6ba5a Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:56:57 -0800 Subject: [PATCH 010/107] 2017-02: Retroactive Updates * Switched to Firefox * Midori was crashing too often * Rewrote the wallpaper code * Should fix issue where no wallpaper was shown if running from UFD * The pacman mirrorlist is now a static list. * This needs manually updated at build-time Cleanup * Disabled console screen blanking * Fixed typo preventing aliases from loading correctly * mount-all-volumes now removes /media/hhtech properly * Removed leftover netctl files * Removed leftover nodm BREAKING: Moved config files back inside UFD/arch instead of UFD/config --- .../airootfs/etc/netctl/interfaces/wl-any | 7 ---- archlive/airootfs/etc/netctl/wireless | 6 --- archlive/airootfs/etc/pam.d/nodm | 5 --- archlive/airootfs/etc/skel/.aliases | 2 +- .../etc/skel/.config/xfce4/helpers.rc | 2 +- archlive/airootfs/etc/skel/.conky_start | 4 +- archlive/airootfs/etc/skel/.update_wallpaper | 21 ++++++---- archlive/airootfs/etc/skel/.zlogin | 1 + archlive/airootfs/etc/udevil/udevil.conf | 2 +- archlive/airootfs/root/customize_airootfs.sh | 41 +++++++++++++++---- .../airootfs/usr/local/bin/connect-to-network | 8 ++-- archlive/airootfs/usr/local/bin/hw-diags | 7 +++- .../airootfs/usr/local/bin/hw-diags-inner | 8 ++-- .../airootfs/usr/local/bin/mount-all-volumes | 11 +++-- .../usr/local/bin/mount-backup-shares | 8 ++-- archlive/airootfs/usr/local/bin/start-wifi | 8 ++-- archlive/packages.both | 3 +- build-wk | 6 +-- 18 files changed, 82 insertions(+), 68 deletions(-) delete mode 100644 archlive/airootfs/etc/netctl/interfaces/wl-any delete mode 100644 archlive/airootfs/etc/netctl/wireless delete mode 100644 archlive/airootfs/etc/pam.d/nodm diff --git a/archlive/airootfs/etc/netctl/interfaces/wl-any b/archlive/airootfs/etc/netctl/interfaces/wl-any deleted file mode 100644 index 997c0ab3..00000000 --- a/archlive/airootfs/etc/netctl/interfaces/wl-any +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -for interface in /sys/class/net/wl*; do - break -done - -Interface=$(basename $interface) -echo "wl-any: using interface $Interface" diff --git a/archlive/airootfs/etc/netctl/wireless b/archlive/airootfs/etc/netctl/wireless deleted file mode 100644 index b0dee1a9..00000000 --- a/archlive/airootfs/etc/netctl/wireless +++ /dev/null @@ -1,6 +0,0 @@ -Description='A wpa_supplicant configuration file based wireless connection' -Interface=wl-any -Connection=wireless -Security=wpa-config -WPAConfigFile='/run/archiso/bootmnt/config/wifi.conf' -IP=dhcp diff --git a/archlive/airootfs/etc/pam.d/nodm b/archlive/airootfs/etc/pam.d/nodm deleted file mode 100644 index f9d49579..00000000 --- a/archlive/airootfs/etc/pam.d/nodm +++ /dev/null @@ -1,5 +0,0 @@ -#%PAM-1.0 - -auth include system-login -account include system-login -password include system-login diff --git a/archlive/airootfs/etc/skel/.aliases b/archlive/airootfs/etc/skel/.aliases index 1dfb6fa2..62185e55 100644 --- a/archlive/airootfs/etc/skel/.aliases +++ b/archlive/airootfs/etc/skel/.aliases @@ -4,7 +4,7 @@ alias 7z3='7z a -t7z -mx=3' alias 7z5='7z a -t7z -mx=5' alias 7z7='7z a -t7z -mx=7' alias 7z9='7z a -t7z -mx=9' -alias diff='colordiff' -ur +alias diff='colordiff -ur' alias du='du -sch --apparent-size' alias fix-perms='find -type d -exec chmod 755 "{}" \; && find -type f -exec chmod 644 "{}" \;' alias hw-info='sudo inxi -ACDdGlMmNopRsxxc 25' diff --git a/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc b/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc index 61bd79cd..e5d08646 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc +++ b/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc @@ -1,4 +1,4 @@ -WebBrowser=midori +WebBrowser=firefox FileManager=Thunar TerminalEmulator=urxvt diff --git a/archlive/airootfs/etc/skel/.conky_start b/archlive/airootfs/etc/skel/.conky_start index 5c12ed79..c7230b17 100644 --- a/archlive/airootfs/etc/skel/.conky_start +++ b/archlive/airootfs/etc/skel/.conky_start @@ -1,8 +1,8 @@ #!/bin/bash CONKY_RC="$HOME/.conkyrc" -if [[ -f "/run/archiso/bootmnt/config/conky.rc" ]]; then - CONKY_RC="/run/archiso/bootmnt/config/conky.rc" +if [[ -f "/run/archiso/bootmnt/arch/conky.rc" ]]; then + CONKY_RC="/run/archiso/bootmnt/arch/conky.rc" fi sleep 2s && conky -c "${CONKY_RC}" -dq diff --git a/archlive/airootfs/etc/skel/.update_wallpaper b/archlive/airootfs/etc/skel/.update_wallpaper index 0e5d03dc..14f502df 100644 --- a/archlive/airootfs/etc/skel/.update_wallpaper +++ b/archlive/airootfs/etc/skel/.update_wallpaper @@ -1,19 +1,22 @@ #!/bin/bash -UFD_PATH="/run/archiso/bootmnt/config/" -WALLPAPER="/usr/share/wallpaper/current.png" +BOOT_PATH="/run/archiso/bootmnt/arch/" +BURNED_IN="/usr/share/wallpaper/burned.in" +WALLPAPER="$HOME/.wallpaper.png" function link_wall() { sudo rm "$WALLPAPER" - sudo ls -s "$UFD_PATH/Arch.png" "$WALLPAPER" + sudo ln -s "$1" "$WALLPAPER" } -# Check for UFD source -if [[ -f "$UFD_PATH/Arch.png" ]]; then - link_wall "$UFD_PATH/Arch.png" -elif [[ -f "$UFD_PATH/Arch.jpg" ]]; then - link_wall "$UFD_PATH/Arch.jpg" -fi +# Check for wallpaper +## Checks BOOT_PATH and uses the BURNED_IN file if nothing is found +for f in "$BOOT_PATH"/{Arch,arch}.{jpg,png} "$BURNED_IN"; do + if [[ -f "$f" ]]; then + link_wall "$f" + break + fi +done # Update Xfce4 (mostly redundant, but will catch multi-display setups) for monitor in monitor{0..2}; do diff --git a/archlive/airootfs/etc/skel/.zlogin b/archlive/airootfs/etc/skel/.zlogin index ae4dabb9..d428626f 100644 --- a/archlive/airootfs/etc/skel/.zlogin +++ b/archlive/airootfs/etc/skel/.zlogin @@ -1,3 +1,4 @@ +setterm -blank 0 -powerdown 0 if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then hw-diags cli fi diff --git a/archlive/airootfs/etc/udevil/udevil.conf b/archlive/airootfs/etc/udevil/udevil.conf index 92f37043..be24a342 100644 --- a/archlive/airootfs/etc/udevil/udevil.conf +++ b/archlive/airootfs/etc/udevil/udevil.conf @@ -42,7 +42,7 @@ log_keep_days = 10 # Setting allowed_types = * does NOT allow all types, as this is a security # risk, but does allow all recognized types. # allowed_types = $KNOWN_FILESYSTEMS, file, cifs, smbfs, nfs, curlftpfs, ftpfs, sshfs, davfs, tmpfs, ramfs -allowed_types = $KNOWN_FILESYSTEMS, file, cifs, smbfs, nfs, hfsplus +allowed_types = $KNOWN_FILESYSTEMS, file, cifs, smbfs, nfs, hfsplus, tmpfs # allowed_users is a list of users permitted to mount and unmount with udevil. diff --git a/archlive/airootfs/root/customize_airootfs.sh b/archlive/airootfs/root/customize_airootfs.sh index 7eba30ce..520208c7 100644 --- a/archlive/airootfs/root/customize_airootfs.sh +++ b/archlive/airootfs/root/customize_airootfs.sh @@ -3,53 +3,76 @@ set -e -u # Set hostname +echo "[customize_airootfs] INFO: Set hostname" echo "wk-arch" > /etc/hostname echo "127.0.1.1 wk-arch.localdomain wk-arch" >> /etc/hosts # Set locale +echo "[customize_airootfs] INFO: Set locale" sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen locale-gen # Time Settings +echo "[customize_airootfs] INFO: Set time" ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime sed -i 's/#FallbackNTP/NTP/' /etc/systemd/timesyncd.conf #timedatectl set-ntp true # root user settings +echo "[customize_airootfs] INFO: Setup root user" usermod -s /usr/bin/zsh root cp -aT /etc/skel/ /root/ rm /root/.zlogin chmod 700 /root echo "root:Abracadabra" | chpasswd -# Add autologin group +# wktech user settings +echo "[customize_airootfs] INFO: Setup wktech user" groupadd -r autologin - -# Add wktech user useradd -m -s /bin/zsh -G autologin,power,storage,wheel -U wktech echo "wktech:Abracadabra" | chpasswd # Enable sudo for %wheel +echo "[customize_airootfs] INFO: Enable sudo" echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers -# Set mirrorlist. Process: +# Set mirrorlist +echo "[customize_airootfs] INFO: Setup pacman mirrorlist" +## Process: ## Replace newlines with ~ to treat as single line ## Uncomment all US mirrors ## Resetore newlines ## Rank mirrors to only use the top 10 mirrors -mv -b /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak -tmp_file="$(mktemp)" -tr '\n' '~' < /etc/pacman.d/mirrorlist.bak | sed -r 's/([0-1]\.[0-9], United States)~#/\1~/g' | tr '~' '\n' > "$tmp_file" -rankmirrors -n 10 "$tmp_file" | egrep '^S' > /etc/pacman.d/mirrorlist -rm -v "$tmp_file" +### BROKEN ### +#mv -bv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak +#tmp_file="$(mktemp)" +#tr '\n' '~' < /etc/pacman.d/mirrorlist.bak | sed -r 's/([0-1]\.[0-9], United States)~#/\1~/g' | tr '~' '\n' > "$tmp_file" +#rankmirrors -n 10 "$tmp_file" | egrep '^S' > /etc/pacman.d/mirrorlist +#rm -v "$tmp_file" +### List ranked on 2017-02-25 ### +echo 'Server = http://mirror.htnshost.com/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.abscission.net/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirror.lty.me/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://ca.us.mirror.archlinux-br.org/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirror.kaminski.io/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.rit.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirror.us.leaseweb.net/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://archlinux.surlyjake.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.cat.pdx.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist # journald settings (from archiso) +echo "[customize_airootfs] INFO: Setup journald" sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf # logind settings (from archiso) +echo "[customize_airootfs] INFO: Setup logind" sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' /etc/systemd/logind.conf sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' /etc/systemd/logind.conf sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf +echo "[customize_airootfs] INFO: Setup systemd" #systemctl enable pacman-init.service choose-mirror.service systemctl set-default graphical.target + +echo "[customize_airootfs] INFO: Completed." diff --git a/archlive/airootfs/usr/local/bin/connect-to-network b/archlive/airootfs/usr/local/bin/connect-to-network index 487877bf..e335fbf5 100644 --- a/archlive/airootfs/usr/local/bin/connect-to-network +++ b/archlive/airootfs/usr/local/bin/connect-to-network @@ -20,12 +20,12 @@ function test_connection() { } # Load settings -if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then - source "/run/archiso/bootmnt/config/arch.conf" || \ - die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" +if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then + source "/run/archiso/bootmnt/arch/arch.conf" || \ + die "ERROR: failed to load arch.conf (from /run/archiso/bootmnt/arch/)" else source "/usr/local/bin/arch.conf" || \ - die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" + die "ERROR: failed to load arch.conf (from /usr/local/bin/)" fi # Init diff --git a/archlive/airootfs/usr/local/bin/hw-diags b/archlive/airootfs/usr/local/bin/hw-diags index 621ac0e8..ff0f2fe7 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags +++ b/archlive/airootfs/usr/local/bin/hw-diags @@ -8,6 +8,11 @@ if [[ "$MODE" =~ ^(all|cpu|drives|foh|smart|badblocks)$ ]]; then SHOW_MENU="False" fi +SHOW_POWEROPTIONS="False" +if [[ "$MODE" =~ ^cli$ ]]; then + SHOW_POWEROPTIONS="True" +fi + function pause() { # Pause to review output echo "" @@ -45,7 +50,7 @@ function menu() { echo "P: Screen Saver - Pipes" echo "────────────────────" echo "Q: Quit" - if [[ "$MODE" =~ ^cli$ ]]; then + if [[ "$SHOW_POWEROPTIONS" =~ ^True$ ]]; then echo "R: Reboot" echo "S: Shutdown" fi diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/archlive/airootfs/usr/local/bin/hw-diags-inner index a14dff14..b5084e57 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-inner +++ b/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -8,12 +8,12 @@ die () { } # Load settings -if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then - source "/run/archiso/bootmnt/config/arch.conf" || \ - die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" +if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then + source "/run/archiso/bootmnt/arch/arch.conf" || \ + die "ERROR: failed to load arch.conf (from /run/archiso/bootmnt/arch/)" else source "/usr/local/bin/arch.conf" || \ - die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" + die "ERROR: failed to load arch.conf (from /usr/local/bin/)" fi # Get TICKET diff --git a/archlive/airootfs/usr/local/bin/mount-all-volumes b/archlive/airootfs/usr/local/bin/mount-all-volumes index 417fa27c..994ecd23 100644 --- a/archlive/airootfs/usr/local/bin/mount-all-volumes +++ b/archlive/airootfs/usr/local/bin/mount-all-volumes @@ -3,13 +3,12 @@ ## Mount all volumes read-only # Fix issue where first device is mounted under /media/wktech/ -TMP_FILE=$(mktemp) -dd bs=1K count=64 if=/dev/zero of="$TMP_FILE" >/dev/null 2>&1 -mkfs.msdos "$TMP_FILE" >/dev/null 2>&1 -udevil mount -o ro "$TMP_FILE" >/dev/null 2>&1 -udevil umount "$TMP_FILE" >/dev/null 2>&1 +udevil mount tmpfs >/dev/null 2>&1 +udevil umount /media/wktech/tmpfs >/dev/null 2>&1 +udevil umount /media/tmpfs >/dev/null 2>&1 sleep 1s -rmdir /media/wktech >/dev/null 2>&1 +sudo rmdir /media/wktech/* -p >/dev/null 2>&1 +sudo rmdir /media/* -p >/dev/null 2>&1 # Mount all volumes echo "Mounting all volumes" diff --git a/archlive/airootfs/usr/local/bin/mount-backup-shares b/archlive/airootfs/usr/local/bin/mount-backup-shares index f92675ec..9c6e9fad 100644 --- a/archlive/airootfs/usr/local/bin/mount-backup-shares +++ b/archlive/airootfs/usr/local/bin/mount-backup-shares @@ -8,12 +8,12 @@ die () { } # Load settings -if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then - source "/run/archiso/bootmnt/config/arch.conf" || \ - die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" +if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then + source "/run/archiso/bootmnt/arch/arch.conf" || \ + die "ERROR: failed to load arch.conf (from /run/archiso/bootmnt/arch/)" else source "/usr/local/bin/arch.conf" || \ - die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" + die "ERROR: failed to load arch.conf (from /usr/local/bin/)" fi # Connect to a network diff --git a/archlive/airootfs/usr/local/bin/start-wifi b/archlive/airootfs/usr/local/bin/start-wifi index 02a34e9d..e9f15dc9 100644 --- a/archlive/airootfs/usr/local/bin/start-wifi +++ b/archlive/airootfs/usr/local/bin/start-wifi @@ -9,8 +9,8 @@ die () { } # Load settings -if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then - source "/run/archiso/bootmnt/config/arch.conf" || \ +if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then + source "/run/archiso/bootmnt/arch/arch.conf" || \ die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" else source "/usr/local/bin/arch.conf" || \ @@ -37,8 +37,8 @@ for d in /sys/class/net/wl*; do metric_value=$((metric_value+1)) # Create wpa_supplicant entry - if [[ -f "/run/archiso/bootmnt/config/wifi.conf" ]]; then - cp -f "/run/archiso/bootmnt/config/wifi.conf" "/etc/wpa_supplicant/wpa_supplicant-$device.conf" + if [[ -f "/run/archiso/bootmnt/arch/wifi.conf" ]]; then + cp -f "/run/archiso/bootmnt/arch/wifi.conf" "/etc/wpa_supplicant/wpa_supplicant-$device.conf" elif [[ -f "/usr/local/bin/arch.conf" ]]; then cp -f "/usr/local/bin/arch.conf" "/etc/wpa_supplicant/wpa_supplicant-$device.conf" else diff --git a/archlive/packages.both b/archlive/packages.both index 7061a707..6292f689 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -29,6 +29,7 @@ elinks ethtool exfat-utils f2fs-tools +firefox ffmpeg fsarchiver gnome-keyring @@ -61,7 +62,6 @@ mc mdadm mediainfo mesa-demos -midori mkvtoolnix-cli mprime-bin mpv @@ -85,6 +85,7 @@ parted partimage ppp pptpclient +progsreiserfs refind-efi reiserfsprogs rfkill diff --git a/build-wk b/build-wk index 630692cc..4214508c 100644 --- a/build-wk +++ b/build-wk @@ -1,9 +1,9 @@ #!/bin/bash # Set Vars -LOG_DIR="/$HOME/ArchBuilds/BuildLogs" -OUT_DIR="/$HOME/ArchBuilds" -TMP_DIR="/$HOME/TMP_WK_ARCH" +LOG_DIR="/D_Drive/ArchBuilds/BuildLogs" +OUT_DIR="/D_Drive/ArchBuilds" +TMP_DIR="/ScratchDir" DATE="$(date +%F)" DATETIME="$(date +%F_%H%M)" From 18e9e0b3329630a15a31ea1500068316af9e9327 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:57:27 -0800 Subject: [PATCH 011/107] 2017-04: Retroactive Updates * Updated drive detection to support NVMe drives (SMART and badblocks) * Misc cleanup --- archlive/airootfs/usr/local/bin/hw-diags-inner | 2 +- archlive/packages.both | 1 - archlive/pacman.conf | 2 +- build-wk | 4 ++-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/archlive/airootfs/usr/local/bin/hw-diags-inner index b5084e57..f72d734f 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-inner +++ b/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -60,7 +60,7 @@ OUT="$TMP_DIR/hw-diags.out" ## Some code borrowed from stackoverflow.com/a/10020397 ARCH_DRIVES=($(ls -l /dev/disk/by-label | grep -iE 'ARCH.*[hs]d[a-z]' | sed -r 's#.*/([hs]d[a-z])[0-9]+#\1#' | sort | uniq)) -DRIVES=($(inxi -Dxx -c 0 | grep -E "ID-[0-9]+" | sed -r 's#.*/dev/([hs]d[a-z]).*#\1#' | sort)) +DRIVES=($(inxi -Dxx -c 0 | grep -E "ID-[0-9]+" | sed -r 's#.*/dev/([hs]d[a-z]|nvme[0-9]n[0-9]).*#\1#' | sort)) for d in "${ARCH_DRIVES[@]}"; do DRIVES=(${DRIVES[@]//*$d*}) done diff --git a/archlive/packages.both b/archlive/packages.both index 6292f689..75016011 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -11,7 +11,6 @@ chntpw cmatrix colordiff conky -cower crda curl darkhttpd diff --git a/archlive/pacman.conf b/archlive/pacman.conf index aed6a94d..feb74a44 100644 --- a/archlive/pacman.conf +++ b/archlive/pacman.conf @@ -71,7 +71,7 @@ LocalFileSigLevel = Optional [customrepo] SigLevel = Optional TrustAll -Server = file:///root/wk-arch/custom-repo/$arch +Server = file:///home/wkadmin/wk-arch/custom-repo/$arch #[testing] #Include = /etc/pacman.d/mirrorlist diff --git a/build-wk b/build-wk index 4214508c..03ae31da 100644 --- a/build-wk +++ b/build-wk @@ -1,8 +1,8 @@ #!/bin/bash # Set Vars -LOG_DIR="/D_Drive/ArchBuilds/BuildLogs" -OUT_DIR="/D_Drive/ArchBuilds" +LOG_DIR="/ArchBuilds/BuildLogs" +OUT_DIR="/ArchBuilds" TMP_DIR="/ScratchDir" DATE="$(date +%F)" DATETIME="$(date +%F_%H%M)" From 077401ef85b99c67a266a1c097a958731c0e0242 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:58:25 -0800 Subject: [PATCH 012/107] 2017-06: Retroactive Updates * Include extras/* in ISO * build-wk modifies build.sh before it is called * NetworkManager is back * Switched to Numix-Square icons * Added remount-rw script * Accessible in Thunar as custom action * Readded mesa-demos to fix inxi message * Removed xorg-video-ati (conflicts with AMDGPU) * Swapping nvidia in for nouveau (attempt to fix X for newer macs) * Added mbpfan-git * Added Mac fans script (set all fans to auto/max) * Fixed issue where udevil would use /media/$USER/Name for the first call --- archlive/airootfs/etc/motd | 2 +- .../etc/skel/.config/Thunar/accels.scm | 2 + .../airootfs/etc/skel/.config/Thunar/uca.xml | 11 ++ .../etc/skel/.config/gtk-3.0/settings.ini | 2 +- .../airootfs/etc/skel/.config/midori/config | 21 --- .../xfce4-keyboard-shortcuts.xml | 2 +- .../xfconf/xfce-perchannel-xml/xsettings.xml | 2 +- .../etc/systemd/network/wired.network | 8 - .../etc/systemd/network/wireless.network | 8 - ...bus-org.freedesktop.NetworkManager.service | 1 + ...dbus-org.freedesktop.nm-dispatcher.service | 1 + .../systemd/system/etc-pacman.d-gnupg.mount | 8 - .../NetworkManager.service | 1 + .../systemd-networkd.service | 1 - .../systemd-resolved.service | 1 - .../etc/systemd/system/pacman-init.service | 15 -- .../systemd-networkd.socket | 1 - .../etc/udev/rules.d/99-udisks2.rules | 5 + archlive/airootfs/etc/udevil/udevil.conf | 2 +- archlive/airootfs/root/customize_airootfs.sh | 22 ++- archlive/airootfs/usr/local/bin/applefans | 37 ++++ .../airootfs/usr/local/bin/connect-to-network | 2 +- .../airootfs/usr/local/bin/hw-diags-inner | 50 +++--- .../airootfs/usr/local/bin/mount-all-volumes | 14 +- .../usr/local/bin/mount-all-volumes-foh | 1 + archlive/airootfs/usr/local/bin/remount-rw | 22 +++ archlive/airootfs/usr/local/bin/start-wifi | 55 ------ .../applications/Hardware Diagnostics.desktop | 2 +- archlive/extra/arch/arch.conf | 44 +++++ archlive/extra/arch/conky.rc | 165 ++++++++++++++++++ archlive/extra/arch/wifi.conf | 9 + archlive/packages.both | 17 +- archlive/packages.x86_64 | 1 - archlive/pacman.conf | 2 +- build-wk | 13 +- custom-repo/update | 17 ++ 36 files changed, 388 insertions(+), 179 deletions(-) delete mode 100644 archlive/airootfs/etc/skel/.config/midori/config delete mode 100644 archlive/airootfs/etc/systemd/network/wired.network delete mode 100644 archlive/airootfs/etc/systemd/network/wireless.network create mode 100644 archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service create mode 100644 archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service delete mode 100644 archlive/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount create mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service delete mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service delete mode 100644 archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service delete mode 100644 archlive/airootfs/etc/systemd/system/pacman-init.service delete mode 100644 archlive/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket create mode 100644 archlive/airootfs/etc/udev/rules.d/99-udisks2.rules create mode 100644 archlive/airootfs/usr/local/bin/applefans create mode 100644 archlive/airootfs/usr/local/bin/mount-all-volumes-foh create mode 100644 archlive/airootfs/usr/local/bin/remount-rw delete mode 100644 archlive/airootfs/usr/local/bin/start-wifi create mode 100644 archlive/extra/arch/arch.conf create mode 100644 archlive/extra/arch/conky.rc create mode 100644 archlive/extra/arch/wifi.conf create mode 100644 custom-repo/update diff --git a/archlive/airootfs/etc/motd b/archlive/airootfs/etc/motd index 649aa912..dfba12f7 100644 --- a/archlive/airootfs/etc/motd +++ b/archlive/airootfs/etc/motd @@ -5,5 +5,5 @@ Some common commands: % hw-info % mount-all-volumes % mount-backup-shares -% start-wifi +% connect-to-network diff --git a/archlive/airootfs/etc/skel/.config/Thunar/accels.scm b/archlive/airootfs/etc/skel/.config/Thunar/accels.scm index 7876f2fe..45408e2a 100644 --- a/archlive/airootfs/etc/skel/.config/Thunar/accels.scm +++ b/archlive/airootfs/etc/skel/.config/Thunar/accels.scm @@ -69,3 +69,5 @@ ; (gtk_accel_path "/ThunarWindow/view-statusbar" "") ; (gtk_accel_path "/ThunarWindow/show-hidden" "h") ; (gtk_accel_path "/ThunarWindow/view-as-detailed-list" "2") +; (gtk_accel_path "/ThunarActions/uca-action-1497008558378216-3" "") + diff --git a/archlive/airootfs/etc/skel/.config/Thunar/uca.xml b/archlive/airootfs/etc/skel/.config/Thunar/uca.xml index 74185535..d5eafe20 100644 --- a/archlive/airootfs/etc/skel/.config/Thunar/uca.xml +++ b/archlive/airootfs/etc/skel/.config/Thunar/uca.xml @@ -10,4 +10,15 @@ + + edit-redo-symbolic + Remount Read-Write + 1497008558378216-3 + urxvt -T "Mount Tool" -e remount-rw %f + Remount Read-Write + * + + + + diff --git a/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini b/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini index 3a73097e..2dba9975 100644 --- a/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini +++ b/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini @@ -1,5 +1,5 @@ [Settings] gtk-theme-name=Arc -gtk-icon-theme-name=Numic Circle +gtk-icon-theme-name=Numic Square gtk-font-name=Noto Sans 10 diff --git a/archlive/airootfs/etc/skel/.config/midori/config b/archlive/airootfs/etc/skel/.config/midori/config deleted file mode 100644 index 30a10bcf..00000000 --- a/archlive/airootfs/etc/skel/.config/midori/config +++ /dev/null @@ -1,21 +0,0 @@ -[settings] -default-encoding=ISO-8859-1 -default-font-family=Noto Sans -monospace-font-family=Noto Mono -enable-developer-extras=true -enable-site-specific-quirks=true -enable-javascript=true -default-charset=ISO-8859-1 -last-panel-position=249 -last-panel-page=3 -last-window-state=MIDORI_WINDOW_MAXIMIZED -location-entry-search=https://duckduckgo.com/?q=%s -toolbar-items=TabNew,Back,NextForward,ReloadStop,BookmarkAdd,Location,Search,Trash,CompactMenu -homepage=https://www.google.com/ -tabhome=about:dial -download-folder=/home/wktech -load-on-startup=MIDORI_STARTUP_HOMEPAGE -user-agent=Mozilla/5.0 (X11; Linux) AppleWebKit/538.15 (KHTML, like Gecko) Chrome/18.0.1025.133 Safari/538.15 Midori/0.5 - -[extensions] -libadblock.so=true diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml index f293434e..e63b0f5f 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -38,7 +38,7 @@ - + diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml index 2284a963..81ab1f1c 100644 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml @@ -3,7 +3,7 @@ - + diff --git a/archlive/airootfs/etc/systemd/network/wired.network b/archlive/airootfs/etc/systemd/network/wired.network deleted file mode 100644 index 8a23b1c5..00000000 --- a/archlive/airootfs/etc/systemd/network/wired.network +++ /dev/null @@ -1,8 +0,0 @@ -[Match] -Name=en* - -[Network] -DHCP=yes - -[DHCP] -RouteMetric=10 diff --git a/archlive/airootfs/etc/systemd/network/wireless.network b/archlive/airootfs/etc/systemd/network/wireless.network deleted file mode 100644 index 94a986b0..00000000 --- a/archlive/airootfs/etc/systemd/network/wireless.network +++ /dev/null @@ -1,8 +0,0 @@ -[Match] -Name=wl* - -[Network] -DHCP=yes - -[DHCP] -RouteMetric=20 diff --git a/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service b/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service new file mode 100644 index 00000000..e874a9b3 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service b/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service new file mode 100644 index 00000000..a7e5cd4e --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager-dispatcher.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount b/archlive/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount deleted file mode 100644 index 4eab5513..00000000 --- a/archlive/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Temporary /etc/pacman.d/gnupg directory - -[Mount] -What=tmpfs -Where=/etc/pacman.d/gnupg -Type=tmpfs -Options=mode=0755 diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service new file mode 100644 index 00000000..e874a9b3 --- /dev/null +++ b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/NetworkManager.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service deleted file mode 100644 index 4c158e62..00000000 --- a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-networkd.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/systemd-networkd.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service b/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service deleted file mode 100644 index 4f6ae342..00000000 --- a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/systemd-resolved.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/systemd-resolved.service \ No newline at end of file diff --git a/archlive/airootfs/etc/systemd/system/pacman-init.service b/archlive/airootfs/etc/systemd/system/pacman-init.service deleted file mode 100644 index 23b81445..00000000 --- a/archlive/airootfs/etc/systemd/system/pacman-init.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=Initializes Pacman keyring -Wants=haveged.service -After=haveged.service -Requires=etc-pacman.d-gnupg.mount -After=etc-pacman.d-gnupg.mount - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/bin/pacman-key --init -ExecStart=/usr/bin/pacman-key --populate archlinux - -[Install] -WantedBy=multi-user.target diff --git a/archlive/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket b/archlive/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket deleted file mode 100644 index 51942c8e..00000000 --- a/archlive/airootfs/etc/systemd/system/sockets.target.wants/systemd-networkd.socket +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/systemd-networkd.socket \ No newline at end of file diff --git a/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules b/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules new file mode 100644 index 00000000..996e4343 --- /dev/null +++ b/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules @@ -0,0 +1,5 @@ +# UDISKS_FILESYSTEM_SHARED +# ==1: mount filesystem to a shared directory (/media/VolumeName) +# ==0: mount filesystem to a private directory (/run/media/$USER/VolumeName) +# See udisks(8) +ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1" diff --git a/archlive/airootfs/etc/udevil/udevil.conf b/archlive/airootfs/etc/udevil/udevil.conf index be24a342..b61d2c30 100644 --- a/archlive/airootfs/etc/udevil/udevil.conf +++ b/archlive/airootfs/etc/udevil/udevil.conf @@ -101,7 +101,7 @@ allowed_groups = * # be permitted to unmount its associated loop device even though internal. # INCLUDING /MNT HERE IS NOT RECOMMENDED. ALL ALLOWED MEDIA DIRECTORIES # SHOULD BE OWNED AND WRITABLE ONLY BY ROOT. -allowed_media_dirs = /media, /media/$USER, /run/media/$USER +allowed_media_dirs = /media # allowed_devices is the first criteria for what block devices users may mount diff --git a/archlive/airootfs/root/customize_airootfs.sh b/archlive/airootfs/root/customize_airootfs.sh index 520208c7..57e8b9b9 100644 --- a/archlive/airootfs/root/customize_airootfs.sh +++ b/archlive/airootfs/root/customize_airootfs.sh @@ -36,6 +36,10 @@ echo "wktech:Abracadabra" | chpasswd echo "[customize_airootfs] INFO: Enable sudo" echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers +# Misc +echo "[customize_airootfs] INFO: Misc Settings" +sed -i -r 's/extensions.autoDisableScopes", [0-9]+/extensions.autoDisableScopes", 0/' /usr/lib/firefox/browser/defaults/preferences/vendor.js + # Set mirrorlist echo "[customize_airootfs] INFO: Setup pacman mirrorlist" ## Process: @@ -49,17 +53,17 @@ echo "[customize_airootfs] INFO: Setup pacman mirrorlist" #tr '\n' '~' < /etc/pacman.d/mirrorlist.bak | sed -r 's/([0-1]\.[0-9], United States)~#/\1~/g' | tr '~' '\n' > "$tmp_file" #rankmirrors -n 10 "$tmp_file" | egrep '^S' > /etc/pacman.d/mirrorlist #rm -v "$tmp_file" -### List ranked on 2017-02-25 ### +### List ranked on 2017-06-08 ### echo 'Server = http://mirror.htnshost.com/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist -echo 'Server = http://mirrors.abscission.net/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirror.lty.me/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://ca.us.mirror.archlinux-br.org/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirror.kaminski.io/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirrors.rit.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirror.us.leaseweb.net/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://archlinux.surlyjake.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://ftp.osuosl.org/pub/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist echo 'Server = http://mirrors.cat.pdx.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirror.lty.me/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.kernel.org/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = https://mirror.lty.me/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = https://mirrors.ocf.berkeley.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.ocf.berkeley.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist # journald settings (from archiso) echo "[customize_airootfs] INFO: Setup journald" diff --git a/archlive/airootfs/usr/local/bin/applefans b/archlive/airootfs/usr/local/bin/applefans new file mode 100644 index 00000000..3bf21b42 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/applefans @@ -0,0 +1,37 @@ +#!/bin/bash +# +## HW diagnostics - Prime95 + +SMCPATH="/sys/devices/platform/applesmc.768" +SET_MAX="True" + +function usage { + echo "Usage: $0 auto|max" + echo " e.g. $0 max" +} + +# Set mode +case $1 in + auto) + SET_MAX="False";; + max) + SET_MAX="True";; + *) + usage + exit 1;; +esac + +if [[ -e "$SMCPATH" ]]; then + if [[ "$SET_MAX" == "True" ]]; then + # Set fans to max RPM + for fan in $SMCPATH/fan*max; do + echo '1' | sudo tee ${fan:0:-4}_manual > /dev/null + cat $fan | sudo tee ${fan:0:-4}_output > /dev/null + done + else + # Set fans to auto + for fan in $SMCPATH/fan*manual; do + echo '0' | sudo tee $fan > /dev/null + done + fi +fi diff --git a/archlive/airootfs/usr/local/bin/connect-to-network b/archlive/airootfs/usr/local/bin/connect-to-network index e335fbf5..f18aeb52 100644 --- a/archlive/airootfs/usr/local/bin/connect-to-network +++ b/archlive/airootfs/usr/local/bin/connect-to-network @@ -49,7 +49,7 @@ if ! test_connection; then ## Skip if we're already connected (i.e. the code above worked) if ! test_connection; then echo "Attempting to connect to ${WIFI_SSID}..." - sudo start-wifi + nmcli dev wifi connect "${WIFI_SSID}" password "${WIFI_PASS}" sleep 5s fi fi diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/archlive/airootfs/usr/local/bin/hw-diags-inner index f72d734f..a007fa68 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-inner +++ b/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -97,7 +97,7 @@ function update_progress { echo "${BLUE}HW Diagnostics${CLEAR}" > "$OUT" echo "───────────────" >> "$LOG" echo "───────────────" >> "$OUT" - + if [[ "$TEST_CPU" == "True" ]]; then echo "" >> "$LOG" echo "" >> "$OUT" @@ -115,7 +115,7 @@ function update_progress { echo "${BLUE}Prime95${CLEAR} ${RED}NS${CLEAR}" >> "$OUT" fi fi - + if [[ "$TEST_SMART" == "True" ]]; then echo "" >> "$LOG" echo "" >> "$OUT" @@ -147,7 +147,7 @@ function update_progress { fi done fi - + if [[ "$TEST_BADBLOCKS" == "True" ]]; then echo "" >> "$LOG" echo "" >> "$OUT" @@ -174,13 +174,13 @@ function update_progress { fi done fi - + if [[ "$TEST_OVER" == "True" ]]; then echo "" >> "$LOG" echo "" >> "$OUT" echo "───────────────" >> "$LOG" echo "───────────────" >> "$OUT" - + if [[ "$ERRORS" == "True" ]]; then echo "HW: Error(s)" >> "$LOG" echo "${RED}HW: Error(s)${CLEAR}" >> "$OUT" @@ -189,7 +189,7 @@ function update_progress { echo "${GREEN}HW: Passed${CLEAR}" >> "$OUT" fi fi - + # Update Server if [[ "$DIAG_SERVER_AVAIL" == "True" ]]; then rsync -aqz --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r "$TMP_DIR/" $DIAG_USER@$DIAG_SERVER:"$DIAG_DEST/${DIAG_UPLOAD_NAME}/" --exclude '*.out' @@ -248,8 +248,10 @@ if [[ "$TEST_CPU" == "True" ]]; then CPU_ERRORS="False" cpu_result="Working" update_progress + apple_fans max (sleep ${TEST_CPU_LENGTH}m && killall -s INT "mprime" >>/dev/null 2>&1) & (sleep ${TEST_CPU_LENGTH}m && killall "hw-diags-sensors" >>/dev/null 2>&1) & + (sleep ${TEST_CPU_LENGTH}m && apple_fans auto >>/dev/null 2>&1) & tmux split-window -d -v -l 10 "hw-diags-prime95 $TMP_DIR" hw-diags-sensors "$TMP_DIR" 2>/dev/null sleep 1s @@ -273,9 +275,9 @@ if [[ "$TEST_CPU" == "True" ]]; then CPU_ERRORS="True" cpu_result="Unknown" fi - + update_progress - + if [[ "$CPU_ERRORS" == "True" ]]; then ERRORS="True" fi @@ -292,7 +294,7 @@ if [[ "$TEST_SMART" == "True" ]]; then inxi -Dxx | grep "/dev/${tmp_device}" | sed -r "s#.*/dev/${tmp_device} (.*)# \1#" > "${tmp_device}_report.out" inxi -Dxxc 0 | grep "/dev/${tmp_device}" | sed -r "s#.*/dev/${tmp_device} (.*)# \1#" > "${tmp_device}_report.log" update_progress - + # Attempt to enable SMART reporting if sudo smartctl -s on "/dev/${tmp_device}" | grep -q 'device lacks SMART capability'; then SMART_ERRORS="True" @@ -301,14 +303,14 @@ if [[ "$TEST_SMART" == "True" ]]; then echo " ERROR: device lacks SMART capability" >> "${tmp_device}_report.log" sleep 1s fi - + # Save current SMART values sudo smartctl --all "/dev/${tmp_device}" >> "${tmp_device}-smart.log" sudo smartctl -l error "/dev/${tmp_device}" >> "${tmp_device}-smart-err.log" - + # Check specific SMART results sudo smartctl -A "/dev/${tmp_device}" | grep -E '^\s*(5|9|184|197|198)\s' >> "${tmp_device}-smart-attributes.log" - + # 5 - Reallocated Sectors if grep -qE '^\s*5\s' "${tmp_device}-smart-attributes.log"; then line="$(grep -E '^\s*5\s' "${tmp_device}-smart-attributes.log")" @@ -321,7 +323,7 @@ if [[ "$TEST_SMART" == "True" ]]; then echo " ${GREEN}Reallocated Sectors: $value${CLEAR}" >> "${tmp_device}_report.out" fi fi - + # 9 - Power-on Hours (Warn, but don't prevent badblock scan) if grep -qE '^\s*9\s' "${tmp_device}-smart-attributes.log"; then line="$(grep -E '^\s*9\s' "${tmp_device}-smart-attributes.log")" @@ -336,7 +338,7 @@ if [[ "$TEST_SMART" == "True" ]]; then echo " ${GREEN}Power-on Hours: $value${CLEAR}" >> "${tmp_device}_report.out" fi fi - + # 184 - End-to-End Errors if grep -qE '^\s*184\s' "${tmp_device}-smart-attributes.log"; then line="$(grep -E '^\s*184\s' "${tmp_device}-smart-attributes.log")" @@ -349,7 +351,7 @@ if [[ "$TEST_SMART" == "True" ]]; then echo " ${GREEN}End-to-End Errors: $value${CLEAR}" >> "${tmp_device}_report.out" fi fi - + # 197 - Current Pending Sectors if grep -qE '^\s*197\s' "${tmp_device}-smart-attributes.log"; then line="$(grep -E '^\s*197\s' "${tmp_device}-smart-attributes.log")" @@ -362,7 +364,7 @@ if [[ "$TEST_SMART" == "True" ]]; then echo " ${GREEN}Current Pending Sectors: $value${CLEAR}" >> "${tmp_device}_report.out" fi fi - + # 198 - Offline Uncorrectable if grep -qE '^\s*198\s' "${tmp_device}-smart-attributes.log"; then line="$(grep -E '^\s*198\s' "${tmp_device}-smart-attributes.log")" @@ -375,13 +377,13 @@ if [[ "$TEST_SMART" == "True" ]]; then echo " ${GREEN}Offline Uncorrectable: $value${CLEAR}" >> "${tmp_device}_report.out" fi fi - + if [[ "$SMART_ERRORS" == "False" ]] && [[ "$SKIP_SHORT_TEST" == "False" ]]; then if sudo smartctl -c "/dev/${tmp_device}" >>/dev/null 2>&1; then # Determine short-test polling time wait_time=$(sudo smartctl -c "/dev/${tmp_device}" | grep -i 'polling time' | head -1 | sed -r 's/.*\( *([0-9]+)\).*/\1/') wait_time=$(( wait_time + 5)) - + # Run short self-test echo " Running SMART short self-test ($wait_time minutes)..." sudo smartctl -t short "/dev/${tmp_device}" >/dev/null @@ -400,7 +402,7 @@ if [[ "$TEST_SMART" == "True" ]]; then echo " ERROR: Unable to run SMART self-test." >> "${tmp_device}_report.log" fi fi - + if [[ "$SMART_ERRORS" == "False" ]]; then eval "${tmp_device}_smart_result=CS" else @@ -411,7 +413,7 @@ if [[ "$TEST_SMART" == "True" ]]; then eval "${tmp_device}_smart_result=NS" fi fi - + update_progress done fi @@ -424,7 +426,7 @@ if [[ "$TEST_BADBLOCKS" == "True" ]]; then tmp_device="${d##*/}" d_smart="${tmp_device}_smart_result" eval "d_smart=\$$d_smart" - + # Check SMART results if [[ "$d_smart" == "NS" ]]; then echo -e "${RED}Skipping drive: $tmp_device${CLEAR}" @@ -433,17 +435,17 @@ if [[ "$TEST_BADBLOCKS" == "True" ]]; then eval "${tmp_device}_badblocks_result=Working" update_progress echo "Testing drive: ${tmp_device}" - + # Split and run tmux split-window -v -l 7 "hw-diags-badblocks $TMP_DIR /dev/${tmp_device}" - + # Wait until done sleep 2s while pgrep -G 0 -U 0 -f "badblocks.*${tmp_device}" >/dev/null 2>&1; do sleep 1s; done sleep 2s - + # Check log if grep -Eiq 'Pass completed.*0/0/0 errors' "${tmp_device}_badblocks.log"; then eval "${tmp_device}_badblocks_result=CS" diff --git a/archlive/airootfs/usr/local/bin/mount-all-volumes b/archlive/airootfs/usr/local/bin/mount-all-volumes index 994ecd23..b0eed90e 100644 --- a/archlive/airootfs/usr/local/bin/mount-all-volumes +++ b/archlive/airootfs/usr/local/bin/mount-all-volumes @@ -2,14 +2,6 @@ # ## Mount all volumes read-only -# Fix issue where first device is mounted under /media/wktech/ -udevil mount tmpfs >/dev/null 2>&1 -udevil umount /media/wktech/tmpfs >/dev/null 2>&1 -udevil umount /media/tmpfs >/dev/null 2>&1 -sleep 1s -sudo rmdir /media/wktech/* -p >/dev/null 2>&1 -sudo rmdir /media/* -p >/dev/null 2>&1 - # Mount all volumes echo "Mounting all volumes" regex="/dev/((h|s)d[a-z]|md)[0-9]+" @@ -27,4 +19,10 @@ for volume in $(inxi -Dopxx | grep -E "$regex" | sed -r "s#.*($regex).*#\1#" | s fi fi done + +# Open folder? +if echo "$0" | grep -iq foh; then + thunar /media +fi + echo "Done." diff --git a/archlive/airootfs/usr/local/bin/mount-all-volumes-foh b/archlive/airootfs/usr/local/bin/mount-all-volumes-foh new file mode 100644 index 00000000..8ac53b0c --- /dev/null +++ b/archlive/airootfs/usr/local/bin/mount-all-volumes-foh @@ -0,0 +1 @@ +mount-all-volumes \ No newline at end of file diff --git a/archlive/airootfs/usr/local/bin/remount-rw b/archlive/airootfs/usr/local/bin/remount-rw new file mode 100644 index 00000000..270f2287 --- /dev/null +++ b/archlive/airootfs/usr/local/bin/remount-rw @@ -0,0 +1,22 @@ +#!/bin/bash +# +## Remount volume read-write + +if ! mount | grep -q "$1"; then + echo "ERROR: Can't remount $1" + sleep 2s + exit 1 +fi + +DEVICE=$(mount | grep "$1" | cut -d' ' -f1) + +echo "Remounting: $DEVICE" +udevil umount $DEVICE +if udevil mount $DEVICE; then + echo "Done" +else + echo "Failed" +fi + +sleep 2s +exit 0 diff --git a/archlive/airootfs/usr/local/bin/start-wifi b/archlive/airootfs/usr/local/bin/start-wifi deleted file mode 100644 index e9f15dc9..00000000 --- a/archlive/airootfs/usr/local/bin/start-wifi +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -# -## Creates network configs for all WLAN adapters - - -die () { - echo "$0:" "$@" >&2 - exit 1 -} - -# Load settings -if [[ -f "/run/archiso/bootmnt/arch/arch.conf" ]]; then - source "/run/archiso/bootmnt/arch/arch.conf" || \ - die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" -else - source "/usr/local/bin/arch.conf" || \ - die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" -fi - -# Init -WIFI_SSID="${WIFI_SSID}" -WIFI_PASS="${WIFI_PASS}" -metric_value=20 - -# Add WLAN cards to config -for d in /sys/class/net/wl*; do - device="$(basename $d)" - # Create networkd entry - echo "[Match]" > /etc/systemd/network/$device.network - echo "Name=$device" >> /etc/systemd/network/$device.network - echo "" >> /etc/systemd/network/$device.network - echo "[Network]" >> /etc/systemd/network/$device.network - echo "DHCP=yes" >> /etc/systemd/network/$device.network - echo "" >> /etc/systemd/network/$device.network - echo "[DHCP]" >> /etc/systemd/network/$device.network - echo "RouteMetric=$metric_value" >> /etc/systemd/network/$device.network - metric_value=$((metric_value+1)) - - # Create wpa_supplicant entry - if [[ -f "/run/archiso/bootmnt/arch/wifi.conf" ]]; then - cp -f "/run/archiso/bootmnt/arch/wifi.conf" "/etc/wpa_supplicant/wpa_supplicant-$device.conf" - elif [[ -f "/usr/local/bin/arch.conf" ]]; then - cp -f "/usr/local/bin/arch.conf" "/etc/wpa_supplicant/wpa_supplicant-$device.conf" - else - die "ERROR: WK_ARCH media may be damaged. Please reboot or try another UFD" - fi -done - -# Enable WLAN devices -systemctl restart systemd-networkd.service -for d in /sys/class/net/wl*; do - device="$(basename $d)" - systemctl start wpa_supplicant@$device.service -done - diff --git a/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop b/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop index f502d1a2..77e8821a 100644 --- a/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop +++ b/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop @@ -4,7 +4,7 @@ Type=Application Name=Hardware Diagnostics Comment=Hardware Diagnostics Exec=urxvt -title "Hardware Diagnostics" -e hw-diags -Icon=xcos +Icon=utilities-system-monitor Path= Terminal=false StartupNotify=false diff --git a/archlive/extra/arch/arch.conf b/archlive/extra/arch/arch.conf new file mode 100644 index 00000000..06d8c761 --- /dev/null +++ b/archlive/extra/arch/arch.conf @@ -0,0 +1,44 @@ +## WK-Arch Settings ## + +# Backup options +declare -a BACKUP_1=( + "ServerOne" # Server name + "10.0.0.10" # IP + "Backups" # Share name + "backup" # User name + "Abracadabra" # Password +) +declare -a BACKUP_2=( + "ServerTwo" # Server name + "10.0.0.11" # IP + "Backups" # Share name + "backup" # User name + "Abracadabra" # Password +) +declare -a BACKUP_3=( + "" # Server name + "" # IP + "" # Share name + "" # User name + "" # Password +) +declare -a BACKUP_4=( + "" # Server name + "" # IP + "" # Share name + "" # User name + "" # Password +) + +# Hardware testing options +TEST_CPU_LENGTH="7" # Time in minutes to run Prime95 + +# Network options +WIFI_SSID="SomeWiFi" # Use the 2.4Ghz network for better compatability +WIFI_PASS="Abracadabra" + +# Results upload options +SKIP_UPLOAD="False" # Set to "True" to disable all uploads +DIAG_SERVER="10.0.0.10" # Use the IP and not the server name +DIAG_SHARE="/srv/ClientInfo" # Full path to shared folder (relative to the server's root) +DIAG_USER="wkdiag" # User used to connect to the server via SSH diff --git a/archlive/extra/arch/conky.rc b/archlive/extra/arch/conky.rc new file mode 100644 index 00000000..bd492c9b --- /dev/null +++ b/archlive/extra/arch/conky.rc @@ -0,0 +1,165 @@ +# For commands above TEXT check: +# http://conky.sourceforge.net/config_settings.html +# +# For commands available below TEXT check: +# http://conky.sourceforge.net/variables.html + +# Bunsen Labs Conky help threads +# http://crunchbang.org/forums/viewtopic.php?pid=371424#p371424 + +# beta tested by: smacz +# Enjoy! :) + +# pkill -xf "conky -q -c $HOME/.config/conky/BL-Default.conkyrc" & +### Begin Window Settings ##################### +own_window yes +own_window_type normal +own_window_transparent no +own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky +own_window_colour 000000 +own_window_class Conky +#own_window_title Bunsen Labs Default Conky +own_window_title Default Conky + +### ARGB can be used for real transparency +### NOTE that a composite manager is required for real transparency. +### This option will not work as desired (in most cases) in conjunction with +### own_window_type normal +own_window_argb_visual yes # Options: yes or no + +### When ARGB visuals are enabled, this use this to modify the alpha value +### Use: own_window_type normal +### Use: own_window_transparent no +### Valid range is 0-255, where 0 is 0% opacity, and 255 is 100% opacity. +own_window_argb_value 160 + +minimum_size 180 0 ### width | height +maximum_width 180 + +gap_x 20 ### left | right +gap_y 45 ### up | down + +alignment tr +####################### End Window Settings ### +### Font Settings ############################# +# Use Xft (anti-aliased font and stuff) +use_xft yes +xftfont Inconsolata:bold:size=9 +#xftfont Liberation Sans:size=9 + +# Alpha of Xft font. Must be a value at or between 1 and 0 ### +xftalpha 1 +# Force UTF8? requires XFT ### +override_utf8_locale yes + +uppercase no +######################### End Font Settings ### +### Colour Settings ########################### +draw_shades no #yes +default_shade_color 000000 + +draw_outline no # amplifies text if yes +default_outline_color 000000 + +#default_color 656667 # Waldorf original colour +#default_color 7a7a7a # Flame & Bunsen Grey +#default_color 929292 # Labs Grey +default_color C0C0C0 # Silver +color0 B0E0E6 # PowderBlue +color1 778899 # LightSlateGray +color2 D8BFD8 # Thistle +color3 9ACD32 # YellowGreen +color4 FFA07A # LightSalmon +color5 FFDEAD # NavajoWhite +color6 00BFFF # DeepSkyBlue +color7 5F9EA0 # CadetBlue +color8 BDB76B # DarkKhaki +color9 CD5C5C # IndianRed +####################### End Colour Settings ### +### Borders Section ########################### +draw_borders no +# Stippled borders? +stippled_borders 5 +# border margins +border_inner_margin 5 +border_outer_margin 0 +# border width +border_width 2 +# graph borders +draw_graph_borders yes #no +#default_graph_size 15 40 +####################### End Borders Section ### +### Miscellaneous Section ##################### +# Boolean value, if true, Conky will be forked to background when started. +background yes + +# Adds spaces around certain objects to stop them from moving other things +# around, this only helps if you are using a mono font +# Options: right, left or none +use_spacer none + +# Default and Minimum size is 256 - needs more for single commands that +# "call" a lot of text IE: bash scripts +text_buffer_size 6144 + +# Subtract (file system) buffers from used memory? +no_buffers yes + +# change GiB to G and MiB to M +short_units yes + +# Like it says, ot pads the decimals on % values +# doesn't seem to work since v1.7.1 +pad_percents 2 + +# Imlib2 image cache size, in bytes. Default 4MiB Increase this value if you use +# $image lots. Set to 0 to disable the image cache. +imlib_cache_size 0 + +# Use the Xdbe extension? (eliminates flicker) +# It is highly recommended to use own window with this one +# so double buffer won't be so big. +double_buffer yes + +# Maximum size of user text buffer, i.e. layout below TEXT line in config file +# (default is 16384 bytes) +# max_user_text 16384 + +# Desired output unit of all objects displaying a temperature. Parameters are +# either "fahrenheit" or "celsius". The default unit is degree Celsius. +# temperature_unit Fahrenheit + +################# End Miscellaneous Section ### +#### ${font Monospace:bold:size=10}${alignc}${execpi 600 $HOME/.config/conky/scripts/bunsenweather.sh} +update_interval 1 + +TEXT +${color}${alignc}S Y S T E M I N F O +${hr} +Date:${alignr}${time %F} +Time:${alignr}${time %H:%M} +Uptime:${alignr}${uptime_short} + +CPU: ${if_match ${cpu cpu0}<10} ${cpu cpu0}\ +${else}${if_match ${cpu cpu0}<100} ${cpu cpu0}\ +${else}${cpu cpu0}${endif}${endif}% Used${alignr}${freq_g} GHz +${cpugraph cpu0 20,180 ${color} ${color}} +RAM: ${mem} Used${alignr}${memmax} +${memgraph 20,180 ${color} ${color}} +Disk I/O: +${diskiograph 20,180 ${color} ${color}} +Down: ${downspeed}${goto 115}Up:${alignr}${upspeed} + +${alignc}S H O R T C U T K E Y S +${hr} +[Super] + d${alignr}HW Diagnostics +[Super] + f${alignr}File Manager +[Super] + h${alignr}Task Manager +[Super] + i${alignr}HW Information +[Super] + m${alignr}Mount Volumes +[Super] + r${alignr}Run Dialog +[Super] + s${alignr}SMART Check +[Super] + t${alignr}Terminal +[Super] + v${alignr}View Temps +[Super] + w${alignr}Web Browser +[Super] + x${alignr}Logout diff --git a/archlive/extra/arch/wifi.conf b/archlive/extra/arch/wifi.conf new file mode 100644 index 00000000..0b0d5850 --- /dev/null +++ b/archlive/extra/arch/wifi.conf @@ -0,0 +1,9 @@ +ctrl_interface=/var/run/wpa_supplicant +eapol_version=1 +ap_scan=1 +fast_reauth=1 +network={ + ssid="SomeWiFi" + psk="Abracadabra" + priority=5 +} diff --git a/archlive/packages.both b/archlive/packages.both index 75016011..8c567f02 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -1,11 +1,11 @@ aic94xx-firmware alsa-utils antiword -arc-icon-theme-git arch-install-scripts -b43-fwcutter bash-pipes bc +bluez +bluez-utils btrfs-progs chntpw cmatrix @@ -28,8 +28,8 @@ elinks ethtool exfat-utils f2fs-tools -firefox ffmpeg +firefox fsarchiver gnome-keyring gnu-netcat @@ -57,6 +57,7 @@ linux-atm linux-firmware lm_sensors lsscsi +mbpfan-git mc mdadm mediainfo @@ -68,13 +69,17 @@ mtools mupdf ncdu ndisc6 +network-manager-applet +networkmanager nfs-utils nilfs-utils nmap noto-fonts ntfs-3g ntp -numix-circle-icon-theme-git +numix-square-icon-theme-git +nvidia +nvidia-utils openconnect openssh openvpn @@ -123,16 +128,14 @@ wpa_actiond wvdial xf86-input-libinput xf86-video-amdgpu -xf86-video-ati xf86-video-fbdev xf86-video-intel -xf86-video-nouveau xf86-video-vesa xfce4 xfce4-goodies +xfce4-notifyd xl2tpd xorg-server -xorg-server-utils xorg-xdpyinfo xorg-xev xorg-xinput diff --git a/archlive/packages.x86_64 b/archlive/packages.x86_64 index 93647f14..e69de29b 100644 --- a/archlive/packages.x86_64 +++ b/archlive/packages.x86_64 @@ -1 +0,0 @@ -broadcom-wl diff --git a/archlive/pacman.conf b/archlive/pacman.conf index feb74a44..aea88d93 100644 --- a/archlive/pacman.conf +++ b/archlive/pacman.conf @@ -71,7 +71,7 @@ LocalFileSigLevel = Optional [customrepo] SigLevel = Optional TrustAll -Server = file:///home/wkadmin/wk-arch/custom-repo/$arch +Server = file:///home/builduser/Projects/wk-arch/custom-repo/$arch #[testing] #Include = /etc/pacman.d/mirrorlist diff --git a/build-wk b/build-wk index 03ae31da..cf688fcd 100644 --- a/build-wk +++ b/build-wk @@ -1,9 +1,9 @@ #!/bin/bash - +#/srv/ArchBuilds # Set Vars -LOG_DIR="/ArchBuilds/BuildLogs" -OUT_DIR="/ArchBuilds" -TMP_DIR="/ScratchDir" +LOG_DIR="/srv/ArchBuilds/BuildLogs" +OUT_DIR="/srv/ArchBuilds/isos" +TMP_DIR="/srv/ScratchDir" DATE="$(date +%F)" DATETIME="$(date +%F_%H%M)" @@ -17,6 +17,11 @@ fi echo "Setting permissions..." chown root.root archlive -R +# Modify build.sh +if ! grep -iq 'customize_iso' archlive/build.sh; then + sed -ir 's!run_once make_iso!# customize_iso\ncp -a ${script_path}/extra/* ${work_dir}/iso/\n\nrun_once make_iso!' archlive/build.sh +fi + # Build ISO mkdir $LOG_DIR mkdir $OUT_DIR diff --git a/custom-repo/update b/custom-repo/update new file mode 100644 index 00000000..6016005b --- /dev/null +++ b/custom-repo/update @@ -0,0 +1,17 @@ +#!/bin/bash +# +# Symlink all packages from ~/.cache/pacaur and rebuild repo database + +pushd i686 +rm *pkg.tar.xz +cp -ans $HOME/.cache/pacaur/*/*pkg.tar.xz ./ +rm *x86_64* +for p in *pkg.tar.xz; do repo-add customrepo.db.tar.gz $p; done +popd + +pushd x86_64 +rm *pkg.tar.xz +cp -ans $HOME/.cache/pacaur/*/*pkg.tar.xz ./ +rm *i686* +for p in *pkg.tar.xz; do repo-add customrepo.db.tar.gz $p; done +popd From 542d584b4a4b5e2566b7d258e4a5310adc3557d6 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:58:58 -0800 Subject: [PATCH 013/107] 2017-08: Retroactive Updates Switched to i3/dunst/rofi over xfce4 * Custom Repo overhaul * build-wk downloads, builds, and adds packages to the custom-repo * Dropped i686 support * HW-Diag scripts should now "support" virtual drives * e.g. /dev/vda (for easier testing) * Bugfix: removed resolv.conf symlink to fix NetworkManager --- .gitignore | 3 +- archlive/airootfs/etc/lightdm/lightdm.conf | 165 --------- archlive/airootfs/etc/resolv.conf | 1 - archlive/airootfs/etc/skel/.Xresources | 19 +- .../etc/skel/.config/autostart/Conky.desktop | 12 - .../skel/.config/autostart/Network.desktop | 12 - .../skel/.config/autostart/Wallpaper.desktop | 12 - .../autostart/urxvt-default-res.desktop | 12 - .../skel/.config/gtk-2.0/gtkfilechooser.ini | 11 - .../etc/skel/.config/gtk-3.0/settings.ini | 5 - .../airootfs/etc/skel/.config/htop/htoprc | 26 -- archlive/airootfs/etc/skel/.config/i3/config | 314 ++++++++++++++++++ .../airootfs/etc/skel/.config/i3status/config | 76 +++++ .../etc/skel/.config/xfce4/helpers.rc | 4 - .../skel/.config/xfce4/panel/whiskermenu-1.rc | 60 ---- .../skel/.config/xfce4/terminal/terminalrc | 19 -- .../skel/.config/xfce4/xfce4-taskmanager.rc | 25 -- .../xfconf/xfce-perchannel-xml/displays.xml | 18 - .../xfconf/xfce-perchannel-xml/keyboards.xml | 7 - .../xfconf/xfce-perchannel-xml/ristretto.xml | 9 - .../xfconf/xfce-perchannel-xml/thunar.xml | 12 - .../xfce-perchannel-xml/xfce4-appfinder.xml | 46 --- .../xfce-perchannel-xml/xfce4-desktop.xml | 40 --- .../xfce4-keyboard-shortcuts.xml | 164 --------- .../xfce-perchannel-xml/xfce4-mixer.xml | 28 -- .../xfce-perchannel-xml/xfce4-notifyd.xml | 5 - .../xfce-perchannel-xml/xfce4-panel.xml | 64 ---- .../xfce4-power-manager.xml | 10 - .../xfce-perchannel-xml/xfce4-session.xml | 37 --- .../xfce4-settings-editor.xml | 9 - .../xfce4-settings-manager.xml | 8 - .../xfconf/xfce-perchannel-xml/xfwm4.xml | 87 ----- .../xfconf/xfce-perchannel-xml/xsettings.xml | 38 --- archlive/airootfs/etc/skel/.conkyrc | 5 +- archlive/airootfs/etc/skel/.update_wallpaper | 7 +- archlive/airootfs/etc/skel/.urxvt_default_res | 5 +- archlive/airootfs/etc/skel/.xinitrc | 31 +- archlive/airootfs/etc/skel/.zlogin | 7 +- archlive/airootfs/etc/skel/.zshrc | 3 - archlive/airootfs/root/customize_airootfs.sh | 2 +- .../usr/local/bin/{applefans => apple_fans} | 0 .../airootfs/usr/local/bin/hw-diags-inner | 2 +- .../applications/Hardware Diagnostics.desktop | 2 +- .../applications/Hardware Information.desktop | 2 +- .../share/applications/NetworkTest.desktop | 2 +- .../usr/share/applications/SpeedTest.desktop | 2 +- archlive/packages.both | 29 +- archlive/pacman.conf | 4 +- build-wk | 94 ++++-- custom-repo/update | 17 - 50 files changed, 517 insertions(+), 1055 deletions(-) delete mode 100644 archlive/airootfs/etc/lightdm/lightdm.conf delete mode 100644 archlive/airootfs/etc/resolv.conf delete mode 100644 archlive/airootfs/etc/skel/.config/autostart/Conky.desktop delete mode 100644 archlive/airootfs/etc/skel/.config/autostart/Network.desktop delete mode 100644 archlive/airootfs/etc/skel/.config/autostart/Wallpaper.desktop delete mode 100644 archlive/airootfs/etc/skel/.config/autostart/urxvt-default-res.desktop delete mode 100644 archlive/airootfs/etc/skel/.config/gtk-2.0/gtkfilechooser.ini delete mode 100644 archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini delete mode 100644 archlive/airootfs/etc/skel/.config/htop/htoprc create mode 100644 archlive/airootfs/etc/skel/.config/i3/config create mode 100644 archlive/airootfs/etc/skel/.config/i3status/config delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/helpers.rc delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/ristretto.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml delete mode 100644 archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml rename archlive/airootfs/usr/local/bin/{applefans => apple_fans} (100%) delete mode 100644 custom-repo/update diff --git a/.gitignore b/.gitignore index ba26e229..5495eced 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -wk_tmp \ No newline at end of file +wk_tmp +wk-repo diff --git a/archlive/airootfs/etc/lightdm/lightdm.conf b/archlive/airootfs/etc/lightdm/lightdm.conf deleted file mode 100644 index 5aea533a..00000000 --- a/archlive/airootfs/etc/lightdm/lightdm.conf +++ /dev/null @@ -1,165 +0,0 @@ -# -# General configuration -# -# start-default-seat = True to always start one seat if none are defined in the configuration -# greeter-user = User to run greeter as -# minimum-display-number = Minimum display number to use for X servers -# minimum-vt = First VT to run displays on -# lock-memory = True to prevent memory from being paged to disk -# user-authority-in-system-dir = True if session authority should be in the system location -# guest-account-script = Script to be run to setup guest account -# logind-check-graphical = True to on start seats that are marked as graphical by logind -# log-directory = Directory to log information to -# run-directory = Directory to put running state in -# cache-directory = Directory to cache to -# sessions-directory = Directory to find sessions -# remote-sessions-directory = Directory to find remote sessions -# greeters-directory = Directory to find greeters -# backup-logs = True to move add a .old suffix to old log files when opening new ones -# -[LightDM] -#start-default-seat=true -#greeter-user=lightdm -#minimum-display-number=0 -#minimum-vt=7 # Setting this to a value < 7 implies security issues, see FS#46799 -#lock-memory=true -#user-authority-in-system-dir=false -#guest-account-script=guest-account -#logind-check-graphical=false -#log-directory=/var/log/lightdm -run-directory=/run/lightdm -#cache-directory=/var/cache/lightdm -#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions -#remote-sessions-directory=/usr/share/lightdm/remote-sessions -#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters -#backup-logs=true - -# -# Seat configuration -# -# Seat configuration is matched against the seat name glob in the section, for example: -# [Seat:*] matches all seats and is applied first. -# [Seat:seat0] matches the seat named "seat0". -# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client". -# -# type = Seat type (xlocal, xremote, unity) -# pam-service = PAM service to use for login -# pam-autologin-service = PAM service to use for autologin -# pam-greeter-service = PAM service to use for greeters -# xserver-command = X server command to run (can also contain arguments e.g. X -special-option) -# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option) -# xserver-config = Config file to pass to X server -# xserver-layout = Layout to pass to X server -# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server -# xserver-share = True if the X server is shared for both greeter and session -# xserver-hostname = Hostname of X server (only for type=xremote) -# xserver-display-number = Display number of X server (only for type=xremote) -# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true) -# xdmcp-port = XDMCP UDP/IP port to communicate on -# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf) -# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option) -# unity-compositor-timeout = Number of seconds to wait for compositor to start -# greeter-session = Session to load for greeter -# greeter-hide-users = True to hide the user list -# greeter-allow-guest = True if the greeter should show a guest login option -# greeter-show-manual-login = True if the greeter should offer a manual login option -# greeter-show-remote-login = True if the greeter should offer a remote login option -# user-session = Session to load for users -# allow-user-switching = True if allowed to switch users -# allow-guest = True if guest login is allowed -# guest-session = Session to load for guests (overrides user-session) -# session-wrapper = Wrapper script to run session with -# greeter-wrapper = Wrapper script to run greeter with -# guest-wrapper = Wrapper script to run guest sessions with -# display-setup-script = Script to run when starting a greeter session (runs as root) -# display-stopped-script = Script to run after stopping the display server (runs as root) -# greeter-setup-script = Script to run when starting a greeter (runs as root) -# session-setup-script = Script to run when starting a user session (runs as root) -# session-cleanup-script = Script to run when quitting a user session (runs as root) -# autologin-guest = True to log in as guest by default -# autologin-user = User to log in with by default (overrides autologin-guest) -# autologin-user-timeout = Number of seconds to wait before loading default user -# autologin-session = Session to load for automatic login (overrides user-session) -# autologin-in-background = True if autologin session should not be immediately activated -# exit-on-failure = True if the daemon should exit if this seat fails -# -[Seat:*] -#type=xlocal -pam-service=lightdm -pam-autologin-service=lightdm-autologin -#pam-greeter-service=lightdm-greeter -#xserver-command=X -#xmir-command=Xmir -#xserver-config= -#xserver-layout= -#xserver-allow-tcp=false -#xserver-share=true -#xserver-hostname= -#xserver-display-number= -#xdmcp-manager= -#xdmcp-port=177 -#xdmcp-key= -#unity-compositor-command=unity-system-compositor -#unity-compositor-timeout=60 -#greeter-session=example-gtk-gnome -#greeter-hide-users=false -#greeter-allow-guest=true -#greeter-show-manual-login=false -#greeter-show-remote-login=true -#user-session=default -#allow-user-switching=true -#allow-guest=true -#guest-session= -session-wrapper=/etc/lightdm/Xsession -#greeter-wrapper= -#guest-wrapper= -#display-setup-script= -#display-stopped-script= -#greeter-setup-script= -#session-setup-script= -#session-cleanup-script= -#autologin-guest=false -autologin-user=wktech -autologin-user-timeout=0 -#autologin-in-background=false -#autologin-session= -#exit-on-failure=false - -# -# XDMCP Server configuration -# -# enabled = True if XDMCP connections should be allowed -# port = UDP/IP port to listen for connections on -# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present) -# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf) -# hostname = Hostname to report to XDMCP clients (defaults to system hostname if unset) -# -# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively -# it can be a word and the first 7 characters are used as the key. -# -[XDMCPServer] -#enabled=false -#port=177 -#listen-address= -#key= -#hostname= - -# -# VNC Server configuration -# -# enabled = True if VNC connections should be allowed -# command = Command to run Xvnc server with -# port = TCP/IP port to listen for connections on -# listen-address = Host/address to listen for VNC connections (use all addresses if not present) -# width = Width of display to use -# height = Height of display to use -# depth = Color depth of display to use -# -[VNCServer] -#enabled=false -#command=Xvnc -#port=5900 -#listen-address= -#width=1024 -#height=768 -#depth=8 diff --git a/archlive/airootfs/etc/resolv.conf b/archlive/airootfs/etc/resolv.conf deleted file mode 100644 index 89efb950..00000000 --- a/archlive/airootfs/etc/resolv.conf +++ /dev/null @@ -1 +0,0 @@ -/run/systemd/resolve/resolv.conf \ No newline at end of file diff --git a/archlive/airootfs/etc/skel/.Xresources b/archlive/airootfs/etc/skel/.Xresources index b349dcba..0e7c9bd7 100644 --- a/archlive/airootfs/etc/skel/.Xresources +++ b/archlive/airootfs/etc/skel/.Xresources @@ -1,13 +1,24 @@ +Xft.autohint: 0 +Xft.antialias: 1 +Xft.hinting: true +Xft.hintstyle: hintslight +Xft.rgba: rgb +Xft.lcdfilter: lcddefault + URxvt*font: xft:Inconsolata:size=11 +#URxvt.letterSpace: -3 ! The line below will be modified by ~/.urxvt_default_res URxvt*geometry: 96x32+24+24 -URxvt*scrollBar_right: True -URxvt*scrollstyle: plain +URxvt.scrollBar_right: True +URxvt.scrollstyle: plain -URxvt*shading: 13 -URxvt*transparent: true +URxvt.shading: 13 +URxvt.transparent: true + +URxvt.iso14755: false +URxvt.iso14755_52: false ! Base16 Isotope ! Scheme: Jan T. Sott diff --git a/archlive/airootfs/etc/skel/.config/autostart/Conky.desktop b/archlive/airootfs/etc/skel/.config/autostart/Conky.desktop deleted file mode 100644 index 56eb2051..00000000 --- a/archlive/airootfs/etc/skel/.config/autostart/Conky.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=0.9.4 -Type=Application -Name=Conky -Comment=Conky -Exec=/home/wktech/.conky_start -OnlyShowIn=XFCE; -StartupNotify=false -Terminal=false -Hidden=false - diff --git a/archlive/airootfs/etc/skel/.config/autostart/Network.desktop b/archlive/airootfs/etc/skel/.config/autostart/Network.desktop deleted file mode 100644 index fc74de1b..00000000 --- a/archlive/airootfs/etc/skel/.config/autostart/Network.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=0.9.4 -Type=Application -Name=NetworkManager -Comment=NetworkManager -Exec=/home/wktech/.network_start -OnlyShowIn=XFCE; -StartupNotify=false -Terminal=false -Hidden=false - diff --git a/archlive/airootfs/etc/skel/.config/autostart/Wallpaper.desktop b/archlive/airootfs/etc/skel/.config/autostart/Wallpaper.desktop deleted file mode 100644 index 49037aa4..00000000 --- a/archlive/airootfs/etc/skel/.config/autostart/Wallpaper.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=0.0.1 -Type=Application -Name=Update Wallpaper -Comment=Update Wallpaper -Exec=/home/wktech/.update_wallpaper -OnlyShowIn=XFCE; -StartupNotify=false -Terminal=false -Hidden=false - diff --git a/archlive/airootfs/etc/skel/.config/autostart/urxvt-default-res.desktop b/archlive/airootfs/etc/skel/.config/autostart/urxvt-default-res.desktop deleted file mode 100644 index 7ee94394..00000000 --- a/archlive/airootfs/etc/skel/.config/autostart/urxvt-default-res.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=0.9.4 -Type=Application -Name=urxvt-Resolution -Comment=urxvt-Resolution -Exec=/home/wktech/.urxvt_default_res -OnlyShowIn=XFCE; -StartupNotify=false -Terminal=false -Hidden=false - diff --git a/archlive/airootfs/etc/skel/.config/gtk-2.0/gtkfilechooser.ini b/archlive/airootfs/etc/skel/.config/gtk-2.0/gtkfilechooser.ini deleted file mode 100644 index 62930e9d..00000000 --- a/archlive/airootfs/etc/skel/.config/gtk-2.0/gtkfilechooser.ini +++ /dev/null @@ -1,11 +0,0 @@ -[Filechooser Settings] -LocationMode=path-bar -ShowHidden=false -ShowSizeColumn=true -GeometryX=-1 -GeometryY=-1 -GeometryWidth=-1 -GeometryHeight=-1 -SortColumn=name -SortOrder=ascending -StartupMode=recent diff --git a/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini b/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini deleted file mode 100644 index 2dba9975..00000000 --- a/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Settings] -gtk-theme-name=Arc -gtk-icon-theme-name=Numic Square -gtk-font-name=Noto Sans 10 - diff --git a/archlive/airootfs/etc/skel/.config/htop/htoprc b/archlive/airootfs/etc/skel/.config/htop/htoprc deleted file mode 100644 index 37f78cb4..00000000 --- a/archlive/airootfs/etc/skel/.config/htop/htoprc +++ /dev/null @@ -1,26 +0,0 @@ -# Beware! This file is rewritten by htop when settings are changed in the interface. -# The parser is also very primitive, and not human-friendly. -fields=0 48 17 18 38 39 40 2 46 47 49 1 -sort_key=46 -sort_direction=1 -hide_threads=0 -hide_kernel_threads=1 -hide_userland_threads=0 -shadow_other_users=0 -show_thread_names=0 -show_program_path=1 -highlight_base_name=0 -highlight_megabytes=1 -highlight_threads=1 -tree_view=0 -header_margin=1 -detailed_cpu_time=0 -cpu_count_from_zero=0 -update_process_names=0 -account_guest_in_cpu_meter=0 -color_scheme=0 -delay=15 -left_meters=AllCPUs Memory Swap -left_meter_modes=1 1 1 -right_meters=Tasks LoadAverage Uptime -right_meter_modes=2 2 2 diff --git a/archlive/airootfs/etc/skel/.config/i3/config b/archlive/airootfs/etc/skel/.config/i3/config new file mode 100644 index 00000000..6cb3baa0 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/i3/config @@ -0,0 +1,314 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see http://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Configure border style +new_window pixel 1 +new_float normal + +# Hide borders +hide_edge_borders none + +# Pulse Audio controls +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound + +# alt+tab navi +bindsym Mod1+Tab workspace next +bindsym Mod1+Shift+Tab workspace prev + +# change borders +bindsym $mod+u border none +bindsym $mod+y border pixel 1 +bindsym $mod+n border normal + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +#font Inconsolata:monospace 8 +font pango:Noto Sans Mono 10, FontAwesome 10 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Before i3 v4.8, we used to recommend this one as the default: +# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, its unicode glyph coverage is limited, the old +# X core fonts rendering does not support right-to-left and this being a bitmap +# font, it doesn’t scale on retina/hidpi displays. + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec i3-sensible-terminal + +# kill focused window +bindsym $mod+Shift+q kill +bindsym $mod+q kill +bindsym Mod1+F4 kill + +# start dmenu (a program launcher) +#bindsym $mod+Shift+d exec dmenu_run +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +#bindsym $mod+Shift+d exec --no-startup-id i3-dmenu-desktop +bindsym $mod+r exec "rofi -combi-modi window,drun,run -show combi -modi combi" + +# misc app shortcuts +bindsym $mod+d exec "urxvt -title 'Hardware Diagnostics' -e hw-diags" +bindsym $mod+f exec "thunar ~" +bindsym $mod+i exec "hardinfo" +bindsym $mod+m exec "urxvt -title 'Mount All Volumes' -e mount-all-volumes" +bindsym $mod+s exec "urxvt -title 'Hardware Diagnostics' -e hw-diags foh" +bindsym $mod+t exec "urxvt" +bindsym $mod+v exec "urxvt -title 'Hardware Sensors' -e hw-diags-sensors" +bindsym $mod+w exec "firefox" + +focus_follows_mouse no + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# workspace back and forth (with/without active container) +workspace_auto_back_and_forth yes +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth + +# split orientation +bindsym $mod+Shift+h split h +bindsym $mod+Shift+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+Shift+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+Shift+s layout stacking +bindsym $mod+Shift+w layout tabbed +bindsym $mod+Shift+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +#bindsym $mod+a focus parent + +# move the currently focused window to the scratchpad +bindsym $mod+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym $mod+minus scratchpad show + +# focus the child container +#bindsym $mod+d focus child + +# Workspace names +set $ws1 "一" +set $ws2 "二" +set $ws3 "三" +set $ws4 "四" +set $ws5 "五" +set $ws6 "六" +set $ws7 "七" +set $ws8 "八" +set $ws9 "九" +set $ws10 "十" + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 +bindsym $mod+9 workspace $ws9 +bindsym $mod+0 workspace $ws10 + +# move focused container to workspace +bindsym $mod+Ctrl+1 move container to workspace $ws1 +bindsym $mod+Ctrl+2 move container to workspace $ws2 +bindsym $mod+Ctrl+3 move container to workspace $ws3 +bindsym $mod+Ctrl+4 move container to workspace $ws4 +bindsym $mod+Ctrl+5 move container to workspace $ws5 +bindsym $mod+Ctrl+6 move container to workspace $ws6 +bindsym $mod+Ctrl+7 move container to workspace $ws7 +bindsym $mod+Ctrl+8 move container to workspace $ws8 +bindsym $mod+Ctrl+9 move container to workspace $ws9 +bindsym $mod+Ctrl+0 move container to workspace $ws10 + +# move focused container to workspace and follow +bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 +bindsym $mod+Shift+9 move container to workspace $ws9; workspace $ws9 +bindsym $mod+Shift+0 move container to workspace $ws10; workspace $ws10 + +# Open specific applications in floating mode +for_window [title="Slack"] floating enable +for_window [title="Screen Layout Editor"] floating enable +for_window [class="Galculator"] floating enable border pixel 1 +for_window [class="Nitrogen"] floating enable sticky enable border normal +for_window [title="Hardware Diagnostics"] floating enable +for_window [title="Hardware Sensors"] floating enable +for_window [title="Mount All Volumes"] floating enable +for_window [title="Firefox"] floating enable border normal + +# switch to workspace with urgent window automatically +for_window [urgent=latest] focus + +# reload the configuration file +#bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +#bindsym $mod+Shift+r restart + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+Shift+r mode "resize" + +# "System" menu +bindsym $mod+x mode "$mode_system" +set $mode_system (l)ock, (e)xit, (r)eboot, (s)hutdown, (c)onfig, (i)3 +mode "$mode_system" { + bindsym l exec --no-startup-id i3lock, mode "default" + bindsym e exit, mode "default" + bindsym r exec reboot, mode "default" + bindsym s exec poweroff, mode "default" + bindsym c reload, mode "default" + bindsym i restart, mode "default" + + # exit system mode: "Enter" or "Escape" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +############################# +### settings for i3-gaps: ### +############################# + +# Set inner/outer gaps +gaps inner 10 +gaps outer 4 + +# Additionally, you can issue commands with the following syntax. This is useful to bind keys to changing the gap size. +# gaps inner|outer current|all set|plus|minus +# gaps inner all set 10 +# gaps outer all plus 5 + +# Smart gaps (gaps used if only more than one container on the workspace) +smart_gaps on + +# Smart borders (draw borders around container only if it is not the only container on this workspace) +# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0) +smart_borders on + +# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. +set $mode_gaps Gaps: (o) outer, (i) inner +set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) +set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) +bindsym $mod+Shift+g mode "$mode_gaps" + +mode "$mode_gaps" { + bindsym o mode "$mode_gaps_outer" + bindsym i mode "$mode_gaps_inner" + bindsym Return mode "default" + bindsym Escape mode "default" +} +mode "$mode_gaps_inner" { + bindsym plus gaps inner current plus 5 + bindsym minus gaps inner current minus 5 + bindsym 0 gaps inner current set 0 + + bindsym Shift+plus gaps inner all plus 5 + bindsym Shift+minus gaps inner all minus 5 + bindsym Shift+0 gaps inner all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} +mode "$mode_gaps_outer" { + bindsym plus gaps outer current plus 5 + bindsym minus gaps outer current minus 5 + bindsym 0 gaps outer current set 0 + + bindsym Shift+plus gaps outer all plus 5 + bindsym Shift+minus gaps outer all minus 5 + bindsym Shift+0 gaps outer all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + position bottom + separator_symbol " " + status_command i3status + height 26 +} diff --git a/archlive/airootfs/etc/skel/.config/i3status/config b/archlive/airootfs/etc/skel/.config/i3status/config new file mode 100644 index 00000000..d36294a4 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/i3status/config @@ -0,0 +1,76 @@ +# i3status configuration file. +# see "man i3status" for documentation. + +# It is important that this file is edited as UTF-8. +# The following line should contain a sharp s: +# ß +# If the above line is not correctly displayed, fix your editor first! + +general { + colors = true + interval = 5 +} + +#order += "disk /" +order += "wireless _first_" +order += "ethernet _first_" +order += "cpu_usage" +order += "battery all" +order += "volume master" +order += "tztime local" +#order += "tztime utc" + +cpu_usage { + format = " %usage" + max_threshold = 90 + #format_above_threshold = " %usage" + degraded_threshold = 75 + #format_above_degraded_threshold = " %usage" +} + +wireless _first_ { + format_up = " (%quality at %essid) %ip" + format_down = " Down" +} + +ethernet _first_ { + # if you use %speed, i3status requires root privileges + format_up = " %ip" + format_down = " Down" +} + +battery all { + integer_battery_capacity = true + format = "%status %percentage" + format_down = "" + status_chr = "" + status_bat = "" + status_unk = "" + status_full = "" + path = "/sys/class/power_supply/BAT%d/uevent" + low_threshold = 25 + threshold_type = percentage +} + +volume master { + format = " %volume" + format_muted = " muted" + device = "pulse" +} + +tztime local { + format = "%F %H:%M" +} + +tztime utc { + format = "%H:%M" + timezone = "UTC" +} + +load { + format = "%1min" +} + +disk "/" { + format = "%avail" +} diff --git a/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc b/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc deleted file mode 100644 index e5d08646..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/helpers.rc +++ /dev/null @@ -1,4 +0,0 @@ -WebBrowser=firefox -FileManager=Thunar -TerminalEmulator=urxvt - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc b/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc deleted file mode 100644 index 78004419..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/panel/whiskermenu-1.rc +++ /dev/null @@ -1,60 +0,0 @@ -favorites=Hardware Diagnostics.desktop,Hardware Information.desktop,exo-file-manager.desktop,gparted.desktop,gsmartcontrol.desktop,NetworkTest.desktop,exo-web-browser.desktop -recent=xfce4-settings-editor.desktop,xfce-session-settings.desktop,xfce4-power-manager-settings.desktop,gsmartcontrol.desktop,gparted.desktop -button-title=Applications -button-icon=distributor-logo-archlinux -button-single-row=false -show-button-title=false -show-button-icon=true -launcher-show-name=true -launcher-show-description=false -item-icon-size=3 -hover-switch-category=false -category-icon-size=1 -load-hierarchy=false -recent-items-max=10 -favorites-in-recent=true -display-recent-default=false -position-search-alternate=true -position-commands-alternate=true -position-categories-alternate=false -menu-width=400 -menu-height=500 -menu-opacity=100 -command-settings=xfce4-settings-manager -show-command-settings=true -command-lockscreen=xflock4 -show-command-lockscreen=false -command-switchuser=gdmflexiserver -show-command-switchuser=false -command-logout=xfce4-session-logout -show-command-logout=true -command-menueditor=menulibre -show-command-menueditor=false -command-profile=mugshot -show-command-profile=false -search-actions=4 - -[action0] -name=Man Pages -pattern=# -command=exo-open --launch TerminalEmulator man %s -regex=false - -[action1] -name=Wikipedia -pattern=!w -command=exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u -regex=false - -[action2] -name=Run in Terminal -pattern=! -command=exo-open --launch TerminalEmulator %s -regex=false - -[action3] -name=Open URI -pattern=^(file|http|https):\\/\\/(.*)$ -command=exo-open \\0 -regex=true - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc b/archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc deleted file mode 100644 index 41bfc4df..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/terminal/terminalrc +++ /dev/null @@ -1,19 +0,0 @@ -[Configuration] -FontName=Inconsolata 13 -MiscAlwaysShowTabs=FALSE -MiscBell=FALSE -MiscBordersDefault=TRUE -MiscCursorBlinks=FALSE -MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK -MiscDefaultGeometry=80x24 -MiscInheritGeometry=FALSE -MiscMenubarDefault=TRUE -MiscMouseAutohide=FALSE -MiscToolbarDefault=FALSE -MiscConfirmClose=TRUE -MiscCycleTabs=TRUE -MiscTabCloseButtons=TRUE -MiscTabCloseMiddleClick=TRUE -MiscTabPosition=GTK_POS_TOP -MiscHighlightUrls=TRUE - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc b/archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc deleted file mode 100644 index bc341e3b..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfce4-taskmanager.rc +++ /dev/null @@ -1,25 +0,0 @@ -[Settings] -ShowAllProcesses=FALSE -MorePrecision=FALSE -FullCommandLine=FALSE -ShowStatusIcon=FALSE -ShowMemoryInXBytes=FALSE -MonitorPaintBox=TRUE -ShowApplicationIcons=TRUE -ToolbarStyle=DEFAULT -PromptTerminateTask=TRUE -RefreshRate=750 -ColumnUID=FALSE -ColumnPID=TRUE -ColumnPPID=FALSE -ColumnState=FALSE -ColumnVSZ=FALSE -ColumnRSS=TRUE -ColumnCPU=TRUE -ColumnPriority=FALSE -SortColumn=0 -SortType=0 -WindowWidth=490 -WindowHeight=465 -HandlePosition=100 -ProcessTreeView=FALSE diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml deleted file mode 100644 index 3fab8b73..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml deleted file mode 100644 index 9fd09d61..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/ristretto.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/ristretto.xml deleted file mode 100644 index 781e4e71..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/ristretto.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml deleted file mode 100644 index 567ac037..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml deleted file mode 100644 index c135c100..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-appfinder.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index f1b3664f..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml deleted file mode 100644 index e63b0f5f..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml deleted file mode 100644 index 49d6bca6..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-mixer.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml deleted file mode 100644 index 5cf67af8..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index aa79af3c..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml deleted file mode 100644 index 94ae4a47..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml deleted file mode 100644 index fd93ee1c..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml deleted file mode 100644 index a7c84531..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-editor.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml deleted file mode 100644 index cd059aab..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-settings-manager.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml deleted file mode 100644 index aebf9edd..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml deleted file mode 100644 index 81ab1f1c..00000000 --- a/archlive/airootfs/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/archlive/airootfs/etc/skel/.conkyrc b/archlive/airootfs/etc/skel/.conkyrc index bd492c9b..e6be18a8 100644 --- a/archlive/airootfs/etc/skel/.conkyrc +++ b/archlive/airootfs/etc/skel/.conkyrc @@ -13,7 +13,7 @@ # pkill -xf "conky -q -c $HOME/.config/conky/BL-Default.conkyrc" & ### Begin Window Settings ##################### own_window yes -own_window_type normal +own_window_type override own_window_transparent no own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky own_window_colour 000000 @@ -31,7 +31,7 @@ own_window_argb_visual yes # Options: yes or no ### Use: own_window_type normal ### Use: own_window_transparent no ### Valid range is 0-255, where 0 is 0% opacity, and 255 is 100% opacity. -own_window_argb_value 160 +own_window_argb_value 224 minimum_size 180 0 ### width | height maximum_width 180 @@ -154,7 +154,6 @@ ${alignc}S H O R T C U T K E Y S ${hr} [Super] + d${alignr}HW Diagnostics [Super] + f${alignr}File Manager -[Super] + h${alignr}Task Manager [Super] + i${alignr}HW Information [Super] + m${alignr}Mount Volumes [Super] + r${alignr}Run Dialog diff --git a/archlive/airootfs/etc/skel/.update_wallpaper b/archlive/airootfs/etc/skel/.update_wallpaper index 14f502df..7bffa12b 100644 --- a/archlive/airootfs/etc/skel/.update_wallpaper +++ b/archlive/airootfs/etc/skel/.update_wallpaper @@ -18,9 +18,4 @@ for f in "$BOOT_PATH"/{Arch,arch}.{jpg,png} "$BURNED_IN"; do fi done -# Update Xfce4 (mostly redundant, but will catch multi-display setups) -for monitor in monitor{0..2}; do - for workspace in workspace{0..3}; do - xfconf-query -c xfce4-desktop -p /backdrop/screen0/$monitor/$workspace/last-image -s "$WALLPAPER" 2>/dev/null - done -done +feh --bg-fill "$WALLPAPER" diff --git a/archlive/airootfs/etc/skel/.urxvt_default_res b/archlive/airootfs/etc/skel/.urxvt_default_res index 92923ebd..1e146090 100644 --- a/archlive/airootfs/etc/skel/.urxvt_default_res +++ b/archlive/airootfs/etc/skel/.urxvt_default_res @@ -3,9 +3,8 @@ XWIDTH="$(xrandr 2>/dev/null | grep '*' | sed -r 's/^\s+([0-9]+)x.*/\1/')" XHEIGHT="$(xrandr 2>/dev/null | grep '*' | sed -r 's/^\s+[0-9]+x([0-9]+).*/\1/')" -WIDTH="$(echo "${XWIDTH}*96/1024" | bc)" +WIDTH="$(echo "${XWIDTH}*92/1024" | bc)" HEIGHT="$(echo "${XHEIGHT}*32/768" | bc)" -sed -i -r "s/96x32/${WIDTH}x${HEIGHT}/" ~/.Xresources +sed -i -r "s/(URxvt.geometry:\s+).*/\1${WIDTH}x${HEIGHT}+24+24/" ~/.Xresources xrdb -merge ~/.Xresources - diff --git a/archlive/airootfs/etc/skel/.xinitrc b/archlive/airootfs/etc/skel/.xinitrc index bb0a24da..a674ec72 100644 --- a/archlive/airootfs/etc/skel/.xinitrc +++ b/archlive/airootfs/etc/skel/.xinitrc @@ -1,25 +1,10 @@ #!/bin/sh -userresources=$HOME/.Xresources -usermodmap=$HOME/.Xmodmap -sysresources=/etc/X11/xinit/.Xresources -sysmodmap=/etc/X11/xinit/.Xmodmap - -# merge in defaults and keymaps -if [ -f $sysresources ]; then - xrdb -merge $sysresources -fi -if [ -f $sysmodmap ]; then - xmodmap $sysmodmap -fi -if [ -f "$userresources" ]; then - xrdb -merge "$userresources" -fi -if [ -f "$usermodmap" ]; then - xmodmap "$usermodmap" -fi - -# Start GNOME-Keyring -eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) -export SSH_AUTH_SOCK - +xrdb -merge $HOME/.Xresources +compton & +sleep 1s +conky -d +$HOME/.network_start & +$HOME/.urxvt_default_res & +$HOME/.update_wallpaper & +exec i3 diff --git a/archlive/airootfs/etc/skel/.zlogin b/archlive/airootfs/etc/skel/.zlogin index d428626f..799f452a 100644 --- a/archlive/airootfs/etc/skel/.zlogin +++ b/archlive/airootfs/etc/skel/.zlogin @@ -1,4 +1,9 @@ setterm -blank 0 -powerdown 0 if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then - hw-diags cli + if ! fgrep -q "nox" /proc/cmdline; then + startx + else + hw-diags cli + fi fi + diff --git a/archlive/airootfs/etc/skel/.zshrc b/archlive/airootfs/etc/skel/.zshrc index 6c8cde57..c4e9f93c 100644 --- a/archlive/airootfs/etc/skel/.zshrc +++ b/archlive/airootfs/etc/skel/.zshrc @@ -86,6 +86,3 @@ source $ZSH/oh-my-zsh.sh ## Load aliases . $HOME/.aliases -## Start ssh agent -eval $(/usr/bin/ssh-agent)>/dev/null - diff --git a/archlive/airootfs/root/customize_airootfs.sh b/archlive/airootfs/root/customize_airootfs.sh index 57e8b9b9..6efee777 100644 --- a/archlive/airootfs/root/customize_airootfs.sh +++ b/archlive/airootfs/root/customize_airootfs.sh @@ -77,6 +77,6 @@ sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf echo "[customize_airootfs] INFO: Setup systemd" #systemctl enable pacman-init.service choose-mirror.service -systemctl set-default graphical.target +#systemctl set-default graphical.target echo "[customize_airootfs] INFO: Completed." diff --git a/archlive/airootfs/usr/local/bin/applefans b/archlive/airootfs/usr/local/bin/apple_fans similarity index 100% rename from archlive/airootfs/usr/local/bin/applefans rename to archlive/airootfs/usr/local/bin/apple_fans diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/archlive/airootfs/usr/local/bin/hw-diags-inner index a007fa68..45f83a9a 100644 --- a/archlive/airootfs/usr/local/bin/hw-diags-inner +++ b/archlive/airootfs/usr/local/bin/hw-diags-inner @@ -60,7 +60,7 @@ OUT="$TMP_DIR/hw-diags.out" ## Some code borrowed from stackoverflow.com/a/10020397 ARCH_DRIVES=($(ls -l /dev/disk/by-label | grep -iE 'ARCH.*[hs]d[a-z]' | sed -r 's#.*/([hs]d[a-z])[0-9]+#\1#' | sort | uniq)) -DRIVES=($(inxi -Dxx -c 0 | grep -E "ID-[0-9]+" | sed -r 's#.*/dev/([hs]d[a-z]|nvme[0-9]n[0-9]).*#\1#' | sort)) +DRIVES=($(inxi -Dxx -c 0 | grep -E "ID-[0-9]+" | sed -r 's#.*/dev/([hsv]d[a-z]|nvme[0-9]n[0-9]).*#\1#' | sort)) for d in "${ARCH_DRIVES[@]}"; do DRIVES=(${DRIVES[@]//*$d*}) done diff --git a/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop b/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop index 77e8821a..bd3e2196 100644 --- a/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop +++ b/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop @@ -5,6 +5,6 @@ Name=Hardware Diagnostics Comment=Hardware Diagnostics Exec=urxvt -title "Hardware Diagnostics" -e hw-diags Icon=utilities-system-monitor -Path= +Path=/usr/local/bin Terminal=false StartupNotify=false diff --git a/archlive/airootfs/usr/share/applications/Hardware Information.desktop b/archlive/airootfs/usr/share/applications/Hardware Information.desktop index 432cb2cb..5481206d 100644 --- a/archlive/airootfs/usr/share/applications/Hardware Information.desktop +++ b/archlive/airootfs/usr/share/applications/Hardware Information.desktop @@ -5,6 +5,6 @@ Name=Hardware Information Comment=Hardware Information Exec=hardinfo Icon=hardinfo -Path= +Path=/usr/local/bin Terminal=false StartupNotify=false diff --git a/archlive/airootfs/usr/share/applications/NetworkTest.desktop b/archlive/airootfs/usr/share/applications/NetworkTest.desktop index c89e0ae1..4889b549 100644 --- a/archlive/airootfs/usr/share/applications/NetworkTest.desktop +++ b/archlive/airootfs/usr/share/applications/NetworkTest.desktop @@ -5,6 +5,6 @@ Name=NetworkTest Comment=Diagnose network connectivity Exec=urxvt -title "Network Diagnostics" -hold -e hw-diags-network Icon=network-workgroup -Path= +Path=/usr/local/bin Terminal=false StartupNotify=false diff --git a/archlive/airootfs/usr/share/applications/SpeedTest.desktop b/archlive/airootfs/usr/share/applications/SpeedTest.desktop index cea5f356..d59dd602 100644 --- a/archlive/airootfs/usr/share/applications/SpeedTest.desktop +++ b/archlive/airootfs/usr/share/applications/SpeedTest.desktop @@ -5,6 +5,6 @@ Name=SpeedTest Comment= Exec=urxvt -titile SpeedTest -hold -e speedtest Icon=network-workgroup -Path= +Path=/usr/local/bin Terminal=false StartupNotify=false diff --git a/archlive/packages.both b/archlive/packages.both index 8c567f02..e8fe8359 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -10,6 +10,7 @@ btrfs-progs chntpw cmatrix colordiff +compton conky crda curl @@ -23,11 +24,13 @@ dnsmasq dnsutils dos2unix dosfstools +dunst e2fsprogs elinks ethtool exfat-utils f2fs-tools +feh ffmpeg firefox fsarchiver @@ -37,12 +40,14 @@ gparted gptfdisk grub gsmartcontrol -gtk-theme-arc-git hardinfo hdparm hexedit hfsprogs htop +i3-gaps +i3lock-fancy-git +i3status inxi ipw2100-fw ipw2200-fw @@ -51,13 +56,10 @@ ldns lftp libewf libinput -lightdm -lightdm-gtk-greeter linux-atm linux-firmware lm_sensors lsscsi -mbpfan-git mc mdadm mediainfo @@ -69,17 +71,12 @@ mtools mupdf ncdu ndisc6 -network-manager-applet networkmanager nfs-utils nilfs-utils nmap -noto-fonts ntfs-3g ntp -numix-square-icon-theme-git -nvidia -nvidia-utils openconnect openssh openvpn @@ -87,13 +84,16 @@ p7zip partclone parted partimage +pavucontrol ppp pptpclient progsreiserfs -refind-efi +pulseaudio +qemu-guest-agent reiserfsprogs rfkill rng-tools +rofi rp-pppoe rsync rxvt-unicode @@ -102,6 +102,7 @@ sg3_utils smartmontools speedtest-cli speedtouch +spice-vdagent sudo tcpdump terminus-font @@ -109,6 +110,7 @@ testdisk-wip tk tmux tree +ttf-font-awesome ttf-inconsolata udevil udisks2 @@ -118,7 +120,7 @@ usb_modeswitch veracrypt vim virtualbox-guest-modules-arch -virtualbox-guest-utils-nox +virtualbox-guest-utils vpnc wd719x-firmware wget @@ -130,14 +132,13 @@ xf86-input-libinput xf86-video-amdgpu xf86-video-fbdev xf86-video-intel +xf86-video-nouveau xf86-video-vesa -xfce4 -xfce4-goodies -xfce4-notifyd xl2tpd xorg-server xorg-xdpyinfo xorg-xev +xorg-xinit xorg-xinput zd1211-firmware zsh diff --git a/archlive/pacman.conf b/archlive/pacman.conf index aea88d93..7e5ad8a9 100644 --- a/archlive/pacman.conf +++ b/archlive/pacman.conf @@ -69,9 +69,9 @@ LocalFileSigLevel = Optional # repo name header and Include lines. You can add preferred servers immediately # after the header, and they will be used before the default mirrors. -[customrepo] +[wk-repo] SigLevel = Optional TrustAll -Server = file:///home/builduser/Projects/wk-arch/custom-repo/$arch +Server = file:///home/builduser/Projects/wk-arch/wk-repo #[testing] #Include = /etc/pacman.d/mirrorlist diff --git a/build-wk b/build-wk index cf688fcd..ef584bb7 100644 --- a/build-wk +++ b/build-wk @@ -7,30 +7,72 @@ TMP_DIR="/srv/ScratchDir" DATE="$(date +%F)" DATETIME="$(date +%F_%H%M)" -# Ensure that we're running with root privileges -if [[ "$EUID" -ne 0 ]]; then - echo "Please run with root permissions (i.e. sudo $0)" - exit +if [[ "$EUID" -eq 0 ]]; then + ## Elevated section ## + # Set permissions + echo "Setting permissions..." + chown root.root archlive -R + + # Modify build.sh + if ! grep -iq 'customize_iso' archlive/build.sh; then + sed -ir 's!run_once make_iso!# customize_iso\ncp -a ${script_path}/extra/* ${work_dir}/iso/\n\nrun_once make_iso!' archlive/build.sh + fi + + # Build ISO + mkdir $LOG_DIR + mkdir $OUT_DIR + mkdir $TMP_DIR + ./archlive/build.sh -N "wk-arch" -V "$DATE" -L "WK_ARCH" -w "$TMP_DIR" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" + + # Cleanup + echo "Removing temp files..." + rm "$TMP_DIR" -Rf | tee -a "$LOG_DIR/$DATETIME.log" + + echo "Reverting permissions..." + chown builduser.builduser archlive -R +else + ## Non-elevated section ## + # Prep + mkdir wk-repo + pushd wk-repo >/dev/null + BEFORE=$(date "+%F_%H%M%S") + mkdir _done/$BEFORE -p + find . -maxdepth 1 -not -name 'update' -and -not -name '_done' -exec mv -nv "{}" _done/$BEFORE/ \; + rmdir _done/* --ignore-fail-on-non-empty + sleep 1s + AFTER=$(date "+%F_%H%M%S") + + # Install Dependancies + sudo pacman -Syu base-devel libewf attr progsreiserfs --needed --noconfirm + #for p in lha; do + # echo "Installing dependancy: $p" + # curl -LsfO https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz + # tar xf $p.tar.gz + # pushd $p >/dev/null + # makepkg -si --needed --noconfirm + # popd >/dev/null + # mv -n $p $p.tar.gz _done/$AFTER/ + #done + + # Build custom repo packages + mkdir _done/$AFTER + for p in aic94xx-firmware bash-pipes i3-gaps i3lock-fancy-git mprime-bin testdisk-wip ttf-font-awesome wd719x-firmware wimlib; do + echo "Building: $p" + curl -LsfO https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz + tar xf $p.tar.gz + pushd $p >/dev/null + makepkg -s --noconfirm + popd >/dev/null + mv -n $p/*xz ./ + mv -n $p $p.tar.gz _done/$AFTER/ + done + + # Build custom repo database + for p in *xz; do + repo-add wk-repo.db.tar.gz $p + done + popd >/dev/null + + # Rerun script as root to start Archiso build process + sudo "$0" fi - -# Set permissions -echo "Setting permissions..." -chown root.root archlive -R - -# Modify build.sh -if ! grep -iq 'customize_iso' archlive/build.sh; then - sed -ir 's!run_once make_iso!# customize_iso\ncp -a ${script_path}/extra/* ${work_dir}/iso/\n\nrun_once make_iso!' archlive/build.sh -fi - -# Build ISO -mkdir $LOG_DIR -mkdir $OUT_DIR -mkdir $TMP_DIR -./archlive/build.sh -N "wk-arch" -V "$DATE" -L "WK_ARCH" -w "$TMP_DIR" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" - -# Cleanup -echo "Removing temp files..." -rm "$TMP_DIR" -Rf | tee -a "$LOG_DIR/$DATETIME.log" - -echo "Reverting permissions..." -chown builduser.builduser archlive -R diff --git a/custom-repo/update b/custom-repo/update deleted file mode 100644 index 6016005b..00000000 --- a/custom-repo/update +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# -# Symlink all packages from ~/.cache/pacaur and rebuild repo database - -pushd i686 -rm *pkg.tar.xz -cp -ans $HOME/.cache/pacaur/*/*pkg.tar.xz ./ -rm *x86_64* -for p in *pkg.tar.xz; do repo-add customrepo.db.tar.gz $p; done -popd - -pushd x86_64 -rm *pkg.tar.xz -cp -ans $HOME/.cache/pacaur/*/*pkg.tar.xz ./ -rm *i686* -for p in *pkg.tar.xz; do repo-add customrepo.db.tar.gz $p; done -popd From 2c40aedbbabe8d6d65ae18549c7c2b31176412ce Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 17:59:51 -0800 Subject: [PATCH 014/107] 2017-10: Retroactive Updates Multiple desktop environments * (Default) Openbox/tint2/conky * (Alt) i3-gaps/i3status * Added i3 cmdline switch to use i3-gaps instead of openbox * Added IP status to conky * Added hfsprogs (again) * New themes for dunst, ls, rofi, urxvt * ls colors make NTFS mod 777 folders readable * Disabled screen blanking (again) * Didn't disable DPMS before * Fix SSH key permissions --- archlive/airootfs/etc/oblogout.conf | 20 + archlive/airootfs/etc/skel/.Xresources | 55 +- archlive/airootfs/etc/skel/.bashrc | 5 +- .../airootfs/etc/skel/.config/dunst/dunstrc | 322 +++++++ .../etc/skel/.config/gtk-3.0/settings.ini | 16 + .../etc/skel/.config/openbox/autostart | 19 + .../etc/skel/.config/openbox/environment | 10 + .../etc/skel/.config/openbox/menu.xml | 240 ++++++ .../airootfs/etc/skel/.config/openbox/rc.xml | 806 ++++++++++++++++++ .../airootfs/etc/skel/.config/rofi/config | 11 + .../airootfs/etc/skel/.config/tint2/tint2rc | 250 ++++++ archlive/airootfs/etc/skel/.conkyrc | 4 +- archlive/airootfs/etc/skel/.dircolors | 193 +++++ archlive/airootfs/etc/skel/.dmrc | 3 - archlive/airootfs/etc/skel/.gtkrc-2.0 | 19 + archlive/airootfs/etc/skel/.update_conky | 12 + archlive/airootfs/etc/skel/.xinitrc | 11 +- archlive/airootfs/etc/skel/.zlogin | 4 + archlive/airootfs/etc/skel/.zshrc | 2 + archlive/airootfs/root/customize_airootfs.sh | 36 +- archlive/packages.both | 9 + archlive/pacman.conf | 2 +- build-wk | 10 +- 23 files changed, 2004 insertions(+), 55 deletions(-) create mode 100644 archlive/airootfs/etc/oblogout.conf create mode 100644 archlive/airootfs/etc/skel/.config/dunst/dunstrc create mode 100644 archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini create mode 100644 archlive/airootfs/etc/skel/.config/openbox/autostart create mode 100644 archlive/airootfs/etc/skel/.config/openbox/environment create mode 100644 archlive/airootfs/etc/skel/.config/openbox/menu.xml create mode 100644 archlive/airootfs/etc/skel/.config/openbox/rc.xml create mode 100644 archlive/airootfs/etc/skel/.config/rofi/config create mode 100644 archlive/airootfs/etc/skel/.config/tint2/tint2rc create mode 100644 archlive/airootfs/etc/skel/.dircolors delete mode 100644 archlive/airootfs/etc/skel/.dmrc create mode 100644 archlive/airootfs/etc/skel/.gtkrc-2.0 create mode 100644 archlive/airootfs/etc/skel/.update_conky diff --git a/archlive/airootfs/etc/oblogout.conf b/archlive/airootfs/etc/oblogout.conf new file mode 100644 index 00000000..4595c766 --- /dev/null +++ b/archlive/airootfs/etc/oblogout.conf @@ -0,0 +1,20 @@ +[settings] +usehal = false + +[looks] +opacity = 70 +bgcolor = black +buttontheme = foom +#buttons = cancel, logout, restart, shutdown, suspend, hibernate, lock +buttons = restart, shutdown, logout + +[shortcuts] +cancel = Escape +shutdown = S +restart = R +logout = L + +[commands] +shutdown = systemctl poweroff +restart = systemctl reboot +logout = openbox --exit diff --git a/archlive/airootfs/etc/skel/.Xresources b/archlive/airootfs/etc/skel/.Xresources index 0e7c9bd7..68054af5 100644 --- a/archlive/airootfs/etc/skel/.Xresources +++ b/archlive/airootfs/etc/skel/.Xresources @@ -1,25 +1,31 @@ -Xft.autohint: 0 -Xft.antialias: 1 -Xft.hinting: true -Xft.hintstyle: hintslight -Xft.rgba: rgb -Xft.lcdfilter: lcddefault +! general settings +URxvt*saveline: 15000 +URxvt*termName: rxvt-256color +URxvt*iso14755: false -URxvt*font: xft:Inconsolata:size=11 -#URxvt.letterSpace: -3 - -! The line below will be modified by ~/.urxvt_default_res -URxvt*geometry: 96x32+24+24 - -URxvt.scrollBar_right: True -URxvt.scrollstyle: plain - -URxvt.shading: 13 +! appearance +URxvt*depth: 32 +!URxvt*background: rgba:0000/0000/0000/AAAA +!URxvt*background: [80]#404552 +!URxvt*background: [100]#2f343f +!URxvt*foreground: #F8F8FF +!URxvt.underlineColor: #4682B4 +!URxvt.highlightColor: #4682B4 +!URxvt.throughColor: Blue +!URxvt*cursorColor: #dc8cc3 +!URxvt*cursorColor2: Black +URxvt*scrollBar: false +URxvt*scrollBar_right: false +URxvt*internalBorder: 0 +URxvt*externalBorder: 0 +!URxvt.colorIT: #87af5f +!URxvt.colorBD: #c5c8c6 +!URxvt.colorUL: #87afd7 +URxvt.geometry: 92x16 +URxvt.internalBorder: 8 +URxvt.shading: 10 URxvt.transparent: true -URxvt.iso14755: false -URxvt.iso14755_52: false - ! Base16 Isotope ! Scheme: Jan T. Sott !! Modified by 2Shirt @@ -45,3 +51,14 @@ URxvt.iso14755_52: false *.color13: #e0e0e0 *.color14: #3300ff *.color15: #ffffff + +! fonts +Xft.autohint: 0 +Xft.antialias: 1 +Xft.hinting: true +Xft.hintstyle: hintslight +Xft.rgba: rgb +Xft.lcdfilter: lcddefault +URxvt.font: xft:Inconsolata:size=12 +!URxvt.letterSpace: -3 + diff --git a/archlive/airootfs/etc/skel/.bashrc b/archlive/airootfs/etc/skel/.bashrc index a76d83ac..cb37e84b 100644 --- a/archlive/airootfs/etc/skel/.bashrc +++ b/archlive/airootfs/etc/skel/.bashrc @@ -10,6 +10,5 @@ PS1='[\u@\h \W]\$ ' ## Load aliases . $HOME/.aliases -## Start ssh agent -eval $(/usr/bin/ssh-agent) - +# Update LS_COLORS +eval $(dircolors ~/.dircolors) diff --git a/archlive/airootfs/etc/skel/.config/dunst/dunstrc b/archlive/airootfs/etc/skel/.config/dunst/dunstrc new file mode 100644 index 00000000..6d56bc6f --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/dunst/dunstrc @@ -0,0 +1,322 @@ +[global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = mouse + + # The geometry of the window: + # [{width}]x{height}[+/-{x}+/-{y}] + # The geometry of the message window. + # The height is measured in number of notifications everything else + # in pixels. If the width is omitted but the height is given + # ("-geometry x2"), the message window expands over the whole screen + # (dmenu-like). If width is 0, the window expands to the longest + # message displayed. A positive x is measured from the left, a + # negative from the right side of the screen. Y is measured from + # the top and down respectively. + # The width can be negative. In this case the actual width is the + # screen width minus the width defined in within the geometry option. + geometry = "300x5-30+20" + + # Show how many messages are currently hidden (because of geometry). + indicate_hidden = yes + + # Shrink window if it's smaller than the width. Will be ignored if + # width is 0. + shrink = no + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). + transparency = 20 + + # The height of the entire notification. If the height is smaller + # than the font height and padding combined, it will be raised + # to the font height and padding. + notification_height = 0 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + separator_height = 2 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 8 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 3 + + # Defines color of the frame around the notification window. + #frame_color = "#3300ff" + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = frame + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + idle_threshold = 120 + + ### Text ### + + font = Inconsolata 8 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 0 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # Markup is allowed + format = "%s\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Split notifications into multiple lines if they don't fit into + # geometry. + word_wrap = yes + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Merge multiple notifications with the same content + stack_duplicates = true + + # Hide the count of merged notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Align icons left/right/off + icon_position = off + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 32 + + # Paths to default icons. + icon_folders = /usr/share/icons/Papirus-Dark/16x16/status/:/usr/share/icons/Papirus-Dark/16x16/devices/ + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/firefox -new-tab + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Print a notification on startup. + # This is mainly for error detection, since dbus (re-)starts dunst + # automatically after a crash. + startup_notification = false + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behaviour across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + +[shortcuts] + + # Shortcuts are specified as [modifier+][modifier+]...key + # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", + # "mod3" and "mod4" (windows-key). + # Xev might be helpful to find names for keys. + + # Close notification. + close = ctrl+space + + # Close all notifications. + close_all = ctrl+shift+space + + # Redisplay last message(s). + # On the US keyboard layout "grave" is normally above TAB and left + # of "1". Make sure this key actually exists on your keyboard layout, + # e.g. check output of 'xmodmap -pke' + history = ctrl+grave + + # Context menu. + context = ctrl+shift+period + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + frame_color = "#2d3036" + background = "#222222" + foreground = "#22ee22" + timeout = 5 + # Icon for notifications with low urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_normal] + frame_color = "#2d3036" + background = "#222222" + foreground = "#e6d947" + timeout = 5 + # Icon for notifications with normal urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_critical] + frame_color = "#2d3036" + background = "#800000" + foreground = "#ffffff" + timeout = 0 + # Icon for notifications with critical urgency, uncomment to enable + #icon = /path/to/icon + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# Messages can be matched by "appname", "summary", "body", "icon", "category", +# "msg_urgency" and you can override the "timeout", "urgency", "foreground", +# "background", "new_icon" and "format". +# Shell-like globbing will get expanded. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: if you don't want a notification to be displayed, set the format +# to "". +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules. + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# format = "" + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +# vim: ft=cfg diff --git a/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini b/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini new file mode 100644 index 00000000..8ba66579 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini @@ -0,0 +1,16 @@ +[Settings] +gtk-theme-name=Arc-Dark +gtk-icon-theme-name=Papirus-Dark +gtk-font-name=Noto Sans 11 +gtk-cursor-theme-name=Adwaita +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintslight +gtk-xft-rgba=rgb diff --git a/archlive/airootfs/etc/skel/.config/openbox/autostart b/archlive/airootfs/etc/skel/.config/openbox/autostart new file mode 100644 index 00000000..21fd52e5 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/openbox/autostart @@ -0,0 +1,19 @@ +# +# These things are run when an Openbox X Session is started. +# You may place a similar script in $HOME/.config/openbox/autostart +# to run user-specific things. +# + +# If you want to use GNOME config tools... +# +#if test -x /usr/lib/openbox/gnome-settings-daemon >/dev/null; then +# /usr/lib/openbox/gnome-settings-daemon & +#elif which gnome-settings-daemon >/dev/null 2>&1; then +# gnome-settings-daemon & +#fi + +# If you want to use XFCE config tools... +# +#xfce-mcs-manager & + +tint2 & diff --git a/archlive/airootfs/etc/skel/.config/openbox/environment b/archlive/airootfs/etc/skel/.config/openbox/environment new file mode 100644 index 00000000..3311bd6f --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/openbox/environment @@ -0,0 +1,10 @@ +# +# Set system-wide environment variables here for Openbox +# User-specific variables should be placed in $HOME/.config/openbox/environment +# + +# To set your language for displaying messages and time/date formats, use the following: +#LANG=en_CA.UTF8 + +# To set your keyboard layout, you need to modify your X config: +# http://www.google.com/search?q=how+to+set+keyboard+layout+xorg diff --git a/archlive/airootfs/etc/skel/.config/openbox/menu.xml b/archlive/airootfs/etc/skel/.config/openbox/menu.xml new file mode 100644 index 00000000..d0131dc3 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/openbox/menu.xml @@ -0,0 +1,240 @@ + + + + + + + urxvt -t "Hardware Diagnostics" -e hw-diags + + + hardinfo + + + Thunar + + + gparted + + + gsmartcontrol + + + urxvt -title "Network Diagnostics" -hold -e hw-diags-network + + + firefox + + + + + + idle + + + urxvt -e python + + + urxvt -e python2.7 + + + urxvt -e tclsh8.6 + + + + + urxvt -e hexedit + + + urxvt -e nano + + + urxvt -e vi + + + urxvt -e vim + + + + + urxvt -e alsamixer + + + mpv + + + pavucontrol + + + qv4l2 + + + + + bssh + + + bvnc + + + urxvt -e elinks + + + firefox + + + urxvt -e ftp + + + urxvt -e irssi + + + urxvt -e lftp + + + urxvt -e mail + + + exo-open --launch MailReader + + + urxvt -e talk + + + urxvt -e telnet + + + urxvt -e tkvnc + + + exo-open --launch WebBrowser + + + zenmap + + + /usr/share/zenmap/su-to-zenmap.sh + + + + + urxvt -e bc + + + urxvt -e dc + + + + + urxvt -e mc + + + thunar + + + urxvt + + + urxvtc + + + urxvt-tabbed + + + uurxvt + + + + + + + nm-connection-editor + + + + thunar-settings + + + exo-preferred-applications + + + tint2conf + + + + avahi-discover + + + /usr/lib/Thunar/ThunarBulkRename + + + urxvt -e conky + + + gparted + + + gsmartcontrol_polkit + + + urxvt -e htop + + + obmenu + + + urxvt -e pstree + + + urxvt -e /usr/bin/pstree.x11 + + + urxvt -e pstree.x11 + + + hardinfo + + + tint2 + + + urxvt -e top + + + veracrypt + + + + + xfce4-about + + + compton --xrender-sync-fence + + + urxvt -e cmatrix + + + exo-open --launch FileManager + + + urxvt -e info + + + exo-open --launch TerminalEmulator + + + urxvt -e xev + + + + + + + + + + + oblogout + + + diff --git a/archlive/airootfs/etc/skel/.config/openbox/rc.xml b/archlive/airootfs/etc/skel/.config/openbox/rc.xml new file mode 100644 index 00000000..a52cb7cc --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/openbox/rc.xml @@ -0,0 +1,806 @@ + + + + + 10 + 20 + + + yes + + no + + yes + + no + + 200 + + no + + + + Smart + +
yes
+ + Primary + + 1 + +
+ + + 4 + Triste-Orange + NLIMC + + yes + yes + + sans + 8 + + bold + + normal + + + + sans + 8 + + bold + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + bold + + normal + + + + sans + 9 + + bold + + normal + + + + + + 1 + 1 + + Arch + + 875 + + + + yes + Nonpixel + + Center + + + + 10 + + 10 + + + + + + 0 + 0 + 0 + 0 + + + TopLeft + + 0 + 0 + no + Above + + Vertical + + no + 300 + + 300 + + Middle + + + + C-g + + + + left + no + + + + + right + no + + + + + up + no + + + + + down + no + + + + + left + no + + + + + right + no + + + + + up + no + + + + + down + no + + + + + + + + + + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + yes + yes + + + + + + + + + + + right + + + + + left + + + + + up + + + + + down + + + + + + root-menu + + + + + urxvt -title "Hardware Diagnostics" -e hw-diags + + + + + thunar + + + + + hardinfo + + + + + urxvt -title "Mount all Volumes" -e mount-all-volumes-foh + + + + + rofi -combi-modi window,drun,run -show combi -modi combi + + + + + urxvt -title "Hardware Diagnostics" -e hw-diags foh + + + + + urxvt + + + + + urxvt -title "Hardware Sensors" -e hw-diags-sensors + + + + + firefox + + + + + oblogout + + + + + 1 + + 500 + + 400 + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + + + + + next + + + + + previous + + + + + next + + + + + previous + + + + + next + + + + + + + + + + + + + no + + + + + + + + + + + yes + + + + + + + + + + + + + + + + + + + + + + + client-menu + + + + + + + top + + + + + + + left + + + + + + + right + + + + + + + bottom + + + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + client-menu + + + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vertical + + + + + horizontal + + + + + + + + + + + + + + + + + previous + + + + + next + + + + + previous + + + + + next + + + + + previous + + + + + next + + + + + + + + + + + + + + + + client-list-combined-menu + + + + + root-menu + + + + + + + previous + + + + + next + + + + + previous + + + + + next + + + + + + + + menu.xml + 200 + + no + + 100 + + 400 + + yes + + yes + + + + + +
diff --git a/archlive/airootfs/etc/skel/.config/rofi/config b/archlive/airootfs/etc/skel/.config/rofi/config new file mode 100644 index 00000000..5c27c752 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/rofi/config @@ -0,0 +1,11 @@ +! rofi theme +rofi.color-enabled: true +! bg border separator +rofi.color-window: argb:d02d3036, #2d3036, #d64937 +! bg fg bg-alt hl-bg hl-fg +rofi.color-normal: argb:d02d3036, #d8d8d8, argb:d02d3036, #2d3036, #d64937 +rofi.color-active: argb:d0222222, #d64937, argb:d0222222, #d64937, #d8d8d8 +rofi.color-urgent: argb:d0888888, #d8d8d8, argb:d0888888, #888888, #d64937 + +rofi.separator-style: solid +rofi.hide-scrollbar: true diff --git a/archlive/airootfs/etc/skel/.config/tint2/tint2rc b/archlive/airootfs/etc/skel/.config/tint2/tint2rc new file mode 100644 index 00000000..a0319768 --- /dev/null +++ b/archlive/airootfs/etc/skel/.config/tint2/tint2rc @@ -0,0 +1,250 @@ +#---- Generated by tint2conf 2152 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Active taskbar, Default task, Iconified task, Inactive desktop name, Inactive taskbar, Panel, Urgent task +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #2d3036 100 +border_color = #2d3036 100 +background_color_hover = #2d3036 100 +border_color_hover = #2d3036 100 +background_color_pressed = #2d3036 100 +border_color_pressed = #2d3036 100 + +# Background 2: +rounded = 1 +border_width = 0 +border_sides = TBLR +background_color = #d8d8d8 30 +border_color = #d8d8d8 30 +background_color_hover = #d8d8d8 30 +border_color_hover = #d8d8d8 30 +background_color_pressed = #d8d8d8 30 +border_color_pressed = #d8d8d8 30 + +# Background 3: +rounded = 1 +border_width = 0 +border_sides = TBLR +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #000000 0 +border_color_hover = #000000 0 +background_color_pressed = #000000 0 +border_color_pressed = #000000 0 + +# Background 4: +rounded = 1 +border_width = 1 +border_sides = TBLR +background_color = #888888 20 +border_color = #ed2323 60 +background_color_hover = #888888 20 +border_color_hover = #ed2323 60 +background_color_pressed = #888888 20 +border_color_pressed = #ed2323 60 + +# Background 5: +rounded = 0 +border_width = 1 +border_sides = TBLR +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #000000 0 +border_color_hover = #000000 0 +background_color_pressed = #000000 0 +border_color_pressed = #000000 0 + +# Background 6: +rounded = 0 +border_width = 1 +border_sides = TBLR +background_color = #d8d8d8 8 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 8 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 8 +border_color_pressed = #d8d8d8 0 + +# Background 7: Tooltip +rounded = 3 +border_width = 0 +border_sides = TBLR +background_color = #222222 90 +border_color = #222222 90 +background_color_hover = #222222 90 +border_color_hover = #222222 90 +background_color_pressed = #222222 90 +border_color_pressed = #222222 90 + +# Background 8: +rounded = 1 +border_width = 1 +border_sides = TBLR +background_color = #888888 20 +border_color = #888888 20 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 9: Active desktop name, Clock +rounded = 1 +border_width = 1 +border_sides = TBLR +background_color = #d64937 100 +border_color = #d64937 100 +background_color_hover = #d64937 100 +border_color_hover = #d64937 100 +gradient_id_hover = 0 +background_color_pressed = #d64937 100 +border_color_pressed = #d64937 100 + +#------------------------------------- +# Panel +panel_items = TSC +panel_size = 100% 30 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +primary_monitor_first = 0 +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 0 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 + +#------------------------------------- +# Taskbar +taskbar_mode = single_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 2 2 0 +taskbar_background_id = 1 +taskbar_active_background_id = 1 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_always_show_all_desktop_tasks = 1 +taskbar_name_padding = 5 2 +taskbar_name_background_id = 1 +taskbar_name_active_background_id = 9 +taskbar_name_font = Inconsolata 10 +taskbar_name_font_color = #a9a9a9 100 +taskbar_name_active_font_color = #ffffff 100 +taskbar_distribute_size = 1 +taskbar_sort_order = title +task_align = left + +#------------------------------------- +# Task +task_text = 1 +task_icon = 0 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 200 30 +task_padding = 2 2 2 +task_font = Inconsolata 10 +task_tooltip = 1 +task_font_color = #a8adb5 100 +task_active_font_color = #ffffff 100 +task_urgent_font_color = #a8adb5 100 +task_iconified_font_color = #a8adb5 100 +task_icon_asb = 100 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 1 +task_active_background_id = 1 +task_urgent_background_id = 1 +task_iconified_background_id = 1 +mouse_left = toggle_iconify +mouse_middle = none +mouse_right = close +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 4 2 3 +systray_background_id = 0 +systray_sort = right2left +systray_icon_size = 24 +systray_icon_asb = 100 0 0 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 8 4 4 +launcher_background_id = 0 +launcher_icon_background_id = 0 +launcher_icon_size = 0 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 0 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +#time1_format = %a, %d %B @ %H:%M +time1_format = %F %H:%M +time2_format = +time1_font = Inconsolata 10 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 4 4 +clock_background_id = 9 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = +clock_rclick_command = +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "battery low" +bat1_font = Inconsolata 12 +bat2_font = Inconsolata 12 +battery_font_color = #b5b5b5 100 +battery_padding = 2 0 +battery_background_id = 0 +battery_hide = 96 +battery_lclick_command = +battery_rclick_command = +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 2 2 +tooltip_background_id = 7 +tooltip_font_color = #d8d8d8 100 +tooltip_font = Inconsolata 12 + diff --git a/archlive/airootfs/etc/skel/.conkyrc b/archlive/airootfs/etc/skel/.conkyrc index e6be18a8..adfd5cbb 100644 --- a/archlive/airootfs/etc/skel/.conkyrc +++ b/archlive/airootfs/etc/skel/.conkyrc @@ -13,7 +13,7 @@ # pkill -xf "conky -q -c $HOME/.config/conky/BL-Default.conkyrc" & ### Begin Window Settings ##################### own_window yes -own_window_type override +#own_window_type override own_window_transparent no own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky own_window_colour 000000 @@ -150,6 +150,8 @@ Disk I/O: ${diskiograph 20,180 ${color} ${color}} Down: ${downspeed}${goto 115}Up:${alignr}${upspeed} +#Network + ${alignc}S H O R T C U T K E Y S ${hr} [Super] + d${alignr}HW Diagnostics diff --git a/archlive/airootfs/etc/skel/.dircolors b/archlive/airootfs/etc/skel/.dircolors new file mode 100644 index 00000000..ccb0d187 --- /dev/null +++ b/archlive/airootfs/etc/skel/.dircolors @@ -0,0 +1,193 @@ +# Configuration file for dircolors, a utility to help you set the +# LS_COLORS environment variable used by GNU ls with the --color option. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# Copying and distribution of this file, with or without modification, +# are permitted provided the copyright notice and this notice are preserved. +# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the +# slackware version of dircolors) are recognized but ignored. +# Below are TERM entries, which can be a glob patterns, to match +# against the TERM environment variable to determine if it is colorizable. +TERM Eterm +TERM ansi +TERM *color* +TERM con[0-9]*x[0-9]* +TERM cons25 +TERM console +TERM cygwin +TERM dtterm +TERM gnome +TERM hurd +TERM jfbterm +TERM konsole +TERM kterm +TERM linux +TERM linux-c +TERM mlterm +TERM putty +TERM rxvt* +TERM screen* +TERM st +TERM terminator +TERM tmux* +TERM vt100 +TERM xterm* +# Below are the color init strings for the basic file types. A color init +# string consists of one or more of the following numeric codes: +# Attribute codes: +# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed +# Text color codes: +# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white +# Background color codes: +# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white +#NORMAL 00 # no color code at all +#FILE 00 # regular file: use no color at all +RESET 0 # reset to "normal" color +DIR 01;34 # directory +LINK 01;36 # symbolic link. (If you set this to 'target' instead of a + # numerical value, the color is as for the file pointed to.) +MULTIHARDLINK 00 # regular file with more than one link +FIFO 40;33 # pipe +SOCK 01;35 # socket +DOOR 01;35 # door +BLK 40;33;01 # block device driver +CHR 40;33;01 # character device driver +ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ... +MISSING 00 # ... and the files they point to +SETUID 37;41 # file that is setuid (u+s) +SETGID 30;43 # file that is setgid (g+s) +CAPABILITY 30;41 # file with capability +STICKY_OTHER_WRITABLE 40;33;01 # dir that is sticky and other-writable (+t,o+w) +OTHER_WRITABLE 40;33 # dir that is other-writable (o+w) and not sticky +STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable +# This is for files with execute permission: +EXEC 01;32 +# List any file extensions like '.gz' or '.tar' that you would like ls +# to colorize below. Put the extension, a space, and the color init string. +# (and any comments you want to add after a '#') +# If you use DOS-style suffixes, you may want to uncomment the following: +#.cmd 01;32 # executables (bright green) +#.exe 01;32 +#.com 01;32 +#.btm 01;32 +#.bat 01;32 +# Or if you want to colorize scripts even if they do not have the +# executable bit actually set. +#.sh 01;32 +#.csh 01;32 + # archives or compressed (bright red) +.tar 01;31 +.tgz 01;31 +.arc 01;31 +.arj 01;31 +.taz 01;31 +.lha 01;31 +.lz4 01;31 +.lzh 01;31 +.lzma 01;31 +.tlz 01;31 +.txz 01;31 +.tzo 01;31 +.t7z 01;31 +.zip 01;31 +.z 01;31 +.Z 01;31 +.dz 01;31 +.gz 01;31 +.lrz 01;31 +.lz 01;31 +.lzo 01;31 +.xz 01;31 +.zst 01;31 +.tzst 01;31 +.bz2 01;31 +.bz 01;31 +.tbz 01;31 +.tbz2 01;31 +.tz 01;31 +.deb 01;31 +.rpm 01;31 +.jar 01;31 +.war 01;31 +.ear 01;31 +.sar 01;31 +.rar 01;31 +.alz 01;31 +.ace 01;31 +.zoo 01;31 +.cpio 01;31 +.7z 01;31 +.rz 01;31 +.cab 01;31 +.wim 01;31 +.swm 01;31 +.dwm 01;31 +.esd 01;31 +# image formats +.jpg 01;35 +.jpeg 01;35 +.mjpg 01;35 +.mjpeg 01;35 +.gif 01;35 +.bmp 01;35 +.pbm 01;35 +.pgm 01;35 +.ppm 01;35 +.tga 01;35 +.xbm 01;35 +.xpm 01;35 +.tif 01;35 +.tiff 01;35 +.png 01;35 +.svg 01;35 +.svgz 01;35 +.mng 01;35 +.pcx 01;35 +.mov 01;35 +.mpg 01;35 +.mpeg 01;35 +.m2v 01;35 +.mkv 01;35 +.webm 01;35 +.ogm 01;35 +.mp4 01;35 +.m4v 01;35 +.mp4v 01;35 +.vob 01;35 +.qt 01;35 +.nuv 01;35 +.wmv 01;35 +.asf 01;35 +.rm 01;35 +.rmvb 01;35 +.flc 01;35 +.avi 01;35 +.fli 01;35 +.flv 01;35 +.gl 01;35 +.dl 01;35 +.xcf 01;35 +.xwd 01;35 +.yuv 01;35 +.cgm 01;35 +.emf 01;35 +# https://wiki.xiph.org/MIME_Types_and_File_Extensions +.ogv 01;35 +.ogx 01;35 +# audio formats +.aac 00;36 +.au 00;36 +.flac 00;36 +.m4a 00;36 +.mid 00;36 +.midi 00;36 +.mka 00;36 +.mp3 00;36 +.mpc 00;36 +.ogg 00;36 +.ra 00;36 +.wav 00;36 +# https://wiki.xiph.org/MIME_Types_and_File_Extensions +.oga 00;36 +.opus 00;36 +.spx 00;36 +.xspf 00;36 diff --git a/archlive/airootfs/etc/skel/.dmrc b/archlive/airootfs/etc/skel/.dmrc deleted file mode 100644 index 9cd11917..00000000 --- a/archlive/airootfs/etc/skel/.dmrc +++ /dev/null @@ -1,3 +0,0 @@ -[Desktop] -Language=en_US.utf8 -Session=xfce diff --git a/archlive/airootfs/etc/skel/.gtkrc-2.0 b/archlive/airootfs/etc/skel/.gtkrc-2.0 new file mode 100644 index 00000000..b54a0f5f --- /dev/null +++ b/archlive/airootfs/etc/skel/.gtkrc-2.0 @@ -0,0 +1,19 @@ +# DO NOT EDIT! This file will be overwritten by LXAppearance. +# Any customization should be done in ~/.gtkrc-2.0.mine instead. + +include "/home/wktech/.gtkrc-2.0.mine" +gtk-theme-name="Arc-Dark" +gtk-icon-theme-name="Papirus-Dark" +gtk-font-name="Noto Sans 11" +gtk-cursor-theme-name="Adwaita" +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle="hintslight" +gtk-xft-rgba="rgb" diff --git a/archlive/airootfs/etc/skel/.update_conky b/archlive/airootfs/etc/skel/.update_conky new file mode 100644 index 00000000..8fba9f91 --- /dev/null +++ b/archlive/airootfs/etc/skel/.update_conky @@ -0,0 +1,12 @@ +#!/bin/bash + +IF_LIST=($(ip l | egrep '^[0-9]+:\s+(eth|en|wl)' | sed -r 's/^[0-9]+:\s+(\w+):.*/\1/' | sort)) + + +for i in "${IF_LIST[@]}"; do + if [[ "${i:0:1}" == "e" ]]; then + sed -i -r "s/#Network/Wired:\${alignr}\${addr $i}\n#Network/" ~/.conkyrc + else + sed -i -r "s/#Network/Wireless:\${alignr}\${addr $i}\n#Network/" ~/.conkyrc + fi +done diff --git a/archlive/airootfs/etc/skel/.xinitrc b/archlive/airootfs/etc/skel/.xinitrc index a674ec72..1ed2ec3e 100644 --- a/archlive/airootfs/etc/skel/.xinitrc +++ b/archlive/airootfs/etc/skel/.xinitrc @@ -1,10 +1,19 @@ #!/bin/sh +dbus-update-activation-environment --systemd DISPLAY xrdb -merge $HOME/.Xresources +xset s off +xset -dpms +eval $(ssh-agent) +export SSH_AUTH_SOCK compton & sleep 1s conky -d +nm-applet & +cbatticon & +pasystray & $HOME/.network_start & $HOME/.urxvt_default_res & $HOME/.update_wallpaper & -exec i3 +$HOME/.update_conky & +exec openbox-session diff --git a/archlive/airootfs/etc/skel/.zlogin b/archlive/airootfs/etc/skel/.zlogin index 799f452a..5e685b31 100644 --- a/archlive/airootfs/etc/skel/.zlogin +++ b/archlive/airootfs/etc/skel/.zlogin @@ -1,6 +1,10 @@ setterm -blank 0 -powerdown 0 if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then if ! fgrep -q "nox" /proc/cmdline; then + if fgrep -q "i3" /proc/cmdline; then + sed -i -r 's/#(own_window_type override)/\1/' ~/.conkyrc + sed -i -r 's/openbox-session/i3/' ~/.xinitrc + fi startx else hw-diags cli diff --git a/archlive/airootfs/etc/skel/.zshrc b/archlive/airootfs/etc/skel/.zshrc index c4e9f93c..23320e13 100644 --- a/archlive/airootfs/etc/skel/.zshrc +++ b/archlive/airootfs/etc/skel/.zshrc @@ -86,3 +86,5 @@ source $ZSH/oh-my-zsh.sh ## Load aliases . $HOME/.aliases +## Update LS_COLORS +eval $(dircolors ~/.dircolors) diff --git a/archlive/airootfs/root/customize_airootfs.sh b/archlive/airootfs/root/customize_airootfs.sh index 6efee777..6d70438f 100644 --- a/archlive/airootfs/root/customize_airootfs.sh +++ b/archlive/airootfs/root/customize_airootfs.sh @@ -22,6 +22,7 @@ sed -i 's/#FallbackNTP/NTP/' /etc/systemd/timesyncd.conf echo "[customize_airootfs] INFO: Setup root user" usermod -s /usr/bin/zsh root cp -aT /etc/skel/ /root/ +rm /root/.ssh/id* rm /root/.zlogin chmod 700 /root echo "root:Abracadabra" | chpasswd @@ -38,32 +39,21 @@ echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers # Misc echo "[customize_airootfs] INFO: Misc Settings" -sed -i -r 's/extensions.autoDisableScopes", [0-9]+/extensions.autoDisableScopes", 0/' /usr/lib/firefox/browser/defaults/preferences/vendor.js +#sed -i -r 's/extensions.autoDisableScopes", [0-9]+/extensions.autoDisableScopes", 0/' /usr/lib/firefox/browser/defaults/preferences/vendor.js +mkdir /media # Set mirrorlist echo "[customize_airootfs] INFO: Setup pacman mirrorlist" -## Process: -## Replace newlines with ~ to treat as single line -## Uncomment all US mirrors -## Resetore newlines -## Rank mirrors to only use the top 10 mirrors -### BROKEN ### -#mv -bv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak -#tmp_file="$(mktemp)" -#tr '\n' '~' < /etc/pacman.d/mirrorlist.bak | sed -r 's/([0-1]\.[0-9], United States)~#/\1~/g' | tr '~' '\n' > "$tmp_file" -#rankmirrors -n 10 "$tmp_file" | egrep '^S' > /etc/pacman.d/mirrorlist -#rm -v "$tmp_file" -### List ranked on 2017-06-08 ### -echo 'Server = http://mirror.htnshost.com/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist -echo 'Server = http://ftp.osuosl.org/pub/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirrors.cat.pdx.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirror.lty.me/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirrors.kernel.org/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = https://mirror.lty.me/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = https://mirrors.ocf.berkeley.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirrors.ocf.berkeley.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +# Ranked on 2017-10-19 +echo 'Server = http://mirrors.cat.pdx.edu/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.advancedhosters.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://archlinux.surlyjake.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = https://archlinux.surlyjake.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://ca.us.mirror.archlinux-br.org/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = https://arlm.tyzoid.com/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist +echo 'Server = http://il.us.mirror.archlinux-br.org/$repo/os/$arch' >> /etc/pacman.d/mirrorlist # journald settings (from archiso) echo "[customize_airootfs] INFO: Setup journald" diff --git a/archlive/packages.both b/archlive/packages.both index e8fe8359..31fa6dbf 100644 --- a/archlive/packages.both +++ b/archlive/packages.both @@ -7,6 +7,7 @@ bc bluez bluez-utils btrfs-progs +cbatticon chntpw cmatrix colordiff @@ -40,6 +41,7 @@ gparted gptfdisk grub gsmartcontrol +gtk-theme-arc-git hardinfo hdparm hexedit @@ -71,19 +73,24 @@ mtools mupdf ncdu ndisc6 +network-manager-applet networkmanager nfs-utils nilfs-utils nmap ntfs-3g ntp +oblogout +openbox-patched openconnect openssh openvpn p7zip +papirus-icon-theme partclone parted partimage +pasystray pavucontrol ppp pptpclient @@ -107,6 +114,8 @@ sudo tcpdump terminus-font testdisk-wip +thunar +tint2 tk tmux tree diff --git a/archlive/pacman.conf b/archlive/pacman.conf index 7e5ad8a9..06b23f70 100644 --- a/archlive/pacman.conf +++ b/archlive/pacman.conf @@ -71,7 +71,7 @@ LocalFileSigLevel = Optional [wk-repo] SigLevel = Optional TrustAll -Server = file:///home/builduser/Projects/wk-arch/wk-repo +Server = file:///home/builduser/wk-arch/wk-repo #[testing] #Include = /etc/pacman.d/mirrorlist diff --git a/build-wk b/build-wk index ef584bb7..dcdefca8 100644 --- a/build-wk +++ b/build-wk @@ -1,9 +1,9 @@ #!/bin/bash #/srv/ArchBuilds # Set Vars -LOG_DIR="/srv/ArchBuilds/BuildLogs" -OUT_DIR="/srv/ArchBuilds/isos" -TMP_DIR="/srv/ScratchDir" +LOG_DIR="/mnt/Build/logs" +OUT_DIR="/mnt/Build/isos" +TMP_DIR="/mnt/Scratch" DATE="$(date +%F)" DATETIME="$(date +%F_%H%M)" @@ -12,6 +12,8 @@ if [[ "$EUID" -eq 0 ]]; then # Set permissions echo "Setting permissions..." chown root.root archlive -R + chmod 700 archlive/airootfs/etc/skel/.ssh + chmod 600 archlive/airootfs/etc/skel/.ssh/id_rsa # Modify build.sh if ! grep -iq 'customize_iso' archlive/build.sh; then @@ -56,7 +58,7 @@ else # Build custom repo packages mkdir _done/$AFTER - for p in aic94xx-firmware bash-pipes i3-gaps i3lock-fancy-git mprime-bin testdisk-wip ttf-font-awesome wd719x-firmware wimlib; do + for p in aic94xx-firmware bash-pipes gtk-theme-arc-git hfsprogs i3-gaps i3lock-fancy-git mprime-bin openbox-patched papirus-icon-theme pasystray testdisk-wip ttf-font-awesome wd719x-firmware wimlib; do echo "Building: $p" curl -LsfO https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz tar xf $p.tar.gz From 40a432786d02c40a7c3f7c56ffae38840a187419 Mon Sep 17 00:00:00 2001 From: Alan Mason <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 18:10:39 -0800 Subject: [PATCH 015/107] Prep for merge into main project --- .gitignore => .linux_items/.gitignore | 0 .../archlive}/airootfs/etc/default/ufw | 0 .../archlive}/airootfs/etc/fstab | 0 .../archlive}/airootfs/etc/locale.conf | 0 .../archlive}/airootfs/etc/locale.gen | 0 .../archlive}/airootfs/etc/machine-id | 0 .../archlive}/airootfs/etc/motd | 0 .../archlive}/airootfs/etc/oblogout.conf | 0 .../etc/polkit-1/rules.d/49-nopasswd_global.rules | 0 .../archlive}/airootfs/etc/skel/.Xresources | 0 .../archlive}/airootfs/etc/skel/.aliases | 0 .../archlive}/airootfs/etc/skel/.bash_logout | 0 .../archlive}/airootfs/etc/skel/.bash_profile | 0 .../archlive}/airootfs/etc/skel/.bashrc | 0 .../airootfs/etc/skel/.config/Thunar/accels.scm | 0 .../airootfs/etc/skel/.config/Thunar/uca.xml | 0 .../airootfs/etc/skel/.config/dunst/dunstrc | 0 .../airootfs/etc/skel/.config/gtk-3.0/settings.ini | 0 .../archlive}/airootfs/etc/skel/.config/i3/config | 0 .../airootfs/etc/skel/.config/i3status/config | 0 .../airootfs/etc/skel/.config/mimeapps.list | 0 .../airootfs/etc/skel/.config/openbox/autostart | 0 .../airootfs/etc/skel/.config/openbox/environment | 0 .../airootfs/etc/skel/.config/openbox/menu.xml | 0 .../airootfs/etc/skel/.config/openbox/rc.xml | 0 .../archlive}/airootfs/etc/skel/.config/rofi/config | 0 .../airootfs/etc/skel/.config/tint2/tint2rc | 0 .../archlive}/airootfs/etc/skel/.conky_start | 0 .../archlive}/airootfs/etc/skel/.conkyrc | 0 .../archlive}/airootfs/etc/skel/.dircolors | 0 .../etc/skel/.gstreamer-0.10/registry.x86_64.bin | Bin .../archlive}/airootfs/etc/skel/.gtkrc-2.0 | 0 .../etc/skel/.local/share/notes/Notes/Notes | 0 .../etc/skel/.local/share/recently-used.xbel | 0 .../archlive}/airootfs/etc/skel/.network_start | 0 .../archlive}/airootfs/etc/skel/.rsync_exclusions | 0 .../archlive}/airootfs/etc/skel/.tmux.conf | 0 .../archlive}/airootfs/etc/skel/.update_conky | 0 .../archlive}/airootfs/etc/skel/.update_wallpaper | 0 .../archlive}/airootfs/etc/skel/.urxvt_default_res | 0 .../archlive}/airootfs/etc/skel/.vimrc | 0 .../archlive}/airootfs/etc/skel/.xinitrc | 0 .../archlive}/airootfs/etc/skel/.zlogin | 0 .../archlive}/airootfs/etc/skel/.zshrc | 0 .../dbus-org.freedesktop.NetworkManager.service | 0 .../dbus-org.freedesktop.nm-dispatcher.service | 0 .../etc/systemd/system/display-manager.service | 0 .../system/getty.target.wants/getty@tty1.service | 0 .../system/getty@tty1.service.d/autologin.conf | 0 .../multi-user.target.wants/NetworkManager.service | 0 .../system/multi-user.target.wants/rngd.service | 0 .../system/multi-user.target.wants/sshd.service | 0 .../system/multi-user.target.wants/ufw.service | 0 .../airootfs/etc/udev/rules.d/99-udisks2.rules | 0 .../archlive}/airootfs/etc/udevil/udevil.conf | 0 .../archlive}/airootfs/etc/ufw/after.init | 0 .../archlive}/airootfs/etc/ufw/after.rules | 0 .../archlive}/airootfs/etc/ufw/after6.rules | 0 .../airootfs/etc/ufw/applications.d/ufw-bittorent | 0 .../airootfs/etc/ufw/applications.d/ufw-chat | 0 .../etc/ufw/applications.d/ufw-directoryserver | 0 .../airootfs/etc/ufw/applications.d/ufw-dnsserver | 0 .../airootfs/etc/ufw/applications.d/ufw-fileserver | 0 .../airootfs/etc/ufw/applications.d/ufw-loginserver | 0 .../airootfs/etc/ufw/applications.d/ufw-mailserver | 0 .../airootfs/etc/ufw/applications.d/ufw-printserver | 0 .../airootfs/etc/ufw/applications.d/ufw-proxyserver | 0 .../airootfs/etc/ufw/applications.d/ufw-webserver | 0 .../archlive}/airootfs/etc/ufw/before.init | 0 .../archlive}/airootfs/etc/ufw/before.rules | 0 .../archlive}/airootfs/etc/ufw/before6.rules | 0 .../archlive}/airootfs/etc/ufw/sysctl.conf | 0 .../archlive}/airootfs/etc/ufw/ufw.conf | 0 .../archlive}/airootfs/etc/ufw/user.rules | 0 .../archlive}/airootfs/etc/ufw/user6.rules | 0 .../archlive}/airootfs/etc/vconsole.conf | 0 .../archlive}/airootfs/etc/xdg/xfce4/kiosk/kioskrc | 0 .../archlive}/airootfs/root/.automated_script.sh | 0 .../archlive}/airootfs/root/.zlogin | 0 .../archlive}/airootfs/root/customize_airootfs.sh | 0 .../archlive}/airootfs/root/install.txt | 0 .../archlive}/airootfs/usr/local/bin/apple_fans | 0 .../archlive}/airootfs/usr/local/bin/arch.conf | 0 .../airootfs/usr/local/bin/connect-to-network | 0 .../archlive}/airootfs/usr/local/bin/hw-diags | 0 .../archlive}/airootfs/usr/local/bin/hw-diags-audio | 0 .../airootfs/usr/local/bin/hw-diags-badblocks | 0 .../archlive}/airootfs/usr/local/bin/hw-diags-inner | 0 .../airootfs/usr/local/bin/hw-diags-network | 0 .../airootfs/usr/local/bin/hw-diags-prime95 | 0 .../airootfs/usr/local/bin/hw-diags-progress | 0 .../airootfs/usr/local/bin/hw-diags-sensors | 0 .../airootfs/usr/local/bin/mount-all-volumes | 0 .../airootfs/usr/local/bin/mount-all-volumes-foh | 0 .../airootfs/usr/local/bin/mount-backup-shares | 0 .../archlive}/airootfs/usr/local/bin/msword-search | 0 .../archlive}/airootfs/usr/local/bin/remount-rw | 0 .../archlive}/airootfs/usr/local/bin/wifi.conf | 0 .../share/applications/Hardware Diagnostics.desktop | 0 .../share/applications/Hardware Information.desktop | 0 .../usr/share/applications/NetworkTest.desktop | 0 .../usr/share/applications/SpeedTest.desktop | 0 .../archlive}/extra/arch/arch.conf | 0 .../archlive}/extra/arch/conky.rc | 0 .../archlive}/extra/arch/wifi.conf | 0 {archlive => .linux_items/archlive}/mkinitcpio.conf | 0 {archlive => .linux_items/archlive}/packages.both | 0 {archlive => .linux_items/archlive}/packages.i686 | 0 {archlive => .linux_items/archlive}/packages.x86_64 | 0 {archlive => .linux_items/archlive}/pacman.conf | 0 build-wk => .linux_items/build-wk | 0 111 files changed, 0 insertions(+), 0 deletions(-) rename .gitignore => .linux_items/.gitignore (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/default/ufw (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/fstab (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/locale.conf (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/locale.gen (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/machine-id (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/motd (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/oblogout.conf (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.Xresources (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.aliases (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.bash_logout (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.bash_profile (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.bashrc (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/Thunar/accels.scm (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/Thunar/uca.xml (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/dunst/dunstrc (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/gtk-3.0/settings.ini (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/i3/config (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/i3status/config (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/mimeapps.list (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/openbox/autostart (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/openbox/environment (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/openbox/menu.xml (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/openbox/rc.xml (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/rofi/config (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.config/tint2/tint2rc (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.conky_start (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.conkyrc (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.dircolors (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.gtkrc-2.0 (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.local/share/notes/Notes/Notes (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.local/share/recently-used.xbel (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.network_start (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.rsync_exclusions (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.tmux.conf (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.update_conky (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.update_wallpaper (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.urxvt_default_res (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.vimrc (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.xinitrc (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.zlogin (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/skel/.zshrc (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/systemd/system/display-manager.service (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/udev/rules.d/99-udisks2.rules (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/udevil/udevil.conf (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/after.init (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/after.rules (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/after6.rules (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/applications.d/ufw-bittorent (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/applications.d/ufw-chat (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/applications.d/ufw-directoryserver (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/applications.d/ufw-dnsserver (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/applications.d/ufw-fileserver (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/applications.d/ufw-loginserver (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/applications.d/ufw-mailserver (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/applications.d/ufw-printserver (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/applications.d/ufw-proxyserver (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/applications.d/ufw-webserver (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/before.init (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/before.rules (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/before6.rules (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/sysctl.conf (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/ufw.conf (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/user.rules (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/ufw/user6.rules (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/vconsole.conf (100%) rename {archlive => .linux_items/archlive}/airootfs/etc/xdg/xfce4/kiosk/kioskrc (100%) rename {archlive => .linux_items/archlive}/airootfs/root/.automated_script.sh (100%) rename {archlive => .linux_items/archlive}/airootfs/root/.zlogin (100%) rename {archlive => .linux_items/archlive}/airootfs/root/customize_airootfs.sh (100%) rename {archlive => .linux_items/archlive}/airootfs/root/install.txt (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/apple_fans (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/arch.conf (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/connect-to-network (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/hw-diags (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/hw-diags-audio (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/hw-diags-badblocks (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/hw-diags-inner (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/hw-diags-network (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/hw-diags-prime95 (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/hw-diags-progress (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/hw-diags-sensors (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/mount-all-volumes (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/mount-all-volumes-foh (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/mount-backup-shares (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/msword-search (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/remount-rw (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/local/bin/wifi.conf (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/share/applications/Hardware Diagnostics.desktop (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/share/applications/Hardware Information.desktop (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/share/applications/NetworkTest.desktop (100%) rename {archlive => .linux_items/archlive}/airootfs/usr/share/applications/SpeedTest.desktop (100%) rename {archlive => .linux_items/archlive}/extra/arch/arch.conf (100%) rename {archlive => .linux_items/archlive}/extra/arch/conky.rc (100%) rename {archlive => .linux_items/archlive}/extra/arch/wifi.conf (100%) rename {archlive => .linux_items/archlive}/mkinitcpio.conf (100%) rename {archlive => .linux_items/archlive}/packages.both (100%) rename {archlive => .linux_items/archlive}/packages.i686 (100%) rename {archlive => .linux_items/archlive}/packages.x86_64 (100%) rename {archlive => .linux_items/archlive}/pacman.conf (100%) rename build-wk => .linux_items/build-wk (100%) diff --git a/.gitignore b/.linux_items/.gitignore similarity index 100% rename from .gitignore rename to .linux_items/.gitignore diff --git a/archlive/airootfs/etc/default/ufw b/.linux_items/archlive/airootfs/etc/default/ufw similarity index 100% rename from archlive/airootfs/etc/default/ufw rename to .linux_items/archlive/airootfs/etc/default/ufw diff --git a/archlive/airootfs/etc/fstab b/.linux_items/archlive/airootfs/etc/fstab similarity index 100% rename from archlive/airootfs/etc/fstab rename to .linux_items/archlive/airootfs/etc/fstab diff --git a/archlive/airootfs/etc/locale.conf b/.linux_items/archlive/airootfs/etc/locale.conf similarity index 100% rename from archlive/airootfs/etc/locale.conf rename to .linux_items/archlive/airootfs/etc/locale.conf diff --git a/archlive/airootfs/etc/locale.gen b/.linux_items/archlive/airootfs/etc/locale.gen similarity index 100% rename from archlive/airootfs/etc/locale.gen rename to .linux_items/archlive/airootfs/etc/locale.gen diff --git a/archlive/airootfs/etc/machine-id b/.linux_items/archlive/airootfs/etc/machine-id similarity index 100% rename from archlive/airootfs/etc/machine-id rename to .linux_items/archlive/airootfs/etc/machine-id diff --git a/archlive/airootfs/etc/motd b/.linux_items/archlive/airootfs/etc/motd similarity index 100% rename from archlive/airootfs/etc/motd rename to .linux_items/archlive/airootfs/etc/motd diff --git a/archlive/airootfs/etc/oblogout.conf b/.linux_items/archlive/airootfs/etc/oblogout.conf similarity index 100% rename from archlive/airootfs/etc/oblogout.conf rename to .linux_items/archlive/airootfs/etc/oblogout.conf diff --git a/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules b/.linux_items/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules similarity index 100% rename from archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules rename to .linux_items/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules diff --git a/archlive/airootfs/etc/skel/.Xresources b/.linux_items/archlive/airootfs/etc/skel/.Xresources similarity index 100% rename from archlive/airootfs/etc/skel/.Xresources rename to .linux_items/archlive/airootfs/etc/skel/.Xresources diff --git a/archlive/airootfs/etc/skel/.aliases b/.linux_items/archlive/airootfs/etc/skel/.aliases similarity index 100% rename from archlive/airootfs/etc/skel/.aliases rename to .linux_items/archlive/airootfs/etc/skel/.aliases diff --git a/archlive/airootfs/etc/skel/.bash_logout b/.linux_items/archlive/airootfs/etc/skel/.bash_logout similarity index 100% rename from archlive/airootfs/etc/skel/.bash_logout rename to .linux_items/archlive/airootfs/etc/skel/.bash_logout diff --git a/archlive/airootfs/etc/skel/.bash_profile b/.linux_items/archlive/airootfs/etc/skel/.bash_profile similarity index 100% rename from archlive/airootfs/etc/skel/.bash_profile rename to .linux_items/archlive/airootfs/etc/skel/.bash_profile diff --git a/archlive/airootfs/etc/skel/.bashrc b/.linux_items/archlive/airootfs/etc/skel/.bashrc similarity index 100% rename from archlive/airootfs/etc/skel/.bashrc rename to .linux_items/archlive/airootfs/etc/skel/.bashrc diff --git a/archlive/airootfs/etc/skel/.config/Thunar/accels.scm b/.linux_items/archlive/airootfs/etc/skel/.config/Thunar/accels.scm similarity index 100% rename from archlive/airootfs/etc/skel/.config/Thunar/accels.scm rename to .linux_items/archlive/airootfs/etc/skel/.config/Thunar/accels.scm diff --git a/archlive/airootfs/etc/skel/.config/Thunar/uca.xml b/.linux_items/archlive/airootfs/etc/skel/.config/Thunar/uca.xml similarity index 100% rename from archlive/airootfs/etc/skel/.config/Thunar/uca.xml rename to .linux_items/archlive/airootfs/etc/skel/.config/Thunar/uca.xml diff --git a/archlive/airootfs/etc/skel/.config/dunst/dunstrc b/.linux_items/archlive/airootfs/etc/skel/.config/dunst/dunstrc similarity index 100% rename from archlive/airootfs/etc/skel/.config/dunst/dunstrc rename to .linux_items/archlive/airootfs/etc/skel/.config/dunst/dunstrc diff --git a/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini b/.linux_items/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini similarity index 100% rename from archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini rename to .linux_items/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini diff --git a/archlive/airootfs/etc/skel/.config/i3/config b/.linux_items/archlive/airootfs/etc/skel/.config/i3/config similarity index 100% rename from archlive/airootfs/etc/skel/.config/i3/config rename to .linux_items/archlive/airootfs/etc/skel/.config/i3/config diff --git a/archlive/airootfs/etc/skel/.config/i3status/config b/.linux_items/archlive/airootfs/etc/skel/.config/i3status/config similarity index 100% rename from archlive/airootfs/etc/skel/.config/i3status/config rename to .linux_items/archlive/airootfs/etc/skel/.config/i3status/config diff --git a/archlive/airootfs/etc/skel/.config/mimeapps.list b/.linux_items/archlive/airootfs/etc/skel/.config/mimeapps.list similarity index 100% rename from archlive/airootfs/etc/skel/.config/mimeapps.list rename to .linux_items/archlive/airootfs/etc/skel/.config/mimeapps.list diff --git a/archlive/airootfs/etc/skel/.config/openbox/autostart b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/autostart similarity index 100% rename from archlive/airootfs/etc/skel/.config/openbox/autostart rename to .linux_items/archlive/airootfs/etc/skel/.config/openbox/autostart diff --git a/archlive/airootfs/etc/skel/.config/openbox/environment b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/environment similarity index 100% rename from archlive/airootfs/etc/skel/.config/openbox/environment rename to .linux_items/archlive/airootfs/etc/skel/.config/openbox/environment diff --git a/archlive/airootfs/etc/skel/.config/openbox/menu.xml b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/menu.xml similarity index 100% rename from archlive/airootfs/etc/skel/.config/openbox/menu.xml rename to .linux_items/archlive/airootfs/etc/skel/.config/openbox/menu.xml diff --git a/archlive/airootfs/etc/skel/.config/openbox/rc.xml b/.linux_items/archlive/airootfs/etc/skel/.config/openbox/rc.xml similarity index 100% rename from archlive/airootfs/etc/skel/.config/openbox/rc.xml rename to .linux_items/archlive/airootfs/etc/skel/.config/openbox/rc.xml diff --git a/archlive/airootfs/etc/skel/.config/rofi/config b/.linux_items/archlive/airootfs/etc/skel/.config/rofi/config similarity index 100% rename from archlive/airootfs/etc/skel/.config/rofi/config rename to .linux_items/archlive/airootfs/etc/skel/.config/rofi/config diff --git a/archlive/airootfs/etc/skel/.config/tint2/tint2rc b/.linux_items/archlive/airootfs/etc/skel/.config/tint2/tint2rc similarity index 100% rename from archlive/airootfs/etc/skel/.config/tint2/tint2rc rename to .linux_items/archlive/airootfs/etc/skel/.config/tint2/tint2rc diff --git a/archlive/airootfs/etc/skel/.conky_start b/.linux_items/archlive/airootfs/etc/skel/.conky_start similarity index 100% rename from archlive/airootfs/etc/skel/.conky_start rename to .linux_items/archlive/airootfs/etc/skel/.conky_start diff --git a/archlive/airootfs/etc/skel/.conkyrc b/.linux_items/archlive/airootfs/etc/skel/.conkyrc similarity index 100% rename from archlive/airootfs/etc/skel/.conkyrc rename to .linux_items/archlive/airootfs/etc/skel/.conkyrc diff --git a/archlive/airootfs/etc/skel/.dircolors b/.linux_items/archlive/airootfs/etc/skel/.dircolors similarity index 100% rename from archlive/airootfs/etc/skel/.dircolors rename to .linux_items/archlive/airootfs/etc/skel/.dircolors diff --git a/archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin b/.linux_items/archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin similarity index 100% rename from archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin rename to .linux_items/archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin diff --git a/archlive/airootfs/etc/skel/.gtkrc-2.0 b/.linux_items/archlive/airootfs/etc/skel/.gtkrc-2.0 similarity index 100% rename from archlive/airootfs/etc/skel/.gtkrc-2.0 rename to .linux_items/archlive/airootfs/etc/skel/.gtkrc-2.0 diff --git a/archlive/airootfs/etc/skel/.local/share/notes/Notes/Notes b/.linux_items/archlive/airootfs/etc/skel/.local/share/notes/Notes/Notes similarity index 100% rename from archlive/airootfs/etc/skel/.local/share/notes/Notes/Notes rename to .linux_items/archlive/airootfs/etc/skel/.local/share/notes/Notes/Notes diff --git a/archlive/airootfs/etc/skel/.local/share/recently-used.xbel b/.linux_items/archlive/airootfs/etc/skel/.local/share/recently-used.xbel similarity index 100% rename from archlive/airootfs/etc/skel/.local/share/recently-used.xbel rename to .linux_items/archlive/airootfs/etc/skel/.local/share/recently-used.xbel diff --git a/archlive/airootfs/etc/skel/.network_start b/.linux_items/archlive/airootfs/etc/skel/.network_start similarity index 100% rename from archlive/airootfs/etc/skel/.network_start rename to .linux_items/archlive/airootfs/etc/skel/.network_start diff --git a/archlive/airootfs/etc/skel/.rsync_exclusions b/.linux_items/archlive/airootfs/etc/skel/.rsync_exclusions similarity index 100% rename from archlive/airootfs/etc/skel/.rsync_exclusions rename to .linux_items/archlive/airootfs/etc/skel/.rsync_exclusions diff --git a/archlive/airootfs/etc/skel/.tmux.conf b/.linux_items/archlive/airootfs/etc/skel/.tmux.conf similarity index 100% rename from archlive/airootfs/etc/skel/.tmux.conf rename to .linux_items/archlive/airootfs/etc/skel/.tmux.conf diff --git a/archlive/airootfs/etc/skel/.update_conky b/.linux_items/archlive/airootfs/etc/skel/.update_conky similarity index 100% rename from archlive/airootfs/etc/skel/.update_conky rename to .linux_items/archlive/airootfs/etc/skel/.update_conky diff --git a/archlive/airootfs/etc/skel/.update_wallpaper b/.linux_items/archlive/airootfs/etc/skel/.update_wallpaper similarity index 100% rename from archlive/airootfs/etc/skel/.update_wallpaper rename to .linux_items/archlive/airootfs/etc/skel/.update_wallpaper diff --git a/archlive/airootfs/etc/skel/.urxvt_default_res b/.linux_items/archlive/airootfs/etc/skel/.urxvt_default_res similarity index 100% rename from archlive/airootfs/etc/skel/.urxvt_default_res rename to .linux_items/archlive/airootfs/etc/skel/.urxvt_default_res diff --git a/archlive/airootfs/etc/skel/.vimrc b/.linux_items/archlive/airootfs/etc/skel/.vimrc similarity index 100% rename from archlive/airootfs/etc/skel/.vimrc rename to .linux_items/archlive/airootfs/etc/skel/.vimrc diff --git a/archlive/airootfs/etc/skel/.xinitrc b/.linux_items/archlive/airootfs/etc/skel/.xinitrc similarity index 100% rename from archlive/airootfs/etc/skel/.xinitrc rename to .linux_items/archlive/airootfs/etc/skel/.xinitrc diff --git a/archlive/airootfs/etc/skel/.zlogin b/.linux_items/archlive/airootfs/etc/skel/.zlogin similarity index 100% rename from archlive/airootfs/etc/skel/.zlogin rename to .linux_items/archlive/airootfs/etc/skel/.zlogin diff --git a/archlive/airootfs/etc/skel/.zshrc b/.linux_items/archlive/airootfs/etc/skel/.zshrc similarity index 100% rename from archlive/airootfs/etc/skel/.zshrc rename to .linux_items/archlive/airootfs/etc/skel/.zshrc diff --git a/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service b/.linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service similarity index 100% rename from archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service rename to .linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service diff --git a/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service b/.linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service similarity index 100% rename from archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service rename to .linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service diff --git a/archlive/airootfs/etc/systemd/system/display-manager.service b/.linux_items/archlive/airootfs/etc/systemd/system/display-manager.service similarity index 100% rename from archlive/airootfs/etc/systemd/system/display-manager.service rename to .linux_items/archlive/airootfs/etc/systemd/system/display-manager.service diff --git a/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service b/.linux_items/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service similarity index 100% rename from archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service rename to .linux_items/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service diff --git a/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/.linux_items/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf similarity index 100% rename from archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf rename to .linux_items/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service similarity index 100% rename from archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service rename to .linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service similarity index 100% rename from archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service rename to .linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service similarity index 100% rename from archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service rename to .linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service diff --git a/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service b/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service similarity index 100% rename from archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service rename to .linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service diff --git a/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules b/.linux_items/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules similarity index 100% rename from archlive/airootfs/etc/udev/rules.d/99-udisks2.rules rename to .linux_items/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules diff --git a/archlive/airootfs/etc/udevil/udevil.conf b/.linux_items/archlive/airootfs/etc/udevil/udevil.conf similarity index 100% rename from archlive/airootfs/etc/udevil/udevil.conf rename to .linux_items/archlive/airootfs/etc/udevil/udevil.conf diff --git a/archlive/airootfs/etc/ufw/after.init b/.linux_items/archlive/airootfs/etc/ufw/after.init similarity index 100% rename from archlive/airootfs/etc/ufw/after.init rename to .linux_items/archlive/airootfs/etc/ufw/after.init diff --git a/archlive/airootfs/etc/ufw/after.rules b/.linux_items/archlive/airootfs/etc/ufw/after.rules similarity index 100% rename from archlive/airootfs/etc/ufw/after.rules rename to .linux_items/archlive/airootfs/etc/ufw/after.rules diff --git a/archlive/airootfs/etc/ufw/after6.rules b/.linux_items/archlive/airootfs/etc/ufw/after6.rules similarity index 100% rename from archlive/airootfs/etc/ufw/after6.rules rename to .linux_items/archlive/airootfs/etc/ufw/after6.rules diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent similarity index 100% rename from archlive/airootfs/etc/ufw/applications.d/ufw-bittorent rename to .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-chat b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-chat similarity index 100% rename from archlive/airootfs/etc/ufw/applications.d/ufw-chat rename to .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-chat diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver similarity index 100% rename from archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver rename to .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver similarity index 100% rename from archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver rename to .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver similarity index 100% rename from archlive/airootfs/etc/ufw/applications.d/ufw-fileserver rename to .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver similarity index 100% rename from archlive/airootfs/etc/ufw/applications.d/ufw-loginserver rename to .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver similarity index 100% rename from archlive/airootfs/etc/ufw/applications.d/ufw-mailserver rename to .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-printserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-printserver similarity index 100% rename from archlive/airootfs/etc/ufw/applications.d/ufw-printserver rename to .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-printserver diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver similarity index 100% rename from archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver rename to .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver diff --git a/archlive/airootfs/etc/ufw/applications.d/ufw-webserver b/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-webserver similarity index 100% rename from archlive/airootfs/etc/ufw/applications.d/ufw-webserver rename to .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-webserver diff --git a/archlive/airootfs/etc/ufw/before.init b/.linux_items/archlive/airootfs/etc/ufw/before.init similarity index 100% rename from archlive/airootfs/etc/ufw/before.init rename to .linux_items/archlive/airootfs/etc/ufw/before.init diff --git a/archlive/airootfs/etc/ufw/before.rules b/.linux_items/archlive/airootfs/etc/ufw/before.rules similarity index 100% rename from archlive/airootfs/etc/ufw/before.rules rename to .linux_items/archlive/airootfs/etc/ufw/before.rules diff --git a/archlive/airootfs/etc/ufw/before6.rules b/.linux_items/archlive/airootfs/etc/ufw/before6.rules similarity index 100% rename from archlive/airootfs/etc/ufw/before6.rules rename to .linux_items/archlive/airootfs/etc/ufw/before6.rules diff --git a/archlive/airootfs/etc/ufw/sysctl.conf b/.linux_items/archlive/airootfs/etc/ufw/sysctl.conf similarity index 100% rename from archlive/airootfs/etc/ufw/sysctl.conf rename to .linux_items/archlive/airootfs/etc/ufw/sysctl.conf diff --git a/archlive/airootfs/etc/ufw/ufw.conf b/.linux_items/archlive/airootfs/etc/ufw/ufw.conf similarity index 100% rename from archlive/airootfs/etc/ufw/ufw.conf rename to .linux_items/archlive/airootfs/etc/ufw/ufw.conf diff --git a/archlive/airootfs/etc/ufw/user.rules b/.linux_items/archlive/airootfs/etc/ufw/user.rules similarity index 100% rename from archlive/airootfs/etc/ufw/user.rules rename to .linux_items/archlive/airootfs/etc/ufw/user.rules diff --git a/archlive/airootfs/etc/ufw/user6.rules b/.linux_items/archlive/airootfs/etc/ufw/user6.rules similarity index 100% rename from archlive/airootfs/etc/ufw/user6.rules rename to .linux_items/archlive/airootfs/etc/ufw/user6.rules diff --git a/archlive/airootfs/etc/vconsole.conf b/.linux_items/archlive/airootfs/etc/vconsole.conf similarity index 100% rename from archlive/airootfs/etc/vconsole.conf rename to .linux_items/archlive/airootfs/etc/vconsole.conf diff --git a/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc b/.linux_items/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc similarity index 100% rename from archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc rename to .linux_items/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc diff --git a/archlive/airootfs/root/.automated_script.sh b/.linux_items/archlive/airootfs/root/.automated_script.sh similarity index 100% rename from archlive/airootfs/root/.automated_script.sh rename to .linux_items/archlive/airootfs/root/.automated_script.sh diff --git a/archlive/airootfs/root/.zlogin b/.linux_items/archlive/airootfs/root/.zlogin similarity index 100% rename from archlive/airootfs/root/.zlogin rename to .linux_items/archlive/airootfs/root/.zlogin diff --git a/archlive/airootfs/root/customize_airootfs.sh b/.linux_items/archlive/airootfs/root/customize_airootfs.sh similarity index 100% rename from archlive/airootfs/root/customize_airootfs.sh rename to .linux_items/archlive/airootfs/root/customize_airootfs.sh diff --git a/archlive/airootfs/root/install.txt b/.linux_items/archlive/airootfs/root/install.txt similarity index 100% rename from archlive/airootfs/root/install.txt rename to .linux_items/archlive/airootfs/root/install.txt diff --git a/archlive/airootfs/usr/local/bin/apple_fans b/.linux_items/archlive/airootfs/usr/local/bin/apple_fans similarity index 100% rename from archlive/airootfs/usr/local/bin/apple_fans rename to .linux_items/archlive/airootfs/usr/local/bin/apple_fans diff --git a/archlive/airootfs/usr/local/bin/arch.conf b/.linux_items/archlive/airootfs/usr/local/bin/arch.conf similarity index 100% rename from archlive/airootfs/usr/local/bin/arch.conf rename to .linux_items/archlive/airootfs/usr/local/bin/arch.conf diff --git a/archlive/airootfs/usr/local/bin/connect-to-network b/.linux_items/archlive/airootfs/usr/local/bin/connect-to-network similarity index 100% rename from archlive/airootfs/usr/local/bin/connect-to-network rename to .linux_items/archlive/airootfs/usr/local/bin/connect-to-network diff --git a/archlive/airootfs/usr/local/bin/hw-diags b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags similarity index 100% rename from archlive/airootfs/usr/local/bin/hw-diags rename to .linux_items/archlive/airootfs/usr/local/bin/hw-diags diff --git a/archlive/airootfs/usr/local/bin/hw-diags-audio b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-audio similarity index 100% rename from archlive/airootfs/usr/local/bin/hw-diags-audio rename to .linux_items/archlive/airootfs/usr/local/bin/hw-diags-audio diff --git a/archlive/airootfs/usr/local/bin/hw-diags-badblocks b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-badblocks similarity index 100% rename from archlive/airootfs/usr/local/bin/hw-diags-badblocks rename to .linux_items/archlive/airootfs/usr/local/bin/hw-diags-badblocks diff --git a/archlive/airootfs/usr/local/bin/hw-diags-inner b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-inner similarity index 100% rename from archlive/airootfs/usr/local/bin/hw-diags-inner rename to .linux_items/archlive/airootfs/usr/local/bin/hw-diags-inner diff --git a/archlive/airootfs/usr/local/bin/hw-diags-network b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-network similarity index 100% rename from archlive/airootfs/usr/local/bin/hw-diags-network rename to .linux_items/archlive/airootfs/usr/local/bin/hw-diags-network diff --git a/archlive/airootfs/usr/local/bin/hw-diags-prime95 b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-prime95 similarity index 100% rename from archlive/airootfs/usr/local/bin/hw-diags-prime95 rename to .linux_items/archlive/airootfs/usr/local/bin/hw-diags-prime95 diff --git a/archlive/airootfs/usr/local/bin/hw-diags-progress b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-progress similarity index 100% rename from archlive/airootfs/usr/local/bin/hw-diags-progress rename to .linux_items/archlive/airootfs/usr/local/bin/hw-diags-progress diff --git a/archlive/airootfs/usr/local/bin/hw-diags-sensors b/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-sensors similarity index 100% rename from archlive/airootfs/usr/local/bin/hw-diags-sensors rename to .linux_items/archlive/airootfs/usr/local/bin/hw-diags-sensors diff --git a/archlive/airootfs/usr/local/bin/mount-all-volumes b/.linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes similarity index 100% rename from archlive/airootfs/usr/local/bin/mount-all-volumes rename to .linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes diff --git a/archlive/airootfs/usr/local/bin/mount-all-volumes-foh b/.linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes-foh similarity index 100% rename from archlive/airootfs/usr/local/bin/mount-all-volumes-foh rename to .linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes-foh diff --git a/archlive/airootfs/usr/local/bin/mount-backup-shares b/.linux_items/archlive/airootfs/usr/local/bin/mount-backup-shares similarity index 100% rename from archlive/airootfs/usr/local/bin/mount-backup-shares rename to .linux_items/archlive/airootfs/usr/local/bin/mount-backup-shares diff --git a/archlive/airootfs/usr/local/bin/msword-search b/.linux_items/archlive/airootfs/usr/local/bin/msword-search similarity index 100% rename from archlive/airootfs/usr/local/bin/msword-search rename to .linux_items/archlive/airootfs/usr/local/bin/msword-search diff --git a/archlive/airootfs/usr/local/bin/remount-rw b/.linux_items/archlive/airootfs/usr/local/bin/remount-rw similarity index 100% rename from archlive/airootfs/usr/local/bin/remount-rw rename to .linux_items/archlive/airootfs/usr/local/bin/remount-rw diff --git a/archlive/airootfs/usr/local/bin/wifi.conf b/.linux_items/archlive/airootfs/usr/local/bin/wifi.conf similarity index 100% rename from archlive/airootfs/usr/local/bin/wifi.conf rename to .linux_items/archlive/airootfs/usr/local/bin/wifi.conf diff --git a/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop b/.linux_items/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop similarity index 100% rename from archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop rename to .linux_items/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop diff --git a/archlive/airootfs/usr/share/applications/Hardware Information.desktop b/.linux_items/archlive/airootfs/usr/share/applications/Hardware Information.desktop similarity index 100% rename from archlive/airootfs/usr/share/applications/Hardware Information.desktop rename to .linux_items/archlive/airootfs/usr/share/applications/Hardware Information.desktop diff --git a/archlive/airootfs/usr/share/applications/NetworkTest.desktop b/.linux_items/archlive/airootfs/usr/share/applications/NetworkTest.desktop similarity index 100% rename from archlive/airootfs/usr/share/applications/NetworkTest.desktop rename to .linux_items/archlive/airootfs/usr/share/applications/NetworkTest.desktop diff --git a/archlive/airootfs/usr/share/applications/SpeedTest.desktop b/.linux_items/archlive/airootfs/usr/share/applications/SpeedTest.desktop similarity index 100% rename from archlive/airootfs/usr/share/applications/SpeedTest.desktop rename to .linux_items/archlive/airootfs/usr/share/applications/SpeedTest.desktop diff --git a/archlive/extra/arch/arch.conf b/.linux_items/archlive/extra/arch/arch.conf similarity index 100% rename from archlive/extra/arch/arch.conf rename to .linux_items/archlive/extra/arch/arch.conf diff --git a/archlive/extra/arch/conky.rc b/.linux_items/archlive/extra/arch/conky.rc similarity index 100% rename from archlive/extra/arch/conky.rc rename to .linux_items/archlive/extra/arch/conky.rc diff --git a/archlive/extra/arch/wifi.conf b/.linux_items/archlive/extra/arch/wifi.conf similarity index 100% rename from archlive/extra/arch/wifi.conf rename to .linux_items/archlive/extra/arch/wifi.conf diff --git a/archlive/mkinitcpio.conf b/.linux_items/archlive/mkinitcpio.conf similarity index 100% rename from archlive/mkinitcpio.conf rename to .linux_items/archlive/mkinitcpio.conf diff --git a/archlive/packages.both b/.linux_items/archlive/packages.both similarity index 100% rename from archlive/packages.both rename to .linux_items/archlive/packages.both diff --git a/archlive/packages.i686 b/.linux_items/archlive/packages.i686 similarity index 100% rename from archlive/packages.i686 rename to .linux_items/archlive/packages.i686 diff --git a/archlive/packages.x86_64 b/.linux_items/archlive/packages.x86_64 similarity index 100% rename from archlive/packages.x86_64 rename to .linux_items/archlive/packages.x86_64 diff --git a/archlive/pacman.conf b/.linux_items/archlive/pacman.conf similarity index 100% rename from archlive/pacman.conf rename to .linux_items/archlive/pacman.conf diff --git a/build-wk b/.linux_items/build-wk similarity index 100% rename from build-wk rename to .linux_items/build-wk From 94ce0e50f0221d344e51c6477b5944d3535aee5d Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 19:55:32 -0800 Subject: [PATCH 016/107] Added Linux images --- Images/Linux.png | 3 ++ Images/Pxelinux.png | 3 ++ Images/Syslinux.png | 3 ++ Images/WizardHat.xcf | 3 ++ Images/logo.svg | 122 +++++++++++++++++++++++++++++++++++++++++++ Images/rEFInd.png | 3 ++ 6 files changed, 137 insertions(+) create mode 100644 Images/Linux.png create mode 100644 Images/Pxelinux.png create mode 100644 Images/Syslinux.png create mode 100644 Images/WizardHat.xcf create mode 100644 Images/logo.svg create mode 100644 Images/rEFInd.png diff --git a/Images/Linux.png b/Images/Linux.png new file mode 100644 index 00000000..c249cc3a --- /dev/null +++ b/Images/Linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6110e6a62e8fe6fff0ca5adfd00cb419607b566989b587b88c8d04b50aa7577 +size 112117 diff --git a/Images/Pxelinux.png b/Images/Pxelinux.png new file mode 100644 index 00000000..9e3a5149 --- /dev/null +++ b/Images/Pxelinux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85f6f1d4ab3afe13f991d61f02026efe6513f4be190846a95d03aaab1d556bce +size 14668 diff --git a/Images/Syslinux.png b/Images/Syslinux.png new file mode 100644 index 00000000..85cc482c --- /dev/null +++ b/Images/Syslinux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e05846673febd9bf38a93f087353dc6210096cd8d3756f7d950cab084defa656 +size 15149 diff --git a/Images/WizardHat.xcf b/Images/WizardHat.xcf new file mode 100644 index 00000000..1335739b --- /dev/null +++ b/Images/WizardHat.xcf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f01fb3a16d1917e9e347827aafeae3c126fd5a1438a5601bf1c699108b309a92 +size 752623 diff --git a/Images/logo.svg b/Images/logo.svg new file mode 100644 index 00000000..69b2ca2a --- /dev/null +++ b/Images/logo.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/Images/rEFInd.png b/Images/rEFInd.png new file mode 100644 index 00000000..81686537 --- /dev/null +++ b/Images/rEFInd.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c20cab382acc5191fdff17cf44651d442a4eb9561f00b8104530a1d713cc333 +size 115304 From 4d42fac79927520b6a4d0ea60654aae8f5d16055 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Wed, 6 Dec 2017 19:56:06 -0800 Subject: [PATCH 017/107] Updated README.md --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ff5d3ca0..d3c6fe62 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,22 @@ A collection of scripts to help technicians service Windows systems. * `Repairs` * `Uninstallers` +## Live Linux ## + +### Build Requirements ### + +* Arch Linux +* 4 Gb disk space + +### Initial Setup ### + +* Replace artwork as desired +* Run `Build_Linux` which will do the following: + * Install missing dependancies with pacman + * Open `main.py` in nano for configuration + * Build the local repo for the AUR packages + * Build the live Linux environment (exported as an ISO file) + ## Windows PE ## ### Build Requirements ### @@ -49,7 +65,7 @@ A collection of scripts to help technicians service Windows systems. ### Initial Setup ### -* Replace artwork as desired (if not already done above) +* Replace artwork as desired * Run `Build PE.cmd` which will do the following: * Load the WADK environment * Open `main.py` in notepad for configuration From 3b0b6f32c2596a4aa0fa40a45e95c14c4b2e7d87 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Mon, 11 Dec 2017 21:36:31 -0800 Subject: [PATCH 018/107] Started new Linux build script * Not done yet --- .gitignore | 1 + .linux_items/AUR-Packages | 14 +++++ Build Linux | 109 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 124 insertions(+) create mode 100644 .linux_items/AUR-Packages create mode 100755 Build Linux diff --git a/.gitignore b/.gitignore index 214d469a..bcaa6c80 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ **/__pycache__/* *.bak *.exe +*.swp .bin/7-Zip/ .bin/AIDA64/ .bin/BleachBit/ diff --git a/.linux_items/AUR-Packages b/.linux_items/AUR-Packages new file mode 100644 index 00000000..ad5acfaf --- /dev/null +++ b/.linux_items/AUR-Packages @@ -0,0 +1,14 @@ +aic94xx-firmware +bash-pipes +gtk-theme-arc-git +hfsprogs +i3-gaps +i3lock-fancy-git +mprime-bin +openbox-patched +papirus-icon-theme +pasystray +testdisk-wip +ttf-font-awesome +wd719x-firmware +wimlib diff --git a/Build Linux b/Build Linux new file mode 100755 index 00000000..6ccb53ba --- /dev/null +++ b/Build Linux @@ -0,0 +1,109 @@ +#!/bin/bash +# +## Wizard Kit: Live Linux Build Tool + +# Prep +ROOT_DIR="$(realpath $(dirname "$0"))" +BUILD_DIR="$ROOT_DIR/BUILD_LINUX" +LOG_DIR="$BUILD_DIR/Logs" +OUT_DIR="$ROOT_DIR/OUT_LINUX" +TMP_DIR="$BUILD_DIR/Temp" +CUSTOM_REPO_DIR="$BUILD_DIR/CustomRepo" +DATE="$(date +%F)" +DATETIME="$(date +%F_%H%M)" +AUR_PACKAGES="$ROOT_DIR/.linux_items/AUR-Packages" +if which nano >/dev/null 2>&1; then + EDITOR=nano +elif which vim >/dev/null 2>&1; then + EDITOR=vim +else + EDITOR=vi +fi +mkdir "$BUILD_DIR" 2>/dev/null +mkdir "$LOG_DIR" 2>/dev/null +mkdir "$OUT_DIR" 2>/dev/null +mkdir "$TMP_DIR" 2>/dev/null + +function cleanup() { + if [[ -d "$TMP_DIR" ]]; then + echo -n "Remove: ${TMP_DIR}? " + read + rm -Rf "$TMP_DIR" + fi +} + +function update_repo() { + # Archive current files + if [[ -d "$CUSTOM_REPO_DIR" ]]; then + mkdir "$BUILD_DIR/Archive" 2>/dev/null + archive="$BUILD_DIR/Archive/$(date "+%F_%H%M%S")" + mv -bv "$CUSTOM_REPO_DIR" "$archive" + fi + sleep 1s + + # Build custom repo packages + mkdir "$CUSTOM_REPO_DIR" 2>/dev/null + mkdir "$TMP_DIR" 2>/dev/null + pushd "$TMP_DIR" >/dev/null + for p in $(cat "$AUR_PACKAGES"); do + echo "Building: $p" + curl -LsfO https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz + tar xf $p.tar.gz + pushd $p >/dev/null + makepkg -s --noconfirm + popd >/dev/null + mv -n $p/*xz "$CUSTOM_REPO_DIR"/ + done + popd >/dev/null + + # Build custom repo database + pushd "$CUSTOM_REPO_DIR" >/dev/null + for p in *xz; do + repo-add $(basename "$CUSTOM_REPO_DIR").db.tar.gz $p + done + popd >/dev/null +} + +function copy_settings() { + # Set main settings + if [[ -f "$BUILD_DIR/MAIN_SETTINGS" ]]; then + echo -n "Overwrite MAIN_SETTINGS? " + read + fi + cp -bv "$ROOT_DIR/.bin/Scripts/settings/main.py" "$BUILD_DIR/MAIN_SETTINGS" + "$EDITOR" "$BUILD_DIR/MAIN_SETTINGS" +} + + +# Prep for build +cleanup +echo "Installing dependancies..." +sudo pacman -Syu --needed --noconfirm archiso attr base-devel curl libewf progsreiserfs rsync +copy_settings +update_repo +rsync -a /usr/share/archiso/configs/relang/ "$BUILD_DIR/" + +if [[ "$EUID" -eq 0 ]]; then + ## Elevated section ## + # Set permissions + echo "Setting permissions..." + chown root.root archlive -R + chmod 700 archlive/airootfs/etc/skel/.ssh + chmod 600 archlive/airootfs/etc/skel/.ssh/id_rsa + + # Modify build.sh + if ! grep -iq 'customize_iso' archlive/build.sh; then + sed -ir 's!run_once make_iso!# customize_iso\ncp -a ${script_path}/extra/* ${work_dir}/iso/\n\nrun_once make_iso!' archlive/build.sh + fi + + # Build ISO + ./archlive/build.sh -N "wk-arch" -V "$DATE" -L "WK_ARCH" -w "$TMP_DIR" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" + + # Cleanup + echo "Removing temp files..." + rm "$TMP_DIR" -Rf | tee -a "$LOG_DIR/$DATETIME.log" + + echo "Reverting permissions..." + chown builduser.builduser archlive -R +fi + From 2c5d0faae03f419fe5bc79c478ead0c400129aec Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Mon, 11 Dec 2017 23:37:12 -0800 Subject: [PATCH 019/107] Still working on the new build script --- Build Linux | 65 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/Build Linux b/Build Linux index 6ccb53ba..1debdb4d 100755 --- a/Build Linux +++ b/Build Linux @@ -5,13 +5,14 @@ # Prep ROOT_DIR="$(realpath $(dirname "$0"))" BUILD_DIR="$ROOT_DIR/BUILD_LINUX" -LOG_DIR="$BUILD_DIR/Logs" -OUT_DIR="$ROOT_DIR/OUT_LINUX" -TMP_DIR="$BUILD_DIR/Temp" +ARCHISO_DIR="$BUILD_DIR/Archiso" +AUR_PACKAGES="$ROOT_DIR/.linux_items/AUR-Packages" CUSTOM_REPO_DIR="$BUILD_DIR/CustomRepo" DATE="$(date +%F)" DATETIME="$(date +%F_%H%M)" -AUR_PACKAGES="$ROOT_DIR/.linux_items/AUR-Packages" +LOG_DIR="$BUILD_DIR/Logs" +OUT_DIR="$ROOT_DIR/OUT_LINUX" +TMP_DIR="$BUILD_DIR/Temp" if which nano >/dev/null 2>&1; then EDITOR=nano elif which vim >/dev/null 2>&1; then @@ -19,17 +20,35 @@ elif which vim >/dev/null 2>&1; then else EDITOR=vi fi -mkdir "$BUILD_DIR" 2>/dev/null -mkdir "$LOG_DIR" 2>/dev/null -mkdir "$OUT_DIR" 2>/dev/null -mkdir "$TMP_DIR" 2>/dev/null + +function ask() { + while :; do + read -p "$1 " -r answer + if echo "$answer" | egrep -iq '^(y|yes|sure)$'; then + return 0 + elif echo "$answer" | egrep -iq '^(n|no|nope)$'; then + return 1 + fi + done +} function cleanup() { - if [[ -d "$TMP_DIR" ]]; then - echo -n "Remove: ${TMP_DIR}? " - read - rm -Rf "$TMP_DIR" + for d in "$TMP_DIR" "$ARCHISO_DIR"; do + if [[ -d "$d" ]]; then + if ask "Remove: ${d}?"; then + rm -Rf "$d" + fi + fi + done +} + +function copy_settings() { + # Set main settings + if [[ ! -e "$BUILD_DIR/MAIN_SETTINGS" ]] || ask "Overwrite MAIN_SETTINGS?"; then + cp -bv "$ROOT_DIR/.bin/Scripts/settings/main.py" "$BUILD_DIR/MAIN_SETTINGS" fi + read -p "Press Enter to open settings... " -r + "$EDITOR" "$BUILD_DIR/MAIN_SETTINGS" } function update_repo() { @@ -58,30 +77,22 @@ function update_repo() { # Build custom repo database pushd "$CUSTOM_REPO_DIR" >/dev/null - for p in *xz; do - repo-add $(basename "$CUSTOM_REPO_DIR").db.tar.gz $p - done + repo-add custom.db.tar.gz *xz popd >/dev/null } -function copy_settings() { - # Set main settings - if [[ -f "$BUILD_DIR/MAIN_SETTINGS" ]]; then - echo -n "Overwrite MAIN_SETTINGS? " - read - fi - cp -bv "$ROOT_DIR/.bin/Scripts/settings/main.py" "$BUILD_DIR/MAIN_SETTINGS" - "$EDITOR" "$BUILD_DIR/MAIN_SETTINGS" -} - - # Prep for build cleanup +mkdir "$BUILD_DIR" 2>/dev/null +mkdir "$LOG_DIR" 2>/dev/null +mkdir "$OUT_DIR" 2>/dev/null +mkdir "$TMP_DIR" 2>/dev/null + echo "Installing dependancies..." sudo pacman -Syu --needed --noconfirm archiso attr base-devel curl libewf progsreiserfs rsync copy_settings update_repo -rsync -a /usr/share/archiso/configs/relang/ "$BUILD_DIR/" +rsync -a /usr/share/archiso/configs/releng/ "$ARCHISO_DIR/" if [[ "$EUID" -eq 0 ]]; then ## Elevated section ## From 2af3e552d4d3462f598f2561ae96ce5ac0de579c Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Tue, 12 Dec 2017 10:39:49 -0800 Subject: [PATCH 020/107] Updated Build Linux script * Uses main.py settings for branding * Use current user instead of "builduser" * Better elevation handling --- Build Linux | 134 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 104 insertions(+), 30 deletions(-) diff --git a/Build Linux b/Build Linux index 1debdb4d..beaf6a55 100755 --- a/Build Linux +++ b/Build Linux @@ -5,7 +5,7 @@ # Prep ROOT_DIR="$(realpath $(dirname "$0"))" BUILD_DIR="$ROOT_DIR/BUILD_LINUX" -ARCHISO_DIR="$BUILD_DIR/Archiso" +ARCHLIVE_DIR="$BUILD_DIR/Archlive" AUR_PACKAGES="$ROOT_DIR/.linux_items/AUR-Packages" CUSTOM_REPO_DIR="$BUILD_DIR/CustomRepo" DATE="$(date +%F)" @@ -20,6 +20,9 @@ elif which vim >/dev/null 2>&1; then else EDITOR=vi fi +if which sudo >/dev/null 2>&1; then + REAL_USER="$SUDO_USER" +fi function ask() { while :; do @@ -33,25 +36,66 @@ function ask() { } function cleanup() { - for d in "$TMP_DIR" "$ARCHISO_DIR"; do + for d in "$TMP_DIR" "$ARCHLIVE_DIR"; do if [[ -d "$d" ]]; then if ask "Remove: ${d}?"; then rm -Rf "$d" fi fi done + mkdir "$BUILD_DIR" 2>/dev/null + mkdir "$LOG_DIR" 2>/dev/null + mkdir "$OUT_DIR" 2>/dev/null + mkdir "$TMP_DIR" 2>/dev/null +} + +function copy_archiso() { + echo "Copying Archlinux files..." + rsync -a /usr/share/archiso/configs/releng/ "$ARCHLIVE_DIR/" + + # Update build.sh + if ! grep -iq 'customize_iso' archlive/build.sh; then + sed -ir 's!run_once make_iso!# customize_iso\ncp -a ${script_path}/extra/* ${work_dir}/iso/\n\nrun_once make_iso!' archlive/build.sh + fi } function copy_settings() { - # Set main settings if [[ ! -e "$BUILD_DIR/MAIN_SETTINGS" ]] || ask "Overwrite MAIN_SETTINGS?"; then cp -bv "$ROOT_DIR/.bin/Scripts/settings/main.py" "$BUILD_DIR/MAIN_SETTINGS" fi + + # Edit settings read -p "Press Enter to open settings... " -r "$EDITOR" "$BUILD_DIR/MAIN_SETTINGS" + + # Load settings + while read line; do + if echo "$line" | egrep -q "^\w+='"; then + line="$(echo "$line" | sed -r 's/[\r\n]+//')" + eval "$line" + fi + done < "$BUILD_DIR/MAIN_SETTINGS" +} + +function run_elevated() { + prog="$1" + shift + if which sudo >/dev/null 2>&1; then + sudo "$prog" $* + else + echo -n "Root " + su -c "export REAL_USER=$USER && '$prog' $*" + fi } function update_repo() { + if [[ "$EUID" -eq 0 ]]; then + echo "This section not meant to be run as root." + echo "Aborted." + exit 1 + fi + echo "Updating custom repo..." + # Archive current files if [[ -d "$CUSTOM_REPO_DIR" ]]; then mkdir "$BUILD_DIR/Archive" 2>/dev/null @@ -81,40 +125,70 @@ function update_repo() { popd >/dev/null } -# Prep for build -cleanup -mkdir "$BUILD_DIR" 2>/dev/null -mkdir "$LOG_DIR" 2>/dev/null -mkdir "$OUT_DIR" 2>/dev/null -mkdir "$TMP_DIR" 2>/dev/null +function install_deps() { + echo "Installing dependancies..." + run_elevated pacman -Syu --needed --noconfirm archiso attr base-devel curl libewf progsreiserfs rsync +} -echo "Installing dependancies..." -sudo pacman -Syu --needed --noconfirm archiso attr base-devel curl libewf progsreiserfs rsync -copy_settings -update_repo -rsync -a /usr/share/archiso/configs/releng/ "$ARCHISO_DIR/" - -if [[ "$EUID" -eq 0 ]]; then - ## Elevated section ## +function build_arch() { + if [[ "$EUID" -ne 0 ]]; then + echo "This section is meant to be run as root." + echo "Aborted." + exit 1 + fi + # Set permissions echo "Setting permissions..." - chown root.root archlive -R - chmod 700 archlive/airootfs/etc/skel/.ssh - chmod 600 archlive/airootfs/etc/skel/.ssh/id_rsa - - # Modify build.sh - if ! grep -iq 'customize_iso' archlive/build.sh; then - sed -ir 's!run_once make_iso!# customize_iso\ncp -a ${script_path}/extra/* ${work_dir}/iso/\n\nrun_once make_iso!' archlive/build.sh - fi - + chown root:root "$ARCHLIVE_DIR" -R + chmod 700 "$ARCHLIVE_DIR/airootfs/etc/skel/.ssh" + chmod 600 "$ARCHLIVE_DIR/airootfs/etc/skel/.ssh/id_rsa" + # Build ISO - ./archlive/build.sh -N "wk-arch" -V "$DATE" -L "WK_ARCH" -w "$TMP_DIR" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" + prefix="$(echo "${KIT_NAME_SHORT}-linux" | tr "[:upper:]" "[:lower:]")" + label="${KIT_NAME_SHORT}_LINUX" + "$ARCHLIVE/bulid.sh" -N "$prefix" -V "$DATE" -L "$label" -s "$TMP_DIR/Arch" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" # Cleanup echo "Removing temp files..." - rm "$TMP_DIR" -Rf | tee -a "$LOG_DIR/$DATETIME.log" + rm "$TMP_DIR/Arch" -Rf | tee -a "$LOG_DIR/$DATETIME.log" echo "Reverting permissions..." - chown builduser.builduser archlive -R -fi + chown $REAL_USER:$REAL_USER "$ARCHLIVE_DIR" -R +} + +function build_full() { + if [[ "$EUID" -eq 0 ]]; then + echo "This section not meant to be run as root." + echo "Aborted." + exit 1 + fi + + # Prep for build + cleanup + install_deps + copy_settings + update_repo + copy_archiso + # Rerun script as root to start Archiso build process + run_elevated "$(realpath "$0")" --build-arch +} + +# Check input +case $1 in + --build-arch) + build_arch + ;; + + --install-deps) + install_deps + ;; + + --update-repo) + update_repo + ;; + + *) + build_full + ;; +esac From 87e651cb07f69f597ba474507bc67a8429cbcf9e Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Tue, 12 Dec 2017 11:18:15 -0800 Subject: [PATCH 021/107] Better package list handling --- .linux_items/{AUR-Packages => packages/aur} | 0 .linux_items/packages/dependencies | 7 +++++++ Build Linux | 13 ++++++++----- 3 files changed, 15 insertions(+), 5 deletions(-) rename .linux_items/{AUR-Packages => packages/aur} (100%) create mode 100644 .linux_items/packages/dependencies diff --git a/.linux_items/AUR-Packages b/.linux_items/packages/aur similarity index 100% rename from .linux_items/AUR-Packages rename to .linux_items/packages/aur diff --git a/.linux_items/packages/dependencies b/.linux_items/packages/dependencies new file mode 100644 index 00000000..cad41935 --- /dev/null +++ b/.linux_items/packages/dependencies @@ -0,0 +1,7 @@ +archiso +attr +base-devel +curl +libewf +progsreiserfs +rsync diff --git a/Build Linux b/Build Linux index beaf6a55..f53be02f 100755 --- a/Build Linux +++ b/Build Linux @@ -6,7 +6,6 @@ ROOT_DIR="$(realpath $(dirname "$0"))" BUILD_DIR="$ROOT_DIR/BUILD_LINUX" ARCHLIVE_DIR="$BUILD_DIR/Archlive" -AUR_PACKAGES="$ROOT_DIR/.linux_items/AUR-Packages" CUSTOM_REPO_DIR="$BUILD_DIR/CustomRepo" DATE="$(date +%F)" DATETIME="$(date +%F_%H%M)" @@ -108,7 +107,7 @@ function update_repo() { mkdir "$CUSTOM_REPO_DIR" 2>/dev/null mkdir "$TMP_DIR" 2>/dev/null pushd "$TMP_DIR" >/dev/null - for p in $(cat "$AUR_PACKAGES"); do + while read -r p; do echo "Building: $p" curl -LsfO https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz tar xf $p.tar.gz @@ -116,7 +115,7 @@ function update_repo() { makepkg -s --noconfirm popd >/dev/null mv -n $p/*xz "$CUSTOM_REPO_DIR"/ - done + done < "$ROOT_DIR/.linux_items/packages/aur" popd >/dev/null # Build custom repo database @@ -126,8 +125,12 @@ function update_repo() { } function install_deps() { - echo "Installing dependancies..." - run_elevated pacman -Syu --needed --noconfirm archiso attr base-devel curl libewf progsreiserfs rsync + echo "Installing dependencies..." + packages= + while read -r line; do + packages="$packages $line" + done < "$ROOT_DIR/.linux_items/packages/dependencies" + run_elevated pacman -Syu --needed --noconfirm $packages } function build_arch() { From b9e5f1921f70660e0feb6b35b8791409339416f4 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Tue, 12 Dec 2017 11:34:05 -0800 Subject: [PATCH 022/107] Reorganized include folders * include/live is "burned" into the sfs files during build-arch * include/iso is added to the iso folder before iso creation * Added --copy-archiso flag to Build Linux --- .linux_items/build-wk | 80 ------------------ .../local/bin => include/iso/arch}/arch.conf | 0 .../extra => include/iso}/arch/conky.rc | 0 .../local/bin => include/iso/arch}/wifi.conf | 0 .../live}/airootfs/etc/default/ufw | 0 .../live}/airootfs/etc/fstab | 0 .../live}/airootfs/etc/locale.conf | 0 .../live}/airootfs/etc/locale.gen | 0 .../live}/airootfs/etc/machine-id | 0 .../live}/airootfs/etc/motd | 0 .../live}/airootfs/etc/oblogout.conf | 0 .../polkit-1/rules.d/49-nopasswd_global.rules | 0 .../live}/airootfs/etc/skel/.Xresources | 0 .../live}/airootfs/etc/skel/.aliases | 0 .../live}/airootfs/etc/skel/.bash_logout | 0 .../live}/airootfs/etc/skel/.bash_profile | 0 .../live}/airootfs/etc/skel/.bashrc | 0 .../etc/skel/.config/Thunar/accels.scm | 0 .../airootfs/etc/skel/.config/Thunar/uca.xml | 0 .../airootfs/etc/skel/.config/dunst/dunstrc | 0 .../etc/skel/.config/gtk-3.0/settings.ini | 0 .../live}/airootfs/etc/skel/.config/i3/config | 0 .../airootfs/etc/skel/.config/i3status/config | 0 .../airootfs/etc/skel/.config/mimeapps.list | 0 .../etc/skel/.config/openbox/autostart | 0 .../etc/skel/.config/openbox/environment | 0 .../etc/skel/.config/openbox/menu.xml | 0 .../airootfs/etc/skel/.config/openbox/rc.xml | 0 .../airootfs/etc/skel/.config/rofi/config | 0 .../airootfs/etc/skel/.config/tint2/tint2rc | 0 .../live}/airootfs/etc/skel/.conky_start | 0 .../live}/airootfs/etc/skel/.conkyrc | 0 .../live}/airootfs/etc/skel/.dircolors | 0 .../skel/.gstreamer-0.10/registry.x86_64.bin | Bin .../live}/airootfs/etc/skel/.gtkrc-2.0 | 0 .../etc/skel/.local/share/notes/Notes/Notes | 0 .../etc/skel/.local/share/recently-used.xbel | 0 .../live}/airootfs/etc/skel/.network_start | 0 .../live}/airootfs/etc/skel/.rsync_exclusions | 0 .../live}/airootfs/etc/skel/.tmux.conf | 0 .../live}/airootfs/etc/skel/.update_conky | 0 .../live}/airootfs/etc/skel/.update_wallpaper | 0 .../airootfs/etc/skel/.urxvt_default_res | 0 .../live}/airootfs/etc/skel/.vimrc | 0 .../live}/airootfs/etc/skel/.xinitrc | 0 .../live}/airootfs/etc/skel/.zlogin | 0 .../live}/airootfs/etc/skel/.zshrc | 0 ...bus-org.freedesktop.NetworkManager.service | 0 ...dbus-org.freedesktop.nm-dispatcher.service | 0 .../systemd/system/display-manager.service | 0 .../getty.target.wants/getty@tty1.service | 0 .../getty@tty1.service.d/autologin.conf | 0 .../NetworkManager.service | 0 .../multi-user.target.wants/rngd.service | 0 .../multi-user.target.wants/sshd.service | 0 .../multi-user.target.wants/ufw.service | 0 .../etc/udev/rules.d/99-udisks2.rules | 0 .../live}/airootfs/etc/udevil/udevil.conf | 0 .../live}/airootfs/etc/ufw/after.init | 0 .../live}/airootfs/etc/ufw/after.rules | 0 .../live}/airootfs/etc/ufw/after6.rules | 0 .../etc/ufw/applications.d/ufw-bittorent | 0 .../airootfs/etc/ufw/applications.d/ufw-chat | 0 .../ufw/applications.d/ufw-directoryserver | 0 .../etc/ufw/applications.d/ufw-dnsserver | 0 .../etc/ufw/applications.d/ufw-fileserver | 0 .../etc/ufw/applications.d/ufw-loginserver | 0 .../etc/ufw/applications.d/ufw-mailserver | 0 .../etc/ufw/applications.d/ufw-printserver | 0 .../etc/ufw/applications.d/ufw-proxyserver | 0 .../etc/ufw/applications.d/ufw-webserver | 0 .../live}/airootfs/etc/ufw/before.init | 0 .../live}/airootfs/etc/ufw/before.rules | 0 .../live}/airootfs/etc/ufw/before6.rules | 0 .../live}/airootfs/etc/ufw/sysctl.conf | 0 .../live}/airootfs/etc/ufw/ufw.conf | 0 .../live}/airootfs/etc/ufw/user.rules | 0 .../live}/airootfs/etc/ufw/user6.rules | 0 .../live}/airootfs/etc/vconsole.conf | 0 .../airootfs/etc/xdg/xfce4/kiosk/kioskrc | 0 .../live}/airootfs/root/.automated_script.sh | 0 .../live}/airootfs/root/.zlogin | 0 .../live}/airootfs/root/customize_airootfs.sh | 0 .../live}/airootfs/root/install.txt | 0 .../live}/airootfs/usr/local/bin/apple_fans | 0 .../live/airootfs/usr/local/bin}/arch.conf | 0 .../airootfs/usr/local/bin/connect-to-network | 0 .../live}/airootfs/usr/local/bin/hw-diags | 0 .../airootfs/usr/local/bin/hw-diags-audio | 0 .../airootfs/usr/local/bin/hw-diags-badblocks | 0 .../airootfs/usr/local/bin/hw-diags-inner | 0 .../airootfs/usr/local/bin/hw-diags-network | 0 .../airootfs/usr/local/bin/hw-diags-prime95 | 0 .../airootfs/usr/local/bin/hw-diags-progress | 0 .../airootfs/usr/local/bin/hw-diags-sensors | 0 .../airootfs/usr/local/bin/mount-all-volumes | 0 .../usr/local/bin/mount-all-volumes-foh | 0 .../usr/local/bin/mount-backup-shares | 0 .../airootfs/usr/local/bin/msword-search | 0 .../live}/airootfs/usr/local/bin/remount-rw | 0 .../live/airootfs/usr/local/bin}/wifi.conf | 0 .../applications/Hardware Diagnostics.desktop | 0 .../applications/Hardware Information.desktop | 0 .../share/applications/NetworkTest.desktop | 0 .../usr/share/applications/SpeedTest.desktop | 0 .../live}/mkinitcpio.conf | 0 .../{archlive => include/live}/packages.both | 0 .../{archlive => include/live}/packages.i686 | 0 .../live}/packages.x86_64 | 0 .../{archlive => include/live}/pacman.conf | 0 Build Linux | 13 ++- 111 files changed, 10 insertions(+), 83 deletions(-) delete mode 100644 .linux_items/build-wk rename .linux_items/{archlive/airootfs/usr/local/bin => include/iso/arch}/arch.conf (100%) rename .linux_items/{archlive/extra => include/iso}/arch/conky.rc (100%) rename .linux_items/{archlive/airootfs/usr/local/bin => include/iso/arch}/wifi.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/default/ufw (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/fstab (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/locale.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/locale.gen (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/machine-id (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/motd (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/oblogout.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.Xresources (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.aliases (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.bash_logout (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.bash_profile (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.bashrc (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/Thunar/accels.scm (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/Thunar/uca.xml (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/dunst/dunstrc (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/gtk-3.0/settings.ini (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/i3/config (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/i3status/config (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/mimeapps.list (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/openbox/autostart (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/openbox/environment (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/openbox/menu.xml (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/openbox/rc.xml (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/rofi/config (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.config/tint2/tint2rc (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.conky_start (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.conkyrc (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.dircolors (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.gtkrc-2.0 (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.local/share/notes/Notes/Notes (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.local/share/recently-used.xbel (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.network_start (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.rsync_exclusions (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.tmux.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.update_conky (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.update_wallpaper (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.urxvt_default_res (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.vimrc (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.xinitrc (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.zlogin (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/skel/.zshrc (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/systemd/system/display-manager.service (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/udev/rules.d/99-udisks2.rules (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/udevil/udevil.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/after.init (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/after.rules (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/after6.rules (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/applications.d/ufw-bittorent (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/applications.d/ufw-chat (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/applications.d/ufw-directoryserver (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/applications.d/ufw-dnsserver (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/applications.d/ufw-fileserver (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/applications.d/ufw-loginserver (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/applications.d/ufw-mailserver (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/applications.d/ufw-printserver (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/applications.d/ufw-proxyserver (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/applications.d/ufw-webserver (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/before.init (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/before.rules (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/before6.rules (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/sysctl.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/ufw.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/user.rules (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/ufw/user6.rules (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/vconsole.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/etc/xdg/xfce4/kiosk/kioskrc (100%) rename .linux_items/{archlive => include/live}/airootfs/root/.automated_script.sh (100%) rename .linux_items/{archlive => include/live}/airootfs/root/.zlogin (100%) rename .linux_items/{archlive => include/live}/airootfs/root/customize_airootfs.sh (100%) rename .linux_items/{archlive => include/live}/airootfs/root/install.txt (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/apple_fans (100%) rename .linux_items/{archlive/extra/arch => include/live/airootfs/usr/local/bin}/arch.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/connect-to-network (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/hw-diags (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/hw-diags-audio (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/hw-diags-badblocks (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/hw-diags-inner (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/hw-diags-network (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/hw-diags-prime95 (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/hw-diags-progress (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/hw-diags-sensors (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/mount-all-volumes (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/mount-all-volumes-foh (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/mount-backup-shares (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/msword-search (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/local/bin/remount-rw (100%) rename .linux_items/{archlive/extra/arch => include/live/airootfs/usr/local/bin}/wifi.conf (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/share/applications/Hardware Diagnostics.desktop (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/share/applications/Hardware Information.desktop (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/share/applications/NetworkTest.desktop (100%) rename .linux_items/{archlive => include/live}/airootfs/usr/share/applications/SpeedTest.desktop (100%) rename .linux_items/{archlive => include/live}/mkinitcpio.conf (100%) rename .linux_items/{archlive => include/live}/packages.both (100%) rename .linux_items/{archlive => include/live}/packages.i686 (100%) rename .linux_items/{archlive => include/live}/packages.x86_64 (100%) rename .linux_items/{archlive => include/live}/pacman.conf (100%) diff --git a/.linux_items/build-wk b/.linux_items/build-wk deleted file mode 100644 index dcdefca8..00000000 --- a/.linux_items/build-wk +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash -#/srv/ArchBuilds -# Set Vars -LOG_DIR="/mnt/Build/logs" -OUT_DIR="/mnt/Build/isos" -TMP_DIR="/mnt/Scratch" -DATE="$(date +%F)" -DATETIME="$(date +%F_%H%M)" - -if [[ "$EUID" -eq 0 ]]; then - ## Elevated section ## - # Set permissions - echo "Setting permissions..." - chown root.root archlive -R - chmod 700 archlive/airootfs/etc/skel/.ssh - chmod 600 archlive/airootfs/etc/skel/.ssh/id_rsa - - # Modify build.sh - if ! grep -iq 'customize_iso' archlive/build.sh; then - sed -ir 's!run_once make_iso!# customize_iso\ncp -a ${script_path}/extra/* ${work_dir}/iso/\n\nrun_once make_iso!' archlive/build.sh - fi - - # Build ISO - mkdir $LOG_DIR - mkdir $OUT_DIR - mkdir $TMP_DIR - ./archlive/build.sh -N "wk-arch" -V "$DATE" -L "WK_ARCH" -w "$TMP_DIR" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" - - # Cleanup - echo "Removing temp files..." - rm "$TMP_DIR" -Rf | tee -a "$LOG_DIR/$DATETIME.log" - - echo "Reverting permissions..." - chown builduser.builduser archlive -R -else - ## Non-elevated section ## - # Prep - mkdir wk-repo - pushd wk-repo >/dev/null - BEFORE=$(date "+%F_%H%M%S") - mkdir _done/$BEFORE -p - find . -maxdepth 1 -not -name 'update' -and -not -name '_done' -exec mv -nv "{}" _done/$BEFORE/ \; - rmdir _done/* --ignore-fail-on-non-empty - sleep 1s - AFTER=$(date "+%F_%H%M%S") - - # Install Dependancies - sudo pacman -Syu base-devel libewf attr progsreiserfs --needed --noconfirm - #for p in lha; do - # echo "Installing dependancy: $p" - # curl -LsfO https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz - # tar xf $p.tar.gz - # pushd $p >/dev/null - # makepkg -si --needed --noconfirm - # popd >/dev/null - # mv -n $p $p.tar.gz _done/$AFTER/ - #done - - # Build custom repo packages - mkdir _done/$AFTER - for p in aic94xx-firmware bash-pipes gtk-theme-arc-git hfsprogs i3-gaps i3lock-fancy-git mprime-bin openbox-patched papirus-icon-theme pasystray testdisk-wip ttf-font-awesome wd719x-firmware wimlib; do - echo "Building: $p" - curl -LsfO https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz - tar xf $p.tar.gz - pushd $p >/dev/null - makepkg -s --noconfirm - popd >/dev/null - mv -n $p/*xz ./ - mv -n $p $p.tar.gz _done/$AFTER/ - done - - # Build custom repo database - for p in *xz; do - repo-add wk-repo.db.tar.gz $p - done - popd >/dev/null - - # Rerun script as root to start Archiso build process - sudo "$0" -fi diff --git a/.linux_items/archlive/airootfs/usr/local/bin/arch.conf b/.linux_items/include/iso/arch/arch.conf similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/arch.conf rename to .linux_items/include/iso/arch/arch.conf diff --git a/.linux_items/archlive/extra/arch/conky.rc b/.linux_items/include/iso/arch/conky.rc similarity index 100% rename from .linux_items/archlive/extra/arch/conky.rc rename to .linux_items/include/iso/arch/conky.rc diff --git a/.linux_items/archlive/airootfs/usr/local/bin/wifi.conf b/.linux_items/include/iso/arch/wifi.conf similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/wifi.conf rename to .linux_items/include/iso/arch/wifi.conf diff --git a/.linux_items/archlive/airootfs/etc/default/ufw b/.linux_items/include/live/airootfs/etc/default/ufw similarity index 100% rename from .linux_items/archlive/airootfs/etc/default/ufw rename to .linux_items/include/live/airootfs/etc/default/ufw diff --git a/.linux_items/archlive/airootfs/etc/fstab b/.linux_items/include/live/airootfs/etc/fstab similarity index 100% rename from .linux_items/archlive/airootfs/etc/fstab rename to .linux_items/include/live/airootfs/etc/fstab diff --git a/.linux_items/archlive/airootfs/etc/locale.conf b/.linux_items/include/live/airootfs/etc/locale.conf similarity index 100% rename from .linux_items/archlive/airootfs/etc/locale.conf rename to .linux_items/include/live/airootfs/etc/locale.conf diff --git a/.linux_items/archlive/airootfs/etc/locale.gen b/.linux_items/include/live/airootfs/etc/locale.gen similarity index 100% rename from .linux_items/archlive/airootfs/etc/locale.gen rename to .linux_items/include/live/airootfs/etc/locale.gen diff --git a/.linux_items/archlive/airootfs/etc/machine-id b/.linux_items/include/live/airootfs/etc/machine-id similarity index 100% rename from .linux_items/archlive/airootfs/etc/machine-id rename to .linux_items/include/live/airootfs/etc/machine-id diff --git a/.linux_items/archlive/airootfs/etc/motd b/.linux_items/include/live/airootfs/etc/motd similarity index 100% rename from .linux_items/archlive/airootfs/etc/motd rename to .linux_items/include/live/airootfs/etc/motd diff --git a/.linux_items/archlive/airootfs/etc/oblogout.conf b/.linux_items/include/live/airootfs/etc/oblogout.conf similarity index 100% rename from .linux_items/archlive/airootfs/etc/oblogout.conf rename to .linux_items/include/live/airootfs/etc/oblogout.conf diff --git a/.linux_items/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules b/.linux_items/include/live/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules similarity index 100% rename from .linux_items/archlive/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules rename to .linux_items/include/live/airootfs/etc/polkit-1/rules.d/49-nopasswd_global.rules diff --git a/.linux_items/archlive/airootfs/etc/skel/.Xresources b/.linux_items/include/live/airootfs/etc/skel/.Xresources similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.Xresources rename to .linux_items/include/live/airootfs/etc/skel/.Xresources diff --git a/.linux_items/archlive/airootfs/etc/skel/.aliases b/.linux_items/include/live/airootfs/etc/skel/.aliases similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.aliases rename to .linux_items/include/live/airootfs/etc/skel/.aliases diff --git a/.linux_items/archlive/airootfs/etc/skel/.bash_logout b/.linux_items/include/live/airootfs/etc/skel/.bash_logout similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.bash_logout rename to .linux_items/include/live/airootfs/etc/skel/.bash_logout diff --git a/.linux_items/archlive/airootfs/etc/skel/.bash_profile b/.linux_items/include/live/airootfs/etc/skel/.bash_profile similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.bash_profile rename to .linux_items/include/live/airootfs/etc/skel/.bash_profile diff --git a/.linux_items/archlive/airootfs/etc/skel/.bashrc b/.linux_items/include/live/airootfs/etc/skel/.bashrc similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.bashrc rename to .linux_items/include/live/airootfs/etc/skel/.bashrc diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/Thunar/accels.scm b/.linux_items/include/live/airootfs/etc/skel/.config/Thunar/accels.scm similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/Thunar/accels.scm rename to .linux_items/include/live/airootfs/etc/skel/.config/Thunar/accels.scm diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/Thunar/uca.xml b/.linux_items/include/live/airootfs/etc/skel/.config/Thunar/uca.xml similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/Thunar/uca.xml rename to .linux_items/include/live/airootfs/etc/skel/.config/Thunar/uca.xml diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/dunst/dunstrc b/.linux_items/include/live/airootfs/etc/skel/.config/dunst/dunstrc similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/dunst/dunstrc rename to .linux_items/include/live/airootfs/etc/skel/.config/dunst/dunstrc diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini b/.linux_items/include/live/airootfs/etc/skel/.config/gtk-3.0/settings.ini similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/gtk-3.0/settings.ini rename to .linux_items/include/live/airootfs/etc/skel/.config/gtk-3.0/settings.ini diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/i3/config b/.linux_items/include/live/airootfs/etc/skel/.config/i3/config similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/i3/config rename to .linux_items/include/live/airootfs/etc/skel/.config/i3/config diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/i3status/config b/.linux_items/include/live/airootfs/etc/skel/.config/i3status/config similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/i3status/config rename to .linux_items/include/live/airootfs/etc/skel/.config/i3status/config diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/mimeapps.list b/.linux_items/include/live/airootfs/etc/skel/.config/mimeapps.list similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/mimeapps.list rename to .linux_items/include/live/airootfs/etc/skel/.config/mimeapps.list diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/openbox/autostart b/.linux_items/include/live/airootfs/etc/skel/.config/openbox/autostart similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/openbox/autostart rename to .linux_items/include/live/airootfs/etc/skel/.config/openbox/autostart diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/openbox/environment b/.linux_items/include/live/airootfs/etc/skel/.config/openbox/environment similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/openbox/environment rename to .linux_items/include/live/airootfs/etc/skel/.config/openbox/environment diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/openbox/menu.xml b/.linux_items/include/live/airootfs/etc/skel/.config/openbox/menu.xml similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/openbox/menu.xml rename to .linux_items/include/live/airootfs/etc/skel/.config/openbox/menu.xml diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/openbox/rc.xml b/.linux_items/include/live/airootfs/etc/skel/.config/openbox/rc.xml similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/openbox/rc.xml rename to .linux_items/include/live/airootfs/etc/skel/.config/openbox/rc.xml diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/rofi/config b/.linux_items/include/live/airootfs/etc/skel/.config/rofi/config similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/rofi/config rename to .linux_items/include/live/airootfs/etc/skel/.config/rofi/config diff --git a/.linux_items/archlive/airootfs/etc/skel/.config/tint2/tint2rc b/.linux_items/include/live/airootfs/etc/skel/.config/tint2/tint2rc similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.config/tint2/tint2rc rename to .linux_items/include/live/airootfs/etc/skel/.config/tint2/tint2rc diff --git a/.linux_items/archlive/airootfs/etc/skel/.conky_start b/.linux_items/include/live/airootfs/etc/skel/.conky_start similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.conky_start rename to .linux_items/include/live/airootfs/etc/skel/.conky_start diff --git a/.linux_items/archlive/airootfs/etc/skel/.conkyrc b/.linux_items/include/live/airootfs/etc/skel/.conkyrc similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.conkyrc rename to .linux_items/include/live/airootfs/etc/skel/.conkyrc diff --git a/.linux_items/archlive/airootfs/etc/skel/.dircolors b/.linux_items/include/live/airootfs/etc/skel/.dircolors similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.dircolors rename to .linux_items/include/live/airootfs/etc/skel/.dircolors diff --git a/.linux_items/archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin b/.linux_items/include/live/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin rename to .linux_items/include/live/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin diff --git a/.linux_items/archlive/airootfs/etc/skel/.gtkrc-2.0 b/.linux_items/include/live/airootfs/etc/skel/.gtkrc-2.0 similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.gtkrc-2.0 rename to .linux_items/include/live/airootfs/etc/skel/.gtkrc-2.0 diff --git a/.linux_items/archlive/airootfs/etc/skel/.local/share/notes/Notes/Notes b/.linux_items/include/live/airootfs/etc/skel/.local/share/notes/Notes/Notes similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.local/share/notes/Notes/Notes rename to .linux_items/include/live/airootfs/etc/skel/.local/share/notes/Notes/Notes diff --git a/.linux_items/archlive/airootfs/etc/skel/.local/share/recently-used.xbel b/.linux_items/include/live/airootfs/etc/skel/.local/share/recently-used.xbel similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.local/share/recently-used.xbel rename to .linux_items/include/live/airootfs/etc/skel/.local/share/recently-used.xbel diff --git a/.linux_items/archlive/airootfs/etc/skel/.network_start b/.linux_items/include/live/airootfs/etc/skel/.network_start similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.network_start rename to .linux_items/include/live/airootfs/etc/skel/.network_start diff --git a/.linux_items/archlive/airootfs/etc/skel/.rsync_exclusions b/.linux_items/include/live/airootfs/etc/skel/.rsync_exclusions similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.rsync_exclusions rename to .linux_items/include/live/airootfs/etc/skel/.rsync_exclusions diff --git a/.linux_items/archlive/airootfs/etc/skel/.tmux.conf b/.linux_items/include/live/airootfs/etc/skel/.tmux.conf similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.tmux.conf rename to .linux_items/include/live/airootfs/etc/skel/.tmux.conf diff --git a/.linux_items/archlive/airootfs/etc/skel/.update_conky b/.linux_items/include/live/airootfs/etc/skel/.update_conky similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.update_conky rename to .linux_items/include/live/airootfs/etc/skel/.update_conky diff --git a/.linux_items/archlive/airootfs/etc/skel/.update_wallpaper b/.linux_items/include/live/airootfs/etc/skel/.update_wallpaper similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.update_wallpaper rename to .linux_items/include/live/airootfs/etc/skel/.update_wallpaper diff --git a/.linux_items/archlive/airootfs/etc/skel/.urxvt_default_res b/.linux_items/include/live/airootfs/etc/skel/.urxvt_default_res similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.urxvt_default_res rename to .linux_items/include/live/airootfs/etc/skel/.urxvt_default_res diff --git a/.linux_items/archlive/airootfs/etc/skel/.vimrc b/.linux_items/include/live/airootfs/etc/skel/.vimrc similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.vimrc rename to .linux_items/include/live/airootfs/etc/skel/.vimrc diff --git a/.linux_items/archlive/airootfs/etc/skel/.xinitrc b/.linux_items/include/live/airootfs/etc/skel/.xinitrc similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.xinitrc rename to .linux_items/include/live/airootfs/etc/skel/.xinitrc diff --git a/.linux_items/archlive/airootfs/etc/skel/.zlogin b/.linux_items/include/live/airootfs/etc/skel/.zlogin similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.zlogin rename to .linux_items/include/live/airootfs/etc/skel/.zlogin diff --git a/.linux_items/archlive/airootfs/etc/skel/.zshrc b/.linux_items/include/live/airootfs/etc/skel/.zshrc similarity index 100% rename from .linux_items/archlive/airootfs/etc/skel/.zshrc rename to .linux_items/include/live/airootfs/etc/skel/.zshrc diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service b/.linux_items/include/live/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service similarity index 100% rename from .linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service rename to .linux_items/include/live/airootfs/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service b/.linux_items/include/live/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service similarity index 100% rename from .linux_items/archlive/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service rename to .linux_items/include/live/airootfs/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/display-manager.service b/.linux_items/include/live/airootfs/etc/systemd/system/display-manager.service similarity index 100% rename from .linux_items/archlive/airootfs/etc/systemd/system/display-manager.service rename to .linux_items/include/live/airootfs/etc/systemd/system/display-manager.service diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service b/.linux_items/include/live/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service similarity index 100% rename from .linux_items/archlive/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service rename to .linux_items/include/live/airootfs/etc/systemd/system/getty.target.wants/getty@tty1.service diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/.linux_items/include/live/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf similarity index 100% rename from .linux_items/archlive/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf rename to .linux_items/include/live/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service b/.linux_items/include/live/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service similarity index 100% rename from .linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service rename to .linux_items/include/live/airootfs/etc/systemd/system/multi-user.target.wants/NetworkManager.service diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service b/.linux_items/include/live/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service similarity index 100% rename from .linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service rename to .linux_items/include/live/airootfs/etc/systemd/system/multi-user.target.wants/rngd.service diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service b/.linux_items/include/live/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service similarity index 100% rename from .linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service rename to .linux_items/include/live/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service diff --git a/.linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service b/.linux_items/include/live/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service similarity index 100% rename from .linux_items/archlive/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service rename to .linux_items/include/live/airootfs/etc/systemd/system/multi-user.target.wants/ufw.service diff --git a/.linux_items/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules b/.linux_items/include/live/airootfs/etc/udev/rules.d/99-udisks2.rules similarity index 100% rename from .linux_items/archlive/airootfs/etc/udev/rules.d/99-udisks2.rules rename to .linux_items/include/live/airootfs/etc/udev/rules.d/99-udisks2.rules diff --git a/.linux_items/archlive/airootfs/etc/udevil/udevil.conf b/.linux_items/include/live/airootfs/etc/udevil/udevil.conf similarity index 100% rename from .linux_items/archlive/airootfs/etc/udevil/udevil.conf rename to .linux_items/include/live/airootfs/etc/udevil/udevil.conf diff --git a/.linux_items/archlive/airootfs/etc/ufw/after.init b/.linux_items/include/live/airootfs/etc/ufw/after.init similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/after.init rename to .linux_items/include/live/airootfs/etc/ufw/after.init diff --git a/.linux_items/archlive/airootfs/etc/ufw/after.rules b/.linux_items/include/live/airootfs/etc/ufw/after.rules similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/after.rules rename to .linux_items/include/live/airootfs/etc/ufw/after.rules diff --git a/.linux_items/archlive/airootfs/etc/ufw/after6.rules b/.linux_items/include/live/airootfs/etc/ufw/after6.rules similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/after6.rules rename to .linux_items/include/live/airootfs/etc/ufw/after6.rules diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-bittorent similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-bittorent rename to .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-bittorent diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-chat b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-chat similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-chat rename to .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-chat diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-directoryserver similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-directoryserver rename to .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-directoryserver diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-dnsserver similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-dnsserver rename to .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-dnsserver diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-fileserver similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-fileserver rename to .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-fileserver diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-loginserver similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-loginserver rename to .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-loginserver diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-mailserver similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-mailserver rename to .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-mailserver diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-printserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-printserver similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-printserver rename to .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-printserver diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-proxyserver similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-proxyserver rename to .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-proxyserver diff --git a/.linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-webserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-webserver similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/applications.d/ufw-webserver rename to .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-webserver diff --git a/.linux_items/archlive/airootfs/etc/ufw/before.init b/.linux_items/include/live/airootfs/etc/ufw/before.init similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/before.init rename to .linux_items/include/live/airootfs/etc/ufw/before.init diff --git a/.linux_items/archlive/airootfs/etc/ufw/before.rules b/.linux_items/include/live/airootfs/etc/ufw/before.rules similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/before.rules rename to .linux_items/include/live/airootfs/etc/ufw/before.rules diff --git a/.linux_items/archlive/airootfs/etc/ufw/before6.rules b/.linux_items/include/live/airootfs/etc/ufw/before6.rules similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/before6.rules rename to .linux_items/include/live/airootfs/etc/ufw/before6.rules diff --git a/.linux_items/archlive/airootfs/etc/ufw/sysctl.conf b/.linux_items/include/live/airootfs/etc/ufw/sysctl.conf similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/sysctl.conf rename to .linux_items/include/live/airootfs/etc/ufw/sysctl.conf diff --git a/.linux_items/archlive/airootfs/etc/ufw/ufw.conf b/.linux_items/include/live/airootfs/etc/ufw/ufw.conf similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/ufw.conf rename to .linux_items/include/live/airootfs/etc/ufw/ufw.conf diff --git a/.linux_items/archlive/airootfs/etc/ufw/user.rules b/.linux_items/include/live/airootfs/etc/ufw/user.rules similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/user.rules rename to .linux_items/include/live/airootfs/etc/ufw/user.rules diff --git a/.linux_items/archlive/airootfs/etc/ufw/user6.rules b/.linux_items/include/live/airootfs/etc/ufw/user6.rules similarity index 100% rename from .linux_items/archlive/airootfs/etc/ufw/user6.rules rename to .linux_items/include/live/airootfs/etc/ufw/user6.rules diff --git a/.linux_items/archlive/airootfs/etc/vconsole.conf b/.linux_items/include/live/airootfs/etc/vconsole.conf similarity index 100% rename from .linux_items/archlive/airootfs/etc/vconsole.conf rename to .linux_items/include/live/airootfs/etc/vconsole.conf diff --git a/.linux_items/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc b/.linux_items/include/live/airootfs/etc/xdg/xfce4/kiosk/kioskrc similarity index 100% rename from .linux_items/archlive/airootfs/etc/xdg/xfce4/kiosk/kioskrc rename to .linux_items/include/live/airootfs/etc/xdg/xfce4/kiosk/kioskrc diff --git a/.linux_items/archlive/airootfs/root/.automated_script.sh b/.linux_items/include/live/airootfs/root/.automated_script.sh similarity index 100% rename from .linux_items/archlive/airootfs/root/.automated_script.sh rename to .linux_items/include/live/airootfs/root/.automated_script.sh diff --git a/.linux_items/archlive/airootfs/root/.zlogin b/.linux_items/include/live/airootfs/root/.zlogin similarity index 100% rename from .linux_items/archlive/airootfs/root/.zlogin rename to .linux_items/include/live/airootfs/root/.zlogin diff --git a/.linux_items/archlive/airootfs/root/customize_airootfs.sh b/.linux_items/include/live/airootfs/root/customize_airootfs.sh similarity index 100% rename from .linux_items/archlive/airootfs/root/customize_airootfs.sh rename to .linux_items/include/live/airootfs/root/customize_airootfs.sh diff --git a/.linux_items/archlive/airootfs/root/install.txt b/.linux_items/include/live/airootfs/root/install.txt similarity index 100% rename from .linux_items/archlive/airootfs/root/install.txt rename to .linux_items/include/live/airootfs/root/install.txt diff --git a/.linux_items/archlive/airootfs/usr/local/bin/apple_fans b/.linux_items/include/live/airootfs/usr/local/bin/apple_fans similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/apple_fans rename to .linux_items/include/live/airootfs/usr/local/bin/apple_fans diff --git a/.linux_items/archlive/extra/arch/arch.conf b/.linux_items/include/live/airootfs/usr/local/bin/arch.conf similarity index 100% rename from .linux_items/archlive/extra/arch/arch.conf rename to .linux_items/include/live/airootfs/usr/local/bin/arch.conf diff --git a/.linux_items/archlive/airootfs/usr/local/bin/connect-to-network b/.linux_items/include/live/airootfs/usr/local/bin/connect-to-network similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/connect-to-network rename to .linux_items/include/live/airootfs/usr/local/bin/connect-to-network diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/hw-diags rename to .linux_items/include/live/airootfs/usr/local/bin/hw-diags diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-audio b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-audio similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/hw-diags-audio rename to .linux_items/include/live/airootfs/usr/local/bin/hw-diags-audio diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-badblocks b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-badblocks similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/hw-diags-badblocks rename to .linux_items/include/live/airootfs/usr/local/bin/hw-diags-badblocks diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-inner b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-inner similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/hw-diags-inner rename to .linux_items/include/live/airootfs/usr/local/bin/hw-diags-inner diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-network b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-network similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/hw-diags-network rename to .linux_items/include/live/airootfs/usr/local/bin/hw-diags-network diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-prime95 b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-prime95 similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/hw-diags-prime95 rename to .linux_items/include/live/airootfs/usr/local/bin/hw-diags-prime95 diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-progress b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-progress similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/hw-diags-progress rename to .linux_items/include/live/airootfs/usr/local/bin/hw-diags-progress diff --git a/.linux_items/archlive/airootfs/usr/local/bin/hw-diags-sensors b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-sensors similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/hw-diags-sensors rename to .linux_items/include/live/airootfs/usr/local/bin/hw-diags-sensors diff --git a/.linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes b/.linux_items/include/live/airootfs/usr/local/bin/mount-all-volumes similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes rename to .linux_items/include/live/airootfs/usr/local/bin/mount-all-volumes diff --git a/.linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes-foh b/.linux_items/include/live/airootfs/usr/local/bin/mount-all-volumes-foh similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/mount-all-volumes-foh rename to .linux_items/include/live/airootfs/usr/local/bin/mount-all-volumes-foh diff --git a/.linux_items/archlive/airootfs/usr/local/bin/mount-backup-shares b/.linux_items/include/live/airootfs/usr/local/bin/mount-backup-shares similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/mount-backup-shares rename to .linux_items/include/live/airootfs/usr/local/bin/mount-backup-shares diff --git a/.linux_items/archlive/airootfs/usr/local/bin/msword-search b/.linux_items/include/live/airootfs/usr/local/bin/msword-search similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/msword-search rename to .linux_items/include/live/airootfs/usr/local/bin/msword-search diff --git a/.linux_items/archlive/airootfs/usr/local/bin/remount-rw b/.linux_items/include/live/airootfs/usr/local/bin/remount-rw similarity index 100% rename from .linux_items/archlive/airootfs/usr/local/bin/remount-rw rename to .linux_items/include/live/airootfs/usr/local/bin/remount-rw diff --git a/.linux_items/archlive/extra/arch/wifi.conf b/.linux_items/include/live/airootfs/usr/local/bin/wifi.conf similarity index 100% rename from .linux_items/archlive/extra/arch/wifi.conf rename to .linux_items/include/live/airootfs/usr/local/bin/wifi.conf diff --git a/.linux_items/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop b/.linux_items/include/live/airootfs/usr/share/applications/Hardware Diagnostics.desktop similarity index 100% rename from .linux_items/archlive/airootfs/usr/share/applications/Hardware Diagnostics.desktop rename to .linux_items/include/live/airootfs/usr/share/applications/Hardware Diagnostics.desktop diff --git a/.linux_items/archlive/airootfs/usr/share/applications/Hardware Information.desktop b/.linux_items/include/live/airootfs/usr/share/applications/Hardware Information.desktop similarity index 100% rename from .linux_items/archlive/airootfs/usr/share/applications/Hardware Information.desktop rename to .linux_items/include/live/airootfs/usr/share/applications/Hardware Information.desktop diff --git a/.linux_items/archlive/airootfs/usr/share/applications/NetworkTest.desktop b/.linux_items/include/live/airootfs/usr/share/applications/NetworkTest.desktop similarity index 100% rename from .linux_items/archlive/airootfs/usr/share/applications/NetworkTest.desktop rename to .linux_items/include/live/airootfs/usr/share/applications/NetworkTest.desktop diff --git a/.linux_items/archlive/airootfs/usr/share/applications/SpeedTest.desktop b/.linux_items/include/live/airootfs/usr/share/applications/SpeedTest.desktop similarity index 100% rename from .linux_items/archlive/airootfs/usr/share/applications/SpeedTest.desktop rename to .linux_items/include/live/airootfs/usr/share/applications/SpeedTest.desktop diff --git a/.linux_items/archlive/mkinitcpio.conf b/.linux_items/include/live/mkinitcpio.conf similarity index 100% rename from .linux_items/archlive/mkinitcpio.conf rename to .linux_items/include/live/mkinitcpio.conf diff --git a/.linux_items/archlive/packages.both b/.linux_items/include/live/packages.both similarity index 100% rename from .linux_items/archlive/packages.both rename to .linux_items/include/live/packages.both diff --git a/.linux_items/archlive/packages.i686 b/.linux_items/include/live/packages.i686 similarity index 100% rename from .linux_items/archlive/packages.i686 rename to .linux_items/include/live/packages.i686 diff --git a/.linux_items/archlive/packages.x86_64 b/.linux_items/include/live/packages.x86_64 similarity index 100% rename from .linux_items/archlive/packages.x86_64 rename to .linux_items/include/live/packages.x86_64 diff --git a/.linux_items/archlive/pacman.conf b/.linux_items/include/live/pacman.conf similarity index 100% rename from .linux_items/archlive/pacman.conf rename to .linux_items/include/live/pacman.conf diff --git a/Build Linux b/Build Linux index f53be02f..c080a108 100755 --- a/Build Linux +++ b/Build Linux @@ -50,11 +50,14 @@ function cleanup() { function copy_archiso() { echo "Copying Archlinux files..." - rsync -a /usr/share/archiso/configs/releng/ "$ARCHLIVE_DIR/" + rsync -aI /usr/share/archiso/configs/releng/ "$ARCHLIVE_DIR/" + # Add items + rsync -aI "$ROOT_DIR/.linux_items/include/live/" "$ARCHLIVE_DIR/" + # Update build.sh - if ! grep -iq 'customize_iso' archlive/build.sh; then - sed -ir 's!run_once make_iso!# customize_iso\ncp -a ${script_path}/extra/* ${work_dir}/iso/\n\nrun_once make_iso!' archlive/build.sh + if ! grep -iq 'customize_iso' "$ARCHLIVE_DIR/build.sh"; then + sed -ir "s!run_once make_iso\$!# customize_iso\ncp -a \"$ROOT_DIR/.linux_items/include/iso\"/* \"\${work_dir}/iso\"/\n\nrun_once make_iso!" "$ARCHLIVE_DIR/build.sh" fi } @@ -182,6 +185,10 @@ case $1 in build_arch ;; + --copy-archiso) + copy_archiso + ;; + --install-deps) install_deps ;; From a8033f0a02bf45fea45bc28d093a221daae5e606 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Tue, 12 Dec 2017 12:21:20 -0800 Subject: [PATCH 023/107] .linux_items cleanup --- .../include/live/airootfs/etc/hostname | 1 + .../include/live/airootfs/etc/skel/.aliases | 2 - .../live/airootfs/etc/skel/.bash_logout | 3 - .../live/airootfs/etc/skel/.bash_profile | 5 - .../include/live/airootfs/etc/ufw/after.init | 40 ----- .../include/live/airootfs/etc/ufw/after.rules | 30 ---- .../live/airootfs/etc/ufw/after6.rules | 27 ---- .../etc/ufw/applications.d/ufw-bittorent | 19 --- .../airootfs/etc/ufw/applications.d/ufw-chat | 35 ----- .../ufw/applications.d/ufw-directoryserver | 29 ---- .../etc/ufw/applications.d/ufw-dnsserver | 4 - .../etc/ufw/applications.d/ufw-fileserver | 14 -- .../etc/ufw/applications.d/ufw-loginserver | 14 -- .../etc/ufw/applications.d/ufw-mailserver | 30 ---- .../etc/ufw/applications.d/ufw-printserver | 9 -- .../etc/ufw/applications.d/ufw-proxyserver | 9 -- .../etc/ufw/applications.d/ufw-webserver | 19 --- .../include/live/airootfs/etc/ufw/before.init | 40 ----- .../live/airootfs/etc/ufw/before.rules | 77 ---------- .../live/airootfs/etc/ufw/before6.rules | 138 ------------------ .../include/live/airootfs/etc/ufw/sysctl.conf | 57 -------- .../live/airootfs/etc/xdg/xfce4/kiosk/kioskrc | 3 - .../live/airootfs/root/.automated_script.sh | 34 ----- .../include/live/airootfs/root/.zlogin | 1 - .../include/live/airootfs/root/install.txt | 3 - .../usr/share/applications/SpeedTest.desktop | 10 -- .linux_items/include/live/mkinitcpio.conf | 2 - .linux_items/include/live/packages.i686 | 0 .linux_items/include/live/packages.x86_64 | 0 .linux_items/packages/dependencies | 1 + .linux_items/packages/live | 95 ++++++++++++ 31 files changed, 97 insertions(+), 654 deletions(-) create mode 100644 .linux_items/include/live/airootfs/etc/hostname delete mode 100644 .linux_items/include/live/airootfs/etc/skel/.bash_logout delete mode 100644 .linux_items/include/live/airootfs/etc/skel/.bash_profile delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/after.init delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/after.rules delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/after6.rules delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-bittorent delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-chat delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-directoryserver delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-dnsserver delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-fileserver delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-loginserver delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-mailserver delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-printserver delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-proxyserver delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-webserver delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/before.init delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/before.rules delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/before6.rules delete mode 100644 .linux_items/include/live/airootfs/etc/ufw/sysctl.conf delete mode 100644 .linux_items/include/live/airootfs/etc/xdg/xfce4/kiosk/kioskrc delete mode 100644 .linux_items/include/live/airootfs/root/.automated_script.sh delete mode 100644 .linux_items/include/live/airootfs/root/.zlogin delete mode 100644 .linux_items/include/live/airootfs/root/install.txt delete mode 100644 .linux_items/include/live/airootfs/usr/share/applications/SpeedTest.desktop delete mode 100644 .linux_items/include/live/mkinitcpio.conf delete mode 100644 .linux_items/include/live/packages.i686 delete mode 100644 .linux_items/include/live/packages.x86_64 create mode 100644 .linux_items/packages/live diff --git a/.linux_items/include/live/airootfs/etc/hostname b/.linux_items/include/live/airootfs/etc/hostname new file mode 100644 index 00000000..d0b7e4a6 --- /dev/null +++ b/.linux_items/include/live/airootfs/etc/hostname @@ -0,0 +1 @@ +wklinux diff --git a/.linux_items/include/live/airootfs/etc/skel/.aliases b/.linux_items/include/live/airootfs/etc/skel/.aliases index 62185e55..951f8622 100644 --- a/.linux_items/include/live/airootfs/etc/skel/.aliases +++ b/.linux_items/include/live/airootfs/etc/skel/.aliases @@ -29,8 +29,6 @@ alias sdu='sudo du -sch --apparent-size' alias srmdirs='sudo find -depth -mindepth 1 -type d -exec rmdir "{}" --ignore-fail-on-non-empty \;' alias srs='sudo rsync -avhPS --stats --exclude-from="$HOME/.rsync_exclusions"' alias srsz='sudo rsync -avhzPS --stats --exclude-from="$HOME/.rsync_exclusions"' -alias start-wifi='sudo start-wifi' -alias td='tmux detach' alias testdisk='sudo testdisk' alias umount='sudo umount' alias unmount='sudo umount' diff --git a/.linux_items/include/live/airootfs/etc/skel/.bash_logout b/.linux_items/include/live/airootfs/etc/skel/.bash_logout deleted file mode 100644 index 0e4e4f18..00000000 --- a/.linux_items/include/live/airootfs/etc/skel/.bash_logout +++ /dev/null @@ -1,3 +0,0 @@ -# -# ~/.bash_logout -# diff --git a/.linux_items/include/live/airootfs/etc/skel/.bash_profile b/.linux_items/include/live/airootfs/etc/skel/.bash_profile deleted file mode 100644 index 5545f007..00000000 --- a/.linux_items/include/live/airootfs/etc/skel/.bash_profile +++ /dev/null @@ -1,5 +0,0 @@ -# -# ~/.bash_profile -# - -[[ -f ~/.bashrc ]] && . ~/.bashrc diff --git a/.linux_items/include/live/airootfs/etc/ufw/after.init b/.linux_items/include/live/airootfs/etc/ufw/after.init deleted file mode 100644 index e89217d5..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/after.init +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -# -# after.init: if executable, called by ufw-init. See 'man ufw-framework' for -# details. Note that output from these scripts is not seen via the -# the ufw command, but instead via ufw-init. -# -# Copyright 2013 Canonical Ltd. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 3, -# as published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -set -e - -case "$1" in -start) - # typically required - ;; -stop) - # typically required - ;; -status) - # optional - ;; -flush-all) - # optional - ;; -*) - echo "'$1' not supported" - echo "Usage: after.init {start|stop|flush-all|status}" - ;; -esac diff --git a/.linux_items/include/live/airootfs/etc/ufw/after.rules b/.linux_items/include/live/airootfs/etc/ufw/after.rules deleted file mode 100644 index 0d6c6461..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/after.rules +++ /dev/null @@ -1,30 +0,0 @@ -# -# rules.input-after -# -# Rules that should be run after the ufw command line added rules. Custom -# rules should be added to one of these chains: -# ufw-after-input -# ufw-after-output -# ufw-after-forward -# - -# Don't delete these required lines, otherwise there will be errors -*filter -:ufw-after-input - [0:0] -:ufw-after-output - [0:0] -:ufw-after-forward - [0:0] -# End required lines - -# don't log noisy services by default --A ufw-after-input -p udp --dport 137 -j ufw-skip-to-policy-input --A ufw-after-input -p udp --dport 138 -j ufw-skip-to-policy-input --A ufw-after-input -p tcp --dport 139 -j ufw-skip-to-policy-input --A ufw-after-input -p tcp --dport 445 -j ufw-skip-to-policy-input --A ufw-after-input -p udp --dport 67 -j ufw-skip-to-policy-input --A ufw-after-input -p udp --dport 68 -j ufw-skip-to-policy-input - -# don't log noisy broadcast --A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input - -# don't delete the 'COMMIT' line or these rules won't be processed -COMMIT diff --git a/.linux_items/include/live/airootfs/etc/ufw/after6.rules b/.linux_items/include/live/airootfs/etc/ufw/after6.rules deleted file mode 100644 index 0d996726..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/after6.rules +++ /dev/null @@ -1,27 +0,0 @@ -# -# rules.input-after -# -# Rules that should be run after the ufw command line added rules. Custom -# rules should be added to one of these chains: -# ufw6-after-input -# ufw6-after-output -# ufw6-after-forward -# - -# Don't delete these required lines, otherwise there will be errors -*filter -:ufw6-after-input - [0:0] -:ufw6-after-output - [0:0] -:ufw6-after-forward - [0:0] -# End required lines - -# don't log noisy services by default --A ufw6-after-input -p udp --dport 137 -j ufw6-skip-to-policy-input --A ufw6-after-input -p udp --dport 138 -j ufw6-skip-to-policy-input --A ufw6-after-input -p tcp --dport 139 -j ufw6-skip-to-policy-input --A ufw6-after-input -p tcp --dport 445 -j ufw6-skip-to-policy-input --A ufw6-after-input -p udp --dport 546 -j ufw6-skip-to-policy-input --A ufw6-after-input -p udp --dport 547 -j ufw6-skip-to-policy-input - -# don't delete the 'COMMIT' line or these rules won't be processed -COMMIT diff --git a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-bittorent b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-bittorent deleted file mode 100644 index bdaa7431..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-bittorent +++ /dev/null @@ -1,19 +0,0 @@ -[Transmission] -title=Transmission -description=Transmission BitTorrent client -ports=51413/tcp - -[Deluge] -title=Deluge -description=Deluge BitTorrent client -ports=6881:6891/tcp - -[KTorrent] -title=KTorrent -description=KTorrent BitTorrent client -ports=6881/tcp|4444/udp - -[qBittorrent] -title=qBittorrent -description=qBittorrent BitTorrent client -ports=6881/tcp diff --git a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-chat b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-chat deleted file mode 100644 index 32b4fe70..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-chat +++ /dev/null @@ -1,35 +0,0 @@ -[PeopleNearby] -title=People Nearby -description=People Nearby (Bonjour/Salut) functionality in Empathy -ports=5353/udp|5298 - -[Bonjour] -title=Bonjour -description=Bonjour protocol -ports=5353/udp|5298 - -[MSN] -title=MSN Chat -description=MSN chat protocol (with file transfer and voice) -ports=1863|6891:6900/tcp|6901 - -[MSN SSL] -title=MSN Chat (SSL) -description=MSN chat protocol (SSL) -ports=443/tcp - -[AIM] -title=AIM Talk -description=AIM talk protocol -ports=5190/tcp - -[Yahoo] -title=Yahoo Chat -description=Yahoo chat protocol -ports=5050 - -[XMPP] -title=XMPP Chat -description=XMPP protocol (Jabber and Google Talk) -ports=5222/tcp|5269/tcp - diff --git a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-directoryserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-directoryserver deleted file mode 100644 index 90fa2f75..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-directoryserver +++ /dev/null @@ -1,29 +0,0 @@ -[Kerberos KDC] -title=Kerberos v5 KDC server -description=Kerberos v5 KDC server -ports=88 - -[Kerberos Admin] -title=Kerberos v5 admin -description=Kerberos v5 server -ports=749/tcp - -[Kerberos Password] -title=Kerberos v5 password -description=Kerberos v5 password -ports=464/udp - -[Kerberos Full] -title=Kerberos v5 server -description=Kerberos v5 server -ports=88,749/tcp|464/udp - -[LDAP] -title=LDAP server -description=LDAP server -ports=389/tcp - -[LDAPS] -title=LDAP server (LDAPS) -description=LDAP server (LDAPS) -ports=636/tcp diff --git a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-dnsserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-dnsserver deleted file mode 100644 index 7a617811..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-dnsserver +++ /dev/null @@ -1,4 +0,0 @@ -[DNS] -title=Internet Domain Name Server -description=Internet Domain Name Server -ports=53 diff --git a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-fileserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-fileserver deleted file mode 100644 index 6cb4c77b..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-fileserver +++ /dev/null @@ -1,14 +0,0 @@ -[CIFS] -title=SMB/CIFS server -description=SMB/CIFS server -ports=137,138/udp|139,445/tcp - -[NFS] -title=NFS server -description=NFS and portmap server. Will also need access to mountd, statd and possibly others -ports=2049,111/tcp|2049,111/udp - -[svnserve] -title=Subversion server -description=Subversion server for access to Subversion repositories. -ports=3690/tcp diff --git a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-loginserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-loginserver deleted file mode 100644 index 5f018530..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-loginserver +++ /dev/null @@ -1,14 +0,0 @@ -[Telnet] -title=Telnet server (insecure) -description=Telnet server (insecure) -ports=23/tcp - -[SSH] -title=SSH server -description=SSH server -ports=22/tcp - -[VNC] -title=VNC server -description=VNC server -ports=5900/tcp diff --git a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-mailserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-mailserver deleted file mode 100644 index dd55cc07..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-mailserver +++ /dev/null @@ -1,30 +0,0 @@ -[POP3] -title=Mail server (POP3) -description=Mail server (POP3) -ports=110/tcp - -[POP3S] -title=Secure mail server (POP3S) -description=Secure mail server (POP3S) -ports=995/tcp - -[IMAP] -title=Mail server (IMAP) -description=Mail server (IMAP) -ports=143/tcp - -[IMAPS] -title=Secure mail server (IMAPS) -description=Secure mail server (IMAPS) -ports=993/tcp - -[SMTP] -title=Mail server (SMTP) -description=Mail server (SMTP) -ports=25/tcp - -[Mail submission] -title=Mail server (Submission) -description=Mail server (Submission) -ports=587/tcp - diff --git a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-printserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-printserver deleted file mode 100644 index e634b612..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-printserver +++ /dev/null @@ -1,9 +0,0 @@ -[IPP] -title=Cups server (IPP) -description=Cups server (IPP) -ports=631 - -[LPD] -title=LPD server -description=LPD server -ports=515/tcp diff --git a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-proxyserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-proxyserver deleted file mode 100644 index a598c980..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-proxyserver +++ /dev/null @@ -1,9 +0,0 @@ -[Socks] -title=Socks proxy -description=Socks proxy -ports=1080/tcp - -[Transparent Proxy] -title=Transparent proxy -description=Transparent proxy -ports=8081/tcp diff --git a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-webserver b/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-webserver deleted file mode 100644 index fab4b822..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/applications.d/ufw-webserver +++ /dev/null @@ -1,19 +0,0 @@ -[WWW] -title=Web Server -description=Web server -ports=80/tcp - -[WWW Secure] -title=Web Server (HTTPS) -description=Web Server (HTTPS) -ports=443/tcp - -[WWW Full] -title=Web Server (HTTP,HTTPS) -description=Web Server (HTTP,HTTPS) -ports=80,443/tcp - -[WWW Cache] -title=Web Server (8080) -description=Web Server (8080) -ports=8080/tcp diff --git a/.linux_items/include/live/airootfs/etc/ufw/before.init b/.linux_items/include/live/airootfs/etc/ufw/before.init deleted file mode 100644 index 1348cb12..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/before.init +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -# -# before.init: if executable, called by ufw-init. See 'man ufw-framework' for -# details. Note that output from these scripts is not seen via the -# the ufw command, but instead via ufw-init. -# -# Copyright 2013 Canonical Ltd. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 3, -# as published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -set -e - -case "$1" in -start) - # typically required - ;; -stop) - # typically required - ;; -status) - # optional - ;; -flush-all) - # optional - ;; -*) - echo "'$1' not supported" - echo "Usage: before.init {start|stop|flush-all|status}" - ;; -esac diff --git a/.linux_items/include/live/airootfs/etc/ufw/before.rules b/.linux_items/include/live/airootfs/etc/ufw/before.rules deleted file mode 100644 index 0addd54c..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/before.rules +++ /dev/null @@ -1,77 +0,0 @@ -# -# rules.before -# -# Rules that should be run before the ufw command line added rules. Custom -# rules should be added to one of these chains: -# ufw-before-input -# ufw-before-output -# ufw-before-forward -# - -# Don't delete these required lines, otherwise there will be errors -*filter -:ufw-before-input - [0:0] -:ufw-before-output - [0:0] -:ufw-before-forward - [0:0] -:ufw-not-local - [0:0] -# End required lines - - -# allow all on loopback --A ufw-before-input -i lo -j ACCEPT --A ufw-before-output -o lo -j ACCEPT - -# quickly process packets for which we already have a connection --A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT --A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT --A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT - -# drop INVALID packets (logs these in loglevel medium and higher) --A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny --A ufw-before-input -m conntrack --ctstate INVALID -j DROP - -# ok icmp codes for INPUT --A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT --A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT --A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT --A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT --A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT - -# ok icmp code for FORWARD --A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT --A ufw-before-forward -p icmp --icmp-type source-quench -j ACCEPT --A ufw-before-forward -p icmp --icmp-type time-exceeded -j ACCEPT --A ufw-before-forward -p icmp --icmp-type parameter-problem -j ACCEPT --A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT - -# allow dhcp client to work --A ufw-before-input -p udp --sport 67 --dport 68 -j ACCEPT - -# -# ufw-not-local -# --A ufw-before-input -j ufw-not-local - -# if LOCAL, RETURN --A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN - -# if MULTICAST, RETURN --A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN - -# if BROADCAST, RETURN --A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN - -# all other non-local packets are dropped --A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny --A ufw-not-local -j DROP - -# allow MULTICAST mDNS for service discovery (be sure the MULTICAST line above -# is uncommented) --A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT - -# allow MULTICAST UPnP for service discovery (be sure the MULTICAST line above -# is uncommented) --A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT - -# don't delete the 'COMMIT' line or these rules won't be processed -COMMIT diff --git a/.linux_items/include/live/airootfs/etc/ufw/before6.rules b/.linux_items/include/live/airootfs/etc/ufw/before6.rules deleted file mode 100644 index 1102d3f7..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/before6.rules +++ /dev/null @@ -1,138 +0,0 @@ -# -# rules.before -# -# Rules that should be run before the ufw command line added rules. Custom -# rules should be added to one of these chains: -# ufw6-before-input -# ufw6-before-output -# ufw6-before-forward -# - -# Don't delete these required lines, otherwise there will be errors -*filter -:ufw6-before-input - [0:0] -:ufw6-before-output - [0:0] -:ufw6-before-forward - [0:0] -# End required lines - - -# allow all on loopback --A ufw6-before-input -i lo -j ACCEPT --A ufw6-before-output -o lo -j ACCEPT - -# drop packets with RH0 headers --A ufw6-before-input -m rt --rt-type 0 -j DROP --A ufw6-before-forward -m rt --rt-type 0 -j DROP --A ufw6-before-output -m rt --rt-type 0 -j DROP - -# quickly process packets for which we already have a connection --A ufw6-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT --A ufw6-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT --A ufw6-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT - -# drop INVALID packets (logs these in loglevel medium and higher) --A ufw6-before-input -m conntrack --ctstate INVALID -j ufw6-logging-deny --A ufw6-before-input -m conntrack --ctstate INVALID -j DROP - -# ok icmp codes for INPUT (rfc4890, 4.4.1 and 4.4.2) --A ufw6-before-input -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT --A ufw6-before-input -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT -# codes 0 and 1 --A ufw6-before-input -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT -# codes 0-2 --A ufw6-before-input -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT --A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -j ACCEPT --A ufw6-before-input -p icmpv6 --icmpv6-type echo-reply -j ACCEPT --A ufw6-before-input -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT --A ufw6-before-input -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT --A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT --A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT -# IND solicitation --A ufw6-before-input -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT -# IND advertisement --A ufw6-before-input -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT -# MLD query --A ufw6-before-input -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT -# MLD report --A ufw6-before-input -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT -# MLD done --A ufw6-before-input -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT -# MLD report v2 --A ufw6-before-input -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT -# SEND certificate path solicitation --A ufw6-before-input -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT -# SEND certificate path advertisement --A ufw6-before-input -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT -# MR advertisement --A ufw6-before-input -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT -# MR solicitation --A ufw6-before-input -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT -# MR termination --A ufw6-before-input -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT - -# ok icmp codes for OUTPUT (rfc4890, 4.4.1 and 4.4.2) --A ufw6-before-output -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT --A ufw6-before-output -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT -# codes 0 and 1 --A ufw6-before-output -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT -# codes 0-2 --A ufw6-before-output -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT --A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -j ACCEPT --A ufw6-before-input -p icmpv6 --icmpv6-type echo-reply -j ACCEPT --A ufw6-before-output -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT --A ufw6-before-output -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT --A ufw6-before-output -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT --A ufw6-before-output -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT -# IND solicitation --A ufw6-before-output -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT -# IND advertisement --A ufw6-before-output -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT -# MLD query --A ufw6-before-output -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT -# MLD report --A ufw6-before-output -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT -# MLD done --A ufw6-before-output -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT -# MLD report v2 --A ufw6-before-output -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT -# SEND certificate path solicitation --A ufw6-before-output -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT -# SEND certificate path advertisement --A ufw6-before-output -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT -# MR advertisement --A ufw6-before-output -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT -# MR solicitation --A ufw6-before-output -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT -# MR termination --A ufw6-before-output -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT - -# ok icmp codes for FORWARD (rfc4890, 4.3.1) --A ufw6-before-forward -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT --A ufw6-before-forward -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT -# codes 0 and 1 --A ufw6-before-forward -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT -# codes 0-2 --A ufw6-before-forward -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT --A ufw6-before-forward -p icmpv6 --icmpv6-type echo-request -j ACCEPT --A ufw6-before-forward -p icmpv6 --icmpv6-type echo-reply -j ACCEPT -# ok icmp codes for FORWARD (rfc4890, 4.3.2) -# Home Agent Address Discovery Reques --A ufw6-before-input -p icmpv6 --icmpv6-type 144 -j ACCEPT -# Home Agent Address Discovery Reply --A ufw6-before-input -p icmpv6 --icmpv6-type 145 -j ACCEPT -# Mobile Prefix Solicitation --A ufw6-before-input -p icmpv6 --icmpv6-type 146 -j ACCEPT -# Mobile Prefix Advertisement --A ufw6-before-input -p icmpv6 --icmpv6-type 147 -j ACCEPT - -# allow dhcp client to work --A ufw6-before-input -p udp -s fe80::/10 --sport 547 -d fe80::/10 --dport 546 -j ACCEPT - -# allow MULTICAST mDNS for service discovery --A ufw6-before-input -p udp -d ff02::fb --dport 5353 -j ACCEPT - -# allow MULTICAST UPnP for service discovery --A ufw6-before-input -p udp -d ff02::f --dport 1900 -j ACCEPT - -# don't delete the 'COMMIT' line or these rules won't be processed -COMMIT diff --git a/.linux_items/include/live/airootfs/etc/ufw/sysctl.conf b/.linux_items/include/live/airootfs/etc/ufw/sysctl.conf deleted file mode 100644 index 87070322..00000000 --- a/.linux_items/include/live/airootfs/etc/ufw/sysctl.conf +++ /dev/null @@ -1,57 +0,0 @@ -# -# Configuration file for setting network variables. Please note these settings -# override /etc/sysctl.conf. If you prefer to use /etc/sysctl.conf, please -# adjust IPT_SYSCTL in /etc/default/ufw. -# - -# Uncomment this to allow this host to route packets between interfaces -#net/ipv4/ip_forward=1 -#net/ipv6/conf/default/forwarding=1 -#net/ipv6/conf/all/forwarding=1 - -# Turn on Source Address Verification in all interfaces to prevent some -# spoofing attacks -net/ipv4/conf/default/rp_filter=1 -net/ipv4/conf/all/rp_filter=1 - -# Do not accept IP source route packets (we are not a router) -net/ipv4/conf/default/accept_source_route=0 -net/ipv4/conf/all/accept_source_route=0 -net/ipv6/conf/default/accept_source_route=0 -net/ipv6/conf/all/accept_source_route=0 - -# Disable ICMP redirects. ICMP redirects are rarely used but can be used in -# MITM (man-in-the-middle) attacks. Disabling ICMP may disrupt legitimate -# traffic to those sites. -net/ipv4/conf/default/accept_redirects=0 -net/ipv4/conf/all/accept_redirects=0 -net/ipv6/conf/default/accept_redirects=0 -net/ipv6/conf/all/accept_redirects=0 - -# Ignore bogus ICMP errors -net/ipv4/icmp_echo_ignore_broadcasts=1 -net/ipv4/icmp_ignore_bogus_error_responses=1 -net/ipv4/icmp_echo_ignore_all=0 - -# Don't log Martian Packets (impossible packets) -net/ipv4/conf/default/log_martians=0 -net/ipv4/conf/all/log_martians=0 - -# Change to '1' to enable TCP/IP SYN cookies This disables TCP Window Scaling -# (http://lkml.org/lkml/2008/2/5/167) -net/ipv4/tcp_syncookies=0 - -#net/ipv4/tcp_fin_timeout=30 -#net/ipv4/tcp_keepalive_intvl=1800 - -# normally allowing tcp_sack is ok, but if going through OpenBSD 3.8 RELEASE or -# earlier pf firewall, should set this to 0 -net/ipv4/tcp_sack=1 - -# Uncomment this to turn off ipv6 autoconfiguration -#net/ipv6/conf/default/autoconf=0 -#net/ipv6/conf/all/autoconf=0 - -# Uncomment this to enable ipv6 privacy addressing -#net/ipv6/conf/default/use_tempaddr=2 -#net/ipv6/conf/all/use_tempaddr=2 diff --git a/.linux_items/include/live/airootfs/etc/xdg/xfce4/kiosk/kioskrc b/.linux_items/include/live/airootfs/etc/xdg/xfce4/kiosk/kioskrc deleted file mode 100644 index fec17f8a..00000000 --- a/.linux_items/include/live/airootfs/etc/xdg/xfce4/kiosk/kioskrc +++ /dev/null @@ -1,3 +0,0 @@ -[xfce4-session] -SaveSession=None - diff --git a/.linux_items/include/live/airootfs/root/.automated_script.sh b/.linux_items/include/live/airootfs/root/.automated_script.sh deleted file mode 100644 index 81a98a1a..00000000 --- a/.linux_items/include/live/airootfs/root/.automated_script.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -script_cmdline () -{ - local param - for param in $(< /proc/cmdline); do - case "${param}" in - script=*) echo "${param#*=}" ; return 0 ;; - esac - done -} - -automated_script () -{ - local script rt - script="$(script_cmdline)" - if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then - if [[ "${script}" =~ ^http:// || "${script}" =~ ^ftp:// ]]; then - wget "${script}" --retry-connrefused -q -O /tmp/startup_script >/dev/null - rt=$? - else - cp "${script}" /tmp/startup_script - rt=$? - fi - if [[ ${rt} -eq 0 ]]; then - chmod +x /tmp/startup_script - /tmp/startup_script - fi - fi -} - -if [[ $(tty) == "/dev/tty1" ]]; then - automated_script -fi diff --git a/.linux_items/include/live/airootfs/root/.zlogin b/.linux_items/include/live/airootfs/root/.zlogin deleted file mode 100644 index f598e43e..00000000 --- a/.linux_items/include/live/airootfs/root/.zlogin +++ /dev/null @@ -1 +0,0 @@ -~/.automated_script.sh diff --git a/.linux_items/include/live/airootfs/root/install.txt b/.linux_items/include/live/airootfs/root/install.txt deleted file mode 100644 index 3c8f171c..00000000 --- a/.linux_items/include/live/airootfs/root/install.txt +++ /dev/null @@ -1,3 +0,0 @@ -View this installation guide online at -https://wiki.archlinux.org/index.php/Installation_Guide - diff --git a/.linux_items/include/live/airootfs/usr/share/applications/SpeedTest.desktop b/.linux_items/include/live/airootfs/usr/share/applications/SpeedTest.desktop deleted file mode 100644 index d59dd602..00000000 --- a/.linux_items/include/live/airootfs/usr/share/applications/SpeedTest.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Name=SpeedTest -Comment= -Exec=urxvt -titile SpeedTest -hold -e speedtest -Icon=network-workgroup -Path=/usr/local/bin -Terminal=false -StartupNotify=false diff --git a/.linux_items/include/live/mkinitcpio.conf b/.linux_items/include/live/mkinitcpio.conf deleted file mode 100644 index 2f46da49..00000000 --- a/.linux_items/include/live/mkinitcpio.conf +++ /dev/null @@ -1,2 +0,0 @@ -HOOKS="base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard" -COMPRESSION="xz" diff --git a/.linux_items/include/live/packages.i686 b/.linux_items/include/live/packages.i686 deleted file mode 100644 index e69de29b..00000000 diff --git a/.linux_items/include/live/packages.x86_64 b/.linux_items/include/live/packages.x86_64 deleted file mode 100644 index e69de29b..00000000 diff --git a/.linux_items/packages/dependencies b/.linux_items/packages/dependencies index cad41935..a53027d5 100644 --- a/.linux_items/packages/dependencies +++ b/.linux_items/packages/dependencies @@ -2,6 +2,7 @@ archiso attr base-devel curl +git libewf progsreiserfs rsync diff --git a/.linux_items/packages/live b/.linux_items/packages/live new file mode 100644 index 00000000..b5300bdc --- /dev/null +++ b/.linux_items/packages/live @@ -0,0 +1,95 @@ +aic94xx-firmware +alsa-utils +antiword +bash-pipes +bc +bluez +bluez-utils +cbatticon +chntpw +cmatrix +colordiff +compton +conky +curl +dmidecode +dos2unix +dunst +e2fsprogs +feh +ffmpeg +firefox +gnome-keyring +gparted +gsmartcontrol +gtk-theme-arc-git +hardinfo +hexedit +hfsprogs +htop +i3-gaps +i3lock-fancy-git +i3status +inxi +ldns +libewf +libinput +linux-firmware +lm_sensors +mdadm +mediainfo +mesa-demos +mkvtoolnix-cli +mprime-bin +mpv +mupdf +ncdu +network-manager-applet +networkmanager +oblogout +openbox-patched +p7zip +papirus-icon-theme +pasystray +pavucontrol +progsreiserfs +pulseaudio +qemu-guest-agent +reiserfsprogs +rfkill +rng-tools +rofi +rxvt-unicode +speedtest-cli +spice-vdagent +terminus-font +testdisk-wip +thunar +tint2 +tk +tmux +tree +ttf-font-awesome +ttf-inconsolata +udevil +udisks2 +ufw +unzip +veracrypt +vim +virtualbox-guest-modules-arch +virtualbox-guest-utils +wd719x-firmware +wimlib +xf86-input-libinput +xf86-video-amdgpu +xf86-video-fbdev +xf86-video-intel +xf86-video-nouveau +xf86-video-vesa +xorg-server +xorg-xdpyinfo +xorg-xev +xorg-xinit +xorg-xinput +zsh From 708ffe115730ee12c84101e6517ab93862cee46e Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Tue, 12 Dec 2017 12:27:47 -0800 Subject: [PATCH 024/107] Update airootfs from releng Idea: * Remove unwanted files * Modify / Replace wanted files * Add additional files --- Build Linux | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Build Linux b/Build Linux index c080a108..4aca45ec 100755 --- a/Build Linux +++ b/Build Linux @@ -59,6 +59,24 @@ function copy_archiso() { if ! grep -iq 'customize_iso' "$ARCHLIVE_DIR/build.sh"; then sed -ir "s!run_once make_iso\$!# customize_iso\ncp -a \"$ROOT_DIR/.linux_items/include/iso\"/* \"\${work_dir}/iso\"/\n\nrun_once make_iso!" "$ARCHLIVE_DIR/build.sh" fi + + # Remove items + rm "$ARCHLIVE_DIR/airootfs/etc/systemd/scripts/choose-mirror" + rmdir "$ARCHLIVE_DIR/airootfs/etc/systemd/scripts" --ignore-fail-on-non-empty + rm "$ARCHLIVE_DIR/airootfs/etc/systemd/system/choose-mirror.service" + rm "$ARCHLIVE_DIR/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount" + rm "$ARCHLIVE_DIR/airootfs/etc/systemd/system/pacman-init.service" + rm "$ARCHLIVE_DIR/airootfs/etc/systemd/udev/rules.d/81-dhcpcd.rules" + rmdir "$ARCHLIVE_DIR/airootfs/etc/systemd/udev/rules.d" --ignore-fail-on-non-empty + rmdir "$ARCHLIVE_DIR/airootfs/etc/systemd/udev" --ignore-fail-on-non-empty + + # Update items + sed -i "s/WK/$KIT_NAME_SHORT/" "$ARCHLIVE_DIR/airootfs/etc/motd" + sed -ir 's/^(b43|clonezilla|gpm|grml|refind|testdisk|vim)/#\1/' "$ARCHLIVE_DIR/packages.both" + cat "$ROOT_DIR/.linux_items/packages/live" >> "$ARCHLIVE_DIR/packages.both" + echo "[CustomRepo]" >> "$ARCHLIVE_DIR/pacman.conf" + echo "SigLevel = Optional TrustAll" >> "$ARCHLIVE_DIR/pacman.conf" + echo "file://$CUSTOM_REPO_DIR" >> "$ARCHLIVE_DIR/pacman.conf" } function copy_settings() { From faffd66d097064ca17f3b1d464e7b9b9118d9a84 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Tue, 12 Dec 2017 15:02:25 -0800 Subject: [PATCH 025/107] Further trimmed .linux_items * oh-my-zsh is now downloaded during update_archiso * (Including the lean theme) * packages.both removed * It's now built during update_archiso --- .../skel/.gstreamer-0.10/registry.x86_64.bin | Bin 101400 -> 0 bytes .../etc/skel/.local/share/notes/Notes/Notes | 0 .../etc/skel/.local/share/recently-used.xbel | 16 -- .../include/live/airootfs/etc/skel/.zshrc | 85 +--------- .linux_items/include/live/packages.both | 153 ------------------ Build Linux | 32 ++-- 6 files changed, 25 insertions(+), 261 deletions(-) delete mode 100644 .linux_items/include/live/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin delete mode 100644 .linux_items/include/live/airootfs/etc/skel/.local/share/notes/Notes/Notes delete mode 100644 .linux_items/include/live/airootfs/etc/skel/.local/share/recently-used.xbel delete mode 100644 .linux_items/include/live/packages.both diff --git a/.linux_items/include/live/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin b/.linux_items/include/live/airootfs/etc/skel/.gstreamer-0.10/registry.x86_64.bin deleted file mode 100644 index e7f302f4c2fab287fd974ac9cf084d5bd1ba12c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101400 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
cwM_;`a;ML!AxcNKvT-ZBie^;@G)V`ypS{60M zF4tWNnG6UwHFZkyr)up*g^pvYzE3FXR9D`0)oV*Wpze#~ENcNP_7N{l6_;7Z9-?>U zh!4abr@#K2fyW+X>dCg7#@@g?bmAbePvg`^Q`#P#i4{BwrYve6 zH2&$2M2=NCNVwxW5pGQ(#sjJ$z}Ot|r@m`f{=LE0<4>{QiE3L4itlJo@;+WzheQng z{XOwx)kE-uUy6B}fdxI7dPF3*dpCaJ3HIG9eRW(;?va%Lk>1}l$hPWNz8=qi5Z9PLMZ_ziLR$~L=pA&2h`mHt&K|@#9}c28^tMUz zEmToT4v_rdut^_0lO3lB=~aa2qL5oHMZuO0peDx^z=BRDk4; zrCy$hJ6SK{UA+dl^{rk_Q=`gy>riD^=`F$M;280v*|p17NUyuw+rPJefA3%)TOgFz zUChs4Y6S<8{Z;B^o=N`~s43k~)*<~UJc~!Qdf*?Z<{^|pSquD)p>bG8k$VBjg!s?w z!8!dLCh=)J5$2Yn`fKrs=hD5B;BReFbJg+SzXb4VAk`m5e1C(?a=pF{8O_uiR=%1e z$K;r-NZ+nV)5nUcafMmO&ibmJKFAAUC6wc9$PAeZ8*f?Xp^d|$kH8vww%m|HAB-~W zMFfMQ{F4oX`U3jXlWj>U$n_YtIpKQ-R=&@Efnn&M;z)2fO=a36>yYPO@}DXPuQCjW z@ne9wBn7|XSx9(Qd)AY{;$_N76!*R31&IVi%cq*)dyEwtpmE%ZT`;x|2Y-q2MNcGfE=VQR`z-Hym#6fN$0OU#cE%~Zmf0K?%KvXi+p5pm1Mw6kx5BzLd ze=L8i2_~V14#3Lt369Xp_Hfvt6`$o+hGpGP1}TX8&YNKOt-aToFJP5oED72ja~KGNMh-q8tnbh&D*n>tGx9 zI)F;9m1)o;U1Yfz3hn%7cTVFt@a*U=ZLf@t<@BxE`G(iKg6g0=su8DVC^)Gkf{NZ{ z`8jqRYJz||R}a>iA0#ONzXyL$y63*_5Fyil9hO zAZx()kT-TTX~wk!Lk>+U(QuFc4*A)#RCy)dv#{>lK}K?b6P8Zn<`VZs2@)^GM+=v; z-;h1uAy%}P4-$`h{mBHo2YVK6{Wlv>vDYl+q0wK!skWjOJlMf3S7_%yyMtS3z;{nC za<3y^S-S`O)`U*96=PF*(P&J?eV`Nm>U5cO=rtXN=A%SGxNnyqs_&~WDS_$x3g=Ba zdjp{%$qb5orV>#?LvDgV-;aFfj3UKxWN`W*FI0YdvM@H{#{DbM&B!=&~0e_f>fhhii_$kI` zCsQU>X)uo5?KJA7o*nSH@p`^Lmiae+k%r?_D-A8|uZ3e?fv~)b;y91V{6ENFQ+e74 zA6r^B#7fa~d+c?fPGv(;kSb5L^D2Imj{Zq@-VZFCOsI((n;>&)h$`PYzlyh%Vpfgv z=^1=~h=cyr_vPFTpU9i_`6%zh`xxIH(#QC#eJ|hAOkh(6d*I1K{|zkNRZf#xkM#n&dP@;;im>@#<3&O zDCnfaLrLgp$R%@u(JVOVB^?dl`>BKGBmZXQBN8>6bk3n!%=(_*(a``0gk+j~(mQKb zJ}OZ*@{|ASJ&%(VPIh_n2%**e5vHV1`#{B#*A3hSW>Gi<-QT5snPMbx% z?@IIz>u45slME^7Fi=Xhh=~K9_@I4XeMt!n-xs_iJd@5l)Ay=;dP#?& ze3fLPWC5X|!=Wddpv^Yqm5nfDfTJPiV8!38{3;2N-jrpvMNK-VKloh2>iHQ`o&I1P zkkwNT7RryO8vHO1Jee0^+yoybqr*VII&g4hPB8OF3RP2nlTMNFFHD&#FD{7lGg$7B zTdBYD8#vr2%-e3cxLNer2&mQa~Aq;Iu+v{Z(C z>Li8%P3)$w;iqnArCumwj+D$vgL67xk$9neX^^P^oSQFCY|2*FZkBj3BhBeO}WKVZ!WWXE0IbaA6mJdVVw0Zwb#c60JWvIWeM@P%;WtW#-y zCEn)w+37EwB(TCP%P-*IZlO*snvsf~iG^G(H!vD+RNvzIDQ~NsLW<7QJ!kPdpcvTo@DK=gR*+$b8h#?Bs^L>y;gbP}=qU3`qw zki!^5+?nvxOFA09hj0Jv@98BShVK=-`eVbmr23K)7`|8ZKO+Tn7X9fZ9j5Oq5+!lv zczG%xEfFQ0lUJC*jo(F`(%%PuF4dPRf6Iif*}NwtEX}6aZhY!(C&M_8Vg3>Z96jIJ zsgtZ>R7lyM+sXF1G7KF`c#EGo$WF*Hai7m;^G`m=4^=y?;#*03v2SE4fdw2}9HnO+ z%KVBS13VLV5Mqk2gOy{2y>F54RB5g^fF2_L7WuAekdma^U7IxRK zGy9dGf8CK33MAJP{p*fyx#s9!cZ{3sL*KOa!W`7(`e0~mfGdb7x8|5GC2I5#HEWLJ zCFIEs!*nUp(H@Q_`S5msAKPZF7KZWO4m^I_gP|^?mW=Uvqgw8gINnHp-hJ36FB#j^ z*KaYQ&>lY@v9e;dFuXnKt)3tDd#$#Mx{U1|)OG@+TYaZS z^18y3nA*;E2YdUp7DNxRySqafXc2|?dTmy7GkTvahTdN99(BGtdY^s@ZdoaIWHJH> zNg_t(3)kL?n_2IGwaEh-mB6T#&F)%NXp9{I)|9nL4Koa^)fzFu@a*-Ix2vYZ(c6Po zmF&87qOvQTNw>Q2HEol-l!B|9|0dLQK8SC@V|r zIOO14ua}KkwoRFECAEJEGsNesf z=Hzc*eZ4*T`qSH3U)WCMcH+gI18*N63Jc%u!%K`f_2OQ)~V8lEcoAbwRBc+6qj%5q_rY_bO_0+P%Q+8Ch|kq&eHV zm->}VIk!c-em~I-E5C>~Yh}nLFx3QmJ65FK&!Rncu)JeSJ9lz@T7ym={mtPNKX;TcYWwHI89rFhvx8q^{>TD{**sM9E`AwnB15gOa)6y zggqaE06VQQ9*UBUMVdJt4Ls3meHjFt0#SLUxMx4AJ~KZv|aY;4;2qJ6Lo=A`ui%;3wv z9)KAZo0Pw~U?_yq!r z^JwhHIa~rm*~d@|`Kw=vc9Q(&n`3chSwF^w+;8I~PEY-e$?iAsPZ1^lVqR=h{>_Se zS_0dPuyKLx@JJ3QS-|m>m~oMS0hWVpb5rXP&QAACw?;I9)nv<4|{sp4@T&t;%)57f`F%{epu3+gQsBS@lY3#Ti9=TXJ=L? z{mCcvW^NCOts%iHuduU>CpMV02T(a^uO2+sgAemc2DLb}I92GZ9`WBAosqsm=f~ns z(pkKN267H1hjX3OYbeYxm)4>RtcPCo&JIx#F992S5aWC}h~m(blz%kDUW4pQ!~$mz z;9u!yhjHSer^ja0uB3heu0?LL3y^oN9`wn z+q)DW&%u-Sp;v!|pDKet6ZpMBlBaxxNm}v?Y+di#*g^g^?O~4y%r*Y8zOWI&ntkby zF=WWFlMMWOV<#wX4+o*`2bXD=B|d;lHW`V)hyNlj^l{CE2SMkp``cbmx@O0tJQ?K- zbf+!38O2q1N!170Bi9B$e+voB5M&uUsy2^y%IsGvhf6RdIcjnF>*F3Cr<@by*pJR+ zRPv(=?vftdHJzvXVifpZ#9n}GBnaN|+ryCGZbx1|Kd$t`v(%Rwnv?jP(J_Ao*Ykm$ z`v|*_MBly~duhP;rTE|fSaAIm-;67a^ECCm`v-OAkzMr&6dJH^#|&FSc~M3M%;A_a z83&x1BCLn@Y=N rw?} - - - - - - - - - - - - \ No newline at end of file diff --git a/.linux_items/include/live/airootfs/etc/skel/.zshrc b/.linux_items/include/live/airootfs/etc/skel/.zshrc index 23320e13..59a747eb 100644 --- a/.linux_items/include/live/airootfs/etc/skel/.zshrc +++ b/.linux_items/include/live/airootfs/etc/skel/.zshrc @@ -1,90 +1,11 @@ -# If you come from bash you might have to change your $PATH. -# export PATH=$HOME/bin:/usr/local/bin:$PATH - -# Path to your oh-my-zsh installation. - export ZSH=$HOME/.oh-my-zsh - -# Set name of the theme to load. Optionally, if you set this to "random" -# it'll load a random theme each time that oh-my-zsh is loaded. -# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes +# Oh My ZSH +export ZSH=$HOME/.oh-my-zsh ZSH_THEME="lean" - -# Uncomment the following line to use case-sensitive completion. -# CASE_SENSITIVE="true" - -# Uncomment the following line to use hyphen-insensitive completion. Case -# sensitive completion must be off. _ and - will be interchangeable. -# HYPHEN_INSENSITIVE="true" - -# Uncomment the following line to disable bi-weekly auto-update checks. DISABLE_AUTO_UPDATE="true" - -# Uncomment the following line to change how often to auto-update (in days). -# export UPDATE_ZSH_DAYS=13 - -# Uncomment the following line to disable colors in ls. -# DISABLE_LS_COLORS="true" - -# Uncomment the following line to disable auto-setting terminal title. -# DISABLE_AUTO_TITLE="true" - -# Uncomment the following line to enable command auto-correction. -# ENABLE_CORRECTION="true" - -# Uncomment the following line to display red dots whilst waiting for completion. -# COMPLETION_WAITING_DOTS="true" - -# Uncomment the following line if you want to disable marking untracked files -# under VCS as dirty. This makes repository status check for large repositories -# much, much faster. -# DISABLE_UNTRACKED_FILES_DIRTY="true" - -# Uncomment the following line if you want to change the command execution time -# stamp shown in the history command output. -# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" HIST_STAMPS="yyyy-mm-dd" - -# Would you like to use another custom folder than $ZSH/custom? -# ZSH_CUSTOM=/path/to/new-custom-folder - -# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) -# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ -# Example format: plugins=(rails git textmate ruby lighthouse) -# Add wisely, as too many plugins slow down shell startup. plugins=(archlinux git sudo systemd tmux) source $ZSH/oh-my-zsh.sh -# User configuration - -# export MANPATH="/usr/local/man:$MANPATH" - -# You may need to manually set your language environment -# export LANG=en_US.UTF-8 - -# Preferred editor for local and remote sessions -# if [[ -n $SSH_CONNECTION ]]; then -# export EDITOR='vim' -# else -# export EDITOR='mvim' -# fi - -# Compilation flags -# export ARCHFLAGS="-arch x86_64" - -# ssh -# export SSH_KEY_PATH="~/.ssh/rsa_id" - -# Set personal aliases, overriding those provided by oh-my-zsh libs, -# plugins, and themes. Aliases can be placed here, though oh-my-zsh -# users are encouraged to define aliases within the ZSH_CUSTOM folder. -# For a full list of active aliases, run `alias`. -# -# Example aliases -# alias zshconfig="mate ~/.zshrc" -# alias ohmyzsh="mate ~/.oh-my-zsh" - -## Load aliases +# Wizard Kit . $HOME/.aliases - -## Update LS_COLORS eval $(dircolors ~/.dircolors) diff --git a/.linux_items/include/live/packages.both b/.linux_items/include/live/packages.both deleted file mode 100644 index 31fa6dbf..00000000 --- a/.linux_items/include/live/packages.both +++ /dev/null @@ -1,153 +0,0 @@ -aic94xx-firmware -alsa-utils -antiword -arch-install-scripts -bash-pipes -bc -bluez -bluez-utils -btrfs-progs -cbatticon -chntpw -cmatrix -colordiff -compton -conky -crda -curl -darkhttpd -ddrescue -dhclient -dialog -dmidecode -dmraid -dnsmasq -dnsutils -dos2unix -dosfstools -dunst -e2fsprogs -elinks -ethtool -exfat-utils -f2fs-tools -feh -ffmpeg -firefox -fsarchiver -gnome-keyring -gnu-netcat -gparted -gptfdisk -grub -gsmartcontrol -gtk-theme-arc-git -hardinfo -hdparm -hexedit -hfsprogs -htop -i3-gaps -i3lock-fancy-git -i3status -inxi -ipw2100-fw -ipw2200-fw -irssi -ldns -lftp -libewf -libinput -linux-atm -linux-firmware -lm_sensors -lsscsi -mc -mdadm -mediainfo -mesa-demos -mkvtoolnix-cli -mprime-bin -mpv -mtools -mupdf -ncdu -ndisc6 -network-manager-applet -networkmanager -nfs-utils -nilfs-utils -nmap -ntfs-3g -ntp -oblogout -openbox-patched -openconnect -openssh -openvpn -p7zip -papirus-icon-theme -partclone -parted -partimage -pasystray -pavucontrol -ppp -pptpclient -progsreiserfs -pulseaudio -qemu-guest-agent -reiserfsprogs -rfkill -rng-tools -rofi -rp-pppoe -rsync -rxvt-unicode -sdparm -sg3_utils -smartmontools -speedtest-cli -speedtouch -spice-vdagent -sudo -tcpdump -terminus-font -testdisk-wip -thunar -tint2 -tk -tmux -tree -ttf-font-awesome -ttf-inconsolata -udevil -udisks2 -ufw -unzip -usb_modeswitch -veracrypt -vim -virtualbox-guest-modules-arch -virtualbox-guest-utils -vpnc -wd719x-firmware -wget -wimlib -wireless_tools -wpa_actiond -wvdial -xf86-input-libinput -xf86-video-amdgpu -xf86-video-fbdev -xf86-video-intel -xf86-video-nouveau -xf86-video-vesa -xl2tpd -xorg-server -xorg-xdpyinfo -xorg-xev -xorg-xinit -xorg-xinput -zd1211-firmware -zsh diff --git a/Build Linux b/Build Linux index 4aca45ec..46afa4a5 100755 --- a/Build Linux +++ b/Build Linux @@ -7,6 +7,7 @@ ROOT_DIR="$(realpath $(dirname "$0"))" BUILD_DIR="$ROOT_DIR/BUILD_LINUX" ARCHLIVE_DIR="$BUILD_DIR/Archlive" CUSTOM_REPO_DIR="$BUILD_DIR/CustomRepo" +SKEL="$ARCHLIVE_DIR/airootfs/etc/skel" DATE="$(date +%F)" DATETIME="$(date +%F_%H%M)" LOG_DIR="$BUILD_DIR/Logs" @@ -55,28 +56,37 @@ function copy_archiso() { # Add items rsync -aI "$ROOT_DIR/.linux_items/include/live/" "$ARCHLIVE_DIR/" - # Update build.sh - if ! grep -iq 'customize_iso' "$ARCHLIVE_DIR/build.sh"; then - sed -ir "s!run_once make_iso\$!# customize_iso\ncp -a \"$ROOT_DIR/.linux_items/include/iso\"/* \"\${work_dir}/iso\"/\n\nrun_once make_iso!" "$ARCHLIVE_DIR/build.sh" - fi - # Remove items rm "$ARCHLIVE_DIR/airootfs/etc/systemd/scripts/choose-mirror" rmdir "$ARCHLIVE_DIR/airootfs/etc/systemd/scripts" --ignore-fail-on-non-empty rm "$ARCHLIVE_DIR/airootfs/etc/systemd/system/choose-mirror.service" rm "$ARCHLIVE_DIR/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount" rm "$ARCHLIVE_DIR/airootfs/etc/systemd/system/pacman-init.service" - rm "$ARCHLIVE_DIR/airootfs/etc/systemd/udev/rules.d/81-dhcpcd.rules" - rmdir "$ARCHLIVE_DIR/airootfs/etc/systemd/udev/rules.d" --ignore-fail-on-non-empty - rmdir "$ARCHLIVE_DIR/airootfs/etc/systemd/udev" --ignore-fail-on-non-empty + rm "$ARCHLIVE_DIR/airootfs/etc/udev/rules.d/81-dhcpcd.rules" + rmdir "$ARCHLIVE_DIR/airootfs/etc/udev/rules.d" --ignore-fail-on-non-empty + rmdir "$ARCHLIVE_DIR/airootfs/etc/udev" --ignore-fail-on-non-empty +} - # Update items +function update_archlive() { + # build.sh + if ! grep -iq 'customize_iso' "$ARCHLIVE_DIR/build.sh"; then + sed -ir "s!run_once make_iso\$!# customize_iso\ncp -a \"$ROOT_DIR/.linux_items/include/iso\"/* \"\${work_dir}/iso\"/\n\nrun_once make_iso!" "$ARCHLIVE_DIR/build.sh" + fi + + # MOTD sed -i "s/WK/$KIT_NAME_SHORT/" "$ARCHLIVE_DIR/airootfs/etc/motd" - sed -ir 's/^(b43|clonezilla|gpm|grml|refind|testdisk|vim)/#\1/' "$ARCHLIVE_DIR/packages.both" + + # Live packages + sed -i -r 's/^(b43|clonezilla|gpm|grml|refind|testdisk|vim)/#\1/' "$ARCHLIVE_DIR/packages.both" cat "$ROOT_DIR/.linux_items/packages/live" >> "$ARCHLIVE_DIR/packages.both" echo "[CustomRepo]" >> "$ARCHLIVE_DIR/pacman.conf" echo "SigLevel = Optional TrustAll" >> "$ARCHLIVE_DIR/pacman.conf" echo "file://$CUSTOM_REPO_DIR" >> "$ARCHLIVE_DIR/pacman.conf" + + # Oh My ZSH + git clone --depth=1 git://github.com/robbyrussell/oh-my-zsh.git "$SKEL/.oh-my-zsh" + rm -Rf "$SKEL/.oh-my-zsh/.git" + curl -o "$SKEL/.oh-my-zsh/themes/lean.zsh-theme" https://raw.githubusercontent.com/miekg/lean/master/prompt_lean_test.zsh } function copy_settings() { @@ -193,6 +203,7 @@ function build_full() { copy_settings update_repo copy_archiso + update_archlive # Rerun script as root to start Archiso build process run_elevated "$(realpath "$0")" --build-arch } @@ -205,6 +216,7 @@ case $1 in --copy-archiso) copy_archiso + update_archlive ;; --install-deps) From 957e1a2d77000d9c11cdb138719f9537807d3963 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Wed, 13 Dec 2017 10:02:47 -0800 Subject: [PATCH 026/107] Use Images/Linux.png as wallpaper --- Build Linux | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/Build Linux b/Build Linux index 46afa4a5..3565d442 100755 --- a/Build Linux +++ b/Build Linux @@ -67,28 +67,6 @@ function copy_archiso() { rmdir "$ARCHLIVE_DIR/airootfs/etc/udev" --ignore-fail-on-non-empty } -function update_archlive() { - # build.sh - if ! grep -iq 'customize_iso' "$ARCHLIVE_DIR/build.sh"; then - sed -ir "s!run_once make_iso\$!# customize_iso\ncp -a \"$ROOT_DIR/.linux_items/include/iso\"/* \"\${work_dir}/iso\"/\n\nrun_once make_iso!" "$ARCHLIVE_DIR/build.sh" - fi - - # MOTD - sed -i "s/WK/$KIT_NAME_SHORT/" "$ARCHLIVE_DIR/airootfs/etc/motd" - - # Live packages - sed -i -r 's/^(b43|clonezilla|gpm|grml|refind|testdisk|vim)/#\1/' "$ARCHLIVE_DIR/packages.both" - cat "$ROOT_DIR/.linux_items/packages/live" >> "$ARCHLIVE_DIR/packages.both" - echo "[CustomRepo]" >> "$ARCHLIVE_DIR/pacman.conf" - echo "SigLevel = Optional TrustAll" >> "$ARCHLIVE_DIR/pacman.conf" - echo "file://$CUSTOM_REPO_DIR" >> "$ARCHLIVE_DIR/pacman.conf" - - # Oh My ZSH - git clone --depth=1 git://github.com/robbyrussell/oh-my-zsh.git "$SKEL/.oh-my-zsh" - rm -Rf "$SKEL/.oh-my-zsh/.git" - curl -o "$SKEL/.oh-my-zsh/themes/lean.zsh-theme" https://raw.githubusercontent.com/miekg/lean/master/prompt_lean_test.zsh -} - function copy_settings() { if [[ ! -e "$BUILD_DIR/MAIN_SETTINGS" ]] || ask "Overwrite MAIN_SETTINGS?"; then cp -bv "$ROOT_DIR/.bin/Scripts/settings/main.py" "$BUILD_DIR/MAIN_SETTINGS" @@ -118,6 +96,32 @@ function run_elevated() { fi } +function update_archlive() { + # build.sh + if ! grep -iq 'customize_iso' "$ARCHLIVE_DIR/build.sh"; then + sed -ir "s!run_once make_iso\$!# customize_iso\ncp -a \"$ROOT_DIR/.linux_items/include/iso\"/* \"\${work_dir}/iso\"/\n\nrun_once make_iso!" "$ARCHLIVE_DIR/build.sh" + fi + + # MOTD + sed -i "s/WK/$KIT_NAME_SHORT/" "$ARCHLIVE_DIR/airootfs/etc/motd" + + # Live packages + sed -i -r 's/^(b43|clonezilla|gpm|grml|refind|testdisk|vim)/#\1/' "$ARCHLIVE_DIR/packages.both" + cat "$ROOT_DIR/.linux_items/packages/live" >> "$ARCHLIVE_DIR/packages.both" + echo "[CustomRepo]" >> "$ARCHLIVE_DIR/pacman.conf" + echo "SigLevel = Optional TrustAll" >> "$ARCHLIVE_DIR/pacman.conf" + echo "file://$CUSTOM_REPO_DIR" >> "$ARCHLIVE_DIR/pacman.conf" + + # Oh My ZSH + git clone --depth=1 git://github.com/robbyrussell/oh-my-zsh.git "$SKEL/.oh-my-zsh" + rm -Rf "$SKEL/.oh-my-zsh/.git" + curl -o "$SKEL/.oh-my-zsh/themes/lean.zsh-theme" https://raw.githubusercontent.com/miekg/lean/master/prompt_lean_test.zsh + + # Wallpaper + mkdir -p "$ARCHLIVE_DIR/airootfs/usr/share/wallpaper" + cp "$ROOT_DIR/Images/Linux.png" "$ARCHLIVE_DIR/airootfs/usr/share/wallpaper/burned.in" +} + function update_repo() { if [[ "$EUID" -eq 0 ]]; then echo "This section not meant to be run as root." From 58e968467bcd5308113923f7f9680648104c5dd2 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Wed, 13 Dec 2017 10:55:58 -0800 Subject: [PATCH 027/107] Removed conflicting pacman.conf --- .linux_items/include/live/pacman.conf | 96 --------------------------- 1 file changed, 96 deletions(-) delete mode 100644 .linux_items/include/live/pacman.conf diff --git a/.linux_items/include/live/pacman.conf b/.linux_items/include/live/pacman.conf deleted file mode 100644 index 06b23f70..00000000 --- a/.linux_items/include/live/pacman.conf +++ /dev/null @@ -1,96 +0,0 @@ -# -# /etc/pacman.conf -# -# See the pacman.conf(5) manpage for option and repository directives - -# -# GENERAL OPTIONS -# -[options] -# The following paths are commented out with their default values listed. -# If you wish to use different paths, uncomment and update the paths. -#RootDir = / -#DBPath = /var/lib/pacman/ -#CacheDir = /var/cache/pacman/pkg/ -#LogFile = /var/log/pacman.log -#GPGDir = /etc/pacman.d/gnupg/ -HoldPkg = pacman glibc -#XferCommand = /usr/bin/curl -C - -f %u > %o -#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u -#CleanMethod = KeepInstalled -#UseDelta = 0.7 -Architecture = auto - -# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup -#IgnorePkg = -#IgnoreGroup = - -#NoUpgrade = -#NoExtract = - -# Misc options -#UseSyslog -#Color -#TotalDownload -# We cannot check disk space from within a chroot environment -#CheckSpace -#VerbosePkgLists - -# By default, pacman accepts packages signed by keys that its local keyring -# trusts (see pacman-key and its man page), as well as unsigned packages. -SigLevel = Required DatabaseOptional -LocalFileSigLevel = Optional -#RemoteFileSigLevel = Required - -# NOTE: You must run `pacman-key --init` before first using pacman; the local -# keyring can then be populated with the keys of all official Arch Linux -# packagers with `pacman-key --populate archlinux`. - -# -# REPOSITORIES -# - can be defined here or included from another file -# - pacman will search repositories in the order defined here -# - local/custom mirrors can be added here or in separate files -# - repositories listed first will take precedence when packages -# have identical names, regardless of version number -# - URLs will have $repo replaced by the name of the current repo -# - URLs will have $arch replaced by the name of the architecture -# -# Repository entries are of the format: -# [repo-name] -# Server = ServerName -# Include = IncludePath -# -# The header [repo-name] is crucial - it must be present and -# uncommented to enable the repo. -# - -# The testing repositories are disabled by default. To enable, uncomment the -# repo name header and Include lines. You can add preferred servers immediately -# after the header, and they will be used before the default mirrors. - -[wk-repo] -SigLevel = Optional TrustAll -Server = file:///home/builduser/wk-arch/wk-repo - -#[testing] -#Include = /etc/pacman.d/mirrorlist - -[core] -Include = /etc/pacman.d/mirrorlist - -[extra] -Include = /etc/pacman.d/mirrorlist - -#[community-testing] -#Include = /etc/pacman.d/mirrorlist - -[community] -Include = /etc/pacman.d/mirrorlist - -# An example of a custom package repository. See the pacman manpage for -# tips on creating your own repositories. -#[custom] -#SigLevel = Optional TrustAll -#Server = file:///home/custompkgs - From c780a033616344c3de218e183f6e264169805353 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Wed, 13 Dec 2017 10:56:13 -0800 Subject: [PATCH 028/107] Fixed .linux_items permissions --- .linux_items/include/live/airootfs/etc/skel/.Xresources | 0 .linux_items/include/live/airootfs/etc/skel/.conky_start | 0 .linux_items/include/live/airootfs/etc/skel/.network_start | 0 .linux_items/include/live/airootfs/etc/skel/.update_conky | 0 .linux_items/include/live/airootfs/etc/skel/.update_wallpaper | 0 .linux_items/include/live/airootfs/etc/skel/.urxvt_default_res | 0 .linux_items/include/live/airootfs/etc/skel/.xinitrc | 0 .linux_items/include/live/airootfs/root/customize_airootfs.sh | 0 .linux_items/include/live/airootfs/usr/local/bin/apple_fans | 0 .../include/live/airootfs/usr/local/bin/connect-to-network | 0 .linux_items/include/live/airootfs/usr/local/bin/hw-diags | 0 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-audio | 0 .../include/live/airootfs/usr/local/bin/hw-diags-badblocks | 0 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-inner | 0 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-network | 0 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-prime95 | 0 .../include/live/airootfs/usr/local/bin/hw-diags-progress | 0 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-sensors | 0 .../include/live/airootfs/usr/local/bin/mount-all-volumes | 0 .../include/live/airootfs/usr/local/bin/mount-all-volumes-foh | 0 .../include/live/airootfs/usr/local/bin/mount-backup-shares | 0 .linux_items/include/live/airootfs/usr/local/bin/msword-search | 0 .linux_items/include/live/airootfs/usr/local/bin/remount-rw | 0 23 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .linux_items/include/live/airootfs/etc/skel/.Xresources mode change 100644 => 100755 .linux_items/include/live/airootfs/etc/skel/.conky_start mode change 100644 => 100755 .linux_items/include/live/airootfs/etc/skel/.network_start mode change 100644 => 100755 .linux_items/include/live/airootfs/etc/skel/.update_conky mode change 100644 => 100755 .linux_items/include/live/airootfs/etc/skel/.update_wallpaper mode change 100644 => 100755 .linux_items/include/live/airootfs/etc/skel/.urxvt_default_res mode change 100644 => 100755 .linux_items/include/live/airootfs/etc/skel/.xinitrc mode change 100644 => 100755 .linux_items/include/live/airootfs/root/customize_airootfs.sh mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/apple_fans mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/connect-to-network mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/hw-diags mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-audio mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-badblocks mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-inner mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-network mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-prime95 mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-progress mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/hw-diags-sensors mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/mount-all-volumes mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/mount-all-volumes-foh mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/mount-backup-shares mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/msword-search mode change 100644 => 100755 .linux_items/include/live/airootfs/usr/local/bin/remount-rw diff --git a/.linux_items/include/live/airootfs/etc/skel/.Xresources b/.linux_items/include/live/airootfs/etc/skel/.Xresources old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/etc/skel/.conky_start b/.linux_items/include/live/airootfs/etc/skel/.conky_start old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/etc/skel/.network_start b/.linux_items/include/live/airootfs/etc/skel/.network_start old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/etc/skel/.update_conky b/.linux_items/include/live/airootfs/etc/skel/.update_conky old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/etc/skel/.update_wallpaper b/.linux_items/include/live/airootfs/etc/skel/.update_wallpaper old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/etc/skel/.urxvt_default_res b/.linux_items/include/live/airootfs/etc/skel/.urxvt_default_res old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/etc/skel/.xinitrc b/.linux_items/include/live/airootfs/etc/skel/.xinitrc old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/root/customize_airootfs.sh b/.linux_items/include/live/airootfs/root/customize_airootfs.sh old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/apple_fans b/.linux_items/include/live/airootfs/usr/local/bin/apple_fans old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/connect-to-network b/.linux_items/include/live/airootfs/usr/local/bin/connect-to-network old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/hw-diags b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-audio b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-audio old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-badblocks b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-badblocks old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-inner b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-inner old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-network b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-network old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-prime95 b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-prime95 old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-progress b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-progress old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-sensors b/.linux_items/include/live/airootfs/usr/local/bin/hw-diags-sensors old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/mount-all-volumes b/.linux_items/include/live/airootfs/usr/local/bin/mount-all-volumes old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/mount-all-volumes-foh b/.linux_items/include/live/airootfs/usr/local/bin/mount-all-volumes-foh old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/mount-backup-shares b/.linux_items/include/live/airootfs/usr/local/bin/mount-backup-shares old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/msword-search b/.linux_items/include/live/airootfs/usr/local/bin/msword-search old mode 100644 new mode 100755 diff --git a/.linux_items/include/live/airootfs/usr/local/bin/remount-rw b/.linux_items/include/live/airootfs/usr/local/bin/remount-rw old mode 100644 new mode 100755 From f97028bbddcebec2325e36dd14f65636af9534c2 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Wed, 13 Dec 2017 10:58:26 -0800 Subject: [PATCH 029/107] Updated Build Linux * More consistant variable names * Ensure that main.py is read for build-arch and copy-archiso * Bugfix: typo in build.sh call --- Build Linux | 100 +++++++++++++++++++++++++++------------------------- 1 file changed, 51 insertions(+), 49 deletions(-) diff --git a/Build Linux b/Build Linux index 3565d442..5117528b 100755 --- a/Build Linux +++ b/Build Linux @@ -3,16 +3,16 @@ ## Wizard Kit: Live Linux Build Tool # Prep -ROOT_DIR="$(realpath $(dirname "$0"))" -BUILD_DIR="$ROOT_DIR/BUILD_LINUX" -ARCHLIVE_DIR="$BUILD_DIR/Archlive" -CUSTOM_REPO_DIR="$BUILD_DIR/CustomRepo" -SKEL="$ARCHLIVE_DIR/airootfs/etc/skel" DATE="$(date +%F)" DATETIME="$(date +%F_%H%M)" -LOG_DIR="$BUILD_DIR/Logs" +ROOT_DIR="$(realpath $(dirname "$0"))" +BUILD_DIR="$ROOT_DIR/BUILD_LINUX" +LIVE_DIR="$BUILD_DIR/live" +LOG_DIR="$BUILD_DIR/logs" OUT_DIR="$ROOT_DIR/OUT_LINUX" -TMP_DIR="$BUILD_DIR/Temp" +REPO_DIR="$BUILD_DIR/repo" +SKEL_DIR="$LIVE_DIR/airootfs/etc/skel" +TEMP_DIR="$BUILD_DIR/temp" if which nano >/dev/null 2>&1; then EDITOR=nano elif which vim >/dev/null 2>&1; then @@ -36,7 +36,7 @@ function ask() { } function cleanup() { - for d in "$TMP_DIR" "$ARCHLIVE_DIR"; do + for d in "$TEMP_DIR" "$LIVE_DIR"; do if [[ -d "$d" ]]; then if ask "Remove: ${d}?"; then rm -Rf "$d" @@ -46,35 +46,35 @@ function cleanup() { mkdir "$BUILD_DIR" 2>/dev/null mkdir "$LOG_DIR" 2>/dev/null mkdir "$OUT_DIR" 2>/dev/null - mkdir "$TMP_DIR" 2>/dev/null + mkdir "$TEMP_DIR" 2>/dev/null } function copy_archiso() { echo "Copying Archlinux files..." - rsync -aI /usr/share/archiso/configs/releng/ "$ARCHLIVE_DIR/" + rsync -aI /usr/share/archiso/configs/releng/ "$LIVE_DIR/" # Add items - rsync -aI "$ROOT_DIR/.linux_items/include/live/" "$ARCHLIVE_DIR/" + rsync -aI "$ROOT_DIR/.linux_items/include/live/" "$LIVE_DIR/" # Remove items - rm "$ARCHLIVE_DIR/airootfs/etc/systemd/scripts/choose-mirror" - rmdir "$ARCHLIVE_DIR/airootfs/etc/systemd/scripts" --ignore-fail-on-non-empty - rm "$ARCHLIVE_DIR/airootfs/etc/systemd/system/choose-mirror.service" - rm "$ARCHLIVE_DIR/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount" - rm "$ARCHLIVE_DIR/airootfs/etc/systemd/system/pacman-init.service" - rm "$ARCHLIVE_DIR/airootfs/etc/udev/rules.d/81-dhcpcd.rules" - rmdir "$ARCHLIVE_DIR/airootfs/etc/udev/rules.d" --ignore-fail-on-non-empty - rmdir "$ARCHLIVE_DIR/airootfs/etc/udev" --ignore-fail-on-non-empty + rm "$LIVE_DIR/airootfs/etc/systemd/scripts/choose-mirror" + rmdir "$LIVE_DIR/airootfs/etc/systemd/scripts" --ignore-fail-on-non-empty + rm "$LIVE_DIR/airootfs/etc/systemd/system/choose-mirror.service" + rm "$LIVE_DIR/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount" + rm "$LIVE_DIR/airootfs/etc/systemd/system/pacman-init.service" + rm "$LIVE_DIR/airootfs/etc/udev/rules.d/81-dhcpcd.rules" + rmdir "$LIVE_DIR/airootfs/etc/udev/rules.d" --ignore-fail-on-non-empty + rmdir "$LIVE_DIR/airootfs/etc/udev" --ignore-fail-on-non-empty } function copy_settings() { - if [[ ! -e "$BUILD_DIR/MAIN_SETTINGS" ]] || ask "Overwrite MAIN_SETTINGS?"; then - cp -bv "$ROOT_DIR/.bin/Scripts/settings/main.py" "$BUILD_DIR/MAIN_SETTINGS" + if [[ ! -e "$BUILD_DIR/main.py" ]] || ask "Overwrite main.py?"; then + cp -bv "$ROOT_DIR/.bin/Scripts/settings/main.py" "$BUILD_DIR/main.py" fi # Edit settings read -p "Press Enter to open settings... " -r - "$EDITOR" "$BUILD_DIR/MAIN_SETTINGS" + "$EDITOR" "$BUILD_DIR/main.py" # Load settings while read line; do @@ -82,7 +82,7 @@ function copy_settings() { line="$(echo "$line" | sed -r 's/[\r\n]+//')" eval "$line" fi - done < "$BUILD_DIR/MAIN_SETTINGS" + done < "$BUILD_DIR/main.py" } function run_elevated() { @@ -98,28 +98,28 @@ function run_elevated() { function update_archlive() { # build.sh - if ! grep -iq 'customize_iso' "$ARCHLIVE_DIR/build.sh"; then - sed -ir "s!run_once make_iso\$!# customize_iso\ncp -a \"$ROOT_DIR/.linux_items/include/iso\"/* \"\${work_dir}/iso\"/\n\nrun_once make_iso!" "$ARCHLIVE_DIR/build.sh" + if ! grep -iq 'customize_iso' "$LIVE_DIR/build.sh"; then + sed -ir "s!run_once make_iso\$!# customize_iso\ncp -a \"$ROOT_DIR/.linux_items/include/iso\"/* \"\${work_dir}/iso\"/\n\nrun_once make_iso!" "$LIVE_DIR/build.sh" fi # MOTD - sed -i "s/WK/$KIT_NAME_SHORT/" "$ARCHLIVE_DIR/airootfs/etc/motd" + sed -i "s/WK/$KIT_NAME_SHORT/" "$LIVE_DIR/airootfs/etc/motd" # Live packages - sed -i -r 's/^(b43|clonezilla|gpm|grml|refind|testdisk|vim)/#\1/' "$ARCHLIVE_DIR/packages.both" - cat "$ROOT_DIR/.linux_items/packages/live" >> "$ARCHLIVE_DIR/packages.both" - echo "[CustomRepo]" >> "$ARCHLIVE_DIR/pacman.conf" - echo "SigLevel = Optional TrustAll" >> "$ARCHLIVE_DIR/pacman.conf" - echo "file://$CUSTOM_REPO_DIR" >> "$ARCHLIVE_DIR/pacman.conf" + sed -i -r 's/^(b43|clonezilla|gpm|grml|refind|testdisk|vim)/#\1/' "$LIVE_DIR/packages.both" + cat "$ROOT_DIR/.linux_items/packages/live" >> "$LIVE_DIR/packages.both" + echo "[custom]" >> "$LIVE_DIR/pacman.conf" + echo "SigLevel = Optional TrustAll" >> "$LIVE_DIR/pacman.conf" + echo "Server = file://$REPO_DIR" >> "$LIVE_DIR/pacman.conf" # Oh My ZSH - git clone --depth=1 git://github.com/robbyrussell/oh-my-zsh.git "$SKEL/.oh-my-zsh" - rm -Rf "$SKEL/.oh-my-zsh/.git" - curl -o "$SKEL/.oh-my-zsh/themes/lean.zsh-theme" https://raw.githubusercontent.com/miekg/lean/master/prompt_lean_test.zsh + git clone --depth=1 git://github.com/robbyrussell/oh-my-zsh.git "$SKEL_DIR/.oh-my-zsh" + rm -Rf "$SKEL_DIR/.oh-my-zsh/.git" + curl -o "$SKEL_DIR/.oh-my-zsh/themes/lean.zsh-theme" https://raw.githubusercontent.com/miekg/lean/master/prompt_lean_test.zsh # Wallpaper - mkdir -p "$ARCHLIVE_DIR/airootfs/usr/share/wallpaper" - cp "$ROOT_DIR/Images/Linux.png" "$ARCHLIVE_DIR/airootfs/usr/share/wallpaper/burned.in" + mkdir -p "$LIVE_DIR/airootfs/usr/share/wallpaper" + cp "$ROOT_DIR/Images/Linux.png" "$LIVE_DIR/airootfs/usr/share/wallpaper/burned.in" } function update_repo() { @@ -131,17 +131,17 @@ function update_repo() { echo "Updating custom repo..." # Archive current files - if [[ -d "$CUSTOM_REPO_DIR" ]]; then + if [[ -d "$REPO_DIR" ]]; then mkdir "$BUILD_DIR/Archive" 2>/dev/null archive="$BUILD_DIR/Archive/$(date "+%F_%H%M%S")" - mv -bv "$CUSTOM_REPO_DIR" "$archive" + mv -bv "$REPO_DIR" "$archive" fi sleep 1s # Build custom repo packages - mkdir "$CUSTOM_REPO_DIR" 2>/dev/null - mkdir "$TMP_DIR" 2>/dev/null - pushd "$TMP_DIR" >/dev/null + mkdir "$REPO_DIR" 2>/dev/null + mkdir "$TEMP_DIR" 2>/dev/null + pushd "$TEMP_DIR" >/dev/null while read -r p; do echo "Building: $p" curl -LsfO https://aur.archlinux.org/cgit/aur.git/snapshot/$p.tar.gz @@ -149,12 +149,12 @@ function update_repo() { pushd $p >/dev/null makepkg -s --noconfirm popd >/dev/null - mv -n $p/*xz "$CUSTOM_REPO_DIR"/ + mv -n $p/*xz "$REPO_DIR"/ done < "$ROOT_DIR/.linux_items/packages/aur" popd >/dev/null # Build custom repo database - pushd "$CUSTOM_REPO_DIR" >/dev/null + pushd "$REPO_DIR" >/dev/null repo-add custom.db.tar.gz *xz popd >/dev/null } @@ -177,21 +177,21 @@ function build_arch() { # Set permissions echo "Setting permissions..." - chown root:root "$ARCHLIVE_DIR" -R - chmod 700 "$ARCHLIVE_DIR/airootfs/etc/skel/.ssh" - chmod 600 "$ARCHLIVE_DIR/airootfs/etc/skel/.ssh/id_rsa" + chown root:root "$LIVE_DIR" -R + chmod 700 "$LIVE_DIR/airootfs/etc/skel/.ssh" + chmod 600 "$LIVE_DIR/airootfs/etc/skel/.ssh/id_rsa" # Build ISO prefix="$(echo "${KIT_NAME_SHORT}-linux" | tr "[:upper:]" "[:lower:]")" label="${KIT_NAME_SHORT}_LINUX" - "$ARCHLIVE/bulid.sh" -N "$prefix" -V "$DATE" -L "$label" -s "$TMP_DIR/Arch" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" + "$LIVE_DIR/build.sh" -N "$prefix" -V "$DATE" -L "$label" -w "$TEMP_DIR/Arch" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" # Cleanup echo "Removing temp files..." - rm "$TMP_DIR/Arch" -Rf | tee -a "$LOG_DIR/$DATETIME.log" + rm "$TEMP_DIR/Arch" -Rf | tee -a "$LOG_DIR/$DATETIME.log" echo "Reverting permissions..." - chown $REAL_USER:$REAL_USER "$ARCHLIVE_DIR" -R + chown $REAL_USER:$REAL_USER "$LIVE_DIR" -R } function build_full() { @@ -215,10 +215,12 @@ function build_full() { # Check input case $1 in --build-arch) + copy_settings build_arch ;; --copy-archiso) + copy_settings copy_archiso update_archlive ;; From e37b1529b0b593d95c2f52cb6b43aab5d61f2f0d Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Wed, 13 Dec 2017 13:11:28 -0700 Subject: [PATCH 030/107] Removed customize_airootfs.sh and new SSH code * Code has been merged into Build Linux * (releng copy is updated in place) * SSH key for wktech now generated at build time * Hostname is now set using main.py * Passwords are now set using main.py * Timezone is now set using main.py --- .bin/Scripts/settings/main.py | 3 + .../live/airootfs/root/customize_airootfs.sh | 72 ------------------- .linux_items/packages/dependencies | 1 + Build Linux | 50 +++++++++++-- 4 files changed, 50 insertions(+), 76 deletions(-) delete mode 100755 .linux_items/include/live/airootfs/root/customize_airootfs.sh diff --git a/.bin/Scripts/settings/main.py b/.bin/Scripts/settings/main.py index fc5331a2..f64c7979 100644 --- a/.bin/Scripts/settings/main.py +++ b/.bin/Scripts/settings/main.py @@ -8,6 +8,9 @@ ENABLED_UPLOAD_DATA = False ARCHIVE_PASSWORD='Abracadabra' KIT_NAME_FULL='Wizard Kit' KIT_NAME_SHORT='WK' +LINUX_TECH_PASSWORD='Abracadabra' +LINUX_TIME_ZONE='America/Los_Angeles' +LINUX_ROOT_PASSWORD='Abracadabra' OFFICE_SERVER_IP='10.0.0.10' QUICKBOOKS_SERVER_IP='10.0.0.10' SUPPORT_MESSAGE='Please let 2Shirt know by opening an issue on GitHub' diff --git a/.linux_items/include/live/airootfs/root/customize_airootfs.sh b/.linux_items/include/live/airootfs/root/customize_airootfs.sh deleted file mode 100755 index 6d70438f..00000000 --- a/.linux_items/include/live/airootfs/root/customize_airootfs.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/bash - -set -e -u - -# Set hostname -echo "[customize_airootfs] INFO: Set hostname" -echo "wk-arch" > /etc/hostname -echo "127.0.1.1 wk-arch.localdomain wk-arch" >> /etc/hosts - -# Set locale -echo "[customize_airootfs] INFO: Set locale" -sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen -locale-gen - -# Time Settings -echo "[customize_airootfs] INFO: Set time" -ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime -sed -i 's/#FallbackNTP/NTP/' /etc/systemd/timesyncd.conf -#timedatectl set-ntp true - -# root user settings -echo "[customize_airootfs] INFO: Setup root user" -usermod -s /usr/bin/zsh root -cp -aT /etc/skel/ /root/ -rm /root/.ssh/id* -rm /root/.zlogin -chmod 700 /root -echo "root:Abracadabra" | chpasswd - -# wktech user settings -echo "[customize_airootfs] INFO: Setup wktech user" -groupadd -r autologin -useradd -m -s /bin/zsh -G autologin,power,storage,wheel -U wktech -echo "wktech:Abracadabra" | chpasswd - -# Enable sudo for %wheel -echo "[customize_airootfs] INFO: Enable sudo" -echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers - -# Misc -echo "[customize_airootfs] INFO: Misc Settings" -#sed -i -r 's/extensions.autoDisableScopes", [0-9]+/extensions.autoDisableScopes", 0/' /usr/lib/firefox/browser/defaults/preferences/vendor.js -mkdir /media - -# Set mirrorlist -echo "[customize_airootfs] INFO: Setup pacman mirrorlist" -# Ranked on 2017-10-19 -echo 'Server = http://mirrors.cat.pdx.edu/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist -echo 'Server = http://mirrors.advancedhosters.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://archlinux.surlyjake.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = https://archlinux.surlyjake.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://ca.us.mirror.archlinux-br.org/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = https://arlm.tyzoid.com/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist -echo 'Server = http://il.us.mirror.archlinux-br.org/$repo/os/$arch' >> /etc/pacman.d/mirrorlist - -# journald settings (from archiso) -echo "[customize_airootfs] INFO: Setup journald" -sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf - -# logind settings (from archiso) -echo "[customize_airootfs] INFO: Setup logind" -sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' /etc/systemd/logind.conf -sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' /etc/systemd/logind.conf -sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf - -echo "[customize_airootfs] INFO: Setup systemd" -#systemctl enable pacman-init.service choose-mirror.service -#systemctl set-default graphical.target - -echo "[customize_airootfs] INFO: Completed." diff --git a/.linux_items/packages/dependencies b/.linux_items/packages/dependencies index a53027d5..dd1a7f88 100644 --- a/.linux_items/packages/dependencies +++ b/.linux_items/packages/dependencies @@ -4,5 +4,6 @@ base-devel curl git libewf +openssh progsreiserfs rsync diff --git a/Build Linux b/Build Linux index 5117528b..2fd397f9 100755 --- a/Build Linux +++ b/Build Linux @@ -97,14 +97,18 @@ function run_elevated() { } function update_archlive() { + hostname="$(echo "${KIT_NAME_SHORT}-linux" | tr "[:upper:]" "[:lower:]")" + username="$(echo "${KIT_NAME_SHORT}tech" | tr "[:upper:]" "[:lower:]")" + # build.sh if ! grep -iq 'customize_iso' "$LIVE_DIR/build.sh"; then sed -ir "s!run_once make_iso\$!# customize_iso\ncp -a \"$ROOT_DIR/.linux_items/include/iso\"/* \"\${work_dir}/iso\"/\n\nrun_once make_iso!" "$LIVE_DIR/build.sh" fi - # MOTD - sed -i "s/WK/$KIT_NAME_SHORT/" "$LIVE_DIR/airootfs/etc/motd" - + # Hostname + echo "$hostname" > "$LIVE_DIR/airootfs/etc/hostname" + echo "127.0.1.1 $hostname.localdomain $hostname" >> "$LIVE_DIR/airootfs/etc/hosts" + # Live packages sed -i -r 's/^(b43|clonezilla|gpm|grml|refind|testdisk|vim)/#\1/' "$LIVE_DIR/packages.both" cat "$ROOT_DIR/.linux_items/packages/live" >> "$LIVE_DIR/packages.both" @@ -112,10 +116,48 @@ function update_archlive() { echo "SigLevel = Optional TrustAll" >> "$LIVE_DIR/pacman.conf" echo "Server = file://$REPO_DIR" >> "$LIVE_DIR/pacman.conf" + # Locale + echo 'sed -i "s/#FallbackNTP/NTP/" /etc/systemd/timesyncd.conf' >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + + # Mirrors + sed -i -r 's/^(.*mirrorlist.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + #TODO Add mirrors / rankmirrors? + + # MOTD + sed -i "s/WK/$KIT_NAME_SHORT/" "$LIVE_DIR/airootfs/etc/motd" + # Oh My ZSH git clone --depth=1 git://github.com/robbyrussell/oh-my-zsh.git "$SKEL_DIR/.oh-my-zsh" rm -Rf "$SKEL_DIR/.oh-my-zsh/.git" curl -o "$SKEL_DIR/.oh-my-zsh/themes/lean.zsh-theme" https://raw.githubusercontent.com/miekg/lean/master/prompt_lean_test.zsh + + # Services + sed -i -r 's/^(.*pacman-init.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + sed -i -r 's/^(.*choose-mirror.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + + # SSH + mkdir -p "$SKEL_DIR/.ssh" + ssh-keygen -b 4096 -C "$username@$hostname" -N "" -f "$SKEL_DIR/.ssh/id_rsa" + echo 'rm /root/.ssh/id*' >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + echo 'rm /root/.zlogin' >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + sed -i -r 's/^(.*PermitRootLogin.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + + # Root user + echo "echo 'root:$LINUX_ROOT_PASSWORD' | chpasswd" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + + # Sudo + echo "echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + + # Tech user + echo "groupadd -r autologin" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + echo "useradd -m -s /bin/zsh -G autologin,power,storage,wheel -U $username" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + echo "echo '$username:$LINUX_TECH_PASSWORD' | chpasswd" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + + # Timezone + sed -i -r "s#zoneinfo/UTC#$LINUX_TIME_ZONE#g" "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + + # udevil fix + echo "mkdir /media" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" # Wallpaper mkdir -p "$LIVE_DIR/airootfs/usr/share/wallpaper" @@ -182,7 +224,7 @@ function build_arch() { chmod 600 "$LIVE_DIR/airootfs/etc/skel/.ssh/id_rsa" # Build ISO - prefix="$(echo "${KIT_NAME_SHORT}-linux" | tr "[:upper:]" "[:lower:]")" + prefix="$(< "$LIVE_DIR/airootfs/etc/hostname")" label="${KIT_NAME_SHORT}_LINUX" "$LIVE_DIR/build.sh" -N "$prefix" -V "$DATE" -L "$label" -w "$TEMP_DIR/Arch" -o "$OUT_DIR" -v | tee -a "$LOG_DIR/$DATETIME.log" From c159602a70a882f8e6254f8b0106b6a6eaabc9e2 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Wed, 13 Dec 2017 13:20:43 -0700 Subject: [PATCH 031/107] Download mirrorlist during build --- Build Linux | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Build Linux b/Build Linux index 2fd397f9..1d2034cc 100755 --- a/Build Linux +++ b/Build Linux @@ -13,6 +13,7 @@ OUT_DIR="$ROOT_DIR/OUT_LINUX" REPO_DIR="$BUILD_DIR/repo" SKEL_DIR="$LIVE_DIR/airootfs/etc/skel" TEMP_DIR="$BUILD_DIR/temp" +MIRRORLIST_SOURCE='https://www.archlinux.org/mirrorlist/?country=US&protocol=http&protocol=https&ip_version=4&use_mirror_status=on' if which nano >/dev/null 2>&1; then EDITOR=nano elif which vim >/dev/null 2>&1; then @@ -121,7 +122,8 @@ function update_archlive() { # Mirrors sed -i -r 's/^(.*mirrorlist.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" - #TODO Add mirrors / rankmirrors? + echo "curl -o '/etc/pacman.d/mirrorlist' '$MIRRORLIST_SOURCE'" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + echo "sed -i 's/#Server/Server/g' /etc/pacman.d/mirrorlist" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" # MOTD sed -i "s/WK/$KIT_NAME_SHORT/" "$LIVE_DIR/airootfs/etc/motd" From cc2e42d3485e4708b69f7bbdbb46bdc3b9a68e31 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Wed, 13 Dec 2017 17:37:28 -0700 Subject: [PATCH 032/107] Bugfix: autologin --- .linux_items/include/live/airootfs/etc/fstab | 0 .linux_items/include/live/airootfs/etc/machine-id | 0 .../etc/systemd/system/getty@tty1.service.d/autologin.conf | 3 --- Build Linux | 6 ++++++ 4 files changed, 6 insertions(+), 3 deletions(-) delete mode 100644 .linux_items/include/live/airootfs/etc/fstab delete mode 100644 .linux_items/include/live/airootfs/etc/machine-id delete mode 100644 .linux_items/include/live/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf diff --git a/.linux_items/include/live/airootfs/etc/fstab b/.linux_items/include/live/airootfs/etc/fstab deleted file mode 100644 index e69de29b..00000000 diff --git a/.linux_items/include/live/airootfs/etc/machine-id b/.linux_items/include/live/airootfs/etc/machine-id deleted file mode 100644 index e69de29b..00000000 diff --git a/.linux_items/include/live/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/.linux_items/include/live/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf deleted file mode 100644 index 18966e67..00000000 --- a/.linux_items/include/live/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf +++ /dev/null @@ -1,3 +0,0 @@ -[Service] -ExecStart= -ExecStart=-/sbin/agetty --autologin wktech --noclear %I 38400 linux diff --git a/Build Linux b/Build Linux index 1d2034cc..2186ff41 100755 --- a/Build Linux +++ b/Build Linux @@ -155,6 +155,12 @@ function update_archlive() { echo "useradd -m -s /bin/zsh -G autologin,power,storage,wheel -U $username" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" echo "echo '$username:$LINUX_TECH_PASSWORD' | chpasswd" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + # Tech user autologin + mkdir -p "$LIVE_DIR/airootfs/etc/systemd/system/getty@tty1.service.d" + echo "[Service]" >> "$LIVE_DIR/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf" + echo "ExecStart=" >> "$LIVE_DIR/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf" + echo "ExecStart=-/sbin/agetty --autologin $username --noclear %I 38400 linux" >> "$LIVE_DIR/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf" + # Timezone sed -i -r "s#zoneinfo/UTC#$LINUX_TIME_ZONE#g" "$LIVE_DIR/airootfs/root/customize_airootfs.sh" From 4abea243103bec9d84324fa1ed382574d8dc7d10 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Sun, 17 Dec 2017 11:15:42 -0700 Subject: [PATCH 033/107] Avoid loading settings twice --- Build Linux | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/Build Linux b/Build Linux index 2186ff41..59ee9149 100755 --- a/Build Linux +++ b/Build Linux @@ -68,7 +68,24 @@ function copy_archiso() { rmdir "$LIVE_DIR/airootfs/etc/udev" --ignore-fail-on-non-empty } -function copy_settings() { +function load_settings() { + # Check if settings already loaded + ## Code based on StackOverflow Q&A + ## Question: https://stackoverflow.com/q/3601515 + ## Asked by: https://stackoverflow.com/users/260127/prosseek + ## Edited by: https://stackoverflow.com/users/3924118/nbro + ## Answer: https://stackoverflow.com/a/13864829 + ## Answer by: https://stackoverflow.com/users/1633643/lionel + ## Answer edit: https://stackoverflow.com/users/-1/community + if [ -z ${KIT_NAME_FULL+x} ]; then + # KIT_NAME_FULL is unset + : # pass + else + # KIT_NAME_FULL is set + return 0 # Skip loading settings from main.py + fi + + # Copy settings if [[ ! -e "$BUILD_DIR/main.py" ]] || ask "Overwrite main.py?"; then cp -bv "$ROOT_DIR/.bin/Scripts/settings/main.py" "$BUILD_DIR/main.py" fi @@ -254,7 +271,7 @@ function build_full() { # Prep for build cleanup install_deps - copy_settings + load_settings update_repo copy_archiso update_archlive @@ -265,12 +282,12 @@ function build_full() { # Check input case $1 in --build-arch) - copy_settings + load_settings build_arch ;; --copy-archiso) - copy_settings + load_settings copy_archiso update_archlive ;; From daa19626a6158bde94b5b097d66bf1ec064e67a4 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Sun, 17 Dec 2017 11:50:46 -0700 Subject: [PATCH 034/107] Fixed lean.zsh-theme download/install --- Build Linux | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build Linux b/Build Linux index 59ee9149..82163102 100755 --- a/Build Linux +++ b/Build Linux @@ -148,7 +148,7 @@ function update_archlive() { # Oh My ZSH git clone --depth=1 git://github.com/robbyrussell/oh-my-zsh.git "$SKEL_DIR/.oh-my-zsh" rm -Rf "$SKEL_DIR/.oh-my-zsh/.git" - curl -o "$SKEL_DIR/.oh-my-zsh/themes/lean.zsh-theme" https://raw.githubusercontent.com/miekg/lean/master/prompt_lean_test.zsh + curl -o "$SKEL_DIR/.oh-my-zsh/themes/lean.zsh-theme" https://raw.githubusercontent.com/miekg/lean/master/prompt_lean_setup # Services sed -i -r 's/^(.*pacman-init.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" From 94d26902dc598ad3908db63bef0bf819cbb66409 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Sun, 17 Dec 2017 12:05:41 -0700 Subject: [PATCH 035/107] Set folder permissions before building * Prevents issues when using GitHub zip archives --- Build Linux | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Build Linux b/Build Linux index 82163102..29eb583a 100755 --- a/Build Linux +++ b/Build Linux @@ -68,6 +68,13 @@ function copy_archiso() { rmdir "$LIVE_DIR/airootfs/etc/udev" --ignore-fail-on-non-empty } +function fix_kit_permissions() { + # GitHub zip archives don't preserve the correct permissions + for d in .bin .cbin .kit_items .linux_items .pe_items Images; do + find "$ROOT_DIR/$d" -type d -exec chmod 755 "{}" \; + done +} + function load_settings() { # Check if settings already loaded ## Code based on StackOverflow Q&A @@ -270,6 +277,7 @@ function build_full() { # Prep for build cleanup + fix_kit_permissions install_deps load_settings update_repo @@ -292,6 +300,10 @@ case $1 in update_archlive ;; + --fix-perms) + fix_kit_permissions + ;; + --install-deps) install_deps ;; From 81df06fd8b9a0ffaf634987cfcc17542bb9301a4 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Sun, 17 Dec 2017 12:47:13 -0700 Subject: [PATCH 036/107] Added usage prompt and renamed functions --- Build Linux | 85 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/Build Linux b/Build Linux index 29eb583a..e23f53f0 100755 --- a/Build Linux +++ b/Build Linux @@ -50,24 +50,6 @@ function cleanup() { mkdir "$TEMP_DIR" 2>/dev/null } -function copy_archiso() { - echo "Copying Archlinux files..." - rsync -aI /usr/share/archiso/configs/releng/ "$LIVE_DIR/" - - # Add items - rsync -aI "$ROOT_DIR/.linux_items/include/live/" "$LIVE_DIR/" - - # Remove items - rm "$LIVE_DIR/airootfs/etc/systemd/scripts/choose-mirror" - rmdir "$LIVE_DIR/airootfs/etc/systemd/scripts" --ignore-fail-on-non-empty - rm "$LIVE_DIR/airootfs/etc/systemd/system/choose-mirror.service" - rm "$LIVE_DIR/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount" - rm "$LIVE_DIR/airootfs/etc/systemd/system/pacman-init.service" - rm "$LIVE_DIR/airootfs/etc/udev/rules.d/81-dhcpcd.rules" - rmdir "$LIVE_DIR/airootfs/etc/udev/rules.d" --ignore-fail-on-non-empty - rmdir "$LIVE_DIR/airootfs/etc/udev" --ignore-fail-on-non-empty -} - function fix_kit_permissions() { # GitHub zip archives don't preserve the correct permissions for d in .bin .cbin .kit_items .linux_items .pe_items Images; do @@ -110,6 +92,24 @@ function load_settings() { done < "$BUILD_DIR/main.py" } +function prep_live_env() { + echo "Copying Archlinux files..." + rsync -aI /usr/share/archiso/configs/releng/ "$LIVE_DIR/" + + # Add items + rsync -aI "$ROOT_DIR/.linux_items/include/live/" "$LIVE_DIR/" + + # Remove items + rm "$LIVE_DIR/airootfs/etc/systemd/scripts/choose-mirror" + rmdir "$LIVE_DIR/airootfs/etc/systemd/scripts" --ignore-fail-on-non-empty + rm "$LIVE_DIR/airootfs/etc/systemd/system/choose-mirror.service" + rm "$LIVE_DIR/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount" + rm "$LIVE_DIR/airootfs/etc/systemd/system/pacman-init.service" + rm "$LIVE_DIR/airootfs/etc/udev/rules.d/81-dhcpcd.rules" + rmdir "$LIVE_DIR/airootfs/etc/udev/rules.d" --ignore-fail-on-non-empty + rmdir "$LIVE_DIR/airootfs/etc/udev" --ignore-fail-on-non-empty +} + function run_elevated() { prog="$1" shift @@ -242,7 +242,7 @@ function install_deps() { run_elevated pacman -Syu --needed --noconfirm $packages } -function build_arch() { +function build_iso() { if [[ "$EUID" -ne 0 ]]; then echo "This section is meant to be run as root." echo "Aborted." @@ -281,39 +281,54 @@ function build_full() { install_deps load_settings update_repo - copy_archiso + prep_live_env update_archlive # Rerun script as root to start Archiso build process - run_elevated "$(realpath "$0")" --build-arch + run_elevated "$(realpath "$0")" --build-iso } # Check input case $1 in - --build-arch) - load_settings - build_arch + -b|--build-full) + build_full ;; - --copy-archiso) - load_settings - copy_archiso - update_archlive - ;; - - --fix-perms) + -f|--fix-perms) fix_kit_permissions ;; - --install-deps) + -i|--install-deps) install_deps ;; - --update-repo) - update_repo + -o|--build-iso) + load_settings + build_iso ;; + -p|--prep-live-env) + load_settings + prep_live_env + update_archlive + ;; + + -u|--update-repo) + update_repo + ;; + *) - build_full + echo "Usage: $(basename "$0") [OPTIONS]" + echo "" + echo "Options:" + echo " -b --build-full Perform all tasks and build iso" + echo " -h --help Show usage" + echo "" + echo "Advanced options:" + echo " -f --fix-perms Fix folder permissions" + echo " -i --install-deps Install build dependencies" + echo " -o --build-iso Build ISO (using current setup)" + echo " -p --prep-live-env Prep live & airootfs folders" + echo " -u --update-repo Update custom pacman repo" ;; esac From e8e3d09731552e1c16a8f6a89c635886d4bc9a79 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Sun, 17 Dec 2017 13:15:31 -0700 Subject: [PATCH 037/107] Bugfix: locale generation should work again --- .linux_items/include/live/airootfs/etc/locale.gen | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.linux_items/include/live/airootfs/etc/locale.gen b/.linux_items/include/live/airootfs/etc/locale.gen index a1b8ba14..1165d291 100644 --- a/.linux_items/include/live/airootfs/etc/locale.gen +++ b/.linux_items/include/live/airootfs/etc/locale.gen @@ -1 +1,2 @@ -en_US.UTF-8 UTF-8 \ No newline at end of file +en_US.UTF-8 UTF-8 + From 0b2133174736cdc2f92f7dbd219a1d524e76002b Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Sun, 17 Dec 2017 13:19:04 -0700 Subject: [PATCH 038/107] Bugfix: NetworkManager autostarts again --- Build Linux | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Build Linux b/Build Linux index e23f53f0..fc985f9c 100755 --- a/Build Linux +++ b/Build Linux @@ -141,9 +141,6 @@ function update_archlive() { echo "SigLevel = Optional TrustAll" >> "$LIVE_DIR/pacman.conf" echo "Server = file://$REPO_DIR" >> "$LIVE_DIR/pacman.conf" - # Locale - echo 'sed -i "s/#FallbackNTP/NTP/" /etc/systemd/timesyncd.conf' >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" - # Mirrors sed -i -r 's/^(.*mirrorlist.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" echo "curl -o '/etc/pacman.d/mirrorlist' '$MIRRORLIST_SOURCE'" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" @@ -160,6 +157,8 @@ function update_archlive() { # Services sed -i -r 's/^(.*pacman-init.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" sed -i -r 's/^(.*choose-mirror.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + ln -s /usr/lib/systemd/system/NetworkManager.service /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service + ln -s /usr/lib/systemd/system/NetworkManager-dispatcher.service /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service # SSH mkdir -p "$SKEL_DIR/.ssh" @@ -187,6 +186,7 @@ function update_archlive() { # Timezone sed -i -r "s#zoneinfo/UTC#$LINUX_TIME_ZONE#g" "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + echo 'sed -i "s/#FallbackNTP/NTP/" /etc/systemd/timesyncd.conf' >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" # udevil fix echo "mkdir /media" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" From 144e94b31a4d2130e2604d5b9c438b03701f0792 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Sun, 17 Dec 2017 13:26:16 -0700 Subject: [PATCH 039/107] Readded openbox theme --- Build Linux | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Build Linux b/Build Linux index fc985f9c..37861a0d 100755 --- a/Build Linux +++ b/Build Linux @@ -154,6 +154,10 @@ function update_archlive() { rm -Rf "$SKEL_DIR/.oh-my-zsh/.git" curl -o "$SKEL_DIR/.oh-my-zsh/themes/lean.zsh-theme" https://raw.githubusercontent.com/miekg/lean/master/prompt_lean_setup + # Openbox theme + git clone --depth=1 git@github.com:addy-dclxvi/Openbox-Theme-Collections.git "$TEMP_DIR/ob-themes" + cp -a "$TEMP_DIR/ob-themes/Triste-Orange" "$LIVE_DIR/airootfs/usr/share/themes/" + # Services sed -i -r 's/^(.*pacman-init.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" sed -i -r 's/^(.*choose-mirror.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" From 11eb66c81d3d46f633080d4b18fa762f6846fdb2 Mon Sep 17 00:00:00 2001 From: 2Shirt <1923621+2Shirt@users.noreply.github.com> Date: Sun, 17 Dec 2017 14:27:56 -0700 Subject: [PATCH 040/107] Disabled LFS * Release zip files contain LFS pointers instead of the real files * Images/* will now be full files again --- .gitattributes | 4 ---- Images/ConEmu.png | Bin 131 -> 115685 bytes Images/Linux.png | Bin 131 -> 112117 bytes Images/Pxelinux.png | Bin 130 -> 14668 bytes Images/Syslinux.png | Bin 130 -> 15149 bytes Images/WinPE.jpg | Bin 131 -> 171809 bytes Images/WizardHat.xcf | Bin 131 -> 752623 bytes Images/rEFInd.png | Bin 131 -> 115304 bytes 8 files changed, 4 deletions(-) delete mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index dc2008ad..00000000 --- a/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -Images/ filter=lfs diff=lfs merge=lfs -text -*.jpg filter=lfs diff=lfs merge=lfs -text -*.png filter=lfs diff=lfs merge=lfs -text -*.xcf filter=lfs diff=lfs merge=lfs -text diff --git a/Images/ConEmu.png b/Images/ConEmu.png index fa17463fa9ba6c2f899035c127a1b9c2a9b954aa..52e074be3cd82ca32f2bfb15c872e4a1b549c263 100644 GIT binary patch literal 115685 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

Sr}gBqz7}Ns-h~ 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

r1HAGv5eNS_U7`DeQ?Bl} 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 N7qfp^0{DPl`~VaCC!zoV diff --git a/Images/Linux.png b/Images/Linux.png index c249cc3aba754118928f559a497244d8e5265b84..eb2fbccf92861775df851974d827a70728437b19 100644 GIT binary patch literal 112117 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