Compare commits
No commits in common. "e619cc2dab16371f241acc4ae6e52b1f5c47ffa8" and "485cdfe11618a7a2c8c47ab391228a1cd8c41c96" have entirely different histories.
e619cc2dab
...
485cdfe116
12 changed files with 427 additions and 49 deletions
|
@ -142,7 +142,7 @@
|
||||||
inherit (pkgs) lib;
|
inherit (pkgs) lib;
|
||||||
machineDir = ./machines;
|
machineDir = ./machines;
|
||||||
};
|
};
|
||||||
zerotierInterface = "ztbn67ogn2";
|
zerotierDeviceName = "ztbn67ogn2";
|
||||||
components = ./components;
|
components = ./components;
|
||||||
features = ./features;
|
features = ./features;
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
./git.nix
|
./git.nix
|
||||||
./gpg.nix
|
./gpg.nix
|
||||||
./gui
|
./gui
|
||||||
|
#./hyperland.nix
|
||||||
./i3.nix
|
./i3.nix
|
||||||
./packages
|
./packages
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
|
|
40
homes/palo/doom-emacs.nix
Normal file
40
homes/palo/doom-emacs.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
config = mkMerge [
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.ripgrep ];
|
||||||
|
}
|
||||||
|
(mkIf config.gui.enable {
|
||||||
|
programs.doom-emacs = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
doomPrivateDir = ./doom.d;
|
||||||
|
extraConfig = ''
|
||||||
|
;; "monospace" means use the system default. However, the default is usually two
|
||||||
|
;; points larger than I'd like, so I specify size 12 here.
|
||||||
|
(setq doom-font
|
||||||
|
(font-spec :family "Jetbrains Mono" :size ${toString 12} :weight 'light))
|
||||||
|
;;(setq doom-font
|
||||||
|
;; (font-spec :family "Terminus" :size ${toString 12} :weight 'light))
|
||||||
|
'';
|
||||||
|
#emacsPackagesOverlay = self: super: {
|
||||||
|
# # fixes https://github.com/vlaci/nix-doom-emacs/issues/394
|
||||||
|
# gitignore-mode = pkgs.emacsPackages.git-modes;
|
||||||
|
# gitconfig-mode = pkgs.emacsPackages.git-modes;
|
||||||
|
#};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
(mkIf (!config.gui.enable) {
|
||||||
|
programs.doom-emacs = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
doomPrivateDir = ./doom.d;
|
||||||
|
package = pkgs.emacs-nox;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
4
homes/palo/doom.d/config.el
Normal file
4
homes/palo/doom.d/config.el
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
;; configure theme
|
||||||
|
(setq doom-theme 'doom-solarized-light)
|
||||||
|
|
||||||
|
|
187
homes/palo/doom.d/init.el
Normal file
187
homes/palo/doom.d/init.el
Normal file
|
@ -0,0 +1,187 @@
|
||||||
|
;;; init.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; This file controls what Doom modules are enabled and what order they load
|
||||||
|
;; in. Remember to run 'doom sync' after modifying it!
|
||||||
|
|
||||||
|
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||||
|
;; documentation. There you'll find a "Module Index" link where you'll find
|
||||||
|
;; a comprehensive list of Doom's modules and what flags they support.
|
||||||
|
|
||||||
|
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||||
|
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||||
|
;; flags as well (those symbols that start with a plus).
|
||||||
|
;;
|
||||||
|
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||||
|
;; directory (for easy access to its source code).
|
||||||
|
|
||||||
|
(doom! :input
|
||||||
|
;;chinese
|
||||||
|
;;japanese
|
||||||
|
;;layout ; auie,ctsrnm is the superior home row
|
||||||
|
|
||||||
|
:completion
|
||||||
|
company ; the ultimate code completion backend
|
||||||
|
;;helm ; the *other* search engine for love and life
|
||||||
|
;;ido ; the other *other* search engine...
|
||||||
|
ivy ; a search engine for love and life
|
||||||
|
|
||||||
|
:ui
|
||||||
|
;;deft ; notational velocity for Emacs
|
||||||
|
doom ; what makes DOOM look the way it does
|
||||||
|
doom-dashboard ; a nifty splash screen for Emacs
|
||||||
|
doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||||
|
;;(emoji +unicode) ; 🙂
|
||||||
|
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||||
|
;;hydra
|
||||||
|
;;indent-guides ; highlighted indent columns
|
||||||
|
;;ligatures ; ligatures and symbols to make your code pretty again
|
||||||
|
;;minimap ; show a map of the code on the side
|
||||||
|
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||||
|
;;nav-flash ; blink cursor line after big motions
|
||||||
|
;;neotree ; a project drawer, like NERDTree for vim
|
||||||
|
ophints ; highlight the region an operation acts on
|
||||||
|
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||||
|
;;tabs ; a tab bar for Emacs
|
||||||
|
;;treemacs ; a project drawer, like neotree but cooler
|
||||||
|
;;unicode ; extended unicode support for various languages
|
||||||
|
vc-gutter ; vcs diff in the fringe
|
||||||
|
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||||
|
;;window-select ; visually switch windows
|
||||||
|
workspaces ; tab emulation, persistence & separate workspaces
|
||||||
|
;;zen ; distraction-free coding or writing
|
||||||
|
|
||||||
|
:editor
|
||||||
|
(evil +everywhere); come to the dark side, we have cookies
|
||||||
|
file-templates ; auto-snippets for empty files
|
||||||
|
fold ; (nigh) universal code folding
|
||||||
|
;;(format +onsave) ; automated prettiness
|
||||||
|
;;god ; run Emacs commands without modifier keys
|
||||||
|
;;lispy ; vim for lisp, for people who don't like vim
|
||||||
|
;;multiple-cursors ; editing in many places at once
|
||||||
|
;;objed ; text object editing for the innocent
|
||||||
|
;;parinfer ; turn lisp into python, sort of
|
||||||
|
;;rotate-text ; cycle region at point between text candidates
|
||||||
|
snippets ; my elves. They type so I don't have to
|
||||||
|
;;word-wrap ; soft wrapping with language-aware indent
|
||||||
|
|
||||||
|
:emacs
|
||||||
|
dired ; making dired pretty [functional]
|
||||||
|
electric ; smarter, keyword-based electric-indent
|
||||||
|
;;ibuffer ; interactive buffer management
|
||||||
|
undo ; persistent, smarter undo for your inevitable mistakes
|
||||||
|
vc ; version-control and Emacs, sitting in a tree
|
||||||
|
|
||||||
|
:term
|
||||||
|
;;eshell ; the elisp shell that works everywhere
|
||||||
|
;;shell ; simple shell REPL for Emacs
|
||||||
|
;;term ; basic terminal emulator for Emacs
|
||||||
|
;;vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
|
:checkers
|
||||||
|
syntax ; tasing you for every semicolon you forget
|
||||||
|
;;(spell +flyspell) ; tasing you for misspelling mispelling
|
||||||
|
;;grammar ; tasing grammar mistake every you make
|
||||||
|
|
||||||
|
:tools
|
||||||
|
;;ansible
|
||||||
|
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||||
|
;;direnv
|
||||||
|
;;docker
|
||||||
|
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||||
|
;;ein ; tame Jupyter notebooks with emacs
|
||||||
|
(eval +overlay) ; run code, run (also, repls)
|
||||||
|
;;gist ; interacting with github gists
|
||||||
|
lookup ; navigate your code and its documentation
|
||||||
|
;;lsp ; M-x vscode
|
||||||
|
magit ; a git porcelain for Emacs
|
||||||
|
;;make ; run make tasks from Emacs
|
||||||
|
;;pass ; password manager for nerds
|
||||||
|
;;pdf ; pdf enhancements
|
||||||
|
;;prodigy ; FIXME managing external services & code builders
|
||||||
|
;;rgb ; creating color strings
|
||||||
|
;;taskrunner ; taskrunner for all your projects
|
||||||
|
;;terraform ; infrastructure as code
|
||||||
|
;;tmux ; an API for interacting with tmux
|
||||||
|
;;upload ; map local to remote projects via ssh/ftp
|
||||||
|
|
||||||
|
:os
|
||||||
|
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||||
|
;;tty ; improve the terminal Emacs experience
|
||||||
|
|
||||||
|
:lang
|
||||||
|
;;agda ; types of types of types of types...
|
||||||
|
;;beancount ; mind the GAAP
|
||||||
|
;;cc ; C > C++ == 1
|
||||||
|
;;clojure ; java with a lisp
|
||||||
|
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||||
|
;;coq ; proofs-as-programs
|
||||||
|
;;crystal ; ruby at the speed of c
|
||||||
|
;;csharp ; unity, .NET, and mono shenanigans
|
||||||
|
;;data ; config/data formats
|
||||||
|
;;(dart +flutter) ; paint ui and not much else
|
||||||
|
;;elixir ; erlang done right
|
||||||
|
;;elm ; care for a cup of TEA?
|
||||||
|
emacs-lisp ; drown in parentheses
|
||||||
|
;;erlang ; an elegant language for a more civilized age
|
||||||
|
;;ess ; emacs speaks statistics
|
||||||
|
;;factor
|
||||||
|
;;faust ; dsp, but you get to keep your soul
|
||||||
|
;;fsharp ; ML stands for Microsoft's Language
|
||||||
|
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||||
|
;;gdscript ; the language you waited for
|
||||||
|
;;(go +lsp) ; the hipster dialect
|
||||||
|
;;(haskell +dante) ; a language that's lazier than I am
|
||||||
|
;;hy ; readability of scheme w/ speed of python
|
||||||
|
;;idris ; a language you can depend on
|
||||||
|
;;json ; At least it ain't XML
|
||||||
|
;;(java +meghanada) ; the poster child for carpal tunnel syndrome
|
||||||
|
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||||
|
;;julia ; a better, faster MATLAB
|
||||||
|
;;kotlin ; a better, slicker Java(Script)
|
||||||
|
;;latex ; writing papers in Emacs has never been so fun
|
||||||
|
;;lean ; for folks with too much to prove
|
||||||
|
;;ledger ; be audit you can be
|
||||||
|
;;lua ; one-based indices? one-based indices
|
||||||
|
markdown ; writing docs for people to ignore
|
||||||
|
;;nim ; python + lisp at the speed of c
|
||||||
|
nix ; I hereby declare "nix geht mehr!"
|
||||||
|
;;ocaml ; an objective camel
|
||||||
|
(org +roam2) ; organize your plain life in plain text
|
||||||
|
;;php ; perl's insecure younger brother
|
||||||
|
;;plantuml ; diagrams for confusing people more
|
||||||
|
;;purescript ; javascript, but functional
|
||||||
|
;;python ; beautiful is better than ugly
|
||||||
|
;;qt ; the 'cutest' gui framework ever
|
||||||
|
;;racket ; a DSL for DSLs
|
||||||
|
;;raku ; the artist formerly known as perl6
|
||||||
|
;;rest ; Emacs as a REST client
|
||||||
|
;;rst ; ReST in peace
|
||||||
|
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||||
|
;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||||
|
;;scala ; java, but good
|
||||||
|
;;(scheme +guile) ; a fully conniving family of lisps
|
||||||
|
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||||
|
;;sml
|
||||||
|
;;solidity ; do you need a blockchain? No.
|
||||||
|
;;swift ; who asked for emoji variables?
|
||||||
|
;;terra ; Earth and Moon in alignment for performance.
|
||||||
|
;;web ; the tubes
|
||||||
|
;;yaml ; JSON, but readable
|
||||||
|
;;zig ; C, but simpler
|
||||||
|
|
||||||
|
:email
|
||||||
|
;;(mu4e +gmail)
|
||||||
|
;;notmuch
|
||||||
|
;;(wanderlust +gmail)
|
||||||
|
|
||||||
|
:app
|
||||||
|
;;calendar
|
||||||
|
;;emms
|
||||||
|
;;everywhere ; *leave* Emacs!? You must be joking
|
||||||
|
;;irc ; how neckbeards socialize
|
||||||
|
;;(rss +org) ; emacs as an RSS reader
|
||||||
|
;;twitter ; twitter client https://twitter.com/vnought
|
||||||
|
|
||||||
|
:config
|
||||||
|
;;literate
|
||||||
|
(default +bindings +smartparens))
|
0
homes/palo/doom.d/packages.el
Normal file
0
homes/palo/doom.d/packages.el
Normal file
160
homes/palo/hyperland.nix
Normal file
160
homes/palo/hyperland.nix
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
|
||||||
|
home.file.".config/hypr/hyperland.conf".text = ''
|
||||||
|
autogenerated = 1 # remove this line to remove the warning
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||||
|
monitor=,preferred,auto,auto
|
||||||
|
|
||||||
|
# Some default env vars.
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
|
||||||
|
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||||
|
input {
|
||||||
|
kb_layout = us
|
||||||
|
kb_variant =
|
||||||
|
kb_model =
|
||||||
|
kb_options =
|
||||||
|
kb_rules =
|
||||||
|
|
||||||
|
follow_mouse = 1
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = no
|
||||||
|
}
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
}
|
||||||
|
|
||||||
|
general {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
gaps_in = 5
|
||||||
|
gaps_out = 20
|
||||||
|
border_size = 2
|
||||||
|
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||||
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
|
layout = dwindle
|
||||||
|
|
||||||
|
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false
|
||||||
|
}
|
||||||
|
|
||||||
|
decoration {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
rounding = 10
|
||||||
|
|
||||||
|
blur {
|
||||||
|
enabled = true
|
||||||
|
size = 3
|
||||||
|
passes = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
drop_shadow = yes
|
||||||
|
shadow_range = 4
|
||||||
|
shadow_render_power = 3
|
||||||
|
col.shadow = rgba(1a1a1aee)
|
||||||
|
}
|
||||||
|
|
||||||
|
animations {
|
||||||
|
enabled = yes
|
||||||
|
|
||||||
|
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||||
|
|
||||||
|
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||||
|
|
||||||
|
animation = windows, 1, 7, myBezier
|
||||||
|
animation = windowsOut, 1, 7, default, popin 80%
|
||||||
|
animation = border, 1, 10, default
|
||||||
|
animation = borderangle, 1, 8, default
|
||||||
|
animation = fade, 1, 7, default
|
||||||
|
animation = workspaces, 1, 6, default
|
||||||
|
}
|
||||||
|
|
||||||
|
dwindle {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||||
|
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = yes # you probably want this
|
||||||
|
}
|
||||||
|
|
||||||
|
master {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||||
|
new_is_master = true
|
||||||
|
}
|
||||||
|
|
||||||
|
gestures {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
workspace_swipe = off
|
||||||
|
}
|
||||||
|
|
||||||
|
misc {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
force_default_wallpaper = -1 # Set to 0 to disable the anime mascot wallpapers
|
||||||
|
}
|
||||||
|
|
||||||
|
# Example per-device config
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
||||||
|
device:epic-mouse-v1 {
|
||||||
|
sensitivity = -0.5
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
$mainMod = SUPER
|
||||||
|
|
||||||
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
|
bind = $mainMod, enter, exec, alacritty
|
||||||
|
bind = $mainMod, C, killactive,
|
||||||
|
bind = $mainMod, Q, exit,
|
||||||
|
bind = $mainMod, E, exec, dolphin
|
||||||
|
bind = $mainMod, V, togglefloating,
|
||||||
|
bind = $mainMod, R, exec, wofi --show drun
|
||||||
|
bind = $mainMod, P, pseudo, # dwindle
|
||||||
|
bind = $mainMod, J, togglesplit, # dwindle
|
||||||
|
|
||||||
|
# Move focus with mainMod + arrow keys
|
||||||
|
bind = $mainMod, left, movefocus, l
|
||||||
|
bind = $mainMod, right, movefocus, r
|
||||||
|
bind = $mainMod, up, movefocus, u
|
||||||
|
bind = $mainMod, down, movefocus, d
|
||||||
|
|
||||||
|
# Switch workspaces with mainMod + [0-9]
|
||||||
|
bind = $mainMod, 1, workspace, 1
|
||||||
|
bind = $mainMod, 2, workspace, 2
|
||||||
|
bind = $mainMod, 3, workspace, 3
|
||||||
|
bind = $mainMod, 4, workspace, 4
|
||||||
|
bind = $mainMod, 5, workspace, 5
|
||||||
|
bind = $mainMod, 6, workspace, 6
|
||||||
|
bind = $mainMod, 7, workspace, 7
|
||||||
|
bind = $mainMod, 8, workspace, 8
|
||||||
|
bind = $mainMod, 9, workspace, 9
|
||||||
|
bind = $mainMod, 0, workspace, 10
|
||||||
|
|
||||||
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||||
|
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||||
|
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||||
|
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||||
|
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||||
|
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||||
|
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||||
|
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||||
|
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||||
|
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||||
|
|
||||||
|
# Example special workspace (scratchpad)
|
||||||
|
bind = $mainMod, S, togglespecialworkspace, magic
|
||||||
|
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
|
bind = $mainMod, mouse_down, workspace, e+1
|
||||||
|
bind = $mainMod, mouse_up, workspace, e-1
|
||||||
|
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
|
'';
|
||||||
|
|
||||||
|
}
|
|
@ -42,10 +42,7 @@ let
|
||||||
valueType;
|
valueType;
|
||||||
};
|
};
|
||||||
|
|
||||||
#taskwarrior-tui = pkgs.legacy_2311.taskwarrior-tui;
|
taskwarrior-tui = pkgs.legacy_2311.taskwarrior-tui;
|
||||||
taskwarrior-tui = pkgs.taskwarrior-tui;
|
|
||||||
|
|
||||||
taskwarrior = pkgs.taskwarrior3;
|
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
|
@ -90,28 +87,28 @@ in
|
||||||
|
|
||||||
config = mkIf config.gui.enable {
|
config = mkIf config.gui.enable {
|
||||||
|
|
||||||
home.packages = [
|
home.packages = with pkgs; [
|
||||||
|
|
||||||
taskwarrior
|
taskwarrior
|
||||||
taskwarrior-tui
|
taskwarrior-tui
|
||||||
|
|
||||||
pkgs.timewarrior
|
timewarrior
|
||||||
pkgs.tasksh
|
tasksh
|
||||||
pkgs.taskwarrior-hooks
|
taskwarrior-hooks
|
||||||
(pkgs.writeShellScriptBin "tsak" ''${taskwarrior}/bin/task "$@"'')
|
(pkgs.writeShellScriptBin "tsak" ''${pkgs.taskwarrior}/bin/task "$@"'')
|
||||||
|
|
||||||
pkgs.vit
|
vit
|
||||||
(pkgs.writers.writeBashBin "active" "${taskwarrior-tui}/bin/taskwarrior-tui -r active")
|
(pkgs.writers.writeBashBin "active" "${taskwarrior-tui}/bin/taskwarrior-tui -r active")
|
||||||
(pkgs.writers.writeBashBin "todo" "${taskwarrior-tui}/bin/taskwarrior-tui -r todo")
|
(pkgs.writers.writeBashBin "todo" "${taskwarrior-tui}/bin/taskwarrior-tui -r todo")
|
||||||
|
|
||||||
(pkgs.writers.writeBashBin "calendar" ''
|
(pkgs.writers.writeBashBin "calendar" ''
|
||||||
${taskwarrior}/bin/task calendar
|
${pkgs.taskwarrior}/bin/task calendar
|
||||||
${taskwarrior}/bin/task calendar_report
|
${pkgs.taskwarrior}/bin/task calendar_report
|
||||||
'')
|
'')
|
||||||
|
|
||||||
# todo : belongs to calendar.nix
|
# todo : belongs to calendar.nix
|
||||||
pkgs.vdirsyncer
|
vdirsyncer
|
||||||
pkgs.khal
|
khal
|
||||||
(pkgs.writers.writeBashBin "kalendar" ''
|
(pkgs.writers.writeBashBin "kalendar" ''
|
||||||
${pkgs.vdirsyncer}/bin/vdirsyncer sync
|
${pkgs.vdirsyncer}/bin/vdirsyncer sync
|
||||||
${pkgs.khal}/bin/ikhal
|
${pkgs.khal}/bin/ikhal
|
||||||
|
|
|
@ -25,37 +25,32 @@ in
|
||||||
# local
|
# local
|
||||||
commands.service2 = {
|
commands.service2 = {
|
||||||
source = "zroot/services2";
|
source = "zroot/services2";
|
||||||
target = "zraid/mirror/services2"; # should NOT be created up front!
|
target = "zraid/mirror/services2"; # should not be created up front!
|
||||||
};
|
};
|
||||||
commands.paperless = {
|
commands.paperless = {
|
||||||
source = "zroot/paperless";
|
source = "zroot/paperless";
|
||||||
target = "zraid/mirror/paperless"; # should NOT be created up front!
|
target = "zraid/mirror/paperless"; # should not be created up front!
|
||||||
};
|
};
|
||||||
commands.postgresql = {
|
commands.postgresql = {
|
||||||
source = "zroot/postgresql";
|
source = "zroot/postgresql";
|
||||||
target = "zraid/mirror/postgresql"; # should NOT be created up front!
|
target = "zraid/mirror/postgresql"; # should not be created up front!
|
||||||
};
|
};
|
||||||
|
|
||||||
# remote
|
# remote
|
||||||
commands.matrix-terranix = {
|
commands.matrix-terranix = {
|
||||||
sshKey = "/run/facts/ssh.syncoid.id_ed25519";
|
sshKey = "/run/facts/ssh.syncoid.id_ed25519";
|
||||||
source = "root@orbi.${tld}:zroot/matrix-terranix";
|
source = "root@orbi.${tld}:zroot/matrix-terranix";
|
||||||
target = "zraid/mirror/matrix-terranix"; # should NOT be created up front!
|
target = "zraid/mirror/matrix-terranix"; # should not be created up front!
|
||||||
};
|
};
|
||||||
commands.nextcloud = {
|
commands.nextcloud = {
|
||||||
sshKey = "/run/facts/ssh.syncoid.id_ed25519";
|
sshKey = "/run/facts/ssh.syncoid.id_ed25519";
|
||||||
source = "root@orbi.${tld}:zroot/nextcloud";
|
source = "root@orbi.${tld}:zroot/nextcloud";
|
||||||
target = "zraid/mirror/nextcloud"; # should NOT be created up front!
|
target = "zraid/mirror/nextcloud"; # should not be created up front!
|
||||||
};
|
};
|
||||||
commands.photoprism = {
|
commands.photoprism = {
|
||||||
sshKey = "/run/facts/ssh.syncoid.id_ed25519";
|
sshKey = "/run/facts/ssh.syncoid.id_ed25519";
|
||||||
source = "root@orbi.${tld}:zmedia/photoprism";
|
source = "root@orbi.${tld}:zmedia/photoprism";
|
||||||
target = "zraid/mirror/photoprism"; # should NOT be created up front!
|
target = "zraid/mirror/photoprism"; # should not be created up front!
|
||||||
};
|
|
||||||
commands.taskchampion = {
|
|
||||||
sshKey = "/run/facts/ssh.syncoid.id_ed25519";
|
|
||||||
source = "root@orbi.${tld}:zroot/taskchampion";
|
|
||||||
target = "zraid/mirror/taskchampion"; # should NOT be created up front!
|
|
||||||
};
|
};
|
||||||
commonArgs = [
|
commonArgs = [
|
||||||
# Does not create new snapshot, only transfers existing
|
# Does not create new snapshot, only transfers existing
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#./service-surrealdb.nix # not really needed at the moment
|
#./service-surrealdb.nix # not really needed at the moment
|
||||||
./service-taskserver.nix
|
./service-taskserver.nix
|
||||||
./service-vaultwarden.nix
|
./service-vaultwarden.nix
|
||||||
# ./service-vikunja.nix
|
./service-vikunja.nix
|
||||||
./service-wastebin.nix
|
./service-wastebin.nix
|
||||||
|
|
||||||
./nginx-ingolf-wagner-de.nix
|
./nginx-ingolf-wagner-de.nix
|
||||||
|
@ -45,8 +45,6 @@
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.firewall.enable = true;
|
|
||||||
|
|
||||||
services.logrotate.checkConfig = false; # because uid 3000 does not exist in here
|
services.logrotate.checkConfig = false; # because uid 3000 does not exist in here
|
||||||
|
|
||||||
networking.hostName = "orbi";
|
networking.hostName = "orbi";
|
||||||
|
|
|
@ -137,19 +137,6 @@ in
|
||||||
#"com.sun:auto-snapshot:monthly" = toString true;
|
#"com.sun:auto-snapshot:monthly" = toString true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"taskchampion" = {
|
|
||||||
type = "zfs_fs";
|
|
||||||
mountpoint = config.services.taskchampion-sync-server.dataDir;
|
|
||||||
# "/var/lib/taskchampion-sync-server";
|
|
||||||
options = {
|
|
||||||
mountpoint = "legacy";
|
|
||||||
compression = "lz4";
|
|
||||||
"com.sun:auto-snapshot:hourly" = toString true;
|
|
||||||
"com.sun:auto-snapshot:daily" = toString true;
|
|
||||||
#"com.sun:auto-snapshot:weekly" = toString true;
|
|
||||||
#"com.sun:auto-snapshot:monthly" = toString true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"vikunja" = {
|
"vikunja" = {
|
||||||
type = "zfs_fs";
|
type = "zfs_fs";
|
||||||
mountpoint = "/var/lib/nixos-containers/vikunja";
|
mountpoint = "/var/lib/nixos-containers/vikunja";
|
||||||
|
|
|
@ -2,17 +2,26 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
zerotierInterface,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
||||||
networking.firewall.interfaces.wg0.allowedTCPPorts = [ config.services.taskchampion-sync-server.port ];
|
# todo: backup taskserver via zfs syncoid
|
||||||
networking.firewall.interfaces.wg0.allowedUDPPorts = [ config.services.taskchampion-sync-server.port ];
|
services.taskserver = {
|
||||||
|
|
||||||
services.taskchampion-sync-server = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = false;
|
fqdn = "taskd.ingolf-wagner.de";
|
||||||
|
listenHost = "0.0.0.0";
|
||||||
|
requestLimit = 104857600;
|
||||||
|
trust = "strict";
|
||||||
|
dataDir = "/var/lib/taskserver";
|
||||||
|
organisations."1337".users = [
|
||||||
|
"palo"
|
||||||
|
"beta"
|
||||||
|
];
|
||||||
|
ciphers = "SECURE256";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ config.services.taskserver.listenPort ];
|
||||||
|
networking.firewall.allowedUDPPorts = [ config.services.taskserver.listenPort ];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue