Compare commits
52 Commits
8dc9f9f474
...
master
Author | SHA1 | Date | |
---|---|---|---|
020c32e8fe
|
|||
4d90224772
|
|||
ef89381337
|
|||
52cb2e3bc1
|
|||
caf13e5126
|
|||
49c7149ed9
|
|||
30569c4019
|
|||
f8d426ce1a
|
|||
7dba7b00a7
|
|||
1e6bb83c21
|
|||
40c13563bc
|
|||
7aee9d0294
|
|||
30c4c5e9f5
|
|||
0c186365cd
|
|||
9752355685
|
|||
9a3affe4c1
|
|||
8189d9ad4e
|
|||
cfea6dda16
|
|||
0fd68d8460
|
|||
f4ea1957a1
|
|||
b4ec02bc31
|
|||
e000a2fd17
|
|||
a77e6e264f
|
|||
86900fbe7e
|
|||
880be26270
|
|||
bc930e6f42
|
|||
9fce8e4968
|
|||
39772b7943
|
|||
5041d64a39
|
|||
21c4b17f76
|
|||
ea41c83161
|
|||
afa538af9a
|
|||
3d46ae4e6e
|
|||
5e4e5f6431
|
|||
1511fc06f7
|
|||
c16da14152
|
|||
5465b13ef9
|
|||
1f1c069da9
|
|||
07887196f4
|
|||
d6b88fad01
|
|||
39047218ff
|
|||
e87720ac2d
|
|||
b92c9f7d7b
|
|||
10c7ce4619
|
|||
d3cc82843f
|
|||
fd54b256a1
|
|||
beb4bc1db6
|
|||
ac4d0622da
|
|||
ad271fe57b
|
|||
0026a6d8dc
|
|||
dc0aae414e
|
|||
e9a558e3fc
|
28
.bashrc
28
.bashrc
@ -3,6 +3,19 @@ HISTFILE=~/.bash_history
|
||||
HISTSIZE=1000
|
||||
HISTFILESIZE=2000 # Adjusted to match both histfile and size criteria
|
||||
|
||||
# GPU Related shenanigans
|
||||
if [ "$(hostname)" = "mennos-desktop" ]; then
|
||||
export DRI_PRIME=1
|
||||
export MESA_VK_DEVICE_SELECT=1002:744c
|
||||
fi
|
||||
|
||||
if [ -f /etc/os-release ]; then
|
||||
distro=$(awk -F= '/^NAME/{print $ssss2}' /etc/os-release | tr -d '"')
|
||||
if [[ "$distro" == *"Pop!_OS"* ]]; then
|
||||
export CGO_CFLAGS="-I/usr/include"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Docker Compose Alias (Mostly for old shell scripts)
|
||||
alias docker-compose='docker compose'
|
||||
|
||||
@ -21,7 +34,6 @@ alias la='l -a'
|
||||
alias cat='bat'
|
||||
alias du='dust'
|
||||
alias df='duf'
|
||||
alias rm="trash-put"
|
||||
alias augp='sudo apt update && sudo apt upgrade -y && sudo apt autopurge -y && sudo apt autoclean'
|
||||
|
||||
# Docker Aliases
|
||||
@ -51,10 +63,6 @@ alias gcm='git commit -m'
|
||||
alias gco='git checkout'
|
||||
alias gcb='git checkout -b'
|
||||
|
||||
# NodeJS aliases
|
||||
alias node='node-20'
|
||||
alias npm='npm-20'
|
||||
|
||||
# Kubernetes aliases (Minikube)
|
||||
alias kubectl="minikube kubectl --"
|
||||
|
||||
@ -75,6 +83,14 @@ export PATH=$PATH:$HOME/.local/bin
|
||||
export PATH=$PATH:$HOME/.cargo/bin
|
||||
export PATH=$PATH:$DOTFILES_PATH/bin
|
||||
|
||||
# Include pnpm if it exists
|
||||
if [ -d "$HOME/.local/share/pnpm" ]; then
|
||||
export PATH=$PATH:$HOME/.local/share/pnpm
|
||||
fi
|
||||
|
||||
# Miniconda
|
||||
export PATH="$HOME/miniconda3/bin:$PATH"
|
||||
|
||||
# In case $HOME/.flutter/flutter/bin is found, we can add it to the PATH
|
||||
if [ -d "$HOME/.flutter/flutter/bin" ]; then
|
||||
export PATH=$PATH:$HOME/.flutter/flutter/bin
|
||||
@ -139,7 +155,7 @@ fi
|
||||
# Source ble.sh if it exists
|
||||
if [[ -f "${HOME}/.nix-profile/share/blesh/ble.sh" ]]; then
|
||||
source "${HOME}/.nix-profile/share/blesh/ble.sh"
|
||||
|
||||
|
||||
# Custom function for fzf history search
|
||||
function fzf_history_search() {
|
||||
local selected
|
||||
|
@ -56,7 +56,7 @@ def main():
|
||||
apps = {
|
||||
"vesktop": "vesktop",
|
||||
"ktailctl": "flatpak run org.fkoehler.KTailctl",
|
||||
"ulauncher": "ulauncher --no-window-shadow --hide-window",
|
||||
"nemo-desktop": "nemo-desktop",
|
||||
}
|
||||
|
||||
# Clean up dead sessions if any
|
||||
|
@ -1,5 +1,6 @@
|
||||
[workstations]
|
||||
mennos-laptop ansible_connection=local
|
||||
mennos-cosmic-laptop ansible_connection=local
|
||||
mennos-desktop ansible_connection=local
|
||||
|
||||
[servers]
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
- name: Include workstation tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/workstation.yml
|
||||
when: hostname in ['mennos-laptop', 'mennos-desktop']
|
||||
when: hostname in ['mennos-laptop', 'mennos-cosmic-laptop', 'mennos-desktop']
|
||||
|
||||
- name: Include server tasks
|
||||
ansible.builtin.import_tasks: tasks/servers/server.yml
|
||||
|
@ -36,7 +36,6 @@
|
||||
name:
|
||||
- git
|
||||
- vim
|
||||
- trash-cli
|
||||
- curl
|
||||
- wget
|
||||
- httpie
|
||||
@ -48,6 +47,8 @@
|
||||
- black
|
||||
# Package manager wrapper
|
||||
- nala
|
||||
# Go
|
||||
- golang
|
||||
state: present
|
||||
become: true
|
||||
|
||||
|
@ -28,6 +28,7 @@
|
||||
gitconfig_mapping:
|
||||
mennos-desktop: "$DOTFILES_PATH/config/git/gitconfig.linux"
|
||||
mennos-laptop: "$DOTFILES_PATH/config/git/gitconfig.linux"
|
||||
mennos-cosmic-laptop: "$DOTFILES_PATH/config/git/gitconfig.linux"
|
||||
mennos-server: "$DOTFILES_PATH/config/git/gitconfig.mennos-server"
|
||||
mennos-cloud-server: "$DOTFILES_PATH/config/git/gitconfig.mennos-server"
|
||||
mennos-vm: "$DOTFILES_PATH/config/git/gitconfig.mennos-server"
|
||||
@ -45,6 +46,7 @@
|
||||
authorized_keys_mapping:
|
||||
mennos-desktop: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-desktop"
|
||||
mennos-laptop: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-laptop"
|
||||
mennos-cosmic-laptop: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-laptop"
|
||||
mennos-server: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-server"
|
||||
mennos-cloud-server: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-server"
|
||||
mennos-vm: "$DOTFILES_PATH/config/ssh/authorized_keys/mennos-server"
|
||||
|
328
config/ansible/tasks/global/utils/flitsmeister.go
Normal file
328
config/ansible/tasks/global/utils/flitsmeister.go
Normal file
@ -0,0 +1,328 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/csv"
|
||||
"flag"
|
||||
"fmt"
|
||||
"math"
|
||||
"os"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Trip struct {
|
||||
StartTime time.Time
|
||||
EndTime time.Time
|
||||
StartAddr string
|
||||
EndAddr string
|
||||
KMStart float64
|
||||
KMEnd float64
|
||||
Distance float64
|
||||
License string
|
||||
BusinessCost float64
|
||||
Type string
|
||||
}
|
||||
|
||||
type MonthStats struct {
|
||||
TotalKM float64
|
||||
Trips int
|
||||
Longest float64
|
||||
Shortest float64
|
||||
TotalDuration time.Duration
|
||||
LongestGap time.Duration
|
||||
OdoAnomalies int
|
||||
AvgSpeed float64
|
||||
AvgTripDuration time.Duration
|
||||
FuelCost float64
|
||||
}
|
||||
|
||||
func main() {
|
||||
fuelPrice := flag.Float64("fuelprice", 0, "Fuel price per liter (EUR)")
|
||||
fuelEfficiency := flag.Float64("efficiency", 0, "Fuel efficiency (km per liter)")
|
||||
lPer100km := flag.Float64("lper100km", 0, "Fuel consumption (liters per 100km)")
|
||||
flag.Parse()
|
||||
|
||||
if len(flag.Args()) < 1 {
|
||||
fmt.Println("Usage: go run main.go -fuelprice <price> [-efficiency <km/l> | -lper100km <l/100km>] <filename.csv>")
|
||||
flag.PrintDefaults()
|
||||
return
|
||||
}
|
||||
|
||||
// Convert l/100km to km/l if provided
|
||||
finalEfficiency := *fuelEfficiency
|
||||
if *lPer100km > 0 {
|
||||
finalEfficiency = 100.0 / *lPer100km
|
||||
}
|
||||
|
||||
file, err := os.Open(flag.Arg(0))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
reader := csv.NewReader(file)
|
||||
reader.Comma = ','
|
||||
records, err := reader.ReadAll()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
dutchMonths := map[string]string{
|
||||
"januari": "January", "februari": "February", "maart": "March",
|
||||
"april": "April", "mei": "May", "juni": "June", "juli": "July",
|
||||
"augustus": "August", "september": "September", "oktober": "October",
|
||||
"november": "November", "december": "December",
|
||||
}
|
||||
|
||||
tripsByMonth := make(map[string][]Trip)
|
||||
startAddrCount := make(map[string]int)
|
||||
endAddrCount := make(map[string]int)
|
||||
fuelEnabled := *fuelPrice > 0 && finalEfficiency > 0
|
||||
|
||||
// Parse CSV
|
||||
for _, record := range records[1:] {
|
||||
if len(record) < 13 {
|
||||
continue
|
||||
}
|
||||
|
||||
// Parse start time
|
||||
startTime, err := parseDutchTime(record[1], dutchMonths)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
// Parse end time
|
||||
endTime, err := parseDutchTime(record[2], dutchMonths)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
// Parse distance data
|
||||
kmStart, _ := strconv.ParseFloat(strings.ReplaceAll(record[5], ",", ""), 64)
|
||||
kmEnd, _ := strconv.ParseFloat(strings.ReplaceAll(record[6], ",", ""), 64)
|
||||
distance, _ := strconv.ParseFloat(strings.ReplaceAll(record[7], ",", ""), 64)
|
||||
|
||||
trip := Trip{
|
||||
StartTime: startTime,
|
||||
EndTime: endTime,
|
||||
StartAddr: record[3],
|
||||
EndAddr: record[4],
|
||||
KMStart: kmStart,
|
||||
KMEnd: kmEnd,
|
||||
Distance: distance,
|
||||
License: record[8],
|
||||
BusinessCost: parseFloat(record[11]),
|
||||
Type: strings.TrimSpace(record[12]),
|
||||
}
|
||||
|
||||
monthKey := fmt.Sprintf("%d-%02d", startTime.Year(), startTime.Month())
|
||||
tripsByMonth[monthKey] = append(tripsByMonth[monthKey], trip)
|
||||
startAddrCount[trip.StartAddr]++
|
||||
endAddrCount[trip.EndAddr]++
|
||||
}
|
||||
|
||||
// Calculate stats
|
||||
months := sortedKeys(tripsByMonth)
|
||||
statsByMonth := calculateStats(tripsByMonth, fuelEnabled, *fuelPrice, finalEfficiency)
|
||||
|
||||
// Print results
|
||||
printMainTable(statsByMonth, months, fuelEnabled, tripsByMonth)
|
||||
printTopAddresses(startAddrCount, endAddrCount)
|
||||
}
|
||||
|
||||
func parseDutchTime(datetime string, monthMap map[string]string) (time.Time, error) {
|
||||
parts := strings.Split(datetime, " ")
|
||||
if len(parts) < 4 {
|
||||
return time.Time{}, fmt.Errorf("invalid time format")
|
||||
}
|
||||
|
||||
engMonth, ok := monthMap[strings.ToLower(parts[1])]
|
||||
if !ok {
|
||||
return time.Time{}, fmt.Errorf("unknown month")
|
||||
}
|
||||
|
||||
timeStr := fmt.Sprintf("%s %s %s %s", parts[0], engMonth, parts[2], parts[3])
|
||||
return time.Parse("2 January 2006 15:04", timeStr)
|
||||
}
|
||||
|
||||
func calculateStats(tripsByMonth map[string][]Trip, fuelEnabled bool, fuelPrice, fuelEfficiency float64) map[string]MonthStats {
|
||||
stats := make(map[string]MonthStats)
|
||||
|
||||
for month, trips := range tripsByMonth {
|
||||
var s MonthStats
|
||||
var prevEnd time.Time
|
||||
var longestGap time.Duration
|
||||
|
||||
sumSpeed := 0.0
|
||||
speedCount := 0
|
||||
|
||||
sort.Slice(trips, func(i, j int) bool {
|
||||
return trips[i].StartTime.Before(trips[j].StartTime)
|
||||
})
|
||||
|
||||
for i, t := range trips {
|
||||
s.TotalKM += t.Distance
|
||||
s.Trips++
|
||||
|
||||
duration := t.EndTime.Sub(t.StartTime)
|
||||
s.TotalDuration += duration
|
||||
if duration.Hours() > 0 {
|
||||
sumSpeed += t.Distance / duration.Hours()
|
||||
speedCount++
|
||||
}
|
||||
|
||||
if t.Distance > s.Longest {
|
||||
s.Longest = t.Distance
|
||||
}
|
||||
if t.Distance < s.Shortest || s.Shortest == 0 {
|
||||
s.Shortest = t.Distance
|
||||
}
|
||||
|
||||
if i > 0 {
|
||||
gap := t.StartTime.Sub(prevEnd)
|
||||
if gap > longestGap {
|
||||
longestGap = gap
|
||||
}
|
||||
if math.Abs(trips[i-1].KMEnd-t.KMStart) > 0.01 {
|
||||
s.OdoAnomalies++
|
||||
}
|
||||
}
|
||||
prevEnd = t.EndTime
|
||||
}
|
||||
|
||||
s.LongestGap = longestGap
|
||||
if speedCount > 0 {
|
||||
s.AvgSpeed = sumSpeed / float64(speedCount)
|
||||
} else {
|
||||
s.AvgSpeed = 0
|
||||
}
|
||||
if s.Trips > 0 {
|
||||
s.AvgTripDuration = time.Duration(int64(s.TotalDuration) / int64(s.Trips))
|
||||
}
|
||||
|
||||
if fuelEnabled {
|
||||
s.FuelCost = (s.TotalKM / fuelEfficiency) * fuelPrice
|
||||
}
|
||||
|
||||
stats[month] = s
|
||||
}
|
||||
|
||||
return stats
|
||||
}
|
||||
|
||||
func printMainTable(stats map[string]MonthStats, months []string, fuelEnabled bool, tripsByMonth map[string][]Trip) {
|
||||
fmt.Println("\n=== Monthly Driving Overview ===")
|
||||
|
||||
headers := []string{"Month", "Total", "Trips", "AvgKM", "Longest", "Shortest",
|
||||
"DriveTime", "AvgTripDur", "OdoErr", "AvgSpeed"}
|
||||
format := "%-10s | %-16s | %-7s | %-14s | %-24s | %-26s | %-18s | %-18s | %-10s | %-18s"
|
||||
if fuelEnabled {
|
||||
headers = append(headers, "Fuel Cost (EUR)")
|
||||
format += " | %-18s"
|
||||
}
|
||||
fmt.Printf(format+"\n", toInterfaceSlice(headers)...) // print header
|
||||
fmt.Println(strings.Repeat("-", 180))
|
||||
|
||||
for _, month := range months {
|
||||
s := stats[month]
|
||||
trips := tripsByMonth[month]
|
||||
|
||||
// Find longest and shortest trip durations
|
||||
var longestDur, shortestDur time.Duration
|
||||
var longestDist, shortestDist float64
|
||||
if len(trips) > 0 {
|
||||
for i, t := range trips {
|
||||
dur := t.EndTime.Sub(t.StartTime)
|
||||
if t.Distance > longestDist || i == 0 {
|
||||
longestDist = t.Distance
|
||||
longestDur = dur
|
||||
}
|
||||
if t.Distance < shortestDist || i == 0 {
|
||||
shortestDist = t.Distance
|
||||
shortestDur = dur
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
row := []interface{}{
|
||||
month,
|
||||
fmt.Sprintf("%.2f Km", s.TotalKM),
|
||||
fmt.Sprintf("%d", s.Trips),
|
||||
fmt.Sprintf("%.2f Km", safeDiv(s.TotalKM, float64(s.Trips))),
|
||||
fmt.Sprintf("%.2f Km (%s)", longestDist, fmtDuration(longestDur)),
|
||||
fmt.Sprintf("%.2f Km (%s)", shortestDist, fmtDuration(shortestDur)),
|
||||
fmtDuration(s.TotalDuration),
|
||||
fmtDuration(s.AvgTripDuration),
|
||||
fmt.Sprintf("%d", s.OdoAnomalies),
|
||||
fmt.Sprintf("%.2f Km/h", s.AvgSpeed),
|
||||
}
|
||||
if fuelEnabled {
|
||||
row = append(row, fmt.Sprintf("%.2f EUR", s.FuelCost))
|
||||
}
|
||||
fmt.Printf(format+"\n", row...)
|
||||
}
|
||||
}
|
||||
|
||||
func toInterfaceSlice(strs []string) []interface{} {
|
||||
res := make([]interface{}, len(strs))
|
||||
for i, v := range strs {
|
||||
res[i] = v
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func printTopAddresses(start, end map[string]int) {
|
||||
fmt.Println("\n=== Frequent Locations ===")
|
||||
fmt.Println("Top 3 Start Addresses:")
|
||||
printTopN(start, 3)
|
||||
fmt.Println("\nTop 3 End Addresses:")
|
||||
printTopN(end, 3)
|
||||
}
|
||||
|
||||
// Helper functions (safeDiv, fmtDuration, printTopN) remain unchanged from previous version
|
||||
// [Include the helper functions from previous script here]
|
||||
|
||||
func safeDiv(a, b float64) float64 {
|
||||
if b == 0 {
|
||||
return 0
|
||||
}
|
||||
return a / b
|
||||
}
|
||||
|
||||
func fmtDuration(d time.Duration) string {
|
||||
h := int(d.Hours())
|
||||
m := int(d.Minutes()) % 60
|
||||
return fmt.Sprintf("%02dh%02dm", h, m)
|
||||
}
|
||||
|
||||
func printTopN(counter map[string]int, n int) {
|
||||
type kv struct {
|
||||
Key string
|
||||
Value int
|
||||
}
|
||||
var sorted []kv
|
||||
for k, v := range counter {
|
||||
sorted = append(sorted, kv{k, v})
|
||||
}
|
||||
sort.Slice(sorted, func(i, j int) bool { return sorted[i].Value > sorted[j].Value })
|
||||
|
||||
for i := 0; i < n && i < len(sorted); i++ {
|
||||
fmt.Printf("%d. %s (%d)\n", i+1, sorted[i].Key, sorted[i].Value)
|
||||
}
|
||||
}
|
||||
|
||||
func sortedKeys(m map[string][]Trip) []string {
|
||||
keys := make([]string, 0, len(m))
|
||||
for k := range m {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
sort.Strings(keys)
|
||||
return keys
|
||||
}
|
||||
|
||||
func parseFloat(s string) float64 {
|
||||
f, _ := strconv.ParseFloat(strings.ReplaceAll(s, ",", ""), 64)
|
||||
return f
|
||||
}
|
@ -17,7 +17,7 @@
|
||||
services:
|
||||
- name: caddy
|
||||
enabled: true
|
||||
- name: hoarder
|
||||
- name: karakeep
|
||||
enabled: true
|
||||
- name: golink
|
||||
enabled: true
|
||||
@ -38,7 +38,7 @@
|
||||
- name: beszel
|
||||
enabled: true
|
||||
- name: arr-stack
|
||||
enabled: true
|
||||
enabled: false
|
||||
- name: downloaders
|
||||
enabled: true
|
||||
- name: wireguard
|
||||
|
@ -1,13 +1,22 @@
|
||||
photos.vleeuwen.me photos.mvl.sh {
|
||||
photos.mvl.sh {
|
||||
reverse_proxy immich:2283
|
||||
tls {{ caddy_email }}
|
||||
}
|
||||
|
||||
hoarder.mvl.sh {
|
||||
reverse_proxy hoarder:3000
|
||||
photos.vleeuwen.me {
|
||||
redir https://photos.mvl.sh{uri}
|
||||
tls {{ caddy_email }}
|
||||
}
|
||||
|
||||
karakeep.mvl.sh {
|
||||
reverse_proxy karakeep:3000
|
||||
tls {{ caddy_email }}
|
||||
}
|
||||
|
||||
hoarder.mvl.sh {
|
||||
redir https://karakeep.mvl.sh{uri}
|
||||
}
|
||||
|
||||
git.vleeuwen.me git.mvl.sh {
|
||||
reverse_proxy gitea:3000
|
||||
tls {{ caddy_email }}
|
||||
@ -49,7 +58,7 @@ df.mvl.sh {
|
||||
}
|
||||
|
||||
overseerr.mvl.sh jellyseerr.mvl.sh overseerr.vleeuwen.me jellyseerr.vleeuwen.me {
|
||||
reverse_proxy jellyseerr:5055
|
||||
reverse_proxy mennos-server:5555
|
||||
tls {{ caddy_email }}
|
||||
}
|
||||
|
||||
|
@ -1,40 +0,0 @@
|
||||
---
|
||||
- name: Deploy Hoarder service
|
||||
block:
|
||||
- name: Set Hoarder directories
|
||||
ansible.builtin.set_fact:
|
||||
hoarder_data_dir: "/mnt/object_storage/services/hoarder"
|
||||
hoarder_service_dir: "{{ ansible_env.HOME }}/services/hoarder"
|
||||
|
||||
- name: Create Hoarder directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ hoarder_dir }}"
|
||||
state: directory
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ hoarder_data_dir }}"
|
||||
- "{{ hoarder_service_dir }}"
|
||||
loop_control:
|
||||
loop_var: hoarder_dir
|
||||
|
||||
- name: Deploy Hoarder docker-compose.yml
|
||||
ansible.builtin.template:
|
||||
src: docker-compose.yml.j2
|
||||
dest: "{{ hoarder_service_dir }}/docker-compose.yml"
|
||||
mode: "0644"
|
||||
register: hoarder_compose
|
||||
|
||||
- name: Deploy Hoarder .env
|
||||
ansible.builtin.template:
|
||||
src: dotenv.j2
|
||||
dest: "{{ hoarder_service_dir }}/.env"
|
||||
mode: "0644"
|
||||
register: hoarder_compose
|
||||
|
||||
- name: Stop Hoarder service
|
||||
ansible.builtin.command: docker compose -f "{{ hoarder_service_dir }}/docker-compose.yml" down --remove-orphans
|
||||
when: hoarder_compose.changed
|
||||
|
||||
- name: Start Hoarder service
|
||||
ansible.builtin.command: docker compose -f "{{ hoarder_service_dir }}/docker-compose.yml" up -d
|
||||
when: hoarder_compose.changed
|
@ -1,15 +1,15 @@
|
||||
services:
|
||||
hoarder:
|
||||
image: ghcr.io/hoarder-app/hoarder:${HOARDER_VERSION:-release}
|
||||
karakeep:
|
||||
image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- {{ hoarder_data_dir }}/hoarder:/data
|
||||
- {{ karakeep_data_dir }}/karakeep:/data
|
||||
ports:
|
||||
- 3500:3000
|
||||
env_file:
|
||||
- .env
|
||||
networks:
|
||||
- hoarder
|
||||
- karakeep
|
||||
- caddy_network
|
||||
|
||||
chrome:
|
||||
@ -23,20 +23,20 @@ services:
|
||||
- --remote-debugging-port=9222
|
||||
- --hide-scrollbars
|
||||
networks:
|
||||
- hoarder
|
||||
- karakeep
|
||||
|
||||
meilisearch:
|
||||
image: getmeili/meilisearch:v1.11.1
|
||||
image: getmeili/meilisearch:v1.13.3
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
- {{ hoarder_data_dir }}/meilisearch:/meili_data
|
||||
- {{ karakeep_data_dir }}/meilisearch:/meili_data
|
||||
networks:
|
||||
- hoarder
|
||||
- karakeep
|
||||
|
||||
networks:
|
||||
hoarder:
|
||||
karakeep:
|
||||
caddy_network:
|
||||
external: true
|
||||
name: caddy_default
|
@ -1,4 +1,4 @@
|
||||
HOARDER_VERSION=release
|
||||
KARAKEEP_VERSION=release
|
||||
MEILI_NO_ANALYTICS=true
|
||||
|
||||
MEILI_ADDR=http://meilisearch:7700
|
40
config/ansible/tasks/servers/services/karakeep/karakeep.yml
Normal file
40
config/ansible/tasks/servers/services/karakeep/karakeep.yml
Normal file
@ -0,0 +1,40 @@
|
||||
---
|
||||
- name: Deploy Karakeep service
|
||||
block:
|
||||
- name: Set Karakeep directories
|
||||
ansible.builtin.set_fact:
|
||||
karakeep_data_dir: "/mnt/object_storage/services/karakeep"
|
||||
karakeep_service_dir: "{{ ansible_env.HOME }}/services/karakeep"
|
||||
|
||||
- name: Create Karakeep directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ karakeep_dir }}"
|
||||
state: directory
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ karakeep_data_dir }}"
|
||||
- "{{ karakeep_service_dir }}"
|
||||
loop_control:
|
||||
loop_var: karakeep_dir
|
||||
|
||||
- name: Deploy Karakeep docker-compose.yml
|
||||
ansible.builtin.template:
|
||||
src: docker-compose.yml.j2
|
||||
dest: "{{ karakeep_service_dir }}/docker-compose.yml"
|
||||
mode: "0644"
|
||||
register: karakeep_compose
|
||||
|
||||
- name: Deploy Karakeep .env
|
||||
ansible.builtin.template:
|
||||
src: dotenv.j2
|
||||
dest: "{{ karakeep_service_dir }}/.env"
|
||||
mode: "0644"
|
||||
register: karakeep_compose
|
||||
|
||||
- name: Stop Karakeep service
|
||||
ansible.builtin.command: docker compose -f "{{ karakeep_service_dir }}/docker-compose.yml" down --remove-orphans
|
||||
when: karakeep_compose.changed
|
||||
|
||||
- name: Start Karakeep service
|
||||
ansible.builtin.command: docker compose -f "{{ karakeep_service_dir }}/docker-compose.yml" up -d
|
||||
when: karakeep_compose.changed
|
6
config/ansible/tasks/workstations/autostart.yml
Normal file
6
config/ansible/tasks/workstations/autostart.yml
Normal file
@ -0,0 +1,6 @@
|
||||
# Mark all files under the real autostart source as executable
|
||||
- name: Mark all files under dotfiles autostart as executable
|
||||
ansible.builtin.file:
|
||||
path: "{{ lookup('env', 'DOTFILES_PATH') }}/config/autostart"
|
||||
mode: "u+x,g+x,o+x"
|
||||
recurse: true
|
41
config/ansible/tasks/workstations/cliphist.yml
Normal file
41
config/ansible/tasks/workstations/cliphist.yml
Normal file
@ -0,0 +1,41 @@
|
||||
---
|
||||
- name: Ensure wl-clipboard and cliphist are installed
|
||||
become: true
|
||||
package:
|
||||
name:
|
||||
- wl-clipboard
|
||||
- cliphist
|
||||
- wofi
|
||||
state: present
|
||||
|
||||
- name: Create systemd user service for cliphist
|
||||
become: false
|
||||
copy:
|
||||
dest: "{{ ansible_env.HOME }}/.config/systemd/user/cliphist-store.service"
|
||||
mode: "0644"
|
||||
content: |
|
||||
[Unit]
|
||||
Description=Store clipboard history with cliphist
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/sh -c 'wl-paste --watch cliphist store'
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
|
||||
- name: Reload systemd user daemon
|
||||
become: false
|
||||
systemd:
|
||||
daemon_reload: yes
|
||||
scope: user
|
||||
|
||||
# TO ENABLE READING, ADD A KEYBOARD SHORTCUT SOMEWHERE IN YOUR WM CONFIGURATION
|
||||
# cliphist list | wofi -S dmenu | cliphist decode | wl-copy
|
||||
- name: Enable and start cliphist-store service
|
||||
become: false
|
||||
systemd:
|
||||
name: cliphist-store.service
|
||||
enabled: yes
|
||||
state: started
|
||||
scope: user
|
@ -32,9 +32,9 @@
|
||||
ansible.builtin.set_fact:
|
||||
desired_system_flatpaks:
|
||||
# GNOME Software
|
||||
- org.gnome.Extensions
|
||||
- org.gnome.Weather
|
||||
- org.gnome.Sudoku
|
||||
- "{{ 'org.gnome.Extensions' if (ansible_facts.env.XDG_CURRENT_DESKTOP is defined and 'GNOME' in ansible_facts.env.XDG_CURRENT_DESKTOP) else omit }}"
|
||||
- "{{ 'org.gnome.Weather' if (ansible_facts.env.XDG_CURRENT_DESKTOP is defined and 'GNOME' in ansible_facts.env.XDG_CURRENT_DESKTOP) else omit }}"
|
||||
- "{{ 'org.gnome.Sudoku' if (ansible_facts.env.XDG_CURRENT_DESKTOP is defined and 'GNOME' in ansible_facts.env.XDG_CURRENT_DESKTOP) else omit }}"
|
||||
|
||||
# Games
|
||||
- io.github.openhv.OpenHV
|
||||
@ -48,11 +48,18 @@
|
||||
- com.spotify.Client
|
||||
- com.plexamp.Plexamp
|
||||
- tv.plex.PlexDesktop
|
||||
- io.bassi.Amberol
|
||||
|
||||
# Messaging
|
||||
- org.telegram.desktop
|
||||
- org.signal.Signal
|
||||
- com.rtosta.zapzap
|
||||
- io.github.equicord.equibop
|
||||
|
||||
# Utilities
|
||||
- com.ranfdev.DistroShelf
|
||||
- io.missioncenter.MissionCenter
|
||||
- io.gitlab.elescoute.spacelaunch
|
||||
- org.fkoehler.KTailctl
|
||||
- de.haeckerfelix.AudioSharing
|
||||
- com.usebottles.bottles
|
||||
- com.github.tchx84.Flatseal
|
||||
- com.github.wwmm.easyeffects
|
||||
@ -63,10 +70,9 @@
|
||||
- net.davidotek.pupgui2
|
||||
- com.mastermindzh.tidal-hifi
|
||||
- io.github.flattool.Warehouse
|
||||
- io.github.johannesboehler2.BmiCalculator
|
||||
- io.github.nokse22.Exhibit
|
||||
- net.nokyan.Resources
|
||||
- dev.zed.Zed
|
||||
- page.tesk.Refine
|
||||
- io.github.flattool.Ignition
|
||||
- io.github.bytezz.IPLookup
|
||||
- org.gaphor.Gaphor
|
||||
@ -95,11 +101,11 @@
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
method: system
|
||||
loop: "{{ desired_system_flatpaks }}"
|
||||
loop: "{{ desired_system_flatpaks | reject('equalto', omit) | list }}"
|
||||
|
||||
- name: Remove undesired system Flatpaks
|
||||
community.general.flatpak:
|
||||
name: "{{ item }}"
|
||||
state: absent
|
||||
method: system
|
||||
loop: "{{ installed_system_flatpaks.stdout_lines | difference(desired_system_flatpaks) }}"
|
||||
loop: "{{ installed_system_flatpaks.stdout_lines | difference(desired_system_flatpaks | reject('equalto', omit) | list) }}"
|
||||
|
@ -13,3 +13,6 @@
|
||||
|
||||
- name: Install Tiling Shell - Window Manager
|
||||
ansible.builtin.import_tasks: tasks/workstations/gnome-extensions/tilingshell.yml
|
||||
|
||||
- name: Install Quick Settings Tweaks
|
||||
ansible.builtin.import_tasks: tasks/workstations/gnome-extensions/quick-settings.yml
|
||||
|
@ -2,7 +2,7 @@
|
||||
- name: Manage Pano Clipboard Manager
|
||||
ansible.builtin.include_tasks: tasks/workstations/gnome-extensions/manage_gnome_extension.yml
|
||||
vars:
|
||||
git_tag: "v23-alpha3"
|
||||
git_tag: "v23-alpha5"
|
||||
ext_name: "Pano - Clipboard Manager"
|
||||
ext_url: "https://github.com/oae/gnome-shell-pano/releases/download/%TAG%/pano@elhan.io.zip"
|
||||
ext_id: "pano@elhan.io"
|
||||
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
- name: Manage Quick Settings Tweaks
|
||||
ansible.builtin.include_tasks: tasks/workstations/gnome-extensions/manage_gnome_extension.yml
|
||||
vars:
|
||||
git_tag: "2.1-stable"
|
||||
ext_name: "Quick Settings Tweaks"
|
||||
ext_url: "https://github.com/qwreey/quick-settings-tweaks/releases/download/2.1-stable/2.1-release.zip"
|
||||
ext_id: "quick-settings-tweaks@qwreey"
|
@ -2,7 +2,7 @@
|
||||
- name: Manage Tiling Shell - Window Manager
|
||||
ansible.builtin.include_tasks: tasks/workstations/gnome-extensions/manage_gnome_extension.yml
|
||||
vars:
|
||||
git_tag: "16.1"
|
||||
git_tag: "16.3"
|
||||
ext_name: "Tiling Shell - Window Manager"
|
||||
ext_url: "https://github.com/domferr/tilingshell/releases/download/%TAG%/tilingshell@ferrarodomenico.com.zip"
|
||||
ext_id: "tilingshell@ferrarodomenico.com"
|
||||
|
20
config/ansible/tasks/workstations/purge-libreoffice.yml
Normal file
20
config/ansible/tasks/workstations/purge-libreoffice.yml
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
- name: Purge LibreOffice and related packages
|
||||
become: true
|
||||
ansible.builtin.apt:
|
||||
name:
|
||||
- libreoffice*
|
||||
- libreoffice-common
|
||||
- libreoffice-core
|
||||
- libreoffice-writer
|
||||
- libreoffice-calc
|
||||
- libreoffice-impress
|
||||
- libreoffice-draw
|
||||
- libreoffice-base
|
||||
- libreoffice-math
|
||||
- libreoffice-gnome
|
||||
- libreoffice-gtk3
|
||||
state: absent
|
||||
purge: true
|
||||
autoremove: true
|
||||
update_cache: true
|
@ -25,7 +25,9 @@
|
||||
- core18
|
||||
- core20
|
||||
- core22
|
||||
- core24
|
||||
- bare
|
||||
- chromium
|
||||
- gtk-common-themes
|
||||
- gnome-3-28-1804
|
||||
- gnome-3-34-1804
|
||||
@ -36,13 +38,14 @@
|
||||
- prompting-client
|
||||
- snap-store
|
||||
- snapd-desktop-integration
|
||||
- gaming-graphics-core22
|
||||
|
||||
- name: Define desired Snaps
|
||||
ansible.builtin.set_fact:
|
||||
desired_snaps:
|
||||
- name: telegram-desktop
|
||||
- name: beekeeper-studio
|
||||
classic: false
|
||||
- name: whatsapp-desktop-client
|
||||
- name: steam
|
||||
classic: false
|
||||
|
||||
- name: Install desired Snap packages
|
||||
|
@ -11,4 +11,12 @@
|
||||
force: true
|
||||
follow: false
|
||||
loop:
|
||||
- { src: "$DOTFILES_PATH/vscode/settings.json", dest: "~/.config/Code/User/settings.json" }
|
||||
- {
|
||||
src: "$DOTFILES_PATH/vscode/settings.json",
|
||||
dest: "~/.config/Code/User/settings.json",
|
||||
}
|
||||
- {
|
||||
src: "$DOTFILES_PATH/zed/settings.json",
|
||||
dest: "~/.config/zed/settings.json",
|
||||
}
|
||||
- { src: "$DOTFILES_PATH/config/autostart", dest: "~/.config/autostart" }
|
||||
|
@ -1,104 +0,0 @@
|
||||
---
|
||||
- name: Ensure Ulauncher and dependencies are installed
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- ulauncher
|
||||
# - python3-pytz
|
||||
- python3-tornado
|
||||
- python3-docker
|
||||
- python3-requests
|
||||
- python3-pint
|
||||
- python3-simpleeval
|
||||
- python3-parsedatetime
|
||||
- python3-fuzzywuzzy
|
||||
# - python3-thefuzz
|
||||
state: present
|
||||
become: true
|
||||
|
||||
- name: Ensure Ulauncher config directory exists
|
||||
ansible.builtin.file:
|
||||
path: "~/.config/ulauncher"
|
||||
state: directory
|
||||
mode: "0755"
|
||||
|
||||
- name: Configure Ulauncher settings
|
||||
ansible.builtin.copy:
|
||||
content: "{{ ulauncher_settings | to_json }}"
|
||||
dest: "~/.config/ulauncher/settings.json"
|
||||
mode: "0644"
|
||||
vars:
|
||||
ulauncher_settings:
|
||||
blacklisted-desktop-dirs: >
|
||||
/usr/share/locale:/usr/share/app-install:/usr/share/kservices5:/usr/share/fk5:/usr/share/kservicetypes5:
|
||||
/usr/share/applications/screensavers:/usr/share/kde4:/usr/share/mimelnk
|
||||
clear-previous-query: true
|
||||
disable-desktop-filters: false
|
||||
grab-mouse-pointer: false
|
||||
hotkey-show-app: "<Control>Space"
|
||||
render-on-screen: "mouse-pointer-monitor"
|
||||
show-indicator-icon: true
|
||||
show-recent-apps: "4"
|
||||
terminal-command: "ptyxis"
|
||||
theme-name: "dark"
|
||||
|
||||
- name: Configure Ulauncher shortcuts
|
||||
ansible.builtin.copy:
|
||||
content: "{{ ulauncher_shortcuts | to_json }}"
|
||||
dest: "~/.config/ulauncher/shortcuts.json"
|
||||
mode: "0644"
|
||||
vars:
|
||||
ulauncher_shortcuts:
|
||||
"0bab9d26-5464-4501-bc95-9995d8fa1405":
|
||||
id: "0bab9d26-5464-4501-bc95-9995d8fa1405"
|
||||
name: "Google Search"
|
||||
keyword: "g"
|
||||
cmd: "https://google.com/search?q=%s"
|
||||
icon: "/usr/share/ulauncher/media/google-search-icon.png"
|
||||
is_default_search: true
|
||||
run_without_argument: false
|
||||
added: 0
|
||||
"d72834d1-5d81-4f5d-a9f6-386b12110f56":
|
||||
id: "d72834d1-5d81-4f5d-a9f6-386b12110f56"
|
||||
name: "Stack Overflow"
|
||||
keyword: "so"
|
||||
cmd: "https://stackoverflow.com/search?q=%s"
|
||||
icon: "/usr/share/ulauncher/media/stackoverflow-icon.svg"
|
||||
is_default_search: true
|
||||
run_without_argument: false
|
||||
added: 0
|
||||
"4dfcffeb-879c-49b2-83bb-c16254a7ce75":
|
||||
id: "4dfcffeb-879c-49b2-83bb-c16254a7ce75"
|
||||
name: "GoLink"
|
||||
keyword: "go"
|
||||
cmd: "http://go/%s"
|
||||
icon:
|
||||
is_default_search: false
|
||||
run_without_argument: false
|
||||
added: 0
|
||||
"40d1ed32-8fd3-4bf8-92f5-cbaa7cd607a1":
|
||||
id: "40d1ed32-8fd3-4bf8-92f5-cbaa7cd607a1"
|
||||
name: "NixOS"
|
||||
keyword: "nix"
|
||||
cmd: "https://search.nixos.org/packages?query=%s"
|
||||
icon:
|
||||
is_default_search: false
|
||||
run_without_argument: false
|
||||
added: 0
|
||||
"40d1ed32-8fd3-4ff4-92f6-fbaa7cd607a1":
|
||||
id: "42d1ed42-8dd3-2bf8-92f5-cbaa7cd607a1"
|
||||
name: "Flathub"
|
||||
keyword: "flat"
|
||||
cmd: "https://flathub.org/apps/search?q=%s"
|
||||
icon:
|
||||
is_default_search: false
|
||||
run_without_argument: false
|
||||
added: 0
|
||||
"43d1ed32-8fd3-fbf8-94f5-cffa7cd607a1":
|
||||
id: "40d1ed32-8fd3-4bf8-92f5-cbaa7cd607a1"
|
||||
name: "GitHub"
|
||||
keyword: "gh"
|
||||
cmd: "https://github.com/search?q=%s"
|
||||
icon:
|
||||
is_default_search: false
|
||||
run_without_argument: false
|
||||
added: 0
|
@ -1,53 +0,0 @@
|
||||
---
|
||||
- name: Gather OS facts
|
||||
ansible.builtin.setup:
|
||||
filter: ansible_distribution
|
||||
register: os_facts
|
||||
|
||||
- name: Import Microsoft GPG key (Fedora)
|
||||
ansible.builtin.rpm_key:
|
||||
key: https://packages.microsoft.com/keys/microsoft.asc
|
||||
when: os_facts.ansible_facts.ansible_distribution == 'Fedora'
|
||||
|
||||
- name: Add VSCode repository (Fedora)
|
||||
ansible.builtin.copy:
|
||||
content: |
|
||||
[code]
|
||||
name=Visual Studio Code
|
||||
baseurl=https://packages.microsoft.com/yumrepos/vscode
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
|
||||
dest: /etc/yum.repos.d/vscode.repo
|
||||
mode: "0644"
|
||||
when: os_facts.ansible_facts.ansible_distribution == 'Fedora'
|
||||
|
||||
- name: Add VSCode repository (Ubuntu/Debian)
|
||||
ansible.builtin.apt_repository:
|
||||
repo: "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
|
||||
state: present
|
||||
when: os_facts.ansible_facts.ansible_distribution in ['Ubuntu', 'Debian']
|
||||
|
||||
- name: Import Microsoft GPG key (Ubuntu/Debian)
|
||||
ansible.builtin.apt_key:
|
||||
url: https://packages.microsoft.com/keys/microsoft.asc
|
||||
state: present
|
||||
when: os_facts.ansible_facts.ansible_distribution in ['Ubuntu', 'Debian']
|
||||
|
||||
- name: Check if VSCode is installed
|
||||
ansible.builtin.command: code --version
|
||||
register: vscode_check
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
- name: Install VSCode (Fedora)
|
||||
ansible.builtin.package:
|
||||
name: code
|
||||
state: present
|
||||
when: vscode_check.rc != 0 and os_facts.ansible_facts.ansible_distribution == 'Fedora'
|
||||
|
||||
- name: Install VSCode (Ubuntu/Debian)
|
||||
ansible.builtin.apt:
|
||||
name: code
|
||||
state: present
|
||||
when: vscode_check.rc != 0 and os_facts.ansible_facts.ansible_distribution in ['Ubuntu', 'Debian']
|
@ -4,22 +4,23 @@
|
||||
- name: Include workstation symlinks tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/symlinks.yml
|
||||
|
||||
- name: Include workstation cliphist tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/cliphist.yml
|
||||
|
||||
- name: Include GNOME Extensions tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/gnome-extensions.yml
|
||||
when: ansible_facts.env.XDG_CURRENT_DESKTOP is defined and 'GNOME' in ansible_facts.env.XDG_CURRENT_DESKTOP
|
||||
|
||||
- name: Include Firefox APT installation tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/firefox-apt.yml
|
||||
when: ansible_pkg_mgr == 'apt'
|
||||
when: ansible_pkg_mgr == 'apt' and ansible_facts.packages.snapd is defined
|
||||
|
||||
- name: Include flatpaks tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/flatpaks.yml
|
||||
|
||||
- name: Include snaps tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/snaps.yml
|
||||
|
||||
- name: Include VSCode tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/vscode.yml
|
||||
become: true
|
||||
when: ansible_facts.packages.snapd is defined
|
||||
|
||||
- name: Include Zen browser tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/zen-browser.yml
|
||||
@ -33,8 +34,11 @@
|
||||
- name: Include Firefox PWA tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/firefoxpwa.yml
|
||||
|
||||
- name: Include Ulauncher tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/ulauncher.yml
|
||||
- name: Include purge LibreOffice tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/purge-libreoffice.yml
|
||||
|
||||
- name: Include autostart tasks
|
||||
ansible.builtin.import_tasks: tasks/workstations/autostart.yml
|
||||
|
||||
- name: Ensure workstation common packages are installed
|
||||
ansible.builtin.package:
|
||||
@ -57,5 +61,7 @@
|
||||
- nemo-font-manager
|
||||
- nemo-gtkhash
|
||||
- nemo-python
|
||||
# DistroBox
|
||||
- distrobox
|
||||
state: present
|
||||
become: true
|
||||
|
@ -1,7 +1,7 @@
|
||||
---
|
||||
- name: Set Zen browser version
|
||||
ansible.builtin.set_fact:
|
||||
zen_browser_version: "1.10.3b"
|
||||
zen_browser_version: "1.12.10b"
|
||||
|
||||
- name: Create directory for browser
|
||||
ansible.builtin.file:
|
||||
|
12
config/autostart/1password.desktop
Executable file
12
config/autostart/1password.desktop
Executable file
@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env xdg-open
|
||||
[Desktop Entry]
|
||||
Name=1Password
|
||||
Exec=/home/menno/.config/autostart/1password.ignition_delay.sh
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=1password
|
||||
StartupWMClass=1Password
|
||||
Comment=Password manager and secure wallet
|
||||
MimeType=x-scheme-handler/onepassword;x-scheme-handler/onepassword8;
|
||||
Categories=Office;
|
||||
Hidden=false
|
2
config/autostart/1password.ignition_delay.sh
Executable file
2
config/autostart/1password.ignition_delay.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env sh
|
||||
sleep 3 && /opt/1Password/1password %U
|
35
config/autostart/FFPWA-01JWXB8PY7AXJTNFRNWQN995PX.desktop
Normal file
35
config/autostart/FFPWA-01JWXB8PY7AXJTNFRNWQN995PX.desktop
Normal file
@ -0,0 +1,35 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Version=1.4
|
||||
Name=Fastmail
|
||||
Comment=Email + calendar made better
|
||||
Keywords=email;messaging;
|
||||
Categories=GTK;Chat;ContactManagement;Email;InstantMessaging;Network;Office;
|
||||
Icon=FFPWA-01JWXB8PY7AXJTNFRNWQN995PX
|
||||
Exec=/home/menno/.config/autostart/FFPWA-01JWXB8PY7AXJTNFRNWQN995PX.ignition_delay.sh
|
||||
Actions=0;1;2;3;
|
||||
MimeType=
|
||||
Terminal=false
|
||||
StartupNotify=true
|
||||
StartupWMClass=FFPWA-01JWXB8PY7AXJTNFRNWQN995PX
|
||||
Hidden=false
|
||||
|
||||
[Desktop Action 0]
|
||||
Name=Compose
|
||||
Icon=FFPWA-01JWXB8PY7AXJTNFRNWQN995PX-0
|
||||
Exec=/usr/bin/firefoxpwa site launch 01JWXB8PY7AXJTNFRNWQN995PX --url "https://app.fastmail.com/mail/Inbox/compose"
|
||||
|
||||
[Desktop Action 1]
|
||||
Name=Mail
|
||||
Icon=FFPWA-01JWXB8PY7AXJTNFRNWQN995PX-1
|
||||
Exec=/usr/bin/firefoxpwa site launch 01JWXB8PY7AXJTNFRNWQN995PX --url "https://app.fastmail.com/mail/Inbox"
|
||||
|
||||
[Desktop Action 2]
|
||||
Name=Contacts
|
||||
Icon=FFPWA-01JWXB8PY7AXJTNFRNWQN995PX-2
|
||||
Exec=/usr/bin/firefoxpwa site launch 01JWXB8PY7AXJTNFRNWQN995PX --url "https://app.fastmail.com/contacts/"
|
||||
|
||||
[Desktop Action 3]
|
||||
Name=Calendar
|
||||
Icon=FFPWA-01JWXB8PY7AXJTNFRNWQN995PX-3
|
||||
Exec=/usr/bin/firefoxpwa site launch 01JWXB8PY7AXJTNFRNWQN995PX --url "https://app.fastmail.com/calendar/"
|
2
config/autostart/FFPWA-01JWXB8PY7AXJTNFRNWQN995PX.ignition_delay.sh
Executable file
2
config/autostart/FFPWA-01JWXB8PY7AXJTNFRNWQN995PX.ignition_delay.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env sh
|
||||
sleep 1 && /usr/bin/firefoxpwa site launch 01JWXB8PY7AXJTNFRNWQN995PX --protocol %u
|
18
config/autostart/com.rtosta.zapzap.desktop
Executable file
18
config/autostart/com.rtosta.zapzap.desktop
Executable file
@ -0,0 +1,18 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=ZapZap
|
||||
Comment[pt_BR]=Whatsapp Desktop para Linux
|
||||
Comment=Whatsapp Desktop for Linux
|
||||
Exec=/home/menno/.config/autostart/com.rtosta.zapzap.ignition_delay.sh
|
||||
Icon=com.rtosta.zapzap
|
||||
Type=Application
|
||||
Categories=Chat;Network;InstantMessaging;Qt;
|
||||
Keywords=Whatsapp;Chat;ZapZap;
|
||||
StartupWMClass=zapzap
|
||||
MimeType=x-scheme-handler/whatsapp
|
||||
Terminal=false
|
||||
SingleMainWindow=true
|
||||
X-GNOME-UsesNotifications=true
|
||||
X-GNOME-SingleWindow=true
|
||||
X-Flatpak=com.rtosta.zapzap
|
||||
Hidden=false
|
2
config/autostart/com.rtosta.zapzap.ignition_delay.sh
Executable file
2
config/autostart/com.rtosta.zapzap.ignition_delay.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env sh
|
||||
sleep 7 && /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=zapzap --file-forwarding com.rtosta.zapzap @@u %u @@
|
15
config/autostart/com.spotify.Client.desktop
Executable file
15
config/autostart/com.spotify.Client.desktop
Executable file
@ -0,0 +1,15 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Spotify
|
||||
GenericName=Music Player
|
||||
Icon=com.spotify.Client
|
||||
Exec=/home/menno/.config/autostart/com.spotify.Client.ignition_delay.sh
|
||||
Terminal=false
|
||||
MimeType=x-scheme-handler/spotify;
|
||||
Categories=Audio;Music;Player;AudioVideo;
|
||||
StartupWMClass=spotify
|
||||
X-GNOME-UsesNotifications=true
|
||||
X-Flatpak-Tags=proprietary;
|
||||
X-Flatpak=com.spotify.Client
|
||||
Hidden=false
|
||||
Comment=
|
2
config/autostart/com.spotify.Client.ignition_delay.sh
Executable file
2
config/autostart/com.spotify.Client.ignition_delay.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env sh
|
||||
sleep 6 && /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=spotify --file-forwarding com.spotify.Client @@u %U @@
|
16
config/autostart/io.github.equicord.equibop.desktop
Executable file
16
config/autostart/io.github.equicord.equibop.desktop
Executable file
@ -0,0 +1,16 @@
|
||||
[Desktop Entry]
|
||||
Name=Equibop
|
||||
Exec=/home/menno/.config/autostart/io.github.equicord.equibop.ignition_delay.sh
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=io.github.equicord.equibop
|
||||
StartupWMClass=Equibop
|
||||
X-AppImage-Version=2.1.4
|
||||
GenericName=Internet Messenger
|
||||
Categories=Network;
|
||||
Keywords=discord;equibop;vesktop;vencord;equicord;electron;chat;
|
||||
MimeType=x-scheme-handler/discord;
|
||||
Comment=A fork of Vesktop pre-packaged with Equicord
|
||||
X-Desktop-File-Install-Version=0.28
|
||||
X-Flatpak=io.github.equicord.equibop
|
||||
Hidden=false
|
2
config/autostart/io.github.equicord.equibop.ignition_delay.sh
Executable file
2
config/autostart/io.github.equicord.equibop.ignition_delay.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env sh
|
||||
sleep 4 && /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=startequibop io.github.equicord.equibop
|
15
config/autostart/jetbrains-toolbox.desktop
Executable file
15
config/autostart/jetbrains-toolbox.desktop
Executable file
@ -0,0 +1,15 @@
|
||||
[Desktop Entry]
|
||||
Icon=/home/menno/.local/share/JetBrains/Toolbox/toolbox.svg
|
||||
Exec=/home/menno/.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox --minimize
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Categories=Development
|
||||
Name=JetBrains Toolbox
|
||||
StartupWMClass=jetbrains-toolbox
|
||||
Terminal=false
|
||||
MimeType=x-scheme-handler/jetbrains;
|
||||
X-GNOME-Autostart-enabled=true
|
||||
StartupNotify=false
|
||||
X-GNOME-Autostart-Delay=10
|
||||
X-MATE-Autostart-Delay=10
|
||||
X-KDE-autostart-after=panel
|
11
config/autostart/mimeinfo.cache
Executable file
11
config/autostart/mimeinfo.cache
Executable file
@ -0,0 +1,11 @@
|
||||
[MIME Cache]
|
||||
x-scheme-handler/discord=io.github.equicord.equibop.desktop;
|
||||
x-scheme-handler/jetbrains=jetbrains-toolbox.desktop;
|
||||
x-scheme-handler/onepassword=1password.desktop;
|
||||
x-scheme-handler/onepassword8=1password.desktop;
|
||||
x-scheme-handler/sgnl=org.signal.Signal.desktop;
|
||||
x-scheme-handler/signalcaptcha=org.signal.Signal.desktop;
|
||||
x-scheme-handler/spotify=com.spotify.Client.desktop;
|
||||
x-scheme-handler/tg=org.telegram.desktop.desktop;
|
||||
x-scheme-handler/tonsite=org.telegram.desktop.desktop;
|
||||
x-scheme-handler/whatsapp=com.rtosta.zapzap.desktop;
|
11
config/autostart/org.fkoehler.KTailctl.desktop
Executable file
11
config/autostart/org.fkoehler.KTailctl.desktop
Executable file
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Name=KTailctl
|
||||
Comment=GUI for tailscale on the KDE Plasma desktop
|
||||
Version=1.5
|
||||
Exec=/home/menno/.config/autostart/org.fkoehler.KTailctl.ignition_delay.sh
|
||||
Icon=org.fkoehler.KTailctl
|
||||
Type=Application
|
||||
Terminal=false
|
||||
Categories=Qt;KDE;System;
|
||||
X-Flatpak=org.fkoehler.KTailctl
|
||||
Hidden=false
|
2
config/autostart/org.fkoehler.KTailctl.ignition_delay.sh
Executable file
2
config/autostart/org.fkoehler.KTailctl.ignition_delay.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env sh
|
||||
sleep 5 && /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=ktailctl org.fkoehler.KTailctl
|
15
config/autostart/org.signal.Signal.desktop
Executable file
15
config/autostart/org.signal.Signal.desktop
Executable file
@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env xdg-open
|
||||
[Desktop Entry]
|
||||
Name=Signal
|
||||
Exec=/home/menno/.config/autostart/org.signal.Signal.ignition_delay.sh
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=org.signal.Signal
|
||||
StartupWMClass=Signal
|
||||
Comment=Private messaging from your desktop
|
||||
MimeType=x-scheme-handler/sgnl;x-scheme-handler/signalcaptcha;
|
||||
Categories=Network;InstantMessaging;Chat;
|
||||
X-Desktop-File-Install-Version=0.28
|
||||
X-Flatpak-RenamedFrom=signal-desktop.desktop;
|
||||
X-Flatpak=org.signal.Signal
|
||||
Hidden=false
|
2
config/autostart/org.signal.Signal.ignition_delay.sh
Executable file
2
config/autostart/org.signal.Signal.ignition_delay.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env sh
|
||||
sleep 2 && /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=signal-desktop --file-forwarding org.signal.Signal @@u %U @@
|
23
config/autostart/org.telegram.desktop.desktop
Executable file
23
config/autostart/org.telegram.desktop.desktop
Executable file
@ -0,0 +1,23 @@
|
||||
[Desktop Entry]
|
||||
Name=Telegram
|
||||
Comment=New era of messaging
|
||||
Exec=/home/menno/.config/autostart/org.telegram.ignition_delay.sh.desktop
|
||||
Icon=org.telegram.desktop
|
||||
Terminal=false
|
||||
StartupWMClass=TelegramDesktop
|
||||
Type=Application
|
||||
Categories=Chat;Network;InstantMessaging;Qt;
|
||||
MimeType=x-scheme-handler/tg;x-scheme-handler/tonsite;
|
||||
Keywords=tg;chat;im;messaging;messenger;sms;tdesktop;
|
||||
Actions=quit;
|
||||
DBusActivatable=false
|
||||
SingleMainWindow=true
|
||||
X-GNOME-UsesNotifications=true
|
||||
X-GNOME-SingleWindow=true
|
||||
X-Flatpak=org.telegram.desktop
|
||||
Hidden=false
|
||||
|
||||
[Desktop Action quit]
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=telegram-desktop org.telegram.desktop -quit
|
||||
Name=Quit Telegram
|
||||
Icon=application-exit
|
2
config/autostart/org.telegram.ignition_delay.sh.desktop
Executable file
2
config/autostart/org.telegram.ignition_delay.sh.desktop
Executable file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env sh
|
||||
sleep 1 && /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=telegram-desktop --file-forwarding org.telegram.desktop -- @@u %u @@
|
@ -26,3 +26,11 @@
|
||||
|
||||
[init]
|
||||
defaultBranch = main
|
||||
[credential "https://github.com"]
|
||||
helper =
|
||||
helper = !/home/menno/.nix-profile/bin/gh auth git-credential
|
||||
[credential "https://gist.github.com"]
|
||||
helper =
|
||||
helper = !/home/menno/.nix-profile/bin/gh auth git-credential
|
||||
[gpg "ssh"]
|
||||
program = /opt/1Password/op-ssh-sign
|
||||
|
18
config/home-manager/flake.lock
generated
18
config/home-manager/flake.lock
generated
@ -7,11 +7,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1743387206,
|
||||
"narHash": "sha256-24N3NAuZZbYqZ39NgToZgHUw6M7xHrtrAm18kv0+2Wo=",
|
||||
"lastModified": 1747688870,
|
||||
"narHash": "sha256-ypL9WAZfmJr5V70jEVzqGjjQzF0uCkz+AFQF7n9NmNc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "15c5f9d04fabd176f30286c8f52bbdb2c853a146",
|
||||
"rev": "d5f1f641b289553927b3801580598d200a501863",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -23,11 +23,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1743367904,
|
||||
"narHash": "sha256-sOos1jZGKmT6xxPvxGQyPTApOunXvScV4lNjBCXd/CI=",
|
||||
"lastModified": 1748810746,
|
||||
"narHash": "sha256-1na8blYvU1F6HLwx/aFjrhUqpqZ0SCsnqqW9n2vXvok=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7ffe0edc685f14b8c635e3d6591b0bbb97365e6c",
|
||||
"rev": "78d9f40fd6941a1543ffc3ed358e19c69961d3c1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -39,11 +39,11 @@
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1743315132,
|
||||
"narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=",
|
||||
"lastModified": 1748693115,
|
||||
"narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "52faf482a3889b7619003c0daec593a1912fddc1",
|
||||
"rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -109,6 +109,19 @@
|
||||
};
|
||||
};
|
||||
|
||||
"mennos-cosmic-laptop" = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [ ./home.nix ];
|
||||
extraSpecialArgs = {
|
||||
inherit
|
||||
pkgs
|
||||
pkgs-unstable
|
||||
;
|
||||
isServer = false;
|
||||
hostname = "mennos-cosmic-laptop";
|
||||
};
|
||||
};
|
||||
|
||||
"mennos-hobbypc" = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [ ./home.nix ];
|
||||
|
@ -1,12 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
pkgs-unstable,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.go = {
|
||||
enable = true;
|
||||
package = pkgs-unstable.go;
|
||||
};
|
||||
}
|
@ -59,7 +59,6 @@
|
||||
duf # Modern df
|
||||
zip
|
||||
unzip
|
||||
bottom # Modern top/htop
|
||||
glances # Advanced system monitoring tool
|
||||
procs # Modern ps
|
||||
hyperfine # Benchmarking tool
|
||||
@ -75,7 +74,6 @@
|
||||
|
||||
# System monitoring and process management
|
||||
procs # Modern ps
|
||||
bottom # Modern top/htop
|
||||
hyperfine # Benchmarking tool
|
||||
bandwhich # Network utilization tool
|
||||
doggo # Modern dig
|
||||
|
@ -13,31 +13,17 @@ in
|
||||
# GUI Application
|
||||
## Utilities
|
||||
tea # A Gitea official CLI client
|
||||
mission-center # Task Manager like Windows 11
|
||||
gnome-tweaks
|
||||
pinta # Paint.NET alternative
|
||||
bottles # Wine manager
|
||||
spacedrive # Virtual filesystem manager
|
||||
smile # Emoji picker
|
||||
gnome-boxes # Virtual machine manager
|
||||
deja-dup # Backup tool
|
||||
sqlitebrowser # SQLite database manager
|
||||
wmctrl # Window manager control (Used in ulauncher)
|
||||
gparted # Used to nuke Windows off of my system
|
||||
rpi-imager # Raspberry Pi OS image writer
|
||||
pavucontrol # PulseAudio volume control
|
||||
qrencode # qr code generator
|
||||
grimblast # Screenshot tool
|
||||
ptyxis # Terminal emulator
|
||||
gpredict # Satellite tracking
|
||||
|
||||
## Dev tools
|
||||
vscodium
|
||||
|
||||
## Chat Apps
|
||||
vesktop
|
||||
signal-desktop
|
||||
|
||||
## Multimedia
|
||||
plex-media-player
|
||||
vlc
|
||||
@ -50,7 +36,6 @@ in
|
||||
openra
|
||||
xonotic
|
||||
mindustry
|
||||
wesnoth
|
||||
shattered-pixel-dungeon
|
||||
|
||||
### Games launchers
|
||||
|
@ -9,7 +9,7 @@
|
||||
};
|
||||
|
||||
theme = {
|
||||
name = "Yaru";
|
||||
name = "Yaru-dark";
|
||||
};
|
||||
|
||||
cursorTheme = {
|
||||
@ -28,19 +28,14 @@
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
dconf = {
|
||||
# Only apply dconf settings if running GNOME
|
||||
dconf = pkgs.lib.mkIf (builtins.getEnv "XDG_CURRENT_DESKTOP" == "GNOME") {
|
||||
enable = true;
|
||||
settings = {
|
||||
"org/gnome/desktop/background" = {
|
||||
show-desktop-icons = true;
|
||||
};
|
||||
|
||||
"org/gnome/Ptyxis" = {
|
||||
use-system-font = false;
|
||||
font-name = "Hack Nerd Font Mono 13";
|
||||
};
|
||||
|
||||
"org/gnome/desktop/applications/file-manager" = {
|
||||
exec = "nautilus";
|
||||
};
|
||||
@ -53,18 +48,17 @@
|
||||
};
|
||||
|
||||
# Pinned apps
|
||||
# add more by listing them with `dconf read /org/gnome/shell/favorite-apps | sed "s/,//g; s/'/\"/g"` then copy pasting the output here
|
||||
"org/gnome/shell" = {
|
||||
favorite-apps = [
|
||||
"zen.desktop"
|
||||
"org.gnome.Nautilus.desktop"
|
||||
"firefox.desktop"
|
||||
"nemo.desktop"
|
||||
"com.spotify.Client.desktop"
|
||||
"FFPWA-01JPMJ4K0S7JZDT2469CKNY49H.desktop"
|
||||
"telegram-desktop_telegram-desktop.desktop"
|
||||
"signal-desktop.desktop"
|
||||
"whatsapp-desktop-client_whatsapp-desktop-client.desktop"
|
||||
"vesktop.desktop"
|
||||
"telegram-desktop_telegram-desktop.desktop"
|
||||
"code.desktop"
|
||||
"org.gnome.Ptyxis.desktop"
|
||||
"vesktop.desktop"
|
||||
"scrcpy.desktop"
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -5,37 +5,13 @@
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
# default browser
|
||||
"application/xhtml+xml" = [ "zen.desktop" ];
|
||||
"text/html" = [ "zen.desktop" ];
|
||||
"x-scheme-handler/http" = [ "zen.desktop" ];
|
||||
"x-scheme-handler/https" = [ "zen.desktop" ];
|
||||
"application/xhtml+xml" = [ "firefox.desktop" ];
|
||||
"text/html" = [ "firefox.desktop" ];
|
||||
"x-scheme-handler/http" = [ "firefox.desktop" ];
|
||||
"x-scheme-handler/https" = [ "firefox.desktop" ];
|
||||
|
||||
# Geary
|
||||
"x-scheme-handler/mailto" = [ "org.gnome.Geary.desktop" ];
|
||||
|
||||
# Loupe (Image Viewer)
|
||||
"image/jpeg" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/png" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/gif" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/webp" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/tiff" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/x-tga" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/vnd-ms.dds" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/x-dds" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/bmp" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/vnd.microsoft.icon" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/vnd.radiance" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/x-exr" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/x-portable-bitmap" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/x-portable-graymap" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/x-portable-pixmap" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/x-portable-anymap" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/x-qoi" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/svg+xml" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/svg+xml-compressed" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/avif" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/heic" = [ "org.gnome.Loupe.desktop" ];
|
||||
"image/jxl" = [ "org.gnome.Loupe.desktop" ];
|
||||
# default file manager
|
||||
"inode/directory" = [ "nemo.desktop" ];
|
||||
|
||||
# VLC (Video Player)
|
||||
"video/x-ogm+ogg" = [ "vlc.desktop" ];
|
||||
@ -81,13 +57,6 @@
|
||||
"video/x-ogm" = [ "vlc.desktop" ];
|
||||
"video/avi" = [ "vlc.desktop" ];
|
||||
"video/x-mpeg-system" = [ "vlc.desktop" ];
|
||||
|
||||
# Totem (for those few formats that default to it)
|
||||
"video/vivo" = [ "org.gnome.Totem.desktop" ];
|
||||
"video/vnd.vivo" = [ "org.gnome.Totem.desktop" ];
|
||||
"video/x-flic" = [ "org.gnome.Totem.desktop" ];
|
||||
"video/x-mjpeg" = [ "org.gnome.Totem.desktop" ];
|
||||
"video/x-totem-stream" = [ "org.gnome.Totem.desktop" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -1,10 +1,6 @@
|
||||
{
|
||||
config,
|
||||
pkgs-unstable,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
{ config, pkgs-unstable, pkgs, lib, ... }:
|
||||
|
||||
lib.mkIf (builtins.match ".*GNOME.*" (builtins.getEnv "XDG_CURRENT_DESKTOP") != null) {
|
||||
# We run most extensions from unstable because they are more up-to-date
|
||||
home.packages =
|
||||
with pkgs.gnomeExtensions;
|
||||
@ -86,22 +82,22 @@
|
||||
enabled-extensions = [
|
||||
"pano@elhan.io"
|
||||
"tilingshell@ferrarodomenico.com"
|
||||
"tiling-assistant@ubuntu.com"
|
||||
"ubuntu-appindicators@ubuntu.com"
|
||||
"launch-new-instance@gnome-shell-extensions.gcampax.github.com"
|
||||
"native-window-placement@gnome-shell-extensions.gcampax.github.com"
|
||||
"user-theme@gnome-shell-extensions.gcampax.github.com"
|
||||
"appindicatorsupport@rgcjonas.gmail.com"
|
||||
"arcmenu@arcmenu.com"
|
||||
"blur-my-shell@aunetx"
|
||||
"burn-my-windows@schneegans.github.com"
|
||||
"gsconnect@andyholmes.github.io"
|
||||
"gtk4-ding@smedius.gitlab.com"
|
||||
"dash-to-panel@jderose9.github.com"
|
||||
"just-perfection-desktop@just-perfection"
|
||||
"kimpanel@kde.org"
|
||||
"lilypad@shendrew.github.io"
|
||||
"native-window-placement@gnome-shell-extensions.gcampax.github.com"
|
||||
"smile-extension@mijorus.it"
|
||||
"tailscale@joaophi.github.com"
|
||||
"user-theme@gnome-shell-extensions.gcampax.github.com"
|
||||
"weatheroclock@CleoMenezesJr.github.io"
|
||||
"dash-to-panel@jderose9.github.com"
|
||||
"arcmenu@arcmenu.com"
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
lib.mkIf (builtins.match ".*GNOME.*" (builtins.getEnv "XDG_CURRENT_DESKTOP") != null) {
|
||||
dconf.settings = {
|
||||
"org/gnome/shell/keybindings" = {
|
||||
show-screenshot-ui = [
|
||||
@ -29,20 +30,10 @@
|
||||
command = "missioncenter";
|
||||
name = "missioncenter";
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = {
|
||||
binding = "<Ctrl><Alt>t";
|
||||
command = "ptyxis --new-window";
|
||||
name = "terminal";
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emotes" = {
|
||||
binding = "<Super>e";
|
||||
command = "smile";
|
||||
name = "emotes";
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/ulauncher" = {
|
||||
binding = "<Control>Space";
|
||||
command = "ulauncher-toggle";
|
||||
name = "ulauncher";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIpdkDIGDj9kX/0sATAdd7n+uHUV6xJmWmJLZV0Xbx/UEKh/P3YlAq9yuE
|
||||
hl7N8z45+xv0h+KD4XPekiEt5BNlpNMT4+yPHiCi9N0A48NJtiznAr5NsfbVw/zW
|
||||
GLAz58nunLNfJPnXqc2+SrmWQwUG3WZvju3qnMZgUW+K7gythiN113jVgskn/a/T
|
||||
S8NwxyxwkbsMlRbvX2bc7AB6dRr9HN5OMa6NgfZzbZSuGF50INWT5BHjaCu1VQ2p
|
||||
zocXt3kdD/17YsEK35iOdRiFRBTx3pAYAVrJ9ltqOX954/92yQ==
|
||||
=+CUk
|
||||
jA0ECQMIkykGu3qZJRr/0sARAbGCAuB8sou+PWCSpaKloliLGKHByVg8tsXUMKzK
|
||||
FDUv9HgOfzGVwMXyRznD3iWm/ikCi4YZmX6YOeXGzg0loWT8xqhgL66Q24fZ5cu1
|
||||
PilvJ7CfFYxr62Ku9iC3SRy10cL32iinF4V/HRx1uO2LDsUpmJVdbjDGo1/tYYgs
|
||||
X+z/FIhhE1NOLXgCB2BN9k4sqYgmW33ddtkUi+V/njAaQcNH6/0Jk8bw+toriIJY
|
||||
9/F7oUBl3hYkXvhDWzcCT2EHYC0VN7fwIXrUCYAwXWX0Nks=
|
||||
=9V4e
|
||||
-----END PGP MESSAGE-----
|
||||
|
@ -1,13 +1,13 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIeej6lu722Zv/0sDHAQ0MzthVX79iU9sPV0Cydzz+pFCjxUzr70fIL/sf
|
||||
6xTKToDbOMYvwr6N6F8W3Tn+F/wzRzGezixsDITiAH/kgSQSP1I89tF+nbR4LXlp
|
||||
yW5fKr6VBYxYLXj4w5kiKo4yOvn8iIdIPC5v94VDxKiz87OpVyw1ZRhChi45Qz4P
|
||||
fIC7E2b6mXoMYy4jj5NtkyceCrMeuhPzg4GQqUkcZCjVv6R4FYSkJIigj6IxiWEs
|
||||
2Aqndn+V90jUZkpw0ExpMtvFSuCHhcTO7UCyWp9CR6mCl/Lonlt9M4Ypy8FhvTwE
|
||||
1ehEtKsKbRGgKAd2WldedjQZO5DewVN/l26urJDEZrVsHWcO49f6l3REzhRIuRg4
|
||||
hXzna7eR1QWKP9DGEfZTTFixQoNn/VUN+mLkgXnxR18f61w3ZTQIB56ygefAFWFs
|
||||
qvSHgLo7v8PvYKnu4c3akPcsq6znXXhsUp+lCYHJCs0lZzz1xPi81dIq7Qvhq83g
|
||||
Z4rAv4BCuTf81I6p51MraYAzGJVMbxco0g==
|
||||
=Uy5p
|
||||
jA0ECQMIoYDi7gX56AH/0sDGAR9lknep3lba3qW1v/uYsxSDdYDtmX6zlqxOj28O
|
||||
Wzsn56j22wVE1X+DCsRTTAz0gmr5qBfP1qDR/kHCdks4Rrzcc/gaufDOzhcc6li2
|
||||
PCdRIjNf1b+Rg20GDPWttYHYtytxHr+s9p9qyaV5JWqNqOeHU9B1MaAHkcB61oMp
|
||||
b3hiy3/M398vfbloKw+mBMUYiP6DRopRUCjwKcexvljMYBLw84fHuRU6hF2X/3W6
|
||||
yvtIXYxdNjp0IVmM3003gPilWNezcpVRT4iQ8I6TKISiYajCD/ayow4O/M0lsL0g
|
||||
/AhureIfNo41gylw0bIoRrO82KKzyW2foI2MQBDEi9pYRpgZIoncu26CR9/zCCfw
|
||||
GMGB+3Uw6kYzVhjKM1zmsFhmc6VWMltS52Vbio6xiLhGH7tRl7rTY5aiSwvtaVWB
|
||||
0ZtAjJOUxqmCzrmiarT84v8EzVZuyBZ2nGmW8nkZFCU3trJi5HxPq4ya7g6cdiz2
|
||||
yyYlMT3fGGhtgno2cvuegW00NkSsTwaW
|
||||
=gk8Q
|
||||
-----END PGP MESSAGE-----
|
||||
|
@ -1,10 +1,10 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIBh7ZmqMOfob/0sAlAVk5rCnFzVGdyoNlAN2XNuYqzfmzBYY10x0eDBs7
|
||||
TErCSOYLdvqSRLS4h5uqogIgP6EUgIEsUnmR8AguZz29h01puj+4zRidUrN3V3JU
|
||||
ai80YEqeN0E3X0qsenrbksStorcDB3c6WqLfuwAcPBunQEh1hamAkU06e/g7vfmN
|
||||
PIuNL2tG5ZyKYhR7Xp7U4t0fgx/Txv+DUg29OMbm/T3hEaKGKBYm8nSoi5zrul1q
|
||||
BgWq1bvJRBzZzEsJNAOMcC6KlcfXd4uBq59vb6ZJ9INV7Y1HDjDdyAJ4LnMf+yCM
|
||||
X4JY0w+DsA==
|
||||
=Dq4O
|
||||
jA0ECQMIZdwcS80hM57/0sAsARQWk+Wy0/WBjLKSEQEEH4ny1P7NoyDhWCSiKsG8
|
||||
Uhe0KrEe2I8e5mCPzhFVYTfKqdZHdjLNa9vAj9FZLww6HilAa6KHvki+6++LW0nU
|
||||
t1y+KWO/l8JyL1pwBLvTQoMEByJ2PbupUBglRvaQmllpnIsahlVXy93iJuC/bB/b
|
||||
IwsATpbg3/eUTjtHXGja9uyWArZQ+kcHavBaC2YaDui/7OqsZvCQRk7oTNFxAglP
|
||||
UHjEbu4lY0Ntr1tRcRzzlCHjPpJOP8WkbzOzyjZ13xXtJ/lw3NC3yBQIY2+mumit
|
||||
mF//S3yRdSH2KgtkhLw=
|
||||
=mJLc
|
||||
-----END PGP MESSAGE-----
|
||||
|
@ -1,14 +1,14 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIxDtGmF58WC//0sDrAY1mR45SCNXhDQL67JRC910ZPhjoU3y8a7h3KjMo
|
||||
ousVzqq1C+S9VKj1wIdiDyftjdq3Z1EIIqpEoe2rML8EIuzYhkqcvNhhx5M8n3SF
|
||||
DTvD7AMWWYXl93W544Ha4hhkMiKkqm+SBR6vYyfr3DALPgGgd8UmvI+XC8Ph+NZZ
|
||||
ng7/6NVVCIjqSoFP39S53Wpd3fb9kDncQfH6HcVOR8RxRcQyTJ+ZQo9y4G3jPG+0
|
||||
K5ayZaVA8SjXswIz2dDa4iyEn/rZnV3mDIPU+CKw+rB+lKHC/9IsldJ3oM9FJNs4
|
||||
NLMXsbW5ZdTdTSOxIlrzsDSQasafyH+Vdp5EkrTn1mHQuz5EB0K4/hXtvOGOXBbq
|
||||
TNv0lEH63JgIRwhiNqtg5BnBHTyUe1qM9gTVe3Dsxi/qGijij+I1NHlcIaRa6dHj
|
||||
+HMiUtljpl3JJwlwVuKuVE+TjM4CkavSodwi4MNmZK+Mgi3jo9nR7SdHr7NHhf3o
|
||||
9Et247kkC+OAieQkbsIkGFrvKUDjvq1AAPvcj/B7e0aS+rjhYU7WGFjEy/vmlDdM
|
||||
00f4YFO3bowZIRhSpw==
|
||||
=aTn3
|
||||
jA0ECQMI7o++qCHU40L/0sDsAYN0bt93G/ceYFtCUI6R/DEvMB9GSzISN2pi5XbB
|
||||
ll5Ghz5EsbgShG1mFbWsvWki0b8K+v4OEhXXxJjskBimLW4zJphfS/LWJqPoU4sY
|
||||
gpZNrjF2+BnmzZ8R3JQmWhXaACddZECgYUGjGrCrs3OW256cQcP7hnrUqDtRYR7a
|
||||
lA9xIKGJEu5Bx2SjezOIIHjCSEwpNcQWnCpsCFMzst/Wa+1yRHthdg+QRWtyrYzD
|
||||
qqSbNSJEfJaBtmcXNwjzLUVMhaGQgca+bhfEo9j1Ma/C3su0i/r/6LoeDAHjWnqB
|
||||
UIqf7h6CGoVL+K3IqfoZtXi9EsnJLDd9CvfaK7/uJkNoIVQEHu+oFaxuHIjH6E4M
|
||||
NTJo99mZVEqY7r4pBeyJ0mdmaOTuC/JNwL5ticAVWAUOzdI4f20lgdI3Gtab4bIh
|
||||
eEM6T0+LmjIaLRZ3urL9RacV2T4O4s2f01Yltyuh1zpxcYFCJkGTl7N1VVb9ZjyY
|
||||
SwFeNO7ucd7WSwRc05EXveSETjffa9YFANyMF4pkUzHhk4mtlM4yWIYrgcl5i0Mt
|
||||
6ba0fxRKwAzSJrnl3Fs=
|
||||
=Ugjj
|
||||
-----END PGP MESSAGE-----
|
||||
|
@ -1,8 +1,8 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMITTNvBkR+1JH/0p4B/pMnjeHz6IQtrbddsuRlDTNKsVH5L8LndcTaPTE5
|
||||
fh8vflrcE4dBnob4IWzUyQoepvyr+BoTk4VF58zh3/WMGH+guHrP5iAPCJNb0vaO
|
||||
fkeFXZ8Cef+EB7610v3EXlVcYn0CZe9z7wPo0bCXvg/ZRTxs/tk9ycyznWrxHZEb
|
||||
k2/2FJ5Y9pQRuPsMJCIsJ1CymUzCfsFZrd8NVgRMtQ==
|
||||
=Vmb1
|
||||
jA0ECQMIiiOoV7V1Baj/0p0BN0vbH+0DDxppbEvuRu1GSmFq+5ImE+2MqcHf8nn7
|
||||
N+r6EkidkZFHpoQxy8Dy7uf5UpfamfxGP/OvFOPLIMNAvAkz8dYHihBQyWnNdgcV
|
||||
c9QSOV2CDd2zElkRyJsdr4mf9YJFO6s70PjjKJXtd9stTQpo7VUDNfjCRpmBNATl
|
||||
qqONDGtohquBhBbAQn9/3cJ3ueUfuVdeJr2Omy1g
|
||||
=Ep+K
|
||||
-----END PGP MESSAGE-----
|
||||
|
@ -1,34 +1,34 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIhSYGmg9E2Gr/0uoB+OcCrsEmrxdxF0yFgqRzXCz6bjf6Qsaaf3Yola4J
|
||||
0Jxl3rE8sCkKSHg0k5fuHpkBG8PgUxna/XQvcLfPpPEQhVOXznOLvk+oaFVnTV0a
|
||||
45wLpHH5YMDl3Kxsky29XijTUc9agVXzzPYGIL0xCTmvCPGVbtkNLBvP/mwIyanX
|
||||
kcFNt7qX4AhPh8LeYSYRH4j+jtug6QlZ5OLBbXNncNSk3Uz4VGSUJt9F8a8Di8EO
|
||||
+IRrfKnKmQ9sKcpMHsgLUyo50VPxbe2aVRma+LZxnHQ6dA7jy6yim1C3tAp16pmk
|
||||
S2UisEEcVxshwmeFdaChluSoViekExH3WjWYHbDMttOqBxwLSywnYX+oDsvWMIYj
|
||||
HTc+gSjHWWDZNcsRZ/cUitSD+JVVTlYCZ8NADNuX8SZTTCWBXG4LKEcRK47+szA/
|
||||
MiAYwuf7yfmjv0F269ID703p00JVkX6jZNEwF9FMAN//dMRbH0qcbWeVezpyFuRa
|
||||
zmzCwsR58R4z06TvawD4kpTAZOiaTMLiDikFixpmoZAI45E4o1GVYiLcf77UBX79
|
||||
3XPFE+I6OErRw65Qol88KTusasS7Uv9UiZoEcXYjasGSvS5eZ5acv+qKUVbsCSng
|
||||
xmQhqEE9W21cZb4+eYjQwWUwn7g01JFkXG15BncXDuB4KGJopZr0I2F+8gxutD2F
|
||||
b35Q3WT8/TSjB3eEeWP3lv4ZWJwXJYuDR1kpdGitstfcHjmzv+WvvG9VH1HpWBsT
|
||||
hHmYPVj3JtBSvBdVssSvBBcc5rLdrkFW/wKrfrtP2Gk9fJJv565UJDcR+bLzSSHv
|
||||
EJtx85t8MtmHUIOSiGGvpXTOCQtY5NPBtUcm6/4A5MzPuh6MubeQg5Lo+ngE7SxX
|
||||
zugqbh8APclqWs0j23yyC+/bGrzX9nCfNS9pg+vr+kBR0aHP4YCjZ/0+A+MB3nhb
|
||||
82bpkLhky4Glb5QyW1OT8RzAquqZnQwMcv769DXoE95PS47sLFiXhapYsZUDzFkw
|
||||
LzDMWELowwjQr6gV5OE8yD/BP2L/NaPDmEqNGWfoTg7P5dawd0+/GO4pEbmMlFFr
|
||||
J4Svq9kg+UfHMXOLO+cIcK5jMMIeuHyd0oFEPRiaYkZV/OOzyuLlvfzTGrra/CRg
|
||||
d1UsJFQCiz06ZQfh6WU7knhAaHkeF0fWV/aUj5vx8jvxiA4imd/dHQcDuPpb5dtz
|
||||
okv4C8hFqk0sw7Pks/TK2VcOM6zrx8BvCwZ32IO3A1I2mN7Ko2IKNPpo9gUMznNz
|
||||
/p20rAXRXvKTbO4UHu5LHUo2to7iKJwGbwQ892crMR06C1ShjnGig8TT71FdsBRc
|
||||
V+yo4q1Ql1+cT436oVKXMnK2YS8NTQFSU1ESqvG9BJ3OwKykO0paz9nd+2JkCUoN
|
||||
+NXW7j2JqZA4yCbGfTB/sZBl4EQoXOxyUn5Z9qWg/WGPdq0fEbjQa2l0gd437B42
|
||||
k8alzg5VnY27+Ow0LJSAu6vlOB8WGxIy3cqvX4FIRQXlhuB59I/RtxKOEIl6LCGM
|
||||
Qt9ZxU6/iBo71jIANiLtuSMidav/cQg6Iz4UK4Fugs0aW9oi+seQUBD4y1YOJrnc
|
||||
ngr5Quy6yrgDwFH4scrDJSY0SRQ9KIRL2BAveZcqL1Yla8MyJ6i6avyb3JUwQWpW
|
||||
WsSH2e7aaRmsy9lCrNxRQs2w4f4OKXDFfzkv4XHCusWLRWieEJjFbBknv01W/smp
|
||||
dDGTRSglRWJDg20MnYUTeLaz2x5xRwsEqnk1d0/e4/G/dic2xd7klgh9/xMhh2po
|
||||
uqC+reN0AASA/L+cNbt2n30lRgathEc3dAySL+2vN1hPOySm6fdlO2Rs+7wxOzl0
|
||||
HkGWCDezV0yDBIvsBt0B
|
||||
=luHb
|
||||
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
|
||||
6Wy3YjZH1Ep+zeNfFX/peDw=
|
||||
=ky7Q
|
||||
-----END PGP MESSAGE-----
|
||||
|
@ -1,12 +1,12 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIJNlCENll2m//0sCXAcYc5kn7UOW/7hEy80E6Sgkr4kFrenZ7btyaeFt+
|
||||
6L9pm8gRAyyAIvbTV+5ABrg35k6ZRZITebZXG7Z/FohCWLk4fzpWr9yHk3KB31d3
|
||||
maCdfL+Yj+s5ihBcJop5KSUmKWxe+Z3QTdNGR4WE+My7/NnmRMQrxqWpuhDEh1GT
|
||||
NRWUxY+QP4BEYDLUqlJghhk3lVIqA5+PsDV2m0Ks5VaUjkW9+DAaiVy79+hvJEoj
|
||||
8E5wW+aEa3O8gnAhIdvjWLViNha4eRfQROf761v3wZm6hQKtmzijezlo8akG7ov/
|
||||
SQ6Ps7crOimmUEnlahanxOcvrHORUOH/0JRVa80AoT7uFTSozVov9P1RRZjhW/By
|
||||
vYXMlphlXXSbVWYQhYdfak3lR09K8oVJHPk5yFQtF6sp1QEatmYNQrs0SbLl8QhQ
|
||||
2rq+rPjf7t367zrdO0ekg4RthhkPCVPj0w==
|
||||
=rK9W
|
||||
jA0ECQMIHn8cI/5lQ/X/0sCWAVktrqgI2rFaoVa8WBwvrtTKcJSyZQRSN3yeDSwf
|
||||
vYCPf5reM4L078Jcr8teG21BrzT8SpaMcVE/kNiy7nyrS+4piB9lICuFeXEUHOU9
|
||||
r2E/xyeNKP3RY6sVay2c4s0QyNOnosa2iNwTGGEtZNimxV2IcEB9kI2mVKNDkm/p
|
||||
rmFF9/HtOu7KNBj7mtIwqez82heZnaQXd8PWadaO4f3qenuNPDltjcgHi0dApAY9
|
||||
4TR9h2fAqiQ8QjZanRKtvnsFT+/fytL+q364oxg4UiiZ6jvXtVCzF3nFjN4CiAaK
|
||||
/LYfzV7wOnxgK/zg+wH/wZRZb5Y1w8gYKeLbG1joiSNjnVgmJaBSngV5DYWhNoxu
|
||||
pknE+ryxGAMPJxIA6x3ZZ/XbOVIF63BIfb1nEsoTH1nEqQjw4LHYNoaodyVEptq0
|
||||
C2PYnKDEkMBbMxRWj4buDspQghYlOC4y
|
||||
=RaOd
|
||||
-----END PGP MESSAGE-----
|
||||
|
@ -1,10 +1,10 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIBY9Ry+ogj9n/0sBBAfP0Uu4XFy4ojviLQ7vk6Qj554diK6gjT09nIjtE
|
||||
fzxL/H4WkTA8c8DgowZFZjp8i+wavLf4fzx4UZgz1msxEpjrO7ImDRwz9ebAuWVu
|
||||
BgUluVQ7ZhgX6L9rUz93O2XpNwx/fYyidcL5TjUAUGa/3GMgAkOzdm/7b6qUhs4p
|
||||
glm5UGmsPWcd4r3876+P4WMEUfn8NqJJsAkuGGhgK8N3SgZZQEnC6ELegA54u9Vr
|
||||
iW2knifImau4txTRfnNnQFL7wra9VzSqkBUo1f/K46hpEPAtXs4G9ZijehASTmCU
|
||||
PPBgtZ9Pc2rkKc51dFE+1MWH6n/GiKRIA1+3EOVuxEJuFpY=
|
||||
=SsRx
|
||||
jA0ECQMI6ilVuKluy9z/0sBBAY2C0GhxMxdKZFeZwFZVFOlBfNfLMa0Jpubl9YU9
|
||||
3v4oS9LF9PXTE9Dv5O/2WWlEcZ5cTw5Ur86L+w1YIxDE6EOITgc8nKXwzPqj7Nkx
|
||||
qPFE/5K7kIPzsw0My3flol+PLDHmFcKsZknxBSQKKOjkBHGthvlFkR44Mg+gs7oc
|
||||
hsVLLnvt4TH6dndEId5+5J1y5i6MtCuCpemCjmY22ZmYnaMkuxTiRWDw2+GD5YRo
|
||||
AmSHSEyQ8uLq1N4Tpin68z+0iUIfgR/UbHRq5B46K0AxEsA5BpHIDpBGf52Y4hBE
|
||||
y27F1Yr1AypgakMD524YBvRmaiuBJw4WAjxrwLHjZnrJpIg=
|
||||
=LF00
|
||||
-----END PGP MESSAGE-----
|
||||
|
@ -1,13 +1,13 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
jA0ECQMIwZpSduIhocH/0sDMATJ/anpIxFnatcbGSfOQOe6Fkp9Cc31iSxGRGoNC
|
||||
I0sJfVr5c7tZuRusLS/FmfKPqHfo8jZFZf3xNfvvqnP1d2K4OXBkAyBpaV27xWU2
|
||||
AzcoEMbApGfVlLKmauRczFSnITr+NzWWPeKv1+CcFw7THj7uOMa6zCnepNdrbTF1
|
||||
S0mNbdiohsw8Zgleywrql4h31L5YAWrvxsac4ozXEqk4NsgNInjI6m7zovyT7p7X
|
||||
c88vKREtFoOT7c04D3fLM8tQ2M9jvDqTVh/Yr7pL5C/QOSfy/9tIrHCO/zIhKZid
|
||||
B87J2zeiW8bcNflrLnpkQP3m3eFaBC8lGvKGlyhRmWtroCR0oM+/kF7NJ+8f5S2i
|
||||
npuQTWOspDorewM6swA8/JNQrRIutCsm6fs35MfQcoMHoue41xA2ve0y0q/ZuiJi
|
||||
ro8pGc/VcMwyBhbzRwepvv4GD1irch7IgJ7ZP2U6ugboiXgDesXMDe+VnIwoxGk3
|
||||
pXKzGw0V4E/nfZ1RulOKgIK8RqFFSa9e9y9XCe29
|
||||
=M2ve
|
||||
jA0ECQMIwaGoV3WTcgH/0sDMARL6H1Ec+ap2yUA7C9c1Jg9MN84vcnT3U6Kzk6CK
|
||||
CgqZ5jQTIuikmH9ZigftZpZMgrtuXx5JNqpN4H57w3SqUbfXLcfwlleb0Q55LCHg
|
||||
EzmXqgB/3b8uJ6DUJiLKWyiPclhqA6JaWCIoXb0nMiPwFPLmZFg1MgytuZPDBBWn
|
||||
u5iMcQUQPZw5f5CVBpUGZrycfVf52xq/EbKFlGPLychWIJATFiAR8//WRQzM7Sdk
|
||||
kmIxeKIBM8ABUO25qeR8vOOlBkdsBdxRw61Y8oGFcCVjVW4/2rV86VsYfVnBe04Q
|
||||
TGlLCXNX0gvPg1u9PxLrGfx0zJO1aR5LPfU8qjTi2oAiaucxtpMPzGibTyEDY5rP
|
||||
yrcj4w4W9j2eCMrJoiZ8BXjO1tRSTispQukp+pT2uNoIsrhp42J//J9dGKkFfrFG
|
||||
qvuSGgedqs/vnjtSJk21GUXztGCMdACv1BnaJLaj2oNXSpPg4s6GWQ4oyEYvrvn5
|
||||
sMy76QEG95UjBdZaPah+pfoPcpM6tGEVv0RAoWHB
|
||||
=rzNt
|
||||
-----END PGP MESSAGE-----
|
||||
|
9
setup.sh
9
setup.sh
@ -301,7 +301,7 @@ warning_prompt() {
|
||||
log_error "Please ensure you have a backup of your data before proceeding."
|
||||
log_error "This script will modify system files and may require sudo permissions."
|
||||
echo ""
|
||||
log_info "This script has been tested on Ubuntu 22.04, 24.04, 24.10, Debian 12 and Fedora 41."
|
||||
log_info "This script has been tested on Ubuntu 22.04, 24.04, 24.10, Pop!_OS 24.04 Alpha 7, Debian 12 and Fedora 41."
|
||||
log_info "Setup starts in 10 seconds, to abort use Ctrl+C to exit NOW."
|
||||
echo ""
|
||||
sleep 10
|
||||
@ -418,6 +418,13 @@ check_compatibility() {
|
||||
sleep 5
|
||||
check_command_availibility "apt"
|
||||
;;
|
||||
Pop!_OS*)
|
||||
log_success "Detected Pop!_OS. Proceeding with setup..."
|
||||
log_warning "Only COSMIC alpha is supported, other versions are not tested."
|
||||
log_warning "Continueing in 5 seconds..."
|
||||
sleep 5
|
||||
check_command_availibility "apt"
|
||||
;;
|
||||
*)
|
||||
die "Unsupported distribution: $distro"
|
||||
;;
|
||||
|
@ -1,6 +1,5 @@
|
||||
{
|
||||
"security.workspace.trust.untrustedFiles": "open",
|
||||
"window.zoomLevel": 1.2,
|
||||
"editor.fontFamily": "Hack Nerd Font",
|
||||
"terminal.integrated.fontFamily": "Hack Nerd Font",
|
||||
"github.copilot.enable": {
|
||||
@ -22,6 +21,11 @@
|
||||
"editor.renderWhitespace": "all"
|
||||
},
|
||||
|
||||
"[nix]": {
|
||||
"editor.formatOnSave": true,
|
||||
"editor.formatOnType": true
|
||||
},
|
||||
|
||||
"[dart]": {
|
||||
// Automatically format code on save and during typing of certain characters
|
||||
// (like `;` and `}`).
|
||||
@ -48,7 +52,8 @@
|
||||
},
|
||||
"remote.SSH.remotePlatform": {
|
||||
"mennos-laptop": "linux",
|
||||
"mennos-desktop": "linux"
|
||||
"mennos-desktop": "linux",
|
||||
"cloud": "linux"
|
||||
},
|
||||
"editor.tabSize": 2,
|
||||
"editor.insertSpaces": true,
|
||||
@ -65,5 +70,10 @@
|
||||
"dart.debugExternalPackageLibraries": true,
|
||||
"dart.debugSdkLibraries": true,
|
||||
"dart.warnWhenEditingFilesOutsideWorkspace": false,
|
||||
"window.confirmSaveUntitledWorkspace": false
|
||||
"window.confirmSaveUntitledWorkspace": false,
|
||||
"git.openRepositoryInParentFolders": "never",
|
||||
"debug.toolBarLocation": "commandCenter",
|
||||
"workbench.colorTheme": "Default Light+",
|
||||
"ansible.lightspeed.enabled": false,
|
||||
"ansible.lightspeed.suggestions.enabled": false
|
||||
}
|
91
zed/settings.json
Normal file
91
zed/settings.json
Normal file
@ -0,0 +1,91 @@
|
||||
// Zed settings
|
||||
//
|
||||
// For information on how to configure Zed, see the Zed
|
||||
// documentation: https://zed.dev/docs/configuring-zed
|
||||
//
|
||||
// To see all of Zed's default settings without changing your
|
||||
// custom settings, run `zed: open default settings` from the
|
||||
// command palette (cmd-shift-p / ctrl-shift-p)
|
||||
{
|
||||
// #############################################
|
||||
// ## Theming ##
|
||||
// #############################################
|
||||
"icon_theme": "Catppuccin Frappé",
|
||||
"ui_font_size": 16,
|
||||
"buffer_font_size": 16,
|
||||
"minimap": {
|
||||
"show": "auto",
|
||||
"thumb": "hover",
|
||||
"current_line_highlight": "all"
|
||||
},
|
||||
"theme": {
|
||||
"mode": "system",
|
||||
"light": "Catppuccin Latte",
|
||||
"dark": "Catppuccin Frappé"
|
||||
},
|
||||
"tabs": {
|
||||
"close_position": "right",
|
||||
"file_icons": true,
|
||||
"git_status": true,
|
||||
"activate_on_close": "history",
|
||||
"show_close_button": "hover",
|
||||
"show_diagnostics": "errors"
|
||||
},
|
||||
"toolbar": {
|
||||
"code_actions": true
|
||||
},
|
||||
|
||||
// #############################################
|
||||
// ## Preferences ##
|
||||
// #############################################
|
||||
"restore_on_startup": "last_session",
|
||||
"auto_update": true,
|
||||
"base_keymap": "VSCode",
|
||||
"cursor_shape": "bar",
|
||||
"hide_mouse": "on_typing",
|
||||
"on_last_window_closed": "quit_app",
|
||||
"ensure_final_newline_on_save": true,
|
||||
"format_on_save": "prettier",
|
||||
// Example on language specific options:
|
||||
// "languages": {
|
||||
// "Shell Script": {
|
||||
// "format_on_save": "off"
|
||||
// }
|
||||
// },
|
||||
|
||||
// #############################################
|
||||
// ## AI Stuff ##
|
||||
// #############################################
|
||||
"agent": {
|
||||
"model_parameters": [],
|
||||
"default_model": {
|
||||
"provider": "copilot_chat",
|
||||
"model": "claude-3.7-sonnet"
|
||||
},
|
||||
"version": "2"
|
||||
},
|
||||
"edit_predictions": {
|
||||
"mode": "subtle",
|
||||
"enabled_in_text_threads": true,
|
||||
"disabled_globs": [
|
||||
"**/.env*",
|
||||
"**/*.pem",
|
||||
"**/*.key",
|
||||
"**/*.cert",
|
||||
"**/*.crt",
|
||||
"**/.dev.vars",
|
||||
"**/secrets/**"
|
||||
]
|
||||
},
|
||||
|
||||
// #############################################
|
||||
// ## Extensions ##
|
||||
// #############################################
|
||||
"auto_install_extensions": {
|
||||
"dockerfile": true,
|
||||
"html": true,
|
||||
"yaml": true,
|
||||
"docker-compose": true,
|
||||
"golang": true
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user