summaryrefslogtreecommitdiff
path: root/.config/guix/modules/xorg.scm
blob: 11a2e3573ae236425be9c269fb3244325c73834d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Provides a set of my preferred      ;;
;; program and services for x desktops ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(define-module (modules xorg)
  #:use-module (gnu)
  #:use-module (gnu home services)
  #:use-module (gnu home services desktop)
  #:use-module (guix gexp)
  #:use-module (guix packages)
  #:use-module (modules ymir)
  #:export (bd-desktop-system-packages
            bd-desktop-system-services
            bd-desktop-home-services
            ))

(use-service-modules audio desktop networking
                     sound xorg)

(use-package-modules
 compton ;; picom
 emacs ;; emacs
 gnome ;; libnotify
 image-viewers ;; feh
 pulseaudio ;; pavucontrol, pulseaudio,
 suckless ;; dmenu
 wm ;; dunst
 xdisorg ;; xrdb
 xorg ;; xf86-input-libinput, xf86-video-fbdev, xinit...
 )

(define bd-desktop-system-packages
  (list
   dmenu
   dunst
   emacs
   libnotify
   pavucontrol
   picom
   pulseaudio

   feh
   xf86-input-libinput
   xf86-video-fbdev
   xinit
   xinput
   xmodmap
   xorg-server
   xrandr
   xrdb
   xset
   xss-lock
   ))

(define %keyboard-udev-rule
  (udev-rule
   "90-keyboard-hotplug.rules"
   (string-append "ATTR{idVendor}==\"04b4\", ATTR{idProduct}==\"0510\", ACTION==\"add\", RUN+=\"/run/current-system/profile/bin/touch /tmp/keyboard_plugged\" RUN+=\"/run/current-system/profile/bin/chown " username " /tmp/keyboard_plugged\"")))

(define bd-desktop-system-services
  (list
   (service screen-locker-service-type
            (screen-locker-configuration
             (name "slock")
             (program (file-append slock "/bin/slock"))))

   (service x11-socket-directory-service-type)
   (udev-rules-service 'keyboard-hotplug %keyboard-udev-rule)

   (service pulseaudio-service-type)
   (service alsa-service-type)))

(define bd-desktop-home-services
  (list
   (simple-service 'dotfiles
                   home-files-service-type
                   `((".Xmodmap"
                      ,(plain-file "Xmodmap" "
clear      lock
clear   control
clear      mod1
clear      mod2
clear      mod3
clear      mod4
clear      mod5
keycode      37 = Hyper_L
keycode      66 = Control_L
add     control = Control_L Control_R
add        mod1 = Alt_L Alt_R Meta_L
add        mod2 = Num_Lock
add        mod3 = Hyper_L
add        mod4 = Super_L Super_R
add        mod5 = Mode_switch ISO_Level3_Shift
"))
                     (".xinitrc"
                      ,(plain-file "xinitrc" "
#!/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 some programs
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
    for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
        [ -x \"$f\" ] && . \"$f\"
    done
    unset f
fi

picom &
dwmstatus &
eval \"$(ssh-agent -s)\"
emacs --daemon
xss-lock -- slock &
set-bg
xset r rate 250 70
xset s 600
touchpad-defaults
xrandr-toggle
xkeyboard-auto &
exec dwm"))
                     (".config/gtk-2.0/settings.ini"
                      ,(plain-file "settings.ini" "
[Settings]
gtk-application-prefer-dark-theme=1\n"))
                     (".config/gtk-3.0/settings.ini"
                      ,(plain-file "settings.ini" "
[Settings]
gtk-application-prefer-dark-theme=1\n"))))))