Compare commits
106 Commits
developmen
...
3.0.x-stab
Author | SHA1 | Date | |
---|---|---|---|
|
901e53da76 | ||
|
99118e06e6 | ||
|
624552c168 | ||
|
d49e791346 | ||
|
c1747c81b4 | ||
|
20ce3e4c47 | ||
|
75bcaea423 | ||
|
33fc1ba08a | ||
|
7499e44046 | ||
|
31470eabde | ||
|
93e46baa4a | ||
|
0440765680 | ||
|
170b6cadc2 | ||
|
368101a73e | ||
|
87e4e3c4a0 | ||
|
a57b08c200 | ||
|
82243914de | ||
|
6c941fc4c9 | ||
|
e6c1125988 | ||
|
ed42185927 | ||
|
297cf45bba | ||
|
213c65676e | ||
|
188b9efd79 | ||
|
a9e4315665 | ||
|
f73171ac4c | ||
|
56fbec7b55 | ||
|
6d0965ef3f | ||
|
44368db30a | ||
|
9afa2935cd | ||
|
39c9f82c9c | ||
|
026fa922d2 | ||
|
07de427aab | ||
|
163cf52900 | ||
|
cdf77c8a0d | ||
|
07fd7135e3 | ||
|
bbba9e60ee | ||
|
0bd31b0404 | ||
|
b6e0e226a1 | ||
|
041db6e3d7 | ||
|
423c7b57e3 | ||
|
e0c5e81b5b | ||
|
84b96b4f18 | ||
|
c0b7b0bc27 | ||
|
45e7363dfb | ||
|
8d93c34031 | ||
|
555f0ba6cf | ||
|
b95503065f | ||
|
2e9fe3f185 | ||
|
e21338d81e | ||
|
bbef3d8abc | ||
|
e91be5bd12 | ||
|
27602cf832 | ||
|
9ae4755b1c | ||
|
206a89e06c | ||
|
19e41a3c71 | ||
|
a2c7256406 | ||
|
f71602ec6c | ||
|
811b1422e9 | ||
|
3f614ee3a6 | ||
|
3a5cb47081 | ||
|
c0898c308b | ||
|
4a35035396 | ||
|
93ecf0d44d | ||
|
601f61fefa | ||
|
645ba95989 | ||
|
b1169dc48c | ||
|
b935c7db79 | ||
|
1b8b5aab13 | ||
|
ebfa1e2838 | ||
|
130eb43b26 | ||
|
9a5221bbd8 | ||
|
fce053439c | ||
|
a1b2a71267 | ||
|
0956ea5dec | ||
|
c9946117cd | ||
|
7a24975654 | ||
|
a5b4e3f518 | ||
|
0153c47e29 | ||
|
11dd15f123 | ||
|
36a96fedfb | ||
|
a37896da49 | ||
|
97b06e3101 | ||
|
c06903e168 | ||
|
b4a63ecb28 | ||
|
5eb56733b8 | ||
|
4ed06d4fe3 | ||
|
ec2094d768 | ||
|
8632c3d609 | ||
|
d935b7df68 | ||
|
9dfbc54fda | ||
|
94b8ad3b6e | ||
|
77fb264129 | ||
|
0c29233062 | ||
|
cc4ab32350 | ||
|
5610e274ba | ||
|
8627f291ca | ||
|
045ec0408d | ||
|
7ed780014d | ||
|
5adf8775fa | ||
|
cda9e2f0c1 | ||
|
ff8be85b08 | ||
|
d50a27cb4c | ||
|
587681b14c | ||
|
d7c8ff5a45 | ||
|
6b44320bfd | ||
|
295cf12b9a |
8
data/49-nopasswd-calamares.rules
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* Allow Calamares to be started without password authentication
|
||||||
|
*/
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if ((action.id == "com.github.calamares.calamares.pkexec.run"))
|
||||||
|
{
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
});
|
13
data/calamares.desktop
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Version=1.0
|
||||||
|
Name=Install Manjaro Linux
|
||||||
|
GenericName=Live Installer
|
||||||
|
Comment=Install the operating system to disk
|
||||||
|
Comment[de]=Manjaro Linux installieren
|
||||||
|
Exec=/usr/bin/calamares_polkit %f
|
||||||
|
Icon=calamares
|
||||||
|
Terminal=false
|
||||||
|
StartupNotify=true
|
||||||
|
Type=Application
|
||||||
|
Categories=Qt;System;
|
6
data/calamares_polkit
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
if [ $(which pkexec) ]; then
|
||||||
|
pkexec --disable-internal-agent "/usr/bin/calamares" "$@"
|
||||||
|
else
|
||||||
|
/usr/bin/calamares "$@"
|
||||||
|
fi
|
224
data/manjaro-icon.svg
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
id="svg3505"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
viewBox="0 0 512 512"
|
||||||
|
sodipodi:docname="manjaro-icon.svg">
|
||||||
|
<metadata
|
||||||
|
id="metadata3511">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs3509" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1280"
|
||||||
|
inkscape:window-height="998"
|
||||||
|
id="namedview3507"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1"
|
||||||
|
inkscape:cx="256"
|
||||||
|
inkscape:cy="256"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg3505" />
|
||||||
|
<image
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
preserveAspectRatio="none"
|
||||||
|
style="image-rendering:optimizeQuality"
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
AAAAAM78f6ZMXPE9Xy/GAAAAAElFTkSuQmCC
|
||||||
|
"
|
||||||
|
id="image3513"
|
||||||
|
x="0"
|
||||||
|
y="0" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 14 KiB |
@ -30,7 +30,6 @@ modules-search: [ local ]
|
|||||||
# For more information on running module instances, run Calamares in debug mode
|
# For more information on running module instances, run Calamares in debug mode
|
||||||
# and check the Modules page in the Debug information interface.
|
# and check the Modules page in the Debug information interface.
|
||||||
# YAML: list of maps of string:string key-value pairs.
|
# YAML: list of maps of string:string key-value pairs.
|
||||||
|
|
||||||
#instances:
|
#instances:
|
||||||
#- id: owncloud
|
#- id: owncloud
|
||||||
# module: webview
|
# module: webview
|
||||||
@ -59,46 +58,39 @@ modules-search: [ local ]
|
|||||||
# instances are lifted.
|
# instances are lifted.
|
||||||
# YAML: list of lists of strings.
|
# YAML: list of lists of strings.
|
||||||
sequence:
|
sequence:
|
||||||
- show:
|
- show:
|
||||||
- welcome
|
- welcome
|
||||||
# - dummypythonqt
|
- locale
|
||||||
- locale
|
- keyboard
|
||||||
- keyboard
|
- partition
|
||||||
- partition
|
- users
|
||||||
- users
|
- summary
|
||||||
- summary
|
- exec:
|
||||||
- exec:
|
- partition
|
||||||
# - dummycpp
|
- mount
|
||||||
# - dummyprocess
|
- unpackfs
|
||||||
# - dummypython
|
- machineid
|
||||||
# - dummypythonqt
|
- fstab
|
||||||
- partition
|
- locale
|
||||||
- mount
|
- keyboard
|
||||||
- unpackfs
|
- localecfg
|
||||||
- machineid
|
- luksopenswaphookcfg
|
||||||
- fstab
|
- luksbootkeyfile
|
||||||
- locale
|
- plymouthcfg
|
||||||
- keyboard
|
- initcpiocfg
|
||||||
- localecfg
|
- initcpio
|
||||||
# - luksbootkeyfile
|
- users
|
||||||
# - luksopenswaphookcfg
|
- displaymanager
|
||||||
# - dracutlukscfg
|
- mhwdcfg
|
||||||
# - plymouthcfg
|
- networkcfg
|
||||||
- initcpiocfg
|
- hwclock
|
||||||
- initcpio
|
- services
|
||||||
- users
|
- grubcfg
|
||||||
- displaymanager
|
- bootloader
|
||||||
- networkcfg
|
- postcfg
|
||||||
- hwclock
|
- umount
|
||||||
- services
|
- show:
|
||||||
# - dracut
|
- finished
|
||||||
- initramfs
|
|
||||||
# - grubcfg
|
|
||||||
- bootloader
|
|
||||||
- umount
|
|
||||||
- show:
|
|
||||||
# - webview@owncloud
|
|
||||||
- finished
|
|
||||||
|
|
||||||
# A branding component is a directory, either in SHARE/calamares/branding or in
|
# A branding component is a directory, either in SHARE/calamares/branding or in
|
||||||
# /etc/calamares/branding (the latter takes precedence). The directory must contain a
|
# /etc/calamares/branding (the latter takes precedence). The directory must contain a
|
||||||
@ -109,7 +101,7 @@ sequence:
|
|||||||
# Only the name of the branding component (directory) should be specified here, Calamares
|
# Only the name of the branding component (directory) should be specified here, Calamares
|
||||||
# then takes care of finding it and loading the contents.
|
# then takes care of finding it and loading the contents.
|
||||||
# YAML: string.
|
# YAML: string.
|
||||||
branding: default
|
branding: manjaro
|
||||||
|
|
||||||
# If this is set to true, Calamares will show an "Are you sure?" prompt right before
|
# If this is set to true, Calamares will show an "Are you sure?" prompt right before
|
||||||
# each execution phase, i.e. at points of no return. If this is set to false, no prompt
|
# each execution phase, i.e. at points of no return. If this is set to false, no prompt
|
||||||
|
23
src/branding/manjaro-kde/branding.desc
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
componentName: manjaro-kde
|
||||||
|
|
||||||
|
strings:
|
||||||
|
productName: Manjaro Linux
|
||||||
|
shortProductName: Manjaro
|
||||||
|
version: 17.0
|
||||||
|
shortVersion: 17.0
|
||||||
|
versionedName: Manjaro Linux 17.0 "Gellivara"
|
||||||
|
shortVersionedName: Manjaro 17.0
|
||||||
|
bootloaderEntryName: Manjaro
|
||||||
|
|
||||||
|
images:
|
||||||
|
productLogo: "squid.png"
|
||||||
|
productIcon: "logo.png"
|
||||||
|
productWelcome: "languages.png"
|
||||||
|
|
||||||
|
slideshow: "show.qml"
|
||||||
|
|
||||||
|
style:
|
||||||
|
sidebarBackground: "#292F34"
|
||||||
|
sidebarText: "#FFFFFF"
|
||||||
|
sidebarTextSelect: "#292F34"
|
BIN
src/branding/manjaro-kde/languages.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
src/branding/manjaro-kde/logo.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
137
src/branding/manjaro-kde/show.qml
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
|
*
|
||||||
|
* Copyright 2015, Teo Mrnjavac <teo@kde.org>
|
||||||
|
*
|
||||||
|
* Calamares is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick 2.0;
|
||||||
|
import calamares.slideshow 1.0;
|
||||||
|
|
||||||
|
Presentation
|
||||||
|
{
|
||||||
|
id: presentation
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
interval: 20000
|
||||||
|
running: true
|
||||||
|
repeat: true
|
||||||
|
onTriggered: presentation.goToNextSlide()
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background1
|
||||||
|
source: "slide1.png"
|
||||||
|
width: 467; height: 280
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background1.horizontalCenter
|
||||||
|
anchors.top: background1.bottom
|
||||||
|
text: "Welcome to Manjaro.<br/>"+
|
||||||
|
"Manjaro is driven by a hardworking and dedicated community.<br/>"+
|
||||||
|
"During the installation, this slideshow will provide a quick introduction."
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 600
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background2
|
||||||
|
source: "slide2.png"
|
||||||
|
width: 467; height: 280
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background2.horizontalCenter
|
||||||
|
anchors.top: background2.bottom
|
||||||
|
text: "All of Manjaro's versions are completely customizable<br/>"+
|
||||||
|
"to exactly how you want it. From theming, to the very<br/>"+
|
||||||
|
"kernel itself, it can be changed."
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 600
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background3
|
||||||
|
source: "slide3.png"
|
||||||
|
width: 467; height: 280
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background3.horizontalCenter
|
||||||
|
anchors.top: background3.bottom
|
||||||
|
text: "Manjaro has three different officially supported editions.<br/>"+
|
||||||
|
"Additionally, there are a multitude of community editions<br/>"+
|
||||||
|
"to choose from, built by the community, for the community."
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 600
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background4
|
||||||
|
source: "slide4.png"
|
||||||
|
width: 467; height: 280
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background4.horizontalCenter
|
||||||
|
anchors.top: background4.bottom
|
||||||
|
text: "Manjaro has three different options for managing<br/>"+
|
||||||
|
"packages. The original command line option, Pacman<br/>"+
|
||||||
|
"and two different GUI options: Octopi or Pamac."
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 600
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background5
|
||||||
|
source: "slide5.png"
|
||||||
|
width: 467; height: 280
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background5.horizontalCenter
|
||||||
|
anchors.top: background5.bottom
|
||||||
|
text: "We appreciate you choosing Manjaro, and hope you enjoy<br/>"+
|
||||||
|
"it as much as we do making it! If you have any questions<br/>"+
|
||||||
|
"or feedback, please feel free to visit the forum, IRC, or wiki."
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 600
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
src/branding/manjaro-kde/slide1.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
src/branding/manjaro-kde/slide2.png
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
src/branding/manjaro-kde/slide3.png
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
src/branding/manjaro-kde/slide4.png
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
src/branding/manjaro-kde/slide5.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
src/branding/manjaro-kde/squid.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
23
src/branding/manjaro-xfce/branding.desc
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
componentName: manjaro-xfce
|
||||||
|
|
||||||
|
strings:
|
||||||
|
productName: Manjaro Linux
|
||||||
|
shortProductName: Manjaro
|
||||||
|
version: 17.0
|
||||||
|
shortVersion: 17.0
|
||||||
|
versionedName: Manjaro Linux 17.0 "Gellivara"
|
||||||
|
shortVersionedName: Manjaro 17.0
|
||||||
|
bootloaderEntryName: Manjaro
|
||||||
|
|
||||||
|
images:
|
||||||
|
productLogo: "squid.png"
|
||||||
|
productIcon: "logo.png"
|
||||||
|
productWelcome: "languages.png"
|
||||||
|
|
||||||
|
slideshow: "show.qml"
|
||||||
|
|
||||||
|
style:
|
||||||
|
sidebarBackground: "#292F34"
|
||||||
|
sidebarText: "#FFFFFF"
|
||||||
|
sidebarTextSelect: "#292F34"
|
BIN
src/branding/manjaro-xfce/languages.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
src/branding/manjaro-xfce/logo.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
137
src/branding/manjaro-xfce/show.qml
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
|
*
|
||||||
|
* Copyright 2015, Teo Mrnjavac <teo@kde.org>
|
||||||
|
*
|
||||||
|
* Calamares is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick 2.0;
|
||||||
|
import calamares.slideshow 1.0;
|
||||||
|
|
||||||
|
Presentation
|
||||||
|
{
|
||||||
|
id: presentation
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
interval: 20000
|
||||||
|
running: true
|
||||||
|
repeat: true
|
||||||
|
onTriggered: presentation.goToNextSlide()
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background1
|
||||||
|
source: "slide1.png"
|
||||||
|
width: 467; height: 280
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background1.horizontalCenter
|
||||||
|
anchors.top: background1.bottom
|
||||||
|
text: "Welcome to Manjaro.<br/>"+
|
||||||
|
"Manjaro is driven by a hardworking and dedicated community.<br/>"+
|
||||||
|
"During the installation, this slideshow will provide a quick introduction."
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 600
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background2
|
||||||
|
source: "slide2.png"
|
||||||
|
width: 467; height: 280
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background2.horizontalCenter
|
||||||
|
anchors.top: background2.bottom
|
||||||
|
text: "All of Manjaro's versions are completely customizable<br/>"+
|
||||||
|
"to exactly how you want it. From theming, to the very<br/>"+
|
||||||
|
"kernel itself, it can be changed."
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 600
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background3
|
||||||
|
source: "slide3.png"
|
||||||
|
width: 467; height: 280
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background3.horizontalCenter
|
||||||
|
anchors.top: background3.bottom
|
||||||
|
text: "Manjaro has three different officially supported editions.<br/>"+
|
||||||
|
"Additionally, there are a multitude of community editions<br/>"+
|
||||||
|
"to choose from, built by the community, for the community."
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 600
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background4
|
||||||
|
source: "slide4.png"
|
||||||
|
width: 467; height: 280
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background4.horizontalCenter
|
||||||
|
anchors.top: background4.bottom
|
||||||
|
text: "Manjaro has three different options for managing<br/>"+
|
||||||
|
"packages. The original command line option, Pacman<br/>"+
|
||||||
|
"and two different GUI options: Octopi or Pamac."
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 600
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background5
|
||||||
|
source: "slide5.png"
|
||||||
|
width: 467; height: 280
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background5.horizontalCenter
|
||||||
|
anchors.top: background5.bottom
|
||||||
|
text: "We appreciate you choosing Manjaro, and hope you enjoy<br/>"+
|
||||||
|
"it as much as we do making it! If you have any questions<br/>"+
|
||||||
|
"or feedback, please feel free to visit the forum, IRC, or wiki."
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 600
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
src/branding/manjaro-xfce/slide1.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
src/branding/manjaro-xfce/slide2.png
Normal file
After Width: | Height: | Size: 77 KiB |
BIN
src/branding/manjaro-xfce/slide3.png
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
src/branding/manjaro-xfce/slide4.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
src/branding/manjaro-xfce/slide5.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
src/branding/manjaro-xfce/squid.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
23
src/branding/manjaro/branding.desc
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
componentName: manjaro
|
||||||
|
|
||||||
|
strings:
|
||||||
|
productName: Manjaro Linux
|
||||||
|
shortProductName: Manjaro
|
||||||
|
version: 17.0
|
||||||
|
shortVersion: 17.0
|
||||||
|
versionedName: Manjaro Linux 17.0 "Gellivara"
|
||||||
|
shortVersionedName: Manjaro 17.0
|
||||||
|
bootloaderEntryName: Manjaro
|
||||||
|
|
||||||
|
images:
|
||||||
|
productLogo: "squid.png"
|
||||||
|
productIcon: "logo.png"
|
||||||
|
productWelcome: "languages.png"
|
||||||
|
|
||||||
|
slideshow: "show.qml"
|
||||||
|
|
||||||
|
style:
|
||||||
|
sidebarBackground: "#292F34"
|
||||||
|
sidebarText: "#FFFFFF"
|
||||||
|
sidebarTextSelect: "#292F34"
|
BIN
src/branding/manjaro/languages.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
src/branding/manjaro/logo.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
131
src/branding/manjaro/show.qml
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
|
*
|
||||||
|
* Copyright 2015, Teo Mrnjavac <teo@kde.org>
|
||||||
|
*
|
||||||
|
* Calamares is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Slides images dimensions are 800x440px.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick 2.0;
|
||||||
|
import calamares.slideshow 1.0;
|
||||||
|
|
||||||
|
Presentation
|
||||||
|
{
|
||||||
|
id: presentation
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
interval: 20000
|
||||||
|
running: true
|
||||||
|
repeat: true
|
||||||
|
onTriggered: presentation.goToNextSlide()
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background1
|
||||||
|
source: "slide1.png"
|
||||||
|
width: 800; height: 440
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background1.horizontalCenter
|
||||||
|
anchors.top: background1.bottom
|
||||||
|
text: ""
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 800
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background2
|
||||||
|
source: "slide2.png"
|
||||||
|
width: 800; height: 440
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background2.horizontalCenter
|
||||||
|
anchors.top: background2.bottom
|
||||||
|
text: ""
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 800
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background3
|
||||||
|
source: "slide3.png"
|
||||||
|
width: 800; height: 440
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background3.horizontalCenter
|
||||||
|
anchors.top: background3.bottom
|
||||||
|
text: ""
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 800
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background4
|
||||||
|
source: "slide4.png"
|
||||||
|
width: 800; height: 440
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background4.horizontalCenter
|
||||||
|
anchors.top: background4.bottom
|
||||||
|
text: ""
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 800
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Slide {
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background5
|
||||||
|
source: "slide5.png"
|
||||||
|
width: 800; height: 440
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.horizontalCenter: background5.horizontalCenter
|
||||||
|
anchors.top: background5.bottom
|
||||||
|
text: ""
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
width: 800
|
||||||
|
horizontalAlignment: Text.Center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
src/branding/manjaro/slide1.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
src/branding/manjaro/slide2.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
src/branding/manjaro/slide3.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
src/branding/manjaro/slide4.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
src/branding/manjaro/slide5.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
src/branding/manjaro/squid.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
@ -5,15 +5,15 @@ efiBootLoader: "grub"
|
|||||||
|
|
||||||
# systemd-boot configuration files settings, set kernel and initramfs file names
|
# systemd-boot configuration files settings, set kernel and initramfs file names
|
||||||
# and amount of time before default selection boots
|
# and amount of time before default selection boots
|
||||||
kernel: "/vmlinuz-linux"
|
kernel: "_ALL_kver_"
|
||||||
img: "/initramfs-linux.img"
|
img: "_default_image_"
|
||||||
fallback: "/initramfs-linux-fallback.img"
|
fallback: "_fallback_image_"
|
||||||
timeout: "10"
|
timeout: "10"
|
||||||
# Optionally set the menu entry name and kernel name to use in systemd-boot.
|
# Optionally set the menu entry name and kernel name to use in systemd-boot.
|
||||||
# If not specified here, these settings will be taken from branding.desc.
|
# If not specified here, these settings will be taken from branding.desc.
|
||||||
# bootloaderEntryName: "Generic GNU/Linux"
|
# bootloaderEntryName: "Manjaro"
|
||||||
# kernelLine: ", with Stable-Kernel"
|
kernelLine: ", with _manjaro_kernel_"
|
||||||
# fallbackKernelLine: ", with Stable-Kernel (fallback initramfs)"
|
fallbackKernelLine: ", with _manjaro_kernel_ (fallback initramfs)"
|
||||||
|
|
||||||
# GRUB 2 binary names and boot directory
|
# GRUB 2 binary names and boot directory
|
||||||
# Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names.
|
# Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names.
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
# Copyright 2014, Benjamin Vaudour <benjamin.vaudour@yahoo.fr>
|
# Copyright 2014, Benjamin Vaudour <benjamin.vaudour@yahoo.fr>
|
||||||
# Copyright 2014, Kevin Kofler <kevin.kofler@chello.at>
|
# Copyright 2014, Kevin Kofler <kevin.kofler@chello.at>
|
||||||
# Copyright 2015, Philip Mueller <philm@manjaro.org>
|
# Copyright 2015, Philip Mueller <philm@manjaro.org>
|
||||||
# Copyright 2016, Teo Mrnjavac <teo@kde.org>
|
# Copyright 2016-2017, Teo Mrnjavac <teo@kde.org>
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# Calamares is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -294,6 +294,18 @@ def run():
|
|||||||
if libcalamares.globalstorage.value("bootLoader") is None and fw_type != "efi":
|
if libcalamares.globalstorage.value("bootLoader") is None and fw_type != "efi":
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
partitions = libcalamares.globalstorage.value("partitions")
|
||||||
|
|
||||||
|
if fw_type == "efi":
|
||||||
|
esp_found = False
|
||||||
|
|
||||||
|
for partition in partitions:
|
||||||
|
if partition["mountPoint"] == libcalamares.globalstorage.value("efiSystemPartition"):
|
||||||
|
esp_found = True
|
||||||
|
|
||||||
|
if not esp_found:
|
||||||
|
return None
|
||||||
|
|
||||||
prepare_bootloader(fw_type)
|
prepare_bootloader(fw_type)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
12
src/modules/chrootcfg/chrootcfg.conf
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
requirements:
|
||||||
|
- name: /etc
|
||||||
|
mode: "0o755"
|
||||||
|
- name: /var/cache/pacman/pkg
|
||||||
|
mode: "0o755"
|
||||||
|
- name: /var/lib/pacman
|
||||||
|
mode: "0o755"
|
||||||
|
|
||||||
|
keyrings:
|
||||||
|
- archlinux
|
||||||
|
- manjaro
|
234
src/modules/chrootcfg/main.py
Normal file
@ -0,0 +1,234 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
|
#
|
||||||
|
# Copyright 2016, Artoo <artoo@manjaro.org>
|
||||||
|
#
|
||||||
|
# Calamares is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import os, shutil, subprocess, sys, re
|
||||||
|
|
||||||
|
import libcalamares
|
||||||
|
|
||||||
|
from libcalamares.utils import check_target_env_call, target_env_call, debug
|
||||||
|
from os.path import join
|
||||||
|
|
||||||
|
class OperationTracker:
|
||||||
|
def __init__(self):
|
||||||
|
self._downloaded = 0
|
||||||
|
self._installed = 0
|
||||||
|
self._total = 0
|
||||||
|
self._progress = float(0)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def downloaded(self):
|
||||||
|
return self._downloaded
|
||||||
|
|
||||||
|
@downloaded.setter
|
||||||
|
def downloaded(self, value):
|
||||||
|
self._downloaded = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def installed(self):
|
||||||
|
return self._installed
|
||||||
|
|
||||||
|
@installed.setter
|
||||||
|
def installed(self, value):
|
||||||
|
self._installed = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def total(self):
|
||||||
|
return self._total
|
||||||
|
|
||||||
|
@total.setter
|
||||||
|
def total(self, value):
|
||||||
|
self._total = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def progress(self):
|
||||||
|
return self._progress
|
||||||
|
|
||||||
|
@progress.setter
|
||||||
|
def progress(self, value):
|
||||||
|
self._progress = value
|
||||||
|
|
||||||
|
def send_progress(self, counter, phase):
|
||||||
|
for p in range(phase):
|
||||||
|
if self.total == 0:
|
||||||
|
continue
|
||||||
|
step = 0.05
|
||||||
|
step += 0.95 * (counter / float(self.total))
|
||||||
|
self.progress += step / self.total
|
||||||
|
|
||||||
|
debug("Progress: {}".format(self.progress))
|
||||||
|
|
||||||
|
libcalamares.job.setprogress(self.progress)
|
||||||
|
|
||||||
|
ON_POSIX = 'posix' in sys.builtin_module_names
|
||||||
|
|
||||||
|
class PacmanController:
|
||||||
|
def __init__(self, root):
|
||||||
|
self.__root = root
|
||||||
|
self.__operations = libcalamares.globalstorage.value("packageOperations")
|
||||||
|
self.__tracker = OperationTracker()
|
||||||
|
self.__keyrings = libcalamares.job.configuration.get('keyrings', [])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def tracker(self):
|
||||||
|
return self.__tracker
|
||||||
|
|
||||||
|
@property
|
||||||
|
def root(self):
|
||||||
|
return self.__root
|
||||||
|
|
||||||
|
@property
|
||||||
|
def operations(self):
|
||||||
|
return self.__operations
|
||||||
|
|
||||||
|
@property
|
||||||
|
def keyrings(self):
|
||||||
|
return self.__keyrings
|
||||||
|
|
||||||
|
def init_keyring(self):
|
||||||
|
target_env_call(["pacman-key", "--init"])
|
||||||
|
|
||||||
|
def populate_keyring(self):
|
||||||
|
target_env_call(["pacman-key", "--populate"] + self.keyrings)
|
||||||
|
|
||||||
|
def rank_mirrors(self):
|
||||||
|
check_target_env_call(["pacman-mirrors", "-g", "-m", "rank"])
|
||||||
|
|
||||||
|
def parse_output(self, cmd):
|
||||||
|
cal_env = os.environ
|
||||||
|
cal_env["LC_ALL"] = "C"
|
||||||
|
last = []
|
||||||
|
phase = 0
|
||||||
|
|
||||||
|
process = subprocess.Popen(cmd, env=cal_env, bufsize=1, stdout=subprocess.PIPE, close_fds=ON_POSIX)
|
||||||
|
|
||||||
|
for line in iter(process.stdout.readline, b''):
|
||||||
|
pkgs = re.findall(r'\((\d+)\)', line.decode())
|
||||||
|
dl = re.findall(r'downloading\s+(.*).pkg.tar.xz', line.decode())
|
||||||
|
inst = re.findall(r'installing(.*)\.\.\.', line.decode())
|
||||||
|
|
||||||
|
if pkgs:
|
||||||
|
self.tracker.total = (int(pkgs[0]))
|
||||||
|
debug("Number of packages: {}".format(self.tracker.total))
|
||||||
|
|
||||||
|
if dl:
|
||||||
|
if dl != last:
|
||||||
|
self.tracker.downloaded += 1
|
||||||
|
phase = 1
|
||||||
|
debug("Downloading: {}".format(dl[0]))
|
||||||
|
debug("Downloaded packages: {}".format(self.tracker.downloaded))
|
||||||
|
self.tracker.send_progress(self.tracker.downloaded, phase)
|
||||||
|
|
||||||
|
last = dl
|
||||||
|
elif inst:
|
||||||
|
self.tracker.installed += 1
|
||||||
|
phase = 2
|
||||||
|
debug("Installing: {}".format(inst[0]))
|
||||||
|
debug("Installed packages: {}".format(self.tracker.installed))
|
||||||
|
self.tracker.send_progress(self.tracker.installed, phase)
|
||||||
|
|
||||||
|
|
||||||
|
if process.returncode != 0:
|
||||||
|
return process.kill()
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def install(self, local=False):
|
||||||
|
cachedir = join(self.root, "var/cache/pacman/pkg")
|
||||||
|
dbdir = join(self.root, "var/lib/pacman")
|
||||||
|
args = ["pacman", "--noconfirm"]
|
||||||
|
if local:
|
||||||
|
args.extend(["-U"])
|
||||||
|
else:
|
||||||
|
args.extend(["-Sy"])
|
||||||
|
|
||||||
|
args.extend(["--cachedir", cachedir, "--root", self.root, "--dbpath", dbdir])
|
||||||
|
cmd = args + self.operations["install"]
|
||||||
|
self.parse_output(cmd)
|
||||||
|
|
||||||
|
def remove(self):
|
||||||
|
args = ["chroot", self.root, "pacman", "-Rs", "--noconfirm"]
|
||||||
|
cmd = args + self.operations["remove"]
|
||||||
|
check_target_env_call(cmd)
|
||||||
|
|
||||||
|
def run(self, rank=False):
|
||||||
|
for op in self.operations.keys():
|
||||||
|
if op == "install":
|
||||||
|
self.install()
|
||||||
|
elif op == "localInstall":
|
||||||
|
self.install(local=True)
|
||||||
|
elif op == "remove":
|
||||||
|
self.tracker.total(len(self.operations["remove"]))
|
||||||
|
self.remove()
|
||||||
|
|
||||||
|
self.init_keyring()
|
||||||
|
self.populate_keyring()
|
||||||
|
if rank:
|
||||||
|
self.rank_mirrors()
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
class ChrootController:
|
||||||
|
def __init__(self):
|
||||||
|
self.__root = libcalamares.globalstorage.value('rootMountPoint')
|
||||||
|
self.__requirements = libcalamares.job.configuration.get('requirements', [])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def root(self):
|
||||||
|
return self.__root
|
||||||
|
|
||||||
|
@property
|
||||||
|
def requirements(self):
|
||||||
|
return self.__requirements
|
||||||
|
|
||||||
|
def make_dirs(self):
|
||||||
|
for target in self.requirements:
|
||||||
|
dest = self.root + target["name"]
|
||||||
|
if not os.path.exists(dest):
|
||||||
|
debug("Create: {}".format(dest))
|
||||||
|
mod = int(target["mode"],8)
|
||||||
|
debug("Mode: {}".format(oct(mod)))
|
||||||
|
os.makedirs(dest, mode=mod)
|
||||||
|
|
||||||
|
def copy_file(self, file):
|
||||||
|
if os.path.exists(os.path.join("/",file)):
|
||||||
|
shutil.copy2(os.path.join("/",file), os.path.join(self.root, file))
|
||||||
|
|
||||||
|
def prepare(self):
|
||||||
|
cal_umask = os.umask(0)
|
||||||
|
self.make_dirs()
|
||||||
|
path = join(self.root, "run")
|
||||||
|
#debug("Fix permissions: {}".format(path))
|
||||||
|
os.chmod(path, 0o755)
|
||||||
|
os.umask(cal_umask)
|
||||||
|
self.copy_file('etc/pacman-mirrors.conf')
|
||||||
|
self.copy_file('etc/resolv.conf')
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
self.prepare()
|
||||||
|
pacman = PacmanController(self.root)
|
||||||
|
|
||||||
|
return pacman.run(rank=False)
|
||||||
|
|
||||||
|
def run():
|
||||||
|
""" Create chroot dirs and install pacman, kernel and netinstall selection """
|
||||||
|
|
||||||
|
targetRoot = ChrootController()
|
||||||
|
|
||||||
|
return targetRoot.run()
|
6
src/modules/chrootcfg/module.desc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Syntax is YAML 1.2
|
||||||
|
---
|
||||||
|
type: "job"
|
||||||
|
name: "chrootcfg"
|
||||||
|
interface: "python"
|
||||||
|
script: "main.py" #assumed relative to the current directory
|
@ -32,6 +32,8 @@ DesktopEnvironment = collections.namedtuple('DesktopEnvironment', ['executable',
|
|||||||
desktop_environments = [
|
desktop_environments = [
|
||||||
DesktopEnvironment('/usr/bin/startkde', 'plasma'), # KDE Plasma 5
|
DesktopEnvironment('/usr/bin/startkde', 'plasma'), # KDE Plasma 5
|
||||||
DesktopEnvironment('/usr/bin/startkde', 'kde-plasma'), # KDE Plasma 4
|
DesktopEnvironment('/usr/bin/startkde', 'kde-plasma'), # KDE Plasma 4
|
||||||
|
DesktopEnvironment('/usr/bin/budgie-desktop', 'budgie-desktop'), # Budgie v10.x
|
||||||
|
DesktopEnvironment('/usr/bin/budgie-session', 'budgie-desktop'), # Budgie v8.x
|
||||||
DesktopEnvironment('/usr/bin/gnome-session', 'gnome'),
|
DesktopEnvironment('/usr/bin/gnome-session', 'gnome'),
|
||||||
DesktopEnvironment('/usr/bin/startxfce4', 'xfce'),
|
DesktopEnvironment('/usr/bin/startxfce4', 'xfce'),
|
||||||
DesktopEnvironment('/usr/bin/cinnamon-session-cinnamon', 'cinnamon'),
|
DesktopEnvironment('/usr/bin/cinnamon-session-cinnamon', 'cinnamon'),
|
||||||
@ -42,8 +44,6 @@ desktop_environments = [
|
|||||||
DesktopEnvironment('/usr/bin/lxqt-session', 'lxqt'),
|
DesktopEnvironment('/usr/bin/lxqt-session', 'lxqt'),
|
||||||
DesktopEnvironment('/usr/bin/pekwm', 'pekwm'),
|
DesktopEnvironment('/usr/bin/pekwm', 'pekwm'),
|
||||||
DesktopEnvironment('/usr/bin/pantheon-session', 'pantheon'),
|
DesktopEnvironment('/usr/bin/pantheon-session', 'pantheon'),
|
||||||
DesktopEnvironment('/usr/bin/budgie-session', 'budgie-session'),
|
|
||||||
DesktopEnvironment('/usr/bin/budgie-desktop', 'budgie-desktop'),
|
|
||||||
DesktopEnvironment('/usr/bin/i3', 'i3'),
|
DesktopEnvironment('/usr/bin/i3', 'i3'),
|
||||||
DesktopEnvironment('/usr/bin/startdde', 'deepin'),
|
DesktopEnvironment('/usr/bin/startdde', 'deepin'),
|
||||||
DesktopEnvironment('/usr/bin/openbox-session', 'openbox')
|
DesktopEnvironment('/usr/bin/openbox-session', 'openbox')
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# === This file is part of Calamares - <http://github.com/calamares> ===
|
# === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
#
|
#
|
||||||
# Copyright 2014-2015, Philip Müller <philm@manjaro.org>
|
# Copyright 2014-2015, Philip Müller <philm@manjaro.org>
|
||||||
# Copyright 2015, Teo Mrnjavac <teo@kde.org>
|
# Copyright 2015-2017, Teo Mrnjavac <teo@kde.org>
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# Calamares is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -23,6 +23,7 @@ import libcalamares
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
def modify_grub_default(partitions, root_mount_point, distributor):
|
def modify_grub_default(partitions, root_mount_point, distributor):
|
||||||
""" Configures '/etc/default/grub' for hibernation and plymouth.
|
""" Configures '/etc/default/grub' for hibernation and plymouth.
|
||||||
|
|
||||||
@ -65,7 +66,7 @@ def modify_grub_default(partitions, root_mount_point, distributor):
|
|||||||
"cryptdevice=UUID={!s}:{!s}".format(partition["luksUuid"],
|
"cryptdevice=UUID={!s}:{!s}".format(partition["luksUuid"],
|
||||||
partition["luksMapperName"]),
|
partition["luksMapperName"]),
|
||||||
"root=/dev/mapper/{!s}".format(partition["luksMapperName"])
|
"root=/dev/mapper/{!s}".format(partition["luksMapperName"])
|
||||||
]
|
]
|
||||||
|
|
||||||
kernel_params = ["quiet"]
|
kernel_params = ["quiet"]
|
||||||
|
|
||||||
@ -162,10 +163,24 @@ def run():
|
|||||||
|
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if libcalamares.globalstorage.value("bootLoader") is None:
|
|
||||||
|
fw_type = libcalamares.globalstorage.value("firmwareType")
|
||||||
|
|
||||||
|
if libcalamares.globalstorage.value("bootLoader") is None and fw_type != "efi":
|
||||||
return None
|
return None
|
||||||
|
|
||||||
partitions = libcalamares.globalstorage.value("partitions")
|
partitions = libcalamares.globalstorage.value("partitions")
|
||||||
|
|
||||||
|
if fw_type == "efi":
|
||||||
|
esp_found = False
|
||||||
|
|
||||||
|
for partition in partitions:
|
||||||
|
if partition["mountPoint"] == libcalamares.globalstorage.value("efiSystemPartition"):
|
||||||
|
esp_found = True
|
||||||
|
|
||||||
|
if not esp_found:
|
||||||
|
return None
|
||||||
|
|
||||||
root_mount_point = libcalamares.globalstorage.value("rootMountPoint")
|
root_mount_point = libcalamares.globalstorage.value("rootMountPoint")
|
||||||
branding = libcalamares.globalstorage.value("branding")
|
branding = libcalamares.globalstorage.value("branding")
|
||||||
distributor = branding["bootloaderEntryName"]
|
distributor = branding["bootloaderEntryName"]
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
---
|
---
|
||||||
kernel: linux312
|
kernel: _kernel_
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
region: "America"
|
region: "America"
|
||||||
zone: "New_York"
|
zone: "New_York"
|
||||||
|
|
||||||
# GeoIP settings. Leave commented out to disable GeoIP.
|
# GeoIP settings. Leave commented out to disable GeoIP.
|
||||||
#localeGenPath: "/etc/locale.gen"
|
localeGenPath: "/etc/locale.gen"
|
||||||
#geoipUrl: "freegeoip.net"
|
geoipUrl: "freegeoip.net"
|
||||||
|
97
src/modules/mhwdcfg/main.py
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
|
#
|
||||||
|
# Copyright 2016, Artoo <artoo@manjaro.org>
|
||||||
|
#
|
||||||
|
# Calamares is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import libcalamares
|
||||||
|
|
||||||
|
from libcalamares.utils import target_env_call, debug
|
||||||
|
from os.path import join
|
||||||
|
from subprocess import call
|
||||||
|
|
||||||
|
class MhwdController:
|
||||||
|
def __init__(self):
|
||||||
|
self.__root = libcalamares.globalstorage.value( "rootMountPoint" )
|
||||||
|
self.__bus = libcalamares.job.configuration.get('bus', [])
|
||||||
|
self.__identifier = libcalamares.job.configuration.get('identifier', [])
|
||||||
|
self.__local = libcalamares.job.configuration['local']
|
||||||
|
self.__repo = libcalamares.job.configuration['repo']
|
||||||
|
self._driver = libcalamares.job.configuration['driver']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def driver(self):
|
||||||
|
return self._driver
|
||||||
|
|
||||||
|
@driver.setter
|
||||||
|
def driver(self, value):
|
||||||
|
self._driver = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def root(self):
|
||||||
|
return self.__root
|
||||||
|
|
||||||
|
@property
|
||||||
|
def local(self):
|
||||||
|
return self.__local
|
||||||
|
|
||||||
|
@property
|
||||||
|
def repo(self):
|
||||||
|
return self.__repo
|
||||||
|
|
||||||
|
@property
|
||||||
|
def identifier(self):
|
||||||
|
return self.__identifier
|
||||||
|
|
||||||
|
@property
|
||||||
|
def bus(self):
|
||||||
|
return self.__bus
|
||||||
|
|
||||||
|
def umount(self, mp):
|
||||||
|
call(["umount", "-l", join(self.root, mp)])
|
||||||
|
|
||||||
|
def mount(self, mp):
|
||||||
|
call(["mount", "-Br", "/" + mp, join(self.root, mp)])
|
||||||
|
|
||||||
|
def configure(self, name, id):
|
||||||
|
cmd = ["mhwd", "-a", str(name), str(self.driver), str(id).zfill(4)]
|
||||||
|
if self.local:
|
||||||
|
self.mount("opt")
|
||||||
|
cmd.extend(["--pmconfig", self.repo])
|
||||||
|
|
||||||
|
self.mount("etc/resolv.conf")
|
||||||
|
target_env_call(cmd)
|
||||||
|
|
||||||
|
if self.local:
|
||||||
|
self.umount("opt")
|
||||||
|
self.umount("etc/resolv.conf")
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
for b in self.bus:
|
||||||
|
for id in self.identifier['net']:
|
||||||
|
self.configure(b, id)
|
||||||
|
for id in self.identifier['video']:
|
||||||
|
self.configure(b, id)
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def run():
|
||||||
|
""" Configure the hardware """
|
||||||
|
|
||||||
|
mhwd = MhwdController()
|
||||||
|
|
||||||
|
return mhwd.run()
|
19
src/modules/mhwdcfg/mhwdcfg.conf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
bus:
|
||||||
|
- pci
|
||||||
|
# - usb
|
||||||
|
|
||||||
|
identifier:
|
||||||
|
net:
|
||||||
|
- 200
|
||||||
|
- 280
|
||||||
|
video:
|
||||||
|
- 300
|
||||||
|
- 302
|
||||||
|
- 380
|
||||||
|
|
||||||
|
driver: free
|
||||||
|
|
||||||
|
local: true
|
||||||
|
|
||||||
|
repo: /opt/pacman-mhwd.conf
|
6
src/modules/mhwdcfg/module.desc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Syntax is YAML 1.2
|
||||||
|
---
|
||||||
|
type: "job"
|
||||||
|
name: "mhwdcfg"
|
||||||
|
interface: "python"
|
||||||
|
script: "main.py" #assumed relative to the current directory
|
@ -16,11 +16,11 @@ The *netinstall.conf* file should have this format:
|
|||||||
The URL must point to a YAML file. Here is a short example of how the YAML file should look.
|
The URL must point to a YAML file. Here is a short example of how the YAML file should look.
|
||||||
|
|
||||||
- name: "Group name"
|
- name: "Group name"
|
||||||
description: "Description of the group"
|
description: "Description of the group"
|
||||||
packages:
|
packages:
|
||||||
- lsb-release
|
- lsb-release
|
||||||
- avahi
|
- avahi
|
||||||
- grub
|
- grub
|
||||||
- name: "Second group name"
|
- name: "Second group name"
|
||||||
...
|
...
|
||||||
|
|
||||||
@ -37,6 +37,12 @@ More keys are supported:
|
|||||||
- subgroups: if present this follows the same structure as the top level
|
- subgroups: if present this follows the same structure as the top level
|
||||||
of the YAML file, allowing there to be sub-groups of packages to an
|
of the YAML file, allowing there to be sub-groups of packages to an
|
||||||
arbitary depth
|
arbitary depth
|
||||||
|
- pre-install: an optional command to run within the new system before
|
||||||
|
the group's packages are installed. It will run before each package in
|
||||||
|
the group is installed.
|
||||||
|
- post-install: an optional command to run within the new system after
|
||||||
|
the group's packages are installed. It will run after each package in
|
||||||
|
the group is installed.
|
||||||
|
|
||||||
If you set both *hidden* and *selected* for a group, you are basically creating a "default" group of packages
|
If you set both *hidden* and *selected* for a group, you are basically creating a "default" group of packages
|
||||||
which will always be installed in the user's system.
|
which will always be installed in the user's system.
|
||||||
|
@ -112,7 +112,7 @@ class PackageManager:
|
|||||||
|
|
||||||
def run(self, script):
|
def run(self, script):
|
||||||
if script != "":
|
if script != "":
|
||||||
check_target_env_call(scrtip.split(" "))
|
check_target_env_call(script.split(" "))
|
||||||
|
|
||||||
|
|
||||||
def subst_locale(list):
|
def subst_locale(list):
|
||||||
@ -138,13 +138,13 @@ def run_operations(pkgman, entry):
|
|||||||
for key in entry.keys():
|
for key in entry.keys():
|
||||||
entry[key] = subst_locale(entry[key])
|
entry[key] = subst_locale(entry[key])
|
||||||
if key == "install":
|
if key == "install":
|
||||||
if isinstance(package, str):
|
if isinstance(entry[key], list):
|
||||||
pkgman.install(entry[key])
|
|
||||||
else:
|
|
||||||
for package in entry[key]:
|
for package in entry[key]:
|
||||||
pkgman.run(package["pre-script"])
|
pkgman.run(package["pre-script"])
|
||||||
pkgman.install([package["package"]])
|
pkgman.install([package["package"]])
|
||||||
pkgman.run(package["post-script"])
|
pkgman.run(package["post-script"])
|
||||||
|
else:
|
||||||
|
pkgman.install(entry[key])
|
||||||
elif key == "try_install":
|
elif key == "try_install":
|
||||||
# we make a separate package manager call for each package so a single
|
# we make a separate package manager call for each package so a single
|
||||||
# failing package won't stop all of them
|
# failing package won't stop all of them
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
rootMountPoint: /tmp/mount
|
rootMountPoint: /tmp/mount
|
||||||
packageOperations:
|
packageOperations:
|
||||||
- install:
|
- install:
|
||||||
- vi
|
- pre-script: touch /tmp/foo
|
||||||
|
package: vi
|
||||||
|
post-script: rm /tmp/foo
|
||||||
|
- wget
|
||||||
- remove:
|
- remove:
|
||||||
- vi
|
- vi
|
||||||
|
- wget
|
||||||
|
@ -100,13 +100,13 @@ swapSuggestion( const qint64 availableSpaceB )
|
|||||||
void
|
void
|
||||||
doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPassphrase )
|
doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPassphrase )
|
||||||
{
|
{
|
||||||
|
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
|
||||||
|
|
||||||
bool isEfi = false;
|
bool isEfi = false;
|
||||||
if ( QDir( "/sys/firmware/efi/efivars" ).exists() )
|
if ( QDir( "/sys/firmware/efi/efivars" ).exists() )
|
||||||
isEfi = true;
|
isEfi = true;
|
||||||
|
|
||||||
QString defaultFsType = Calamares::JobQueue::instance()->
|
QString defaultFsType = gs->value( "defaultFileSystemType" ).toString();
|
||||||
globalStorage()->
|
|
||||||
value( "defaultFileSystemType" ).toString();
|
|
||||||
if ( FileSystem::typeForName( defaultFsType ) == FileSystem::Unknown )
|
if ( FileSystem::typeForName( defaultFsType ) == FileSystem::Unknown )
|
||||||
defaultFsType = "ext4";
|
defaultFsType = "ext4";
|
||||||
|
|
||||||
@ -144,9 +144,7 @@ doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPass
|
|||||||
PartitionTable::FlagEsp
|
PartitionTable::FlagEsp
|
||||||
);
|
);
|
||||||
PartitionInfo::setFormat( efiPartition, true );
|
PartitionInfo::setFormat( efiPartition, true );
|
||||||
PartitionInfo::setMountPoint( efiPartition, Calamares::JobQueue::instance()
|
PartitionInfo::setMountPoint( efiPartition, gs->value( "efiSystemPartition" )
|
||||||
->globalStorage()
|
|
||||||
->value( "efiSystemPartition" )
|
|
||||||
.toString() );
|
.toString() );
|
||||||
core->createPartition( dev, efiPartition, PartitionTable::FlagEsp | PartitionTable::FlagBoot );
|
core->createPartition( dev, efiPartition, PartitionTable::FlagEsp | PartitionTable::FlagBoot );
|
||||||
firstFreeSector = lastSector + 1;
|
firstFreeSector = lastSector + 1;
|
||||||
@ -156,17 +154,21 @@ doAutopartition( PartitionCoreModule* core, Device* dev, const QString& luksPass
|
|||||||
core->createPartitionTable( dev, PartitionTable::msdos );
|
core->createPartitionTable( dev, PartitionTable::msdos );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const bool mayCreateSwap = !gs->value( "neverCreateSwap" ).toBool();
|
||||||
bool shouldCreateSwap = false;
|
bool shouldCreateSwap = false;
|
||||||
qint64 availableSpaceB = ( dev->totalLogical() - firstFreeSector ) * dev->logicalSize();
|
qint64 suggestedSwapSizeB = 0;
|
||||||
qint64 suggestedSwapSizeB = swapSuggestion( availableSpaceB );
|
|
||||||
qint64 requiredSpaceB =
|
|
||||||
( Calamares::JobQueue::instance()->
|
|
||||||
globalStorage()->
|
|
||||||
value( "requiredStorageGB" ).toDouble() + 0.1 + 2.0 ) GiB +
|
|
||||||
suggestedSwapSizeB;
|
|
||||||
|
|
||||||
// If there is enough room for ESP + root + swap, create swap, otherwise don't.
|
if ( mayCreateSwap )
|
||||||
shouldCreateSwap = availableSpaceB > requiredSpaceB;
|
{
|
||||||
|
qint64 availableSpaceB = ( dev->totalLogical() - firstFreeSector ) * dev->logicalSize();
|
||||||
|
suggestedSwapSizeB = swapSuggestion( availableSpaceB );
|
||||||
|
qint64 requiredSpaceB =
|
||||||
|
( gs->value( "requiredStorageGB" ).toDouble() + 0.1 + 2.0 ) GiB +
|
||||||
|
suggestedSwapSizeB;
|
||||||
|
|
||||||
|
// If there is enough room for ESP + root + swap, create swap, otherwise don't.
|
||||||
|
shouldCreateSwap = availableSpaceB > requiredSpaceB;
|
||||||
|
}
|
||||||
|
|
||||||
qint64 lastSectorForRoot = dev->totalLogical() - 1; //last sector of the device
|
qint64 lastSectorForRoot = dev->totalLogical() - 1; //last sector of the device
|
||||||
if ( shouldCreateSwap )
|
if ( shouldCreateSwap )
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
*
|
*
|
||||||
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
|
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
|
||||||
* Copyright 2014-2016, Teo Mrnjavac <teo@kde.org>
|
* Copyright 2014-2017, Teo Mrnjavac <teo@kde.org>
|
||||||
*
|
*
|
||||||
* Calamares is free software: you can redistribute it and/or modify
|
* Calamares is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -503,6 +503,16 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
gs->insert( "ensureSuspendToDisk", true );
|
gs->insert( "ensureSuspendToDisk", true );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( configurationMap.contains( "neverCreateSwap" ) &&
|
||||||
|
configurationMap.value( "neverCreateSwap" ).type() == QVariant::Bool )
|
||||||
|
{
|
||||||
|
gs->insert( "neverCreateSwap", configurationMap.value( "neverCreateSwap" ).toBool() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gs->insert( "neverCreateSwap", false );
|
||||||
|
}
|
||||||
|
|
||||||
if ( configurationMap.contains( "drawNestedPartitions" ) &&
|
if ( configurationMap.contains( "drawNestedPartitions" ) &&
|
||||||
configurationMap.value( "drawNestedPartitions" ).type() == QVariant::Bool )
|
configurationMap.value( "drawNestedPartitions" ).type() == QVariant::Bool )
|
||||||
{
|
{
|
||||||
|
@ -3,9 +3,16 @@
|
|||||||
# etc.) use just /boot.
|
# etc.) use just /boot.
|
||||||
efiSystemPartition: "/boot/efi"
|
efiSystemPartition: "/boot/efi"
|
||||||
|
|
||||||
# Make sure an autogenerated swap partition is big enough for hibernation
|
# Make sure an autogenerated swap partition is big enough for hibernation in
|
||||||
|
# automated partitioning modes.
|
||||||
|
# Default is true.
|
||||||
ensureSuspendToDisk: true
|
ensureSuspendToDisk: true
|
||||||
|
|
||||||
|
# Never create swap partitions in automated partitioning modes.
|
||||||
|
# If this is true, ensureSuspendToDisk is ignored.
|
||||||
|
# Default is false.
|
||||||
|
neverCreateSwap: false
|
||||||
|
|
||||||
# Correctly draw nested (e.g. logical) partitions as such.
|
# Correctly draw nested (e.g. logical) partitions as such.
|
||||||
drawNestedPartitions: false
|
drawNestedPartitions: false
|
||||||
|
|
||||||
|
96
src/modules/postcfg/main.py
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
|
#
|
||||||
|
# Copyright 2014 - 2016, Philip Müller <philm@manjaro.org>
|
||||||
|
# Copyright 2016, Artoo <artoo@manjaro.org>
|
||||||
|
#
|
||||||
|
# Calamares is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import libcalamares
|
||||||
|
|
||||||
|
from shutil import copy2
|
||||||
|
from distutils.dir_util import copy_tree
|
||||||
|
from os.path import join, exists
|
||||||
|
from libcalamares.utils import target_env_call
|
||||||
|
|
||||||
|
class ConfigController:
|
||||||
|
def __init__(self):
|
||||||
|
self.__root = libcalamares.globalstorage.value("rootMountPoint")
|
||||||
|
self.__keyrings = libcalamares.job.configuration.get('keyrings', [])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def root(self):
|
||||||
|
return self.__root
|
||||||
|
|
||||||
|
@property
|
||||||
|
def keyrings(self):
|
||||||
|
return self.__keyrings
|
||||||
|
|
||||||
|
def init_keyring(self):
|
||||||
|
target_env_call(["pacman-key", "--init"])
|
||||||
|
|
||||||
|
def populate_keyring(self):
|
||||||
|
target_env_call(["pacman-key", "--populate"] + self.keyrings)
|
||||||
|
|
||||||
|
def terminate(self, proc):
|
||||||
|
target_env_call(['killall', '-9', proc])
|
||||||
|
|
||||||
|
def copy_file(self, file):
|
||||||
|
if exists("/" + file):
|
||||||
|
copy2("/" + file, join(self.root, file))
|
||||||
|
|
||||||
|
def copy_folder(self, source, target):
|
||||||
|
if exists("/" + source):
|
||||||
|
copy_tree("/" + source, join(self.root, target))
|
||||||
|
|
||||||
|
def remove_pkg(self, pkg, path):
|
||||||
|
if exists(join(self.root, path)):
|
||||||
|
target_env_call(['pacman', '-R', '--noconfirm', pkg])
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
self.init_keyring()
|
||||||
|
self.populate_keyring()
|
||||||
|
|
||||||
|
# Remove calamares
|
||||||
|
self.remove_pkg("calamares", "usr/bin/calamares")
|
||||||
|
|
||||||
|
# Generate mirror list
|
||||||
|
if exists(join(self.root, "usr/bin/pacman-mirrors")):
|
||||||
|
if libcalamares.globalstorage.value("hasInternet"):
|
||||||
|
target_env_call(["pacman-mirrors", "-g"])
|
||||||
|
else:
|
||||||
|
self.copy_file('etc/pacman.d/mirrorlist')
|
||||||
|
|
||||||
|
# Copy skel to root
|
||||||
|
self.copy_folder('etc/skel', 'root')
|
||||||
|
|
||||||
|
# Workaround for pacman-key bug FS#45351 https://bugs.archlinux.org/task/45351
|
||||||
|
# We have to kill gpg-agent because if it stays around we can't reliably unmount
|
||||||
|
# the target partition.
|
||||||
|
self.terminate('gpg-agent')
|
||||||
|
|
||||||
|
# Update grub.cfg
|
||||||
|
if exists(join(self.root, "usr/bin/update-grub")) and libcalamares.globalstorage.value("bootLoader") is not None:
|
||||||
|
target_env_call(["update-grub"])
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def run():
|
||||||
|
""" Misc postinstall configurations """
|
||||||
|
|
||||||
|
config = ConfigController()
|
||||||
|
|
||||||
|
return config.run()
|
6
src/modules/postcfg/module.desc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Syntax is YAML 1.2
|
||||||
|
---
|
||||||
|
type: "job"
|
||||||
|
name: "postcfg"
|
||||||
|
interface: "python"
|
||||||
|
script: "main.py" #assumed relative to the current directory
|
4
src/modules/postcfg/postcfg.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
keyrings:
|
||||||
|
- archlinux
|
||||||
|
- manjaro
|
@ -3,8 +3,9 @@
|
|||||||
#
|
#
|
||||||
# === This file is part of Calamares - <http://github.com/calamares> ===
|
# === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
#
|
#
|
||||||
# Copyright 2014, Philip Müller <philm@manjaro.org>
|
# Copyright 2014-2016, Philip Müller <philm@manjaro.org>
|
||||||
# Copyright 2014, Teo Mrnjavac <teo@kde.org>
|
# Copyright 2014, Teo Mrnjavac <teo@kde.org>
|
||||||
|
# Copyright 2016, Artoo <artoo@manjaro.org>
|
||||||
#
|
#
|
||||||
# Calamares is free software: you can redistribute it and/or modify
|
# Calamares is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -20,6 +21,7 @@
|
|||||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import libcalamares
|
import libcalamares
|
||||||
|
from os.path import join, exists
|
||||||
|
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
@ -27,6 +29,7 @@ def run():
|
|||||||
services = libcalamares.job.configuration['services']
|
services = libcalamares.job.configuration['services']
|
||||||
targets = libcalamares.job.configuration['targets']
|
targets = libcalamares.job.configuration['targets']
|
||||||
disable = libcalamares.job.configuration['disable']
|
disable = libcalamares.job.configuration['disable']
|
||||||
|
rootmnt = libcalamares.globalstorage.value("rootMountPoint")
|
||||||
|
|
||||||
# note that the "systemctl enable" and "systemctl disable" commands used
|
# note that the "systemctl enable" and "systemctl disable" commands used
|
||||||
# here will work in a chroot; in fact, they are the only systemctl commands
|
# here will work in a chroot; in fact, they are the only systemctl commands
|
||||||
@ -68,4 +71,16 @@ def run():
|
|||||||
libcalamares.utils.debug("Cannot disable systemd service {}".format(dbl['name']))
|
libcalamares.utils.debug("Cannot disable systemd service {}".format(dbl['name']))
|
||||||
libcalamares.utils.debug("systemctl disable call in chroot returned error code {}".format(ec))
|
libcalamares.utils.debug("systemctl disable call in chroot returned error code {}".format(ec))
|
||||||
|
|
||||||
|
if libcalamares.globalstorage.contains("displayManagers"):
|
||||||
|
for dm in libcalamares.globalstorage.value("displayManagers"):
|
||||||
|
if not exists(join(rootmnt, "etc/systemd/system/display-manager.service")):
|
||||||
|
ec = libcalamares.utils.target_env_call(['systemctl', 'enable', '{}.service'.format(dm)])
|
||||||
|
|
||||||
|
if ec != 0:
|
||||||
|
return "Cannot enable systemd service {}".format(dm), \
|
||||||
|
"systemctl enable call in chroot returned error code {}".format(ec)
|
||||||
|
else:
|
||||||
|
libcalamares.utils.debug("Cannot enable systemd service {}".format(dm))
|
||||||
|
libcalamares.utils.debug("systemctl enable call in chroot returned error code {}".format(ec))
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
@ -5,7 +5,7 @@ services:
|
|||||||
- name: "NetworkManager" #name of the service file
|
- name: "NetworkManager" #name of the service file
|
||||||
mandatory: false #true=> if enabling fails the installer errors out and quits
|
mandatory: false #true=> if enabling fails the installer errors out and quits
|
||||||
#false=>if enabling fails print warning to console and continue
|
#false=>if enabling fails print warning to console and continue
|
||||||
- name: "cups"
|
- name: "org.cups.cupsd"
|
||||||
mandatory: false
|
mandatory: false
|
||||||
|
|
||||||
targets:
|
targets:
|
||||||
|
75
src/modules/servicescfg/main.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# === This file is part of Calamares - <http://github.com/calamares> ===
|
||||||
|
#
|
||||||
|
# Copyright 2016, Artoo <artoo@manjaro.org>
|
||||||
|
#
|
||||||
|
# Calamares is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import libcalamares
|
||||||
|
|
||||||
|
from libcalamares.utils import target_env_call
|
||||||
|
from os.path import exists, join
|
||||||
|
|
||||||
|
class ServicesController:
|
||||||
|
def __init__(self):
|
||||||
|
self.__root = libcalamares.globalstorage.value('rootMountPoint')
|
||||||
|
self.__services = libcalamares.job.configuration.get('services', [])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def root(self):
|
||||||
|
return self.__root
|
||||||
|
|
||||||
|
@property
|
||||||
|
def services(self):
|
||||||
|
return self.__services
|
||||||
|
|
||||||
|
def setExpression(self, pattern, file):
|
||||||
|
target_env_call(["sed", "-e", pattern, "-i", file])
|
||||||
|
|
||||||
|
def configure(self):
|
||||||
|
self.setExpression('s|^.*rc_shell=.*|rc_shell="/usr/bin/sulogin"|', "/etc/rc.conf")
|
||||||
|
self.setExpression('s|^.*rc_controller_cgroups=.*|rc_controller_cgroups="YES"|', "/etc/rc.conf")
|
||||||
|
exp = 's|^.*keymap=.*|keymap="' + libcalamares.globalstorage.value("keyboardLayout") + '"|'
|
||||||
|
self.setExpression(exp, "/etc/conf.d/keymaps")
|
||||||
|
self.setExpression('s|pam_systemd.so|pam_ck_connector.so nox11|', "/etc/pam.d/system-login")
|
||||||
|
for dm in libcalamares.globalstorage.value("displayManagers"):
|
||||||
|
exp = 's|^.*DISPLAYMANAGER=.*|DISPLAYMANAGER="' + dm + '"|'
|
||||||
|
self.setExpression(exp, "/etc/conf.d/xdm")
|
||||||
|
if dm == "lightdm":
|
||||||
|
self.setExpression('s|^.*minimum-vt=.*|minimum-vt=7|', "/etc/lightdm/lightdm.conf")
|
||||||
|
self.setExpression('s|pam_systemd.so|pam_ck_connector.so nox11|', "/etc/pam.d/lightdm-greeter")
|
||||||
|
if exists(join(self.root, "etc/pulse/client.conf")):
|
||||||
|
self.setExpression('s|autospawn = no|autospawn = yes|', "/etc/pulse/client.conf")
|
||||||
|
|
||||||
|
def update(self, action, state):
|
||||||
|
for svc in self.services[state]:
|
||||||
|
if exists(self.root + "/etc/init.d/" + svc["name"]):
|
||||||
|
target_env_call(["rc-update", action, svc["name"], svc["runlevel"]])
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
self.configure()
|
||||||
|
for state in self.services.keys():
|
||||||
|
if state == "enabled":
|
||||||
|
self.update("add", "enabled")
|
||||||
|
elif state == "disabled":
|
||||||
|
self.update("del", "disabled")
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def run():
|
||||||
|
""" Setup openrc services """
|
||||||
|
sc = ServicesController()
|
||||||
|
return sc.run()
|
6
src/modules/servicescfg/module.desc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
type: "job"
|
||||||
|
name: "servicescfg"
|
||||||
|
interface: "python"
|
||||||
|
requires: []
|
||||||
|
script: "main.py"
|
10
src/modules/servicescfg/servicescfg.conf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
enabled:
|
||||||
|
- name: "NetworkManager"
|
||||||
|
runlevel: "default"
|
||||||
|
- name: "cups"
|
||||||
|
runlevel: "default"
|
||||||
|
# disabled:
|
||||||
|
# - name: "hwclock"
|
||||||
|
# runlevel: "boot"
|
@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
unpack:
|
unpack:
|
||||||
- source: "/path/to/filesystem.img"
|
- source: "_root-image_"
|
||||||
sourcefs: "ext4"
|
sourcefs: "squashfs"
|
||||||
destination: ""
|
destination: ""
|
||||||
- source: "/path/to/another/filesystem.sqfs"
|
- source: "_desktop-image_"
|
||||||
sourcefs: "squashfs"
|
sourcefs: "squashfs"
|
||||||
destination: ""
|
destination: ""
|
||||||
|