summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--aisaka.org342
-rw-r--r--emacs.el5
-rw-r--r--home-configuration.scm15
-rw-r--r--services/flashrom.scm16
-rw-r--r--system-configuration.scm3
5 files changed, 300 insertions, 81 deletions
diff --git a/aisaka.org b/aisaka.org
index be6b7be..deb2dc6 100644
--- a/aisaka.org
+++ b/aisaka.org
@@ -1,80 +1,274 @@
#+TITLE: Configuration of the Aisaka computer -*- mode: org -*-
-#+STARTUP: overview
+#+STARTUP: content
-* Imported configuration dump
+* TODO LIBREBOOT
+
+The first layer of computing is the firmware. The Lenovo Thinkpad X200 has
+a free Libreboot firmware installed. It is a good idea to keep it up to date.
+
+** TODO Flashrom
+
+Flashrom program is needed to write the computer firmware. The program needs
+a relaxed kernel security feature.
+
+#+name: flashrom-tangle
+#+begin_src scheme :tangle services/flashrom.scm :noweb yes
+ (define-module (flashrom)
+ #:use-module (gnu)
+ #:use-module (gnu home)
+ #:use-module (gnu home services)
+ #:use-module (gnu home services shells))
+
+ <<flashrom-package>>
+#+end_src
+
+*** TODO Flashrom Package
+
+This service installs flashrom.
+
+#+name: flashrom-package
+#+begin_src scheme
+ (define-public flashrom-service-type
+ (service-type
+ (name 'flashrom)
+ (extensions
+ `(,(service-extension home-profile-service-type
+ (lambda (_)
+ (map specification->package
+ '("flashrom"))))))
+ (description "Flashrom installation.")
+ (default-value #f)))
+#+end_src
+
+* imported configuration dump
+** TODO System configuration
#+name: system-dump
#+begin_src scheme :tangle system-configuration.scm
-(define-module (aisaka-system-configuration)
- #:use-module (gnu)
- #:use-module (gnu packages cups)
- #:use-module (gnu packages finance)
- #:use-module (gnu services cups)
- #:use-module (gnu services desktop)
- #:use-module (gnu services networking)
- #:use-module (gnu services ssh)
- #:use-module (gnu services xorg))
-
-(define keyboard-layout
- (keyboard-layout "pl"))
-
-(define mapped-devices
- `(,(mapped-device (source (uuid "887ac37f-2919-41a0-a62a-e1ff5ea2d6cc"))
- (target "aisaka-root")
- (type luks-device-mapping))))
-
-(operating-system
- (locale "pl_PL.utf8")
- (timezone "Europe/Warsaw")
- (keyboard-layout keyboard-layout)
- (host-name "aisaka")
- (users (cons* (user-account (name "marek")
- (comment "Marek Paśnikowski")
- (group "users")
- (home-directory "/home/marek")
- (supplementary-groups '("audio"
- "netdev"
- "tor"
- "video"
- "wheel")))
- %base-user-accounts))
- (packages (append (map (compose list
- specification->package+output)
- '("netcat-openbsd"
- "nss-certs"
- "trezord"
- "trezord-udev-rules"))
- %base-packages))
- (services (cons* (service cups-service-type
- (cups-configuration (extensions `(,cups-filters
- ,epson-inkjet-printer-escpr))
- (web-interface? #t)))
- (service openssh-service-type)
- (service tor-service-type
- (tor-configuration (config-file (local-file "torrc"))
- (control-socket? #t)))
- (udev-rules-service 'trezord trezord-udev-rules)
- (modify-services %desktop-services
- (elogind-service-type
- configuration =>
- (elogind-configuration
- (inherit configuration)
- (handle-lid-switch 'ignore)))
- (delete gdm-service-type))))
- (bootloader (bootloader-configuration (bootloader grub-bootloader)
- (targets '("/dev/sda"))
- (keyboard-layout keyboard-layout)))
- (swap-devices
- `(,(swap-space (target (uuid "73bed3f9-be07-40ad-a228-577cd24f2e1d")))))
- (mapped-devices mapped-devices)
- (file-systems
- (cons* (file-system
- (mount-point "/")
- (device "/dev/mapper/aisaka-root")
- (type "btrfs")
- (dependencies mapped-devices))
- (file-system (mount-point "/boot")
- (device (uuid "4f77b5fc-56ad-43ae-b6ec-e5adc8c48587"))
- (type "ext4"))
- %base-file-systems)))
+ (add-to-load-path "./services")
+
+ (define-module (aisaka-system-configuration)
+ #:use-module (gnu)
+ #:use-module (gnu packages cups)
+ #:use-module (gnu packages finance)
+ #:use-module (gnu services cups)
+ #:use-module (gnu services configuration)
+ #:use-module (gnu services desktop)
+ #:use-module (gnu services networking)
+ #:use-module (gnu services ssh)
+ #:use-module (gnu services xorg))
+
+ (define keyboard-layout
+ (keyboard-layout "pl"))
+
+ (define mapped-devices
+ `(,(mapped-device (source (uuid "887ac37f-2919-41a0-a62a-e1ff5ea2d6cc"))
+ (target "aisaka-root")
+ (type luks-device-mapping))))
+
+ (operating-system
+ (locale "pl_PL.utf8")
+ (timezone "Europe/Warsaw")
+ (keyboard-layout keyboard-layout)
+ (host-name "aisaka")
+ (users (cons* (user-account (name "marek")
+ (comment "Marek Paśnikowski")
+ (group "users")
+ (home-directory "/home/marek")
+ (supplementary-groups '("audio"
+ "netdev"
+ "tor"
+ "video"
+ "wheel")))
+ %base-user-accounts))
+ (packages (append (map (compose list
+ specification->package+output)
+ '("netcat-openbsd"
+ "nss-certs"
+ "trezord"
+ "trezord-udev-rules"))
+ %base-packages))
+ (services (cons* (service cups-service-type
+ (cups-configuration (extensions `(,cups-filters
+ ,epson-inkjet-printer-escpr))
+ (web-interface? #t)))
+ (service openssh-service-type)
+ (service tor-service-type
+ (tor-configuration (config-file (local-file "torrc"))
+ (control-socket? #t)))
+ (udev-rules-service 'trezord trezord-udev-rules)
+ (modify-services %desktop-services
+ (elogind-service-type
+ configuration =>
+ (elogind-configuration
+ (inherit configuration)
+ (handle-lid-switch 'ignore)))
+ (delete gdm-service-type))))
+ (bootloader (bootloader-configuration (bootloader grub-bootloader)
+ (targets '("/dev/sda"))
+ (keyboard-layout keyboard-layout)))
+ (swap-devices
+ `(,(swap-space (target (uuid "73bed3f9-be07-40ad-a228-577cd24f2e1d")))))
+ (mapped-devices mapped-devices)
+ (file-systems
+ (cons* (file-system
+ (mount-point "/")
+ (device "/dev/mapper/aisaka-root")
+ (type "btrfs")
+ (dependencies mapped-devices))
+ (file-system (mount-point "/boot")
+ (device (uuid "4f77b5fc-56ad-43ae-b6ec-e5adc8c48587"))
+ (type "ext4"))
+ %base-file-systems)))
#+end_src
+
+** TODO Home configuration
+
+#+name: home-dump
+#+begin_src scheme :tangle home-configuration.scm
+ (add-to-load-path "./services")
+
+ (define-module (aisaka-home-configuration)
+ #:use-module (flashrom)
+ #:use-module (gnu home)
+ #:use-module (gnu home services)
+ #:use-module (gnu home services shells)
+ #:use-module (gnu packages)
+ #:use-module (gnu services)
+ #:use-module (guix gexp))
+
+ (define allow-downgrades
+ "--allow-downgrades ")
+
+ (define config-prefix
+ "/home/marek/src/guix-config/")
+
+ (define pull-guix
+ "guix pull ")
+
+ (define pull-guix-
+ (string-append pull-guix
+ allow-downgrades
+ "--disable-authentication "))
+
+ (define guix-home
+ "guix home reconfigure ")
+
+ (define home-configuration
+ "home-configuration.scm ")
+
+ (define reconfigure-home
+ (string-append guix-home
+ config-prefix
+ home-configuration))
+
+ (define reconfigure-home-
+ (string-append reconfigure-home
+ allow-downgrades))
+
+ (define guix-system
+ "sudo guix system reconfigure ")
+
+ (define system-configuration
+ "system-configuration.scm ")
+
+ (define reconfigure-system
+ (string-append guix-system
+ config-prefix
+ system-configuration))
+
+ (define reconfigure-system-
+ (string-append reconfigure-system
+ allow-downgrades))
+
+ (define and
+ "&& ")
+
+ (define system-update
+ (string-append pull-guix
+ and
+ reconfigure-system
+ and
+ reconfigure-home))
+
+ (define system-update-
+ (string-append pull-guix-
+ and
+ reconfigure-system-
+ and
+ reconfigure-home-))
+
+ (home-environment
+ (packages (map (compose list
+ specification->package+output)
+ '("adwaita-icon-theme"
+ "alacritty"
+ "clamav"
+ "cpupower"
+ "dconf-editor"
+ "dmenu"
+ "emacs"
+ "emacs-aggressive-indent"
+ "emacs-eldoc"
+ "emacs-geiser"
+ "emacs-geiser-guile"
+ "emacs-nov-el"
+ "emacs-org-auto-tangle"
+ "emacs-org-contacts"
+ "emacs-org-contrib"
+ "font-google-noto"
+ "git"
+ "git-lfs"
+ "gnome-tweaks"
+ "gnupg"
+ "guile"
+ "guile-spec"
+ "hicolor-icon-theme"
+ "icecat"
+ "jami"
+ "libadwaita"
+ "libreoffice"
+ "newsboat"
+ "nm-tray"
+ "pwgen"
+ "seahorse"
+ "sicp"
+ "strace"
+ "sway"
+ "trezor-agent"
+ "unzip"
+ "waybar"
+ "zip")))
+ (services
+ `(,(service flashrom-service-type)
+ ,(service home-bash-service-type
+ (home-bash-configuration
+ (environment-variables '(("EDITOR" . "emacs -nw")
+ ("LIBGL_ALWAYS_SOFTWARE" . "1")
+ ("NVM_DIR" . "$HOME/src/nvm")
+ ("GUILE_AUTO_COMPILE" . "0")))
+ (aliases `(("grep" . "grep --color=auto ")
+ ("ll" . "ls -l ")
+ ("ls" . "ls -p --color=auto ")
+ ("pull-guix" . ,pull-guix)
+ ("pull-guix-" . ,pull-guix-)
+ ("reconfigure-home" . ,reconfigure-home)
+ ("reconfigure-home-" . ,reconfigure-home-)
+ ("reconfigure-system" . ,reconfigure-system)
+ ("reconfigure-system-" . ,reconfigure-system-)
+ ("system-update" . ,system-update)
+ ("system-update-" . ,system-update-)))
+ (bash-profile `(,(local-file "bash_profile")))
+ (bashrc `(,(local-file "bashrc")))))
+ ,(simple-service 'configuration-files
+ home-files-service-type
+ `((".config/git/config" ,(local-file "git.config"))
+ (".config/guix/shell-authorized-directories"
+ ,(local-file "guix-shell-authorized-directories"))
+ (".emacs" ,(local-file "emacs.el"))
+ (".ssh/config" ,(local-file "ssh.config"))
+ (".config/sway/config" ,(local-file "sway.config"))
+ (".config/waybar/config" ,(local-file "waybar.config")))))))
+
+#+end_src
+
diff --git a/emacs.el b/emacs.el
index b6e9fe1..4a9b21a 100644
--- a/emacs.el
+++ b/emacs.el
@@ -27,6 +27,8 @@
(global-display-fill-column-indicator-mode)
;; Prepare Literate Programming
+;; (require 'org-auto-tangle)
+(add-hook 'org-mode-hook 'org-auto-tangle-mode)
(setq-default org-confirm-babel-evaluate nil
org-src-fontify-natively t
org-src-tab-acts-natively t)
@@ -35,6 +37,9 @@
(shell . t )))
(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
+(setq-default org-auto-tangle-default t)
+
+;; Monospace Font in Ebook Reader
(setq-default nov-variable-pitch nil)
;; Disable Toolbar
diff --git a/home-configuration.scm b/home-configuration.scm
index cc29a52..28d9185 100644
--- a/home-configuration.scm
+++ b/home-configuration.scm
@@ -1,4 +1,7 @@
+(add-to-load-path "./services")
+
(define-module (aisaka-home-configuration)
+ #:use-module (flashrom)
#:use-module (gnu home)
#:use-module (gnu home services)
#:use-module (gnu home services shells)
@@ -82,6 +85,7 @@
"emacs-geiser"
"emacs-geiser-guile"
"emacs-nov-el"
+ "emacs-org-auto-tangle"
"emacs-org-contacts"
"emacs-org-contrib"
"font-google-noto"
@@ -108,7 +112,8 @@
"waybar"
"zip")))
(services
- `(,(service home-bash-service-type
+ `(,(service flashrom-service-type)
+ ,(service home-bash-service-type
(home-bash-configuration
(environment-variables '(("EDITOR" . "emacs -nw")
("LIBGL_ALWAYS_SOFTWARE" . "1")
@@ -125,12 +130,8 @@
("reconfigure-system-" . ,reconfigure-system-)
("system-update" . ,system-update)
("system-update-" . ,system-update-)))
- (bash-profile `(,(local-file (string-append config-prefix
- ".bash_profile")
- "bash_profile")))
- (bashrc `(,(local-file (string-append config-prefix
- ".bashrc")
- "bashrc")))))
+ (bash-profile `(,(local-file "bash_profile")))
+ (bashrc `(,(local-file "bashrc")))))
,(simple-service 'configuration-files
home-files-service-type
`((".config/git/config" ,(local-file "git.config"))
diff --git a/services/flashrom.scm b/services/flashrom.scm
new file mode 100644
index 0000000..1e04373
--- /dev/null
+++ b/services/flashrom.scm
@@ -0,0 +1,16 @@
+(define-module (flashrom)
+ #:use-module (gnu)
+ #:use-module (gnu home)
+ #:use-module (gnu home services)
+ #:use-module (gnu home services shells))
+
+(define-public flashrom-service-type
+ (service-type
+ (name 'flashrom)
+ (extensions
+ `(,(service-extension home-profile-service-type
+ (lambda (_)
+ (map specification->package
+ '("flashrom"))))))
+ (description "Flashrom installation.")
+ (default-value #f)))
diff --git a/system-configuration.scm b/system-configuration.scm
index 5a75459..51174f7 100644
--- a/system-configuration.scm
+++ b/system-configuration.scm
@@ -1,8 +1,11 @@
+(add-to-load-path "./services")
+
(define-module (aisaka-system-configuration)
#:use-module (gnu)
#:use-module (gnu packages cups)
#:use-module (gnu packages finance)
#:use-module (gnu services cups)
+ #:use-module (gnu services configuration)
#:use-module (gnu services desktop)
#:use-module (gnu services networking)
#:use-module (gnu services ssh)