diff options
Diffstat (limited to '')
-rw-r--r-- | modules/common/abstract-nord.png.license | 9 | ||||
-rw-r--r-- | modules/common/default.nix | 142 | ||||
-rw-r--r-- | modules/common/hooks/default.nix | 17 | ||||
-rwxr-xr-x | modules/common/hooks/scripts/sync-git-repo.sh | 23 | ||||
-rw-r--r-- | modules/common/nixos_shell_configuration.nix | 66 | ||||
-rw-r--r-- | modules/common/projects.json | 67 | ||||
-rw-r--r-- | modules/common/projects.json.license | 9 |
7 files changed, 314 insertions, 19 deletions
diff --git a/modules/common/abstract-nord.png.license b/modules/common/abstract-nord.png.license new file mode 100644 index 00000000..eae6a84c --- /dev/null +++ b/modules/common/abstract-nord.png.license @@ -0,0 +1,9 @@ +nixos-config - My current NixOS configuration + +Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +SPDX-License-Identifier: GPL-3.0-or-later + +This file is part of my nixos-config. + +You should have received a copy of the License along with this program. +If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. diff --git a/modules/common/default.nix b/modules/common/default.nix index 232c329d..a272bd52 100644 --- a/modules/common/default.nix +++ b/modules/common/default.nix @@ -1,12 +1,33 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. # This file contains common configuration applied to every host. # It should only `enable` options defined in the `modules/by-name` directory. { config, pkgs, lib, + # Needed for nixos-shell + libraries, + modules, + openPRsNixpkgs, + packageSets, + system, + self, + externalDependencies, + externalBinaries, ... }: { + # TODO(@bpeetz): Move this file to default options in their respective modules. <2025-05-31> + soispha = { + age.enable = true; boot.enable = true; cleanup.enable = true; documentation.enable = true; @@ -16,26 +37,80 @@ enableEmoji = true; }; + hardware = { + enable = lib.mkDefault true; + }; home-manager.enable = true; impermanence = { enable = true; directories = [ "/etc/nixos" - "/var/log" "/var/lib/systemd" - "/var/lib/nixos" ]; }; + + nixos-shell = { + enable = lib.mkDefault true; + configuration = { + specialArgs = { + inherit + libraries + modules + ; + }; + value = lib.mkMerge [ + { + _module.args = { + inherit + # extra package sources + openPRsNixpkgs + packageSets + # extra information + system + # nix registry + self + externalDependencies + # bins + # TODO: Integrate these into `pkgs/by-name` <2024-05-22> + externalBinaries + ; + }; + } + + { + require = [ + ./nixos_shell_configuration.nix + + ../../modules + ../../modules/common + ]; + } + ]; + }; + mounts = {}; + }; + polkit.enable = true; power.enable = true; + xdg.enable = true; services = { adb = { enable = true; user = "soispha"; }; + backup = { + storagebox = { + enable = lib.mkDefault true; + user = "u459143-sub1"; + }; + local = { + enable = lib.mkDefault true; + }; + }; fwupd.enable = true; + mako.enable = true; mpd = { enable = true; directories = let @@ -56,10 +131,10 @@ printing.enable = true; scanning.enable = true; snapper.enable = true; - steam.enable = false; + water-reminder.enable = true; systemDiff.enable = true; unison = { - enable = true; + enable = lib.mkDefault true; foreign.userName = "soispha"; dataDir = "${config.home-manager.users.soispha.xdg.dataHome}/unison"; @@ -72,14 +147,20 @@ config.home-manager.users.soispha.home.file); in [ - # already synchronized by the taskserver + # TODO(@bpeetz): Move these to their respective modules <2025-05-09> + # Already synchronized by TaskChampion sync server "~/.local/share/task" + # Already synchronized by atuin sync server + "~/.local/share/atuin" + # Already synchronized by mbsync + "~/.local/share/maildir" # Should not be synchronized "~/.local/share/unison" - # Is just to big to be synchronized (# TODO: Work around that <2024-08-31> ) + # These are just to big to be synchronized (# TODO: Work around that <2024-08-31> ) "~/media/music" + "~/.local/share/Steam" ] ++ homeManagerSymlinks; @@ -89,8 +170,6 @@ "~/.local/share" "~/.local/.Trash-1000" - "~/.mozilla/firefox" - "~/media" "~/school" "~/repos" @@ -99,18 +178,30 @@ }; programs = { + i3bar-river.enable = true; + i3status-rust.enable = true; + + qutebrowser = { + enable = true; + }; + nvim = { enable = true; shell = pkgs.zsh; }; - atuin.enable = true; + atuin = { + enable = true; + enableAge = lib.mkDefault true; + }; + cargo.enable = true; direnv.enable = true; git.enable = true; imv.enable = true; less.enable = true; lf.enable = true; + gpg.enable = true; river = { - enable = true; + enable = lib.mkDefault true; init = { rules = [ { @@ -144,12 +235,12 @@ title = "*"; action = "ssd"; } - # This remove the focus border around Firefox (which is useful because the Firefox is nearly always in its own tag.) - { - app-id = "firefox"; - title = "*"; - action = "csd"; - } + # # This remove the focus border around Firefox (which is useful because the Firefox is nearly always in its own tag.) + # { + # app-id = "firefox"; + # title = "*"; + # action = "csd"; + # } ]; generalSettings = { # background @@ -172,8 +263,8 @@ pointer-12951-6505-ZSA_Technology_Labs_Moonlander_Mark_I = [["pointer-accel" "0"] ["accel-profile" "none"]]; }; backgroundStart = [ + # TODO(@bpeetz): Move these to systemd units/their own modules <2025-05-18> pkgs.gammastep - pkgs.yambar pkgs.mako ["${lib.getExe pkgs.swaybg}" "--image" "${./abstract-nord.png}"] @@ -183,9 +274,22 @@ }; }; mpv.enable = true; + steam.enable = true; + ssh.enable = true; swaylock.enable = true; - taskwarrior.enable = true; - yambar.enable = true; + timewarrior.enable = true; + taskwarrior = { + enable = true; + enableAge = lib.mkDefault true; + + hooks = import ./hooks {inherit pkgs lib config;}; + }; + tskm = { + enable = true; + projects = builtins.fromJSON (builtins.readFile ./projects.json); + }; + nix-index.enable = true; + yambar.enable = false; yt.enable = true; zathura.enable = true; zsh.enable = true; diff --git a/modules/common/hooks/default.nix b/modules/common/hooks/default.nix new file mode 100644 index 00000000..5b694039 --- /dev/null +++ b/modules/common/hooks/default.nix @@ -0,0 +1,17 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + pkgs, + lib, + config, +}: { + sync-git-repos = config.lib.taskwarrior.mkHook "on-add" [pkgs.git] ./scripts/sync-git-repo.sh; + sync-git-repos-mod = config.lib.taskwarrior.mkHook "on-modify" [pkgs.git] ./scripts/sync-git-repo.sh; +} diff --git a/modules/common/hooks/scripts/sync-git-repo.sh b/modules/common/hooks/scripts/sync-git-repo.sh new file mode 100755 index 00000000..fe0d0085 --- /dev/null +++ b/modules/common/hooks/scripts/sync-git-repo.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env sh + +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. + +task_data="$(task _get rc.data.location)" +[ "$task_data" ] || die "Taskwarrior should have a location set" + +cd "$task_data" || die "(BUG?): Your data.location path is not accessable" + +[ -d ./.git/ ] || git init + +git add . +git commit --message="chore: Update" --no-gpg-sign + +# vim: ft=sh diff --git a/modules/common/nixos_shell_configuration.nix b/modules/common/nixos_shell_configuration.nix new file mode 100644 index 00000000..1bec0145 --- /dev/null +++ b/modules/common/nixos_shell_configuration.nix @@ -0,0 +1,66 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{...}: { + soispha = { + networking = { + enable = true; + hostName = "lahmu"; + mode = "systemd-networkd"; + }; + + nixos-shell.enable = false; + + nixpkgs = { + enable = true; + systemName = "x86_64-linux"; + }; + + services = { + unison.enable = false; + backup = { + storagebox.enable = false; + local.enable = false; + }; + }; + + programs = { + river.enable = false; + + # We don't have access to the age secrets. + atuin.enableAge = false; + taskwarrior.enableAge = false; + }; + + locale = { + enable = true; + keyMap = "us"; + }; + + users = { + enable = true; + enableDeprecatedPlugdev = true; + + # Make logging in impossible. + # (This also removes root a obvious access-point from the virtual machine) + hashedPassword = ""; + }; + }; + + soispha = { + hardware = { + enable = false; + }; + + disks.enable = false; + }; + + # We run without state + # system.stateVersion = null; +} diff --git a/modules/common/projects.json b/modules/common/projects.json new file mode 100644 index 00000000..df3b0c60 --- /dev/null +++ b/modules/common/projects.json @@ -0,0 +1,67 @@ +{ + "aoc": { + "prefix": "programming/advent_of_code" + }, + "book": { + "prefix": "book" + }, + "buy": { + "prefix": "buy", + "subprojects": { + "books": {}, + "pc": {} + } + }, + "latex": { + "prefix": "programming/latex" + }, + "me": { + "subprojects": { + "bank": {}, + "google": {}, + "health": {}, + "job": {}, + "sweden": {} + } + }, + "server": { + "prefix": "config", + "subprojects": { + "b-peetz": {}, + "blog": {}, + "ci": {}, + "email": {}, + "nix-sync": {}, + "sudo-less": {} + } + }, + "smartphone": { + "prefix": "hardware" + }, + "system": { + "prefix": "config", + "subprojects": { + "backup": {}, + "bar": {}, + "email": {}, + "firefox": {}, + "gpg": {}, + "keyboard": {}, + "laptop": {}, + "nvim": {}, + "rss": {}, + "shell": {}, + "task": {}, + "wm": {}, + "youtube": {} + } + }, + "timesinks": { + "subprojects": { + "games": {}, + "music": {}, + "netflix": {}, + "youtube": {} + } + } +} diff --git a/modules/common/projects.json.license b/modules/common/projects.json.license new file mode 100644 index 00000000..eae6a84c --- /dev/null +++ b/modules/common/projects.json.license @@ -0,0 +1,9 @@ +nixos-config - My current NixOS configuration + +Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +SPDX-License-Identifier: GPL-3.0-or-later + +This file is part of my nixos-config. + +You should have received a copy of the License along with this program. +If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. |