diff options
Diffstat (limited to 'users')
| -rw-r--r-- | users/id1000.scm | 583 | ||||
| -rw-r--r-- | users/id1001.scm | 94 | ||||
| -rw-r--r-- | users/uid1000-gitconfig | 36 | ||||
| -rw-r--r-- | users/uid1000-gitignore | 20 | ||||
| -rw-r--r-- | users/uid1000-test-channels.scm | 55 | ||||
| -rw-r--r-- | users/vmail.scm | 34 |
6 files changed, 351 insertions, 471 deletions
diff --git a/users/id1000.scm b/users/id1000.scm index cfc4827..6a9a9f8 100644 --- a/users/id1000.scm +++ b/users/id1000.scm @@ -1,298 +1,66 @@ -(define-module (users id1000) - ;; home-environment - #:use-module (gnu home) - - ;; home-profile-service-type - ;; home-xdg-configuration-files-service-type - #:use-module (gnu home services) - - ;; gparted - #:use-module (gnu packages disk) - - ;; emacs - #:use-module (gnu packages emacs) - - ;; emacs-org-roam - ;; emacs-paredit - #:use-module (gnu packages emacs-xyz) +;;; SPDX-License-Identifier: GPL-3.0-or-later +;;; SPDX-FileCopyrightText: 2026 Marek Paśnikowski <marek@marekpasnikowski.pl> - ;; git - #:use-module (gnu packages version-control) - - ;; simple-service - #:use-module (gnu services) +;;; COPYRIGHT NOTICE +;;; +;;; Copyright 2026, Marek Paśnikowski <marek@marekpasnikowski.pl> - ;; user-account - #:use-module (gnu system shadow) +;;; LICENSE NOTICE +;;; +;;; This library 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. +;;; +;;; This library 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 library. +;;; If not, see <https://www.gnu.org/licenses/>. - ;; local-file +(define-module (users id1000) #:use-module (guix gexp) - - ;; %suweren-home-services - #:use-module (suweren home) - - #:use-module (guix records) - #:use-module (ice-9 match)) - -(define-record-type* <dkimproxy-out-signature-configuration> - dkimproxy-out-signature-configuration - make-dkimproxy-out-signature-configuration - dkimproxy-out-signature-configuration? - (type dkimproxy-out-signature-configuration-type - (default 'dkim)) - (key dkimproxy-out-signature-configuration-key - (default #f)) - (algorithm dkimproxy-out-signature-configuration-algorithm - (default #f)) - (method dkimproxy-out-signature-configuration-method - (default #f)) - (domain dkimproxy-out-signature-configuration-domain - (default #f)) - (identity dkimproxy-out-signature-configuration-identity - (default #f)) - (selector dkimproxy-out-signature-configuration-selector - (default #f))) - -(define-public generate-dkimproxy-out-signature-configuration - (match-lambda - (($ - <dkimproxy-out-signature-configuration> - type - key - algorithm - method - domain - identity - selector ) - (string-append - (match type - ('dkim "dkim") - ('domainkeys "domainkeys")) - (if (or key algorithm method domain identity selector) - (string-append - "(" - (string-join - `(,@ (if key - (list (string-append "key=" key)) - '()) - ,@ (if algorithm - (list (string-append "a=" algorithm)) - '()) - ,@ (if method - (list (string-append "c=" method)) - '()) - ,@ (if domain - (list (string-append "d=" domain)) - '()) - ,@ (if identity - (list (string-append "i=" identity)) - '()) - ,@ (if selector - (list (string-append "s=" selector)) - '())) - ",") - ")") - ""))))) - -(define-record-type* <dkimproxy-out-configuration> - dkimproxy-out-configuration - make-dkimproxy-out-configuration - dkimproxy-out-configuration? - (package dkimproxy-out-configuration-package - (default (@ (gnu packages mail) dkimproxy))) - (listen dkimproxy-out-configuration-listen - (default #f)) - (relay dkimproxy-out-configuration-relay - (default #f)) - (list-id-map dkimproxy-out-configuration-list-id-map - (default '())) - (sender-map dkimproxy-out-configuration-sender-map - (default '())) - (reject-error? dkimproxy-out-configuration-sender-reject-error? - (default #f)) - (config-file dkimproxy-out-configuration-config-file - (default #f))) - -(define (generate-map-file config filename) - (apply - plain-file - filename - (map (lambda (config) - (match config - ((selector (config ...)) - (string-append - selector " " - (string-join - (map - generate-dkimproxy-out-signature-configuration - config) - "\n"))) - ((selector config) - (string-append - selector " " - (generate-dkimproxy-out-signature-configuration - config))))) - config))) - -(define dkimproxy-out-shepherd-service - (match-lambda - (($ - <dkimproxy-out-configuration> - package - listen - relay - list-id-map - sender-map - reject-error? - config-file) - (list - ((@ (gnu services shepherd) shepherd-service) - (provision '(dkimproxy-out)) - (requirement '(loopback)) - (documentation "Outbound DKIM proxy.") - (start - (let ((proxy (file-append package "/bin/dkimproxy.out"))) - (if config-file - #~ - (make-forkexec-constructor - (list - #$ - proxy - (string-append "--conf_file=" #$ config-file) - "--pidfile=/var/run/dkimproxy.out.pid" - "--user=dkimproxy" "--group=dkimproxy") - #:pid-file "/var/run/dkimproxy.out.pid") - (let* - ((first-signature - (match sender-map - (((sender (signature _ ...)) _ ...) signature) - (((sender signature) _ ...) signature))) - (domains - (apply append - (map - (lambda (sender) - (match sender - (((domains ...) config) domains) - ((domain config) domain))) - sender-map))) - (sender-map - (generate-map-file sender-map "sender.map")) - (listid-map - (if (null? list-id-map) - #f - (generate-map-file list-id-map "listid.map"))) - (keyfile - (dkimproxy-out-signature-configuration-key - first-signature)) - (selector - (dkimproxy-out-signature-configuration-selector - first-signature)) - (method - (dkimproxy-out-signature-configuration-method - first-signature)) - (signature - (match (dkimproxy-out-signature-configuration-type - first-signature) - ('dkim "dkim") - ('domainkeys "domainkeys")))) - #~ - (make-forkexec-constructor - `(,#$ - proxy - "--pidfile=/var/run/dkimproxy.out.pid" - "--user=dkimproxy" "--group=dkimproxy" - ,(string-append "--listen=" #$ listen) - ,(string-append "--relay=" #$ relay) - ,(string-append "--sender_map=" #$ sender-map) - ,@ (if #$ listid-map - (list - (string-append "--listid_map=" #$ listid-map)) - '()) - ,(string-append "--domain=" #$ domains) - ,(string-append "--keyfile=" #$ keyfile) - ,(string-append "--selector=" #$ selector) - ,@ (if #$ method - (list - (string-append "--method=" #$ method)) - '()) - ,@ (if #$ reject-error? - '("--reject_error") - '()) - ,@ (if #$ signature - (list - (string-append "--signature=" #$ signature)) - '()))))))) - (stop #~ (make-kill-destructor))))))) - -(define %dkimproxy-accounts - (list (user-group (name "dkimproxy") - (system? #t)) - (user-account (name "dkimproxy") - (group "dkimproxy") - (system? #t) - (comment "Dkimproxy user") - (home-directory "/var/empty") - (shell (file-append (@ (gnu packages admin) - shadow) - "/sbin/nologin"))))) - -(define dkimproxy-out-service-type - (service-type - (name 'dkimproxy-out) - (description "stub") - (extensions - (list - (service-extension - account-service-type - (const %dkimproxy-accounts)) - (service-extension - (@ (gnu services shepherd) shepherd-root-service-type) - dkimproxy-out-shepherd-service))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(define dkimproxy-signature-dkim - (dkimproxy-out-signature-configuration - (algorithm "rsa-sha256") - (key "/etc/mail/dkim/marekpasnikowski.pl.key") - (method "relaxed") - (selector "dkim") - (type 'dkim))) - -(define dkimproxy-signature-domainkeys - (dkimproxy-out-signature-configuration - (method "mofws") - (type 'domainkeys))) - -;;;;; - -(define aliases-file - ((@ (guix gexp) mixed-text-file) - "aliases" - "@ vmail\n")) - -(define blacklist-file - ((@ (guix gexp) mixed-text-file) - "blacklist" - "@yahoo.com.cn\n" - "@qq.com\n" - "@fnac.com\n" - "@just-aero.us\n" - "@elitetorrent1.com\n")) - -(define dkimproxy-signatures-marekpasnikowski - (list dkimproxy-signature-dkim - dkimproxy-signature-domainkeys)) + #:use-module (sovereign services mail) + #:use-module ( (gnu home) + #:prefix gnu:home:) + #:use-module ( (gnu home services) + #:prefix gnu:home:services:) + #:use-module ( (gnu home services desktop) + #:prefix gnu:home:services:desktop:) + #:use-module ( (gnu home services shepherd) + #:prefix gnu:home:services:shepherd:) + #:use-module ( (gnu home services sound) + #:prefix gnu:home:services:sound:) + #:use-module ( (gnu home services ssh) + #:prefix gnu:home:services:ssh:) + #:use-module ( (gnu packages audio) + #:prefix gnu:packages:audio:) + #:use-module ( (gnu packages disk) + #:prefix gnu:packages:disk:) + #:use-module ( (gnu packages version-control) + #:prefix gnu:packages:version-control:) + #:use-module ( (gnu services) + #:prefix gnu:services:) + #:use-module ( (gnu system accounts) + #:prefix gnu:system:accounts:) + #:use-module ( (sovereign packages emacs) + #:prefix sovereign:packages:emacs:) + #:use-module ( (sovereign services admin) + #:prefix sovereign:services:admin:) + #:use-module ( (sovereign services fontutils) + #:prefix sovereign:services:fontutils:) + #:use-module ( (sovereign systems) + #:prefix sovereign:systems:)) (define dovecot-imap-login-inet-configuration ((@ (gnu services mail) inet-listener-configuration) - (address "192.168.10.2") + (address "192.168.1.2") (port 993) (protocol "imaps"))) (define dovecot-lmtp-inet-configuration ((@ (gnu services mail) inet-listener-configuration) - (address "192.168.10.2 127.0.0.1") + (address "192.168.1.2 127.0.0.1") (port 24) (protocol "lmtp"))) @@ -333,20 +101,8 @@ (auto "subscribe") (special-use (list "\\Trash")))) -(define relays-file - ((@ (guix gexp) mixed-text-file) - "other-relays" - "mx1.forwardemail.net\n" - "mx2.forwardemail.net\n")) - -(define smtpd-keys - "/secrets/smtpd") - ;;; -(define dkimproxy-sender-marekpasnikowski - `("marekpasnikowski.pl" ,dkimproxy-signatures-marekpasnikowski)) - (define dovecot-imap ((@ (gnu services mail) protocol-configuration) (name "imap"))) @@ -389,76 +145,6 @@ "uid=vmail")) (driver "static"))) -(define (opensmtpd-config interface - domain) - ((@ (guix gexp) mixed-text-file) - "smtpd.conf" - "# This is the smtpd server system-wide configuration file.\n" - "# See smtpd.conf(5) for more information.\n" - "\n" - "# My TLS certificate and key\n" - "pki marekpasnikowski.pl cert \"/etc/letsencrypt/live/" domain "/fullchain.pem\"\n" - "pki marekpasnikowski.pl key \"/etc/letsencrypt/live/" domain "/privkey.pem\"\n" - "\n" - "# Edit this file to add add more virtual users (passwords are read in that file\n" - "# instead of /etc/passwd\n" - "table passwd file:" smtpd-keys "\n" - "\n" - "table other-relays file:" relays-file "\n" - "table blacklist file:" blacklist-file "\n" - "\n" - "# A simple spam filter\n" - "# filter spam-filter phase mail-from match mail-from <blacklist> reject \"555\"\n" - "\n" - "# port 25 is used only for receiving from external servers, and they may start\n" - "# a TLS session if they want.\n" - "listen on " interface " port 25 # tls pki marekpasnikowski.pl filter spam-filter\n" - "\n" - "# For sending messages from outside of this server, you need to authenticate and\n" - "# use TLS.\n" - "listen on " interface " port 465 smtps pki marekpasnikowski.pl mask-src auth <passwd>\n" - "\n" - "# Localhost is used by the .onion, so we use the same configuration for \n" - "# local connections." - "listen on lo port 25 tls pki marekpasnikowski.pl filter spam-filter\n" - "# Since incoming connection uses tor, we don't need tls, but still require\n" - "# authentication; we're not a relay\n" - "# listen on lo port 587 tls pki marekpasnikowski.pl mask-src auth <passwd>\n" - "\n" - "# DKIMproxy\n" - "listen on lo port 10028 tag DKIM_OUT\n" - "\n" - "# The socket is considered an internal connection\n" - "listen on socket mask-src\n" - "\n" - "# Maybe it'll work better if we connect to gmail only with v4?\n" - "# limit mta for domain gmail.com inet4\n" - "\n" - "# TODO: manage these files directly in the configuration?\n" - "# If you edit the file, you have to run \"smtpctl update table aliases\"\n" - "table aliases file:" aliases-file "\n" - "\n" - "# We define some actions\n" - "action receive lmtp \"/var/run/dovecot/lmtp\" rcpt-to virtual <aliases>\n" - "action outbound relay helo \"" domain "\"\n" - "action godkim relay host smtp://127.0.0.1:10027\n" - "\n" - "# We accept to relay any mail from authenticated users\n" - "match for any from any auth action godkim\n" - "match tag DKIM_OUT for any action outbound\n" - "\n" - "# Then, we reject on some other conditions:\n" - "\n" - "# If the mail tries to impersonate us\n" - "# match !from src <other-relays> mail-from \"@marekpasnikowski.pl\" for any reject\n" - "\n" - "# If it comes from someone on the blacklist\n" - "match from any mail-from <blacklist> reject\n" - "\n" - "# Finally, if we accept incoming messages\n" - "match from any for domain \"marekpasnikowski.pl\" action receive\n" - "match for local action receive\n" )) - (define ssl-cert-path (string-append "</etc/letsencrypt/live/" "marekpasnikowski.pl" @@ -471,12 +157,6 @@ ;;; -(define dkimproxy-out-configuration* - (dkimproxy-out-configuration - (listen "127.0.0.1:10027") - (relay "172.0.0.1:10028") - (sender-map `(,dkimproxy-sender-marekpasnikowski)))) - (define dovecot-configuration* ((@ (gnu services mail) dovecot-configuration) (disable-plaintext-auth? #t) @@ -494,76 +174,123 @@ (userdbs (list dovecot-userdb-static-configuration)))) (define groups - (list "kvm" + (list "audio" + ;; "libvirt" + "netdev" + "video" "wheel")) -(define opensmtpd-configuration* - ((@ (gnu services mail) opensmtpd-configuration) - (config-file (opensmtpd-config "enp1s0" - "marekpasnikowski.pl")))) - ;;; -(define-public dkim-service - (service dkimproxy-out-service-type - dkimproxy-out-configuration*)) +(define environment-variables + (let + ( (l-variables (list '("EDITOR" . "kate -s sesja -b")))) + (gnu:services:simple-service 'id1000-environment-variables + gnu:home:services:home-environment-variables-service-type + l-variables))) (define-public dovecot-service - (service (@ (gnu services mail) dovecot-service-type) + (gnu:services:service (@ (gnu services mail) dovecot-service-type) dovecot-configuration*)) -(define-public smtp-service - (service (@ (gnu services mail) opensmtpd-service-type) - opensmtpd-configuration*)) +(define openssh-host/* + (gnu:home:services:ssh:openssh-host + (name "top-level") + (host-name "*") + (extra-content (string-append "ServerAliveInterval 5\n" + "ServerAliveCountMax 11\n")))) + +(define openssh-configuration + (let + ( (l-aisaka (mixed-text-file "aisaka-openssh-keys" + "aisaka ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM0Eh0q54myeSEironEP9DEKl+ownYuH7oSgAVuLIDNt\n" + "[git.marekpasnikowski.pl]:23 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM0Eh0q54myeSEironEP9DEKl+ownYuH7oSgAVuLIDNt\n" + "[www.marekpasnikowski.pl]:23 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM0Eh0q54myeSEironEP9DEKl+ownYuH7oSgAVuLIDNt\n")) + (l-akashi (mixed-text-file "akashi-openssh-keys" + "akashi ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICtEYtiph2TwshHHSQhLL7A2ZvFMCogWuI8vfS3jLQsm\n")) + (l-ayase (mixed-text-file "ayase-openssh-keys" + "ayase ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIC9WLFRywGMc2Il35oLTSlG6VwdOreoMcj7SbiEt75i\n")) + (l-marek (mixed-text-file "marek-openssh-keys" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK4THTYnHCc/ihCJNKJtGTNu1zCnLndbMHnxnrxzJk+N marek@aisaka\n" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFzC1VvW6TB4pMuGyfTM36T7Ar7FZqSXc7kCoVDNwtUX marek@akashi\n" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMefVFbVR/yQ639LnmVacvaifYFJSocxi9wWJKUQJ/Vz marek@ayase\n" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJew7ti1qr545Z6OUZ/xcNUg7ib6P0pTbSZqFpSvNhKU marek@mcdowell\n" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICBo2coChmWHQn9BEbp0dA7DQG7CPEweVcsmnaIVmXyR marek@rakan\n")) + (l-mcdowell (mixed-text-file "mcdowell-openssh-keys" + "mcdowell ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP/EueZjfqWhdML17z+Da7+KWHofXBpP020ff1vKedOr\n")) + (l-rakan (mixed-text-file "rakan-openssh-keys" + "rakan ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxlIhNlkWCNA+l/RiOJztB+VWhuJtDTUvSwwlE3MpgJ\n" + "[www.marekpasnikowski.pl]:24 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxlIhNlkWCNA+l/RiOJztB+VWhuJtDTUvSwwlE3MpgJ\n"))) + (gnu:home:services:ssh:home-openssh-configuration + (hosts (list openssh-host/*)) + (known-hosts (list l-aisaka + l-akashi + l-mcdowell + l-rakan)) + (authorized-keys (list l-marek))))) + +(define openssh + (gnu:services:service + gnu:home:services:ssh:home-openssh-service-type + openssh-configuration)) (define-public uid1000-name "marek") (define-public uid1000-account - (user-account (name uid1000-name) - (group "users") - (supplementary-groups groups) - (uid 1000) - (comment "Marek Paśnikowski") - (home-directory "/home/marek"))) + (gnu:system:accounts:user-account + (name uid1000-name) + (password #f) + (uid 1000) + (group "users") + (supplementary-groups groups) + (comment "Marek Paśnikowski") + (home-directory "/home/marek"))) (define-public uid1000-home-environment - (lambda (host-name*) - (let* ((gitconfig-file (local-file "uid1000-gitconfig")) ; TODO modularize - (gitignore-file (local-file "uid1000-gitignore")) ; TODO review the contents - - (gitconfig (list "git/config" - gitconfig-file)) - (gitignore (list "git/ignore" - gitignore-file)) - - (emacs-packages (list emacs - emacs-org-roam - emacs-paredit)) - (git-configuration-files (list gitconfig - gitignore)) - (git-packages (list git)) - (packages (list gparted)) - - (emacs-software (simple-service 'emacs-packages - home-profile-service-type - emacs-packages)) - (git-configuration (simple-service 'git-configuration - home-xdg-configuration-files-service-type - git-configuration-files)) - (git-software (simple-service 'git-packages - home-profile-service-type - git-packages)) - (profile (simple-service 'user-packages - home-profile-service-type - packages)) - - (%suweren-home-services* (%suweren-home-services host-name*)) - (user-services (list emacs-software - git-configuration - git-software - profile)) + (let + ( (l-gitconfig-file (local-file "uid1000-gitconfig")) ; TODO modularize + (l-gitignore-file (local-file "uid1000-gitignore")) ; TODO review the contents + (l-home-dbus-service (gnu:services:service gnu:home:services:desktop:home-dbus-service-type)) + (l-home-files `( (".test-channels.scm" ,(local-file "./uid1000-test-channels.scm")))) + (l-home-pipewire-service (gnu:services:service gnu:home:services:sound:home-pipewire-service-type)) + (l-home-shepherd-service (gnu:services:service gnu:home:services:shepherd:home-shepherd-service-type))) + (let + ( (l-gitconfig (list "git/config" + l-gitconfig-file)) + (l-gitignore (list "git/ignore" + l-gitignore-file)) + (l-fontconfig (sovereign:services:fontutils:home-fontconfig-service-type #t + #t + "Noto")) + (l-home-files-service (gnu:services:simple-service 'home-files + gnu:home:services:home-files-service-type + l-home-files))) + (let* + ( (l-git-configuration-files (list l-gitconfig + l-gitignore)) + (l-git-configuration (gnu:services:simple-service 'git-configuration + gnu:home:services:home-xdg-configuration-files-service-type + l-git-configuration-files)) + (l-user-services (list sovereign:systems:bash-configuration + environment-variables + l-git-configuration + l-home-files-service + l-fontconfig))) + (gnu:home:home-environment + (packages (cons* gnu:packages:version-control:git + gnu:packages:disk:gparted + sovereign:systems:common-home-environment-packages)) + (services (cons* sovereign:services:admin:update-commands + l-home-dbus-service + l-home-pipewire-service + l-home-shepherd-service + openssh + sovereign:packages:emacs:spacemacs-home-files + sovereign:packages:emacs:spacemacs-home-profile + sovereign:packages:emacs:spacemacs-variables + l-user-services))))))) - (services* (append %suweren-home-services* - user-services))) - (home-environment (services services*))))) +(define-public named-home-environment + (list uid1000-name + uid1000-home-environment)) diff --git a/users/id1001.scm b/users/id1001.scm index 26a76f6..8a2110e 100644 --- a/users/id1001.scm +++ b/users/id1001.scm @@ -1,45 +1,63 @@ -(define-module (users id1001) - ;; home-environment - #:use-module (gnu home) - - ;; home-profile-service-type - ;; home-xdg-configuration-files-service-type - #:use-module (gnu home services) - - ;; simple-service - #:use-module (gnu services) +;;; SPDX-License-Identifier: GPL-3.0-or-later +;;; SPDX-FileCopyrightText: 2026 Marek Paśnikowski <marek@marekpasnikowski.pl> - ;; user-account - #:use-module (gnu system shadow) +;;; COPYRIGHT NOTICE +;;; +;;; Copyright 2026, Marek Paśnikowski <marek@marekpasnikowski.pl> - ;; %suweren-home-services - #:use-module (suweren home)) +;;; LICENSE NOTICE +;;; +;;; This library 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. +;;; +;;; This library 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 library. +;;; If not, see <https://www.gnu.org/licenses/>. -;; string -(define-public uid1001-name - "lilia") - -;; (string) -> -;; record user-account -(define-public uid1001-account - (user-account (name uid1001-name) - (group "users") - (uid 1001) - (comment "Liliana Ruszuk") - (home-directory "/home/lilia"))) +(define-module (users id1001) + #:use-module ( (gnu home) + #:prefix gnu:home:) + #:use-module ( (gnu packages libreoffice) + #:prefix gnu:packages:libreoffice:) + #:use-module ( (gnu system accounts) + #:prefix gnu:system:accounts:) + #:use-module ( (nongnu packages mozilla) + #:prefix nongnu:packages:mozilla:) + #:use-module ( (sovereign services admin) + #:prefix sovereign:services:admin:) + #:use-module ( (sovereign services fontutils) + #:prefix sovereign:services:fontutils:) + #:use-module ( (sovereign systems) + #:prefix sovereign:systems:)) -;; record home-environment -(define-public uid1001-home-environment - (lambda (host-name*) - (let* ((packages (list )) +(define name + "janusz") - (profile (simple-service 'user-packages - home-profile-service-type - packages)) +(define home-environment + (let + ( (l-fontconfig (sovereign:services:fontutils:home-fontconfig-service-type #t + #t + "Noto"))) + (let + ( (l-services (list sovereign:systems:bash-configuration + sovereign:services:admin:update-commands + l-fontconfig))) + (gnu:home:home-environment + (packages (cons* gnu:packages:libreoffice:libreoffice + sovereign:systems:common-home-environment-packages)) + (services l-services))))) - (%suweren-home-services* (%suweren-home-services host-name*)) - (user-services (list profile)) +(define-public named-home-environment + (list name + home-environment)) - (services* (append %suweren-home-services* - user-services))) - (home-environment (services services*))))) +(define-public user-account + (gnu:system:accounts:user-account + (name name) + (password #f) + (group "users") + (supplementary-groups (list "wheel")))) diff --git a/users/uid1000-gitconfig b/users/uid1000-gitconfig index 300f906..c040d80 100644 --- a/users/uid1000-gitconfig +++ b/users/uid1000-gitconfig @@ -1,10 +1,36 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2026 Marek Paśnikowski <marek@marekpasnikowski.pl> + +# COPYRIGHT NOTICE +# +# Copyright 2026, Marek Paśnikowski <marek@marekpasnikowski.pl> + +# LICENSE NOTICE +# +# This library 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. +# +# This library 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 library. +# If not, see <https://www.gnu.org/licenses/>. + +[core] +quotePath = false + [commit] - gpgsign = true +gpgsign = true [user] - email = marek@marekpasnikowski.pl - name = Marek Paśnikowski - signingkey = 6D81B1207711899F +email = marek@marekpasnikowski.pl +name = Marek Paśnikowski +signingkey = 6D81B1207711899F [push] - autoSetupRemote = true +autoSetupRemote = true + +[safe] +directory = * diff --git a/users/uid1000-gitignore b/users/uid1000-gitignore index 98e588f..73a9355 100644 --- a/users/uid1000-gitignore +++ b/users/uid1000-gitignore @@ -1,3 +1,23 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2026 Marek Paśnikowski <marek@marekpasnikowski.pl> + +# COPYRIGHT NOTICE +# +# Copyright 2026, Marek Paśnikowski <marek@marekpasnikowski.pl> + +# LICENSE NOTICE +# +# This library 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. +# +# This library 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 library. +# If not, see <https://www.gnu.org/licenses/>. + # -*- mode: gitignore; -*- *~ \#*\# diff --git a/users/uid1000-test-channels.scm b/users/uid1000-test-channels.scm new file mode 100644 index 0000000..adce628 --- /dev/null +++ b/users/uid1000-test-channels.scm @@ -0,0 +1,55 @@ +;;; SPDX-License-Identifier: GPL-3.0-or-later +;;; SPDX-FileCopyrightText: 2026 Marek Paśnikowski <marek@marekpasnikowski.pl> + +;;; COPYRIGHT NOTICE +;;; +;;; Copyright 2026, Marek Paśnikowski <marek@marekpasnikowski.pl> + +;;; LICENSE NOTICE +;;; +;;; This library 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. +;;; +;;; This library 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 library. +;;; If not, see <https://www.gnu.org/licenses/>. + +(define-module (users uid1000-test-channels) + #:use-module ( (guix channels) + #:prefix guix:channels:) + #:use-module ( (sovereign channels) + #:prefix sovereign:channels:)) + +(define test-deployment-channel + (guix:channels:channel + (inherit sovereign:channels:deployment-channel) + (branch "test"))) + +(define test-guix-channel + (guix:channels:channel + (inherit sovereign:channels:default-guix-channel) + (branch "test"))) + +(define test-nonguix-channel + (guix:channels:channel + (inherit sovereign:channels:nonguix-channel) + (branch "test"))) + +(define test-rde-channel + (guix:channels:channel + (inherit sovereign:channels:rde-channel))) + +(define test-sovereign-channel + (guix:channels:channel + (inherit sovereign:channels:sovereign-channel) + (branch "test"))) + +(list test-deployment-channel + test-guix-channel + test-nonguix-channel + test-rde-channel + test-sovereign-channel) diff --git a/users/vmail.scm b/users/vmail.scm new file mode 100644 index 0000000..41454f1 --- /dev/null +++ b/users/vmail.scm @@ -0,0 +1,34 @@ +;;; SPDX-License-Identifier: GPL-3.0-or-later +;;; SPDX-FileCopyrightText: 2026 Marek Paśnikowski <marek@marekpasnikowski.pl> + +;;; COPYRIGHT NOTICE +;;; +;;; Copyright 2026, Marek Paśnikowski <marek@marekpasnikowski.pl> + +;;; LICENSE NOTICE +;;; +;;; This library 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. +;;; +;;; This library 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 library. +;;; If not, see <https://www.gnu.org/licenses/>. + +(define-module (users vmail) + #:use-module ((gnu system accounts) + #:prefix gnu:system:accounts:)) + +(define vmail-name + "vmail") + +(define-public vmail-account + (gnu:system:accounts:user-account + (name vmail-name) + (group vmail-name) + (comment "used to own and manage mailboxes") + (home-directory "/home/vmail") + (system? #t))) |
