many changes
This commit is contained in:
@@ -13,6 +13,7 @@ keys:
|
|||||||
- &fw age1wq82xjyj80htz33x7agxddjfumr3wkwh3r24tasagepxw7ka893sau68df
|
- &fw age1wq82xjyj80htz33x7agxddjfumr3wkwh3r24tasagepxw7ka893sau68df
|
||||||
- &fw-new age12msc2c6drsaw0yk2hjlaw0q0lyq0emjx5e8rq7qc7ql689k593kqfmhss2
|
- &fw-new age12msc2c6drsaw0yk2hjlaw0q0lyq0emjx5e8rq7qc7ql689k593kqfmhss2
|
||||||
- &netboot age14uarclad0ty5supc8ep09793xrnwkv8a4h9j0fq8d8lc92n2dadqkf64vw
|
- &netboot age14uarclad0ty5supc8ep09793xrnwkv8a4h9j0fq8d8lc92n2dadqkf64vw
|
||||||
|
- &gpd-win4 age1ceg548u5ma6rgu3xgvd254y5xefqrdqfqhcjsjp3255q976fgd2qaua53d
|
||||||
|
|
||||||
creation_rules:
|
creation_rules:
|
||||||
- path_regex: ^[^/]+\.yaml$
|
- path_regex: ^[^/]+\.yaml$
|
||||||
@@ -27,6 +28,13 @@ creation_rules:
|
|||||||
- *bitwarden
|
- *bitwarden
|
||||||
- *dominik
|
- *dominik
|
||||||
- *dominik2
|
- *dominik2
|
||||||
|
- path_regex: hosts/gpd-win4/[^/]+\.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *bitwarden
|
||||||
|
- *dominik
|
||||||
|
- *dominik2
|
||||||
|
- *gpd-win4
|
||||||
- path_regex: hosts/fw/[^/]+\.yaml$
|
- path_regex: hosts/fw/[^/]+\.yaml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
|
|||||||
@@ -1,24 +1,38 @@
|
|||||||
substitutions:
|
substitutions:
|
||||||
device_name: "livingroom-bulb-1"
|
name: "livingroom-bulb-1"
|
||||||
friendly_name: "Living Room Bulb 1"
|
friendly_name: "Living Room Bulb 1"
|
||||||
|
room: "Living Room"
|
||||||
|
device_description: "athom 7w rgbcw light bulb"
|
||||||
|
project_name: "Athom Technology.Athom RGBCW Bulb"
|
||||||
|
dns_domain: ".cloonar.smart"
|
||||||
|
timezone: ""
|
||||||
|
sntp_update_interval: 6h
|
||||||
|
sntp_server_1: "0.pool.ntp.org"
|
||||||
|
sntp_server_2: "1.pool.ntp.org"
|
||||||
|
sntp_server_3: "2.pool.ntp.org"
|
||||||
|
log_level: "WARN"
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${device_name}
|
name: "${name}"
|
||||||
comment: ${friendly_name}
|
friendly_name: "${friendly_name}"
|
||||||
platform: ESP8266
|
comment: "${device_description}"
|
||||||
board: esp01_1m
|
area: "${room}"
|
||||||
|
name_add_mac_suffix: false
|
||||||
|
min_version: 2024.6.0
|
||||||
|
project:
|
||||||
|
name: "${project_name}"
|
||||||
|
version: "${project_version}"
|
||||||
on_boot:
|
on_boot:
|
||||||
priority: 300
|
|
||||||
then:
|
then:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 20%
|
brightness: 20%
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
red: 100%
|
red: 100%
|
||||||
green: 50%
|
green: 50%
|
||||||
blue: 0%
|
blue: 0%
|
||||||
@@ -32,16 +46,25 @@ interval:
|
|||||||
api.connected: # check if api connected
|
api.connected: # check if api connected
|
||||||
else:
|
else:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 100%
|
brightness: 100%
|
||||||
|
|
||||||
# Enable Home Assistant API
|
esp8266:
|
||||||
|
board: esp8285
|
||||||
|
restore_from_flash: true
|
||||||
|
|
||||||
|
preferences:
|
||||||
|
flash_write_interval: 1min
|
||||||
|
|
||||||
api:
|
api:
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
|
||||||
logger:
|
logger:
|
||||||
|
|
||||||
ota:
|
mdns:
|
||||||
platform: esphome
|
disabled: false
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
ssid: !secret wifi_ssid
|
ssid: !secret wifi_ssid
|
||||||
@@ -49,32 +72,158 @@ wifi:
|
|||||||
fast_connect: True
|
fast_connect: True
|
||||||
domain: .cloonar.smart
|
domain: .cloonar.smart
|
||||||
|
|
||||||
light:
|
captive_portal:
|
||||||
- platform: rgbw
|
|
||||||
id: my_light
|
dashboard_import:
|
||||||
name: ${friendly_name}
|
package_import_url: github://athom-tech/athom-configs/athom-rgbww-light.yaml
|
||||||
red: pwm_r
|
|
||||||
green: pwm_g
|
binary_sensor:
|
||||||
blue: pwm_b
|
- platform: status
|
||||||
white: pwm_w
|
name: "Status"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: uptime
|
||||||
|
name: "Uptime Sensor"
|
||||||
|
id: uptime_sensor
|
||||||
|
entity_category: diagnostic
|
||||||
|
internal: true
|
||||||
|
|
||||||
|
- platform: wifi_signal
|
||||||
|
name: "WiFi Signal dB"
|
||||||
|
id: wifi_signal_db
|
||||||
|
update_interval: 60s
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: wifi_signal_db
|
||||||
|
name: "WiFi Signal Percent"
|
||||||
|
filters:
|
||||||
|
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
|
||||||
|
unit_of_measurement: "Signal %"
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
device_class: ""
|
||||||
|
|
||||||
|
button:
|
||||||
|
- platform: restart
|
||||||
|
name: "Restart"
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: factory_reset
|
||||||
|
name: "Factory Reset"
|
||||||
|
id: Reset
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: safe_mode
|
||||||
|
name: "Safe Mode"
|
||||||
|
internal: false
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
output:
|
output:
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
pin: GPIO13
|
id: red_output
|
||||||
frequency: 1000 Hz
|
pin: GPIO4
|
||||||
id: pwm_r
|
min_power: 0.000499
|
||||||
|
max_power: 1
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: green_output
|
||||||
pin: GPIO12
|
pin: GPIO12
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_g
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: blue_output
|
||||||
pin: GPIO14
|
pin: GPIO14
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_b
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: warm_white_output
|
||||||
|
pin: GPIO13
|
||||||
|
min_power: 0.000499
|
||||||
|
max_power: 0.9
|
||||||
|
- platform: esp8266_pwm
|
||||||
|
id: white_output
|
||||||
pin: GPIO5
|
pin: GPIO5
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_w
|
max_power: 0.9
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: rgbww
|
||||||
|
id: rgbww_light
|
||||||
|
name: "RGBCW_Bulb"
|
||||||
|
red: red_output
|
||||||
|
green: green_output
|
||||||
|
blue: blue_output
|
||||||
|
warm_white: warm_white_output
|
||||||
|
cold_white: white_output
|
||||||
|
cold_white_color_temperature: 6000 K
|
||||||
|
warm_white_color_temperature: 3000 K
|
||||||
|
color_interlock: true
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: wifi_info
|
||||||
|
ip_address:
|
||||||
|
name: "IP Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
ssid:
|
||||||
|
name: "Connected SSID"
|
||||||
|
entity_category: diagnostic
|
||||||
|
mac_address:
|
||||||
|
name: "Mac Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
# Creates a sensor showing when the device was last restarted
|
||||||
|
- platform: template
|
||||||
|
name: 'Last Restart'
|
||||||
|
id: device_last_restart
|
||||||
|
icon: mdi:clock
|
||||||
|
entity_category: diagnostic
|
||||||
|
# device_class: timestamp
|
||||||
|
|
||||||
|
# Creates a sensor of the uptime of the device, in formatted days, hours, minutes and seconds
|
||||||
|
- platform: template
|
||||||
|
name: "Uptime"
|
||||||
|
entity_category: diagnostic
|
||||||
|
lambda: |-
|
||||||
|
int seconds = (id(uptime_sensor).state);
|
||||||
|
int days = seconds / (24 * 3600);
|
||||||
|
seconds = seconds % (24 * 3600);
|
||||||
|
int hours = seconds / 3600;
|
||||||
|
seconds = seconds % 3600;
|
||||||
|
int minutes = seconds / 60;
|
||||||
|
seconds = seconds % 60;
|
||||||
|
if ( days > 3650 ) {
|
||||||
|
return { "Starting up" };
|
||||||
|
} else if ( days ) {
|
||||||
|
return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( hours ) {
|
||||||
|
return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( minutes ) {
|
||||||
|
return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else {
|
||||||
|
return { (String(seconds) +"s").c_str() };
|
||||||
|
}
|
||||||
|
icon: mdi:clock-start
|
||||||
|
|
||||||
|
time:
|
||||||
|
- platform: sntp
|
||||||
|
id: sntp_time
|
||||||
|
# Define the timezone of the device
|
||||||
|
timezone: "${timezone}"
|
||||||
|
# Change sync interval from default 5min to 6 hours (or as set in substitutions)
|
||||||
|
update_interval: ${sntp_update_interval}
|
||||||
|
# Set specific sntp servers to use
|
||||||
|
servers:
|
||||||
|
- "${sntp_server_1}"
|
||||||
|
- "${sntp_server_2}"
|
||||||
|
- "${sntp_server_3}"
|
||||||
|
# Publish the time the device was last restarted
|
||||||
|
on_time_sync:
|
||||||
|
then:
|
||||||
|
# Update last restart time, but only once.
|
||||||
|
- if:
|
||||||
|
condition:
|
||||||
|
lambda: 'return id(device_last_restart).state == "";'
|
||||||
|
then:
|
||||||
|
- text_sensor.template.publish:
|
||||||
|
id: device_last_restart
|
||||||
|
state: !lambda 'return id(sntp_time).now().strftime("%a %d %b %Y - %I:%M:%S %p");'
|
||||||
@@ -1,24 +1,38 @@
|
|||||||
substitutions:
|
substitutions:
|
||||||
device_name: "livingroom-bulb-2"
|
name: "livingroom-bulb-2"
|
||||||
friendly_name: "Living Room Bulb 2"
|
friendly_name: "Living Room Bulb 2"
|
||||||
|
room: "Living Room"
|
||||||
|
device_description: "athom 7w rgbcw light bulb"
|
||||||
|
project_name: "Athom Technology.Athom RGBCW Bulb"
|
||||||
|
dns_domain: ".cloonar.smart"
|
||||||
|
timezone: ""
|
||||||
|
sntp_update_interval: 6h
|
||||||
|
sntp_server_1: "0.pool.ntp.org"
|
||||||
|
sntp_server_2: "1.pool.ntp.org"
|
||||||
|
sntp_server_3: "2.pool.ntp.org"
|
||||||
|
log_level: "WARN"
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${device_name}
|
name: "${name}"
|
||||||
comment: ${friendly_name}
|
friendly_name: "${friendly_name}"
|
||||||
platform: ESP8266
|
comment: "${device_description}"
|
||||||
board: esp01_1m
|
area: "${room}"
|
||||||
|
name_add_mac_suffix: false
|
||||||
|
min_version: 2024.6.0
|
||||||
|
project:
|
||||||
|
name: "${project_name}"
|
||||||
|
version: "${project_version}"
|
||||||
on_boot:
|
on_boot:
|
||||||
priority: 300
|
|
||||||
then:
|
then:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 20%
|
brightness: 20%
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
red: 100%
|
red: 100%
|
||||||
green: 50%
|
green: 50%
|
||||||
blue: 0%
|
blue: 0%
|
||||||
@@ -32,16 +46,25 @@ interval:
|
|||||||
api.connected: # check if api connected
|
api.connected: # check if api connected
|
||||||
else:
|
else:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 100%
|
brightness: 100%
|
||||||
|
|
||||||
# Enable Home Assistant API
|
esp8266:
|
||||||
|
board: esp8285
|
||||||
|
restore_from_flash: true
|
||||||
|
|
||||||
|
preferences:
|
||||||
|
flash_write_interval: 1min
|
||||||
|
|
||||||
api:
|
api:
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
|
||||||
logger:
|
logger:
|
||||||
|
|
||||||
ota:
|
mdns:
|
||||||
platform: esphome
|
disabled: false
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
ssid: !secret wifi_ssid
|
ssid: !secret wifi_ssid
|
||||||
@@ -49,32 +72,158 @@ wifi:
|
|||||||
fast_connect: True
|
fast_connect: True
|
||||||
domain: .cloonar.smart
|
domain: .cloonar.smart
|
||||||
|
|
||||||
light:
|
captive_portal:
|
||||||
- platform: rgbw
|
|
||||||
id: my_light
|
dashboard_import:
|
||||||
name: ${friendly_name}
|
package_import_url: github://athom-tech/athom-configs/athom-rgbww-light.yaml
|
||||||
red: pwm_r
|
|
||||||
green: pwm_g
|
binary_sensor:
|
||||||
blue: pwm_b
|
- platform: status
|
||||||
white: pwm_w
|
name: "Status"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: uptime
|
||||||
|
name: "Uptime Sensor"
|
||||||
|
id: uptime_sensor
|
||||||
|
entity_category: diagnostic
|
||||||
|
internal: true
|
||||||
|
|
||||||
|
- platform: wifi_signal
|
||||||
|
name: "WiFi Signal dB"
|
||||||
|
id: wifi_signal_db
|
||||||
|
update_interval: 60s
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: wifi_signal_db
|
||||||
|
name: "WiFi Signal Percent"
|
||||||
|
filters:
|
||||||
|
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
|
||||||
|
unit_of_measurement: "Signal %"
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
device_class: ""
|
||||||
|
|
||||||
|
button:
|
||||||
|
- platform: restart
|
||||||
|
name: "Restart"
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: factory_reset
|
||||||
|
name: "Factory Reset"
|
||||||
|
id: Reset
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: safe_mode
|
||||||
|
name: "Safe Mode"
|
||||||
|
internal: false
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
output:
|
output:
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
pin: GPIO13
|
id: red_output
|
||||||
frequency: 1000 Hz
|
pin: GPIO4
|
||||||
id: pwm_r
|
min_power: 0.000499
|
||||||
|
max_power: 1
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: green_output
|
||||||
pin: GPIO12
|
pin: GPIO12
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_g
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: blue_output
|
||||||
pin: GPIO14
|
pin: GPIO14
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_b
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: warm_white_output
|
||||||
|
pin: GPIO13
|
||||||
|
min_power: 0.000499
|
||||||
|
max_power: 0.9
|
||||||
|
- platform: esp8266_pwm
|
||||||
|
id: white_output
|
||||||
pin: GPIO5
|
pin: GPIO5
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_w
|
max_power: 0.9
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: rgbww
|
||||||
|
id: rgbww_light
|
||||||
|
name: "RGBCW_Bulb"
|
||||||
|
red: red_output
|
||||||
|
green: green_output
|
||||||
|
blue: blue_output
|
||||||
|
warm_white: warm_white_output
|
||||||
|
cold_white: white_output
|
||||||
|
cold_white_color_temperature: 6000 K
|
||||||
|
warm_white_color_temperature: 3000 K
|
||||||
|
color_interlock: true
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: wifi_info
|
||||||
|
ip_address:
|
||||||
|
name: "IP Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
ssid:
|
||||||
|
name: "Connected SSID"
|
||||||
|
entity_category: diagnostic
|
||||||
|
mac_address:
|
||||||
|
name: "Mac Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
# Creates a sensor showing when the device was last restarted
|
||||||
|
- platform: template
|
||||||
|
name: 'Last Restart'
|
||||||
|
id: device_last_restart
|
||||||
|
icon: mdi:clock
|
||||||
|
entity_category: diagnostic
|
||||||
|
# device_class: timestamp
|
||||||
|
|
||||||
|
# Creates a sensor of the uptime of the device, in formatted days, hours, minutes and seconds
|
||||||
|
- platform: template
|
||||||
|
name: "Uptime"
|
||||||
|
entity_category: diagnostic
|
||||||
|
lambda: |-
|
||||||
|
int seconds = (id(uptime_sensor).state);
|
||||||
|
int days = seconds / (24 * 3600);
|
||||||
|
seconds = seconds % (24 * 3600);
|
||||||
|
int hours = seconds / 3600;
|
||||||
|
seconds = seconds % 3600;
|
||||||
|
int minutes = seconds / 60;
|
||||||
|
seconds = seconds % 60;
|
||||||
|
if ( days > 3650 ) {
|
||||||
|
return { "Starting up" };
|
||||||
|
} else if ( days ) {
|
||||||
|
return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( hours ) {
|
||||||
|
return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( minutes ) {
|
||||||
|
return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else {
|
||||||
|
return { (String(seconds) +"s").c_str() };
|
||||||
|
}
|
||||||
|
icon: mdi:clock-start
|
||||||
|
|
||||||
|
time:
|
||||||
|
- platform: sntp
|
||||||
|
id: sntp_time
|
||||||
|
# Define the timezone of the device
|
||||||
|
timezone: "${timezone}"
|
||||||
|
# Change sync interval from default 5min to 6 hours (or as set in substitutions)
|
||||||
|
update_interval: ${sntp_update_interval}
|
||||||
|
# Set specific sntp servers to use
|
||||||
|
servers:
|
||||||
|
- "${sntp_server_1}"
|
||||||
|
- "${sntp_server_2}"
|
||||||
|
- "${sntp_server_3}"
|
||||||
|
# Publish the time the device was last restarted
|
||||||
|
on_time_sync:
|
||||||
|
then:
|
||||||
|
# Update last restart time, but only once.
|
||||||
|
- if:
|
||||||
|
condition:
|
||||||
|
lambda: 'return id(device_last_restart).state == "";'
|
||||||
|
then:
|
||||||
|
- text_sensor.template.publish:
|
||||||
|
id: device_last_restart
|
||||||
|
state: !lambda 'return id(sntp_time).now().strftime("%a %d %b %Y - %I:%M:%S %p");'
|
||||||
@@ -1,24 +1,49 @@
|
|||||||
substitutions:
|
substitutions:
|
||||||
device_name: "livingroom-bulb-3"
|
name: "livingroom-bulb-3"
|
||||||
friendly_name: "Living Room Bulb 3"
|
friendly_name: "Living Room Bulb 3"
|
||||||
|
room: "Living Room"
|
||||||
|
device_description: "athom 7w rgbcw light bulb"
|
||||||
|
project_name: "Athom Technology.Athom RGBCW Bulb"
|
||||||
|
dns_domain: ".cloonar.smart"
|
||||||
|
timezone: ""
|
||||||
|
sntp_update_interval: 6h
|
||||||
|
sntp_server_1: "0.pool.ntp.org"
|
||||||
|
sntp_server_2: "1.pool.ntp.org"
|
||||||
|
sntp_server_3: "2.pool.ntp.org"
|
||||||
|
log_level: "WARN"
|
||||||
|
|
||||||
|
globals:
|
||||||
|
- id: fast_boot
|
||||||
|
type: int
|
||||||
|
restore_value: yes
|
||||||
|
initial_value: '0'
|
||||||
|
|
||||||
|
- id: restore_mode
|
||||||
|
type: int
|
||||||
|
restore_value: yes
|
||||||
|
initial_value: "1"
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${device_name}
|
name: "${name}"
|
||||||
comment: ${friendly_name}
|
friendly_name: "${friendly_name}"
|
||||||
platform: ESP8266
|
comment: "${device_description}"
|
||||||
board: esp01_1m
|
area: "${room}"
|
||||||
|
name_add_mac_suffix: false
|
||||||
|
min_version: 2024.6.0
|
||||||
|
project:
|
||||||
|
name: "${project_name}"
|
||||||
|
version: "${project_version}"
|
||||||
on_boot:
|
on_boot:
|
||||||
priority: 300
|
|
||||||
then:
|
then:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 20%
|
brightness: 20%
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
red: 100%
|
red: 100%
|
||||||
green: 50%
|
green: 50%
|
||||||
blue: 0%
|
blue: 0%
|
||||||
@@ -32,16 +57,25 @@ interval:
|
|||||||
api.connected: # check if api connected
|
api.connected: # check if api connected
|
||||||
else:
|
else:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 100%
|
brightness: 100%
|
||||||
|
|
||||||
# Enable Home Assistant API
|
esp8266:
|
||||||
|
board: esp8285
|
||||||
|
restore_from_flash: true
|
||||||
|
|
||||||
|
preferences:
|
||||||
|
flash_write_interval: 1min
|
||||||
|
|
||||||
api:
|
api:
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
|
||||||
logger:
|
logger:
|
||||||
|
|
||||||
ota:
|
mdns:
|
||||||
platform: esphome
|
disabled: false
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
ssid: !secret wifi_ssid
|
ssid: !secret wifi_ssid
|
||||||
@@ -49,32 +83,158 @@ wifi:
|
|||||||
fast_connect: True
|
fast_connect: True
|
||||||
domain: .cloonar.smart
|
domain: .cloonar.smart
|
||||||
|
|
||||||
light:
|
captive_portal:
|
||||||
- platform: rgbw
|
|
||||||
id: my_light
|
dashboard_import:
|
||||||
name: ${friendly_name}
|
package_import_url: github://athom-tech/athom-configs/athom-rgbww-light.yaml
|
||||||
red: pwm_r
|
|
||||||
green: pwm_g
|
binary_sensor:
|
||||||
blue: pwm_b
|
- platform: status
|
||||||
white: pwm_w
|
name: "Status"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: uptime
|
||||||
|
name: "Uptime Sensor"
|
||||||
|
id: uptime_sensor
|
||||||
|
entity_category: diagnostic
|
||||||
|
internal: true
|
||||||
|
|
||||||
|
- platform: wifi_signal
|
||||||
|
name: "WiFi Signal dB"
|
||||||
|
id: wifi_signal_db
|
||||||
|
update_interval: 60s
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: wifi_signal_db
|
||||||
|
name: "WiFi Signal Percent"
|
||||||
|
filters:
|
||||||
|
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
|
||||||
|
unit_of_measurement: "Signal %"
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
device_class: ""
|
||||||
|
|
||||||
|
button:
|
||||||
|
- platform: restart
|
||||||
|
name: "Restart"
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: factory_reset
|
||||||
|
name: "Factory Reset"
|
||||||
|
id: Reset
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: safe_mode
|
||||||
|
name: "Safe Mode"
|
||||||
|
internal: false
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
output:
|
output:
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
pin: GPIO13
|
id: red_output
|
||||||
frequency: 1000 Hz
|
pin: GPIO4
|
||||||
id: pwm_r
|
min_power: 0.000499
|
||||||
|
max_power: 1
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: green_output
|
||||||
pin: GPIO12
|
pin: GPIO12
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_g
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: blue_output
|
||||||
pin: GPIO14
|
pin: GPIO14
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_b
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: warm_white_output
|
||||||
|
pin: GPIO13
|
||||||
|
min_power: 0.000499
|
||||||
|
max_power: 0.9
|
||||||
|
- platform: esp8266_pwm
|
||||||
|
id: white_output
|
||||||
pin: GPIO5
|
pin: GPIO5
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_w
|
max_power: 0.9
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: rgbww
|
||||||
|
id: rgbww_light
|
||||||
|
name: "RGBCW_Bulb"
|
||||||
|
red: red_output
|
||||||
|
green: green_output
|
||||||
|
blue: blue_output
|
||||||
|
warm_white: warm_white_output
|
||||||
|
cold_white: white_output
|
||||||
|
cold_white_color_temperature: 6000 K
|
||||||
|
warm_white_color_temperature: 3000 K
|
||||||
|
color_interlock: true
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: wifi_info
|
||||||
|
ip_address:
|
||||||
|
name: "IP Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
ssid:
|
||||||
|
name: "Connected SSID"
|
||||||
|
entity_category: diagnostic
|
||||||
|
mac_address:
|
||||||
|
name: "Mac Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
# Creates a sensor showing when the device was last restarted
|
||||||
|
- platform: template
|
||||||
|
name: 'Last Restart'
|
||||||
|
id: device_last_restart
|
||||||
|
icon: mdi:clock
|
||||||
|
entity_category: diagnostic
|
||||||
|
# device_class: timestamp
|
||||||
|
|
||||||
|
# Creates a sensor of the uptime of the device, in formatted days, hours, minutes and seconds
|
||||||
|
- platform: template
|
||||||
|
name: "Uptime"
|
||||||
|
entity_category: diagnostic
|
||||||
|
lambda: |-
|
||||||
|
int seconds = (id(uptime_sensor).state);
|
||||||
|
int days = seconds / (24 * 3600);
|
||||||
|
seconds = seconds % (24 * 3600);
|
||||||
|
int hours = seconds / 3600;
|
||||||
|
seconds = seconds % 3600;
|
||||||
|
int minutes = seconds / 60;
|
||||||
|
seconds = seconds % 60;
|
||||||
|
if ( days > 3650 ) {
|
||||||
|
return { "Starting up" };
|
||||||
|
} else if ( days ) {
|
||||||
|
return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( hours ) {
|
||||||
|
return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( minutes ) {
|
||||||
|
return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else {
|
||||||
|
return { (String(seconds) +"s").c_str() };
|
||||||
|
}
|
||||||
|
icon: mdi:clock-start
|
||||||
|
|
||||||
|
time:
|
||||||
|
- platform: sntp
|
||||||
|
id: sntp_time
|
||||||
|
# Define the timezone of the device
|
||||||
|
timezone: "${timezone}"
|
||||||
|
# Change sync interval from default 5min to 6 hours (or as set in substitutions)
|
||||||
|
update_interval: ${sntp_update_interval}
|
||||||
|
# Set specific sntp servers to use
|
||||||
|
servers:
|
||||||
|
- "${sntp_server_1}"
|
||||||
|
- "${sntp_server_2}"
|
||||||
|
- "${sntp_server_3}"
|
||||||
|
# Publish the time the device was last restarted
|
||||||
|
on_time_sync:
|
||||||
|
then:
|
||||||
|
# Update last restart time, but only once.
|
||||||
|
- if:
|
||||||
|
condition:
|
||||||
|
lambda: 'return id(device_last_restart).state == "";'
|
||||||
|
then:
|
||||||
|
- text_sensor.template.publish:
|
||||||
|
id: device_last_restart
|
||||||
|
state: !lambda 'return id(sntp_time).now().strftime("%a %d %b %Y - %I:%M:%S %p");'
|
||||||
@@ -1,24 +1,49 @@
|
|||||||
substitutions:
|
substitutions:
|
||||||
device_name: "livingroom-bulb-4"
|
name: "livingroom-bulb-4"
|
||||||
friendly_name: "Living Room Bulb 4"
|
friendly_name: "Living Room Bulb 4"
|
||||||
|
room: "Living Room"
|
||||||
|
device_description: "athom 7w rgbcw light bulb"
|
||||||
|
project_name: "Athom Technology.Athom RGBCW Bulb"
|
||||||
|
dns_domain: ".cloonar.smart"
|
||||||
|
timezone: ""
|
||||||
|
sntp_update_interval: 6h
|
||||||
|
sntp_server_1: "0.pool.ntp.org"
|
||||||
|
sntp_server_2: "1.pool.ntp.org"
|
||||||
|
sntp_server_3: "2.pool.ntp.org"
|
||||||
|
log_level: "WARN"
|
||||||
|
|
||||||
|
globals:
|
||||||
|
- id: fast_boot
|
||||||
|
type: int
|
||||||
|
restore_value: yes
|
||||||
|
initial_value: '0'
|
||||||
|
|
||||||
|
- id: restore_mode
|
||||||
|
type: int
|
||||||
|
restore_value: yes
|
||||||
|
initial_value: "1"
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${device_name}
|
name: "${name}"
|
||||||
comment: ${friendly_name}
|
friendly_name: "${friendly_name}"
|
||||||
platform: ESP8266
|
comment: "${device_description}"
|
||||||
board: esp01_1m
|
area: "${room}"
|
||||||
|
name_add_mac_suffix: false
|
||||||
|
min_version: 2024.6.0
|
||||||
|
project:
|
||||||
|
name: "${project_name}"
|
||||||
|
version: "${project_version}"
|
||||||
on_boot:
|
on_boot:
|
||||||
priority: 300
|
|
||||||
then:
|
then:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 20%
|
brightness: 20%
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
red: 100%
|
red: 100%
|
||||||
green: 50%
|
green: 50%
|
||||||
blue: 0%
|
blue: 0%
|
||||||
@@ -32,16 +57,25 @@ interval:
|
|||||||
api.connected: # check if api connected
|
api.connected: # check if api connected
|
||||||
else:
|
else:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 100%
|
brightness: 100%
|
||||||
|
|
||||||
# Enable Home Assistant API
|
esp8266:
|
||||||
|
board: esp8285
|
||||||
|
restore_from_flash: true
|
||||||
|
|
||||||
|
preferences:
|
||||||
|
flash_write_interval: 1min
|
||||||
|
|
||||||
api:
|
api:
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
|
||||||
logger:
|
logger:
|
||||||
|
|
||||||
ota:
|
mdns:
|
||||||
platform: esphome
|
disabled: false
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
ssid: !secret wifi_ssid
|
ssid: !secret wifi_ssid
|
||||||
@@ -49,32 +83,158 @@ wifi:
|
|||||||
fast_connect: True
|
fast_connect: True
|
||||||
domain: .cloonar.smart
|
domain: .cloonar.smart
|
||||||
|
|
||||||
light:
|
captive_portal:
|
||||||
- platform: rgbw
|
|
||||||
id: my_light
|
dashboard_import:
|
||||||
name: ${friendly_name}
|
package_import_url: github://athom-tech/athom-configs/athom-rgbww-light.yaml
|
||||||
red: pwm_r
|
|
||||||
green: pwm_g
|
binary_sensor:
|
||||||
blue: pwm_b
|
- platform: status
|
||||||
white: pwm_w
|
name: "Status"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: uptime
|
||||||
|
name: "Uptime Sensor"
|
||||||
|
id: uptime_sensor
|
||||||
|
entity_category: diagnostic
|
||||||
|
internal: true
|
||||||
|
|
||||||
|
- platform: wifi_signal
|
||||||
|
name: "WiFi Signal dB"
|
||||||
|
id: wifi_signal_db
|
||||||
|
update_interval: 60s
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: wifi_signal_db
|
||||||
|
name: "WiFi Signal Percent"
|
||||||
|
filters:
|
||||||
|
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
|
||||||
|
unit_of_measurement: "Signal %"
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
device_class: ""
|
||||||
|
|
||||||
|
button:
|
||||||
|
- platform: restart
|
||||||
|
name: "Restart"
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: factory_reset
|
||||||
|
name: "Factory Reset"
|
||||||
|
id: Reset
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: safe_mode
|
||||||
|
name: "Safe Mode"
|
||||||
|
internal: false
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
output:
|
output:
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
pin: GPIO13
|
id: red_output
|
||||||
frequency: 1000 Hz
|
pin: GPIO4
|
||||||
id: pwm_r
|
min_power: 0.000499
|
||||||
|
max_power: 1
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: green_output
|
||||||
pin: GPIO12
|
pin: GPIO12
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_g
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: blue_output
|
||||||
pin: GPIO14
|
pin: GPIO14
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_b
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: warm_white_output
|
||||||
|
pin: GPIO13
|
||||||
|
min_power: 0.000499
|
||||||
|
max_power: 0.9
|
||||||
|
- platform: esp8266_pwm
|
||||||
|
id: white_output
|
||||||
pin: GPIO5
|
pin: GPIO5
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_w
|
max_power: 0.9
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: rgbww
|
||||||
|
id: rgbww_light
|
||||||
|
name: "RGBCW_Bulb"
|
||||||
|
red: red_output
|
||||||
|
green: green_output
|
||||||
|
blue: blue_output
|
||||||
|
warm_white: warm_white_output
|
||||||
|
cold_white: white_output
|
||||||
|
cold_white_color_temperature: 6000 K
|
||||||
|
warm_white_color_temperature: 3000 K
|
||||||
|
color_interlock: true
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: wifi_info
|
||||||
|
ip_address:
|
||||||
|
name: "IP Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
ssid:
|
||||||
|
name: "Connected SSID"
|
||||||
|
entity_category: diagnostic
|
||||||
|
mac_address:
|
||||||
|
name: "Mac Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
# Creates a sensor showing when the device was last restarted
|
||||||
|
- platform: template
|
||||||
|
name: 'Last Restart'
|
||||||
|
id: device_last_restart
|
||||||
|
icon: mdi:clock
|
||||||
|
entity_category: diagnostic
|
||||||
|
# device_class: timestamp
|
||||||
|
|
||||||
|
# Creates a sensor of the uptime of the device, in formatted days, hours, minutes and seconds
|
||||||
|
- platform: template
|
||||||
|
name: "Uptime"
|
||||||
|
entity_category: diagnostic
|
||||||
|
lambda: |-
|
||||||
|
int seconds = (id(uptime_sensor).state);
|
||||||
|
int days = seconds / (24 * 3600);
|
||||||
|
seconds = seconds % (24 * 3600);
|
||||||
|
int hours = seconds / 3600;
|
||||||
|
seconds = seconds % 3600;
|
||||||
|
int minutes = seconds / 60;
|
||||||
|
seconds = seconds % 60;
|
||||||
|
if ( days > 3650 ) {
|
||||||
|
return { "Starting up" };
|
||||||
|
} else if ( days ) {
|
||||||
|
return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( hours ) {
|
||||||
|
return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( minutes ) {
|
||||||
|
return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else {
|
||||||
|
return { (String(seconds) +"s").c_str() };
|
||||||
|
}
|
||||||
|
icon: mdi:clock-start
|
||||||
|
|
||||||
|
time:
|
||||||
|
- platform: sntp
|
||||||
|
id: sntp_time
|
||||||
|
# Define the timezone of the device
|
||||||
|
timezone: "${timezone}"
|
||||||
|
# Change sync interval from default 5min to 6 hours (or as set in substitutions)
|
||||||
|
update_interval: ${sntp_update_interval}
|
||||||
|
# Set specific sntp servers to use
|
||||||
|
servers:
|
||||||
|
- "${sntp_server_1}"
|
||||||
|
- "${sntp_server_2}"
|
||||||
|
- "${sntp_server_3}"
|
||||||
|
# Publish the time the device was last restarted
|
||||||
|
on_time_sync:
|
||||||
|
then:
|
||||||
|
# Update last restart time, but only once.
|
||||||
|
- if:
|
||||||
|
condition:
|
||||||
|
lambda: 'return id(device_last_restart).state == "";'
|
||||||
|
then:
|
||||||
|
- text_sensor.template.publish:
|
||||||
|
id: device_last_restart
|
||||||
|
state: !lambda 'return id(sntp_time).now().strftime("%a %d %b %Y - %I:%M:%S %p");'
|
||||||
@@ -1,24 +1,49 @@
|
|||||||
substitutions:
|
substitutions:
|
||||||
device_name: "livingroom-bulb-5"
|
name: "livingroom-bulb-5"
|
||||||
friendly_name: "Living Room Bulb 5"
|
friendly_name: "Living Room Bulb 5"
|
||||||
|
room: "Living Room"
|
||||||
|
device_description: "athom 7w rgbcw light bulb"
|
||||||
|
project_name: "Athom Technology.Athom RGBCW Bulb"
|
||||||
|
dns_domain: ".cloonar.smart"
|
||||||
|
timezone: ""
|
||||||
|
sntp_update_interval: 6h
|
||||||
|
sntp_server_1: "0.pool.ntp.org"
|
||||||
|
sntp_server_2: "1.pool.ntp.org"
|
||||||
|
sntp_server_3: "2.pool.ntp.org"
|
||||||
|
log_level: "WARN"
|
||||||
|
|
||||||
|
globals:
|
||||||
|
- id: fast_boot
|
||||||
|
type: int
|
||||||
|
restore_value: yes
|
||||||
|
initial_value: '0'
|
||||||
|
|
||||||
|
- id: restore_mode
|
||||||
|
type: int
|
||||||
|
restore_value: yes
|
||||||
|
initial_value: "1"
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${device_name}
|
name: "${name}"
|
||||||
comment: ${friendly_name}
|
friendly_name: "${friendly_name}"
|
||||||
platform: ESP8266
|
comment: "${device_description}"
|
||||||
board: esp01_1m
|
area: "${room}"
|
||||||
|
name_add_mac_suffix: false
|
||||||
|
min_version: 2024.6.0
|
||||||
|
project:
|
||||||
|
name: "${project_name}"
|
||||||
|
version: "${project_version}"
|
||||||
on_boot:
|
on_boot:
|
||||||
priority: 300
|
|
||||||
then:
|
then:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 20%
|
brightness: 20%
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
red: 100%
|
red: 100%
|
||||||
green: 50%
|
green: 50%
|
||||||
blue: 0%
|
blue: 0%
|
||||||
@@ -32,16 +57,25 @@ interval:
|
|||||||
api.connected: # check if api connected
|
api.connected: # check if api connected
|
||||||
else:
|
else:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 100%
|
brightness: 100%
|
||||||
|
|
||||||
# Enable Home Assistant API
|
esp8266:
|
||||||
|
board: esp8285
|
||||||
|
restore_from_flash: true
|
||||||
|
|
||||||
|
preferences:
|
||||||
|
flash_write_interval: 1min
|
||||||
|
|
||||||
api:
|
api:
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
|
||||||
logger:
|
logger:
|
||||||
|
|
||||||
ota:
|
mdns:
|
||||||
platform: esphome
|
disabled: false
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
ssid: !secret wifi_ssid
|
ssid: !secret wifi_ssid
|
||||||
@@ -49,32 +83,158 @@ wifi:
|
|||||||
fast_connect: True
|
fast_connect: True
|
||||||
domain: .cloonar.smart
|
domain: .cloonar.smart
|
||||||
|
|
||||||
light:
|
captive_portal:
|
||||||
- platform: rgbw
|
|
||||||
id: my_light
|
dashboard_import:
|
||||||
name: ${friendly_name}
|
package_import_url: github://athom-tech/athom-configs/athom-rgbww-light.yaml
|
||||||
red: pwm_r
|
|
||||||
green: pwm_g
|
binary_sensor:
|
||||||
blue: pwm_b
|
- platform: status
|
||||||
white: pwm_w
|
name: "Status"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: uptime
|
||||||
|
name: "Uptime Sensor"
|
||||||
|
id: uptime_sensor
|
||||||
|
entity_category: diagnostic
|
||||||
|
internal: true
|
||||||
|
|
||||||
|
- platform: wifi_signal
|
||||||
|
name: "WiFi Signal dB"
|
||||||
|
id: wifi_signal_db
|
||||||
|
update_interval: 60s
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: wifi_signal_db
|
||||||
|
name: "WiFi Signal Percent"
|
||||||
|
filters:
|
||||||
|
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
|
||||||
|
unit_of_measurement: "Signal %"
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
device_class: ""
|
||||||
|
|
||||||
|
button:
|
||||||
|
- platform: restart
|
||||||
|
name: "Restart"
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: factory_reset
|
||||||
|
name: "Factory Reset"
|
||||||
|
id: Reset
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: safe_mode
|
||||||
|
name: "Safe Mode"
|
||||||
|
internal: false
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
output:
|
output:
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
pin: GPIO13
|
id: red_output
|
||||||
frequency: 1000 Hz
|
pin: GPIO4
|
||||||
id: pwm_r
|
min_power: 0.000499
|
||||||
|
max_power: 1
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: green_output
|
||||||
pin: GPIO12
|
pin: GPIO12
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_g
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: blue_output
|
||||||
pin: GPIO14
|
pin: GPIO14
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_b
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: warm_white_output
|
||||||
|
pin: GPIO13
|
||||||
|
min_power: 0.000499
|
||||||
|
max_power: 0.9
|
||||||
|
- platform: esp8266_pwm
|
||||||
|
id: white_output
|
||||||
pin: GPIO5
|
pin: GPIO5
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_w
|
max_power: 0.9
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: rgbww
|
||||||
|
id: rgbww_light
|
||||||
|
name: "RGBCW_Bulb"
|
||||||
|
red: red_output
|
||||||
|
green: green_output
|
||||||
|
blue: blue_output
|
||||||
|
warm_white: warm_white_output
|
||||||
|
cold_white: white_output
|
||||||
|
cold_white_color_temperature: 6000 K
|
||||||
|
warm_white_color_temperature: 3000 K
|
||||||
|
color_interlock: true
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: wifi_info
|
||||||
|
ip_address:
|
||||||
|
name: "IP Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
ssid:
|
||||||
|
name: "Connected SSID"
|
||||||
|
entity_category: diagnostic
|
||||||
|
mac_address:
|
||||||
|
name: "Mac Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
# Creates a sensor showing when the device was last restarted
|
||||||
|
- platform: template
|
||||||
|
name: 'Last Restart'
|
||||||
|
id: device_last_restart
|
||||||
|
icon: mdi:clock
|
||||||
|
entity_category: diagnostic
|
||||||
|
# device_class: timestamp
|
||||||
|
|
||||||
|
# Creates a sensor of the uptime of the device, in formatted days, hours, minutes and seconds
|
||||||
|
- platform: template
|
||||||
|
name: "Uptime"
|
||||||
|
entity_category: diagnostic
|
||||||
|
lambda: |-
|
||||||
|
int seconds = (id(uptime_sensor).state);
|
||||||
|
int days = seconds / (24 * 3600);
|
||||||
|
seconds = seconds % (24 * 3600);
|
||||||
|
int hours = seconds / 3600;
|
||||||
|
seconds = seconds % 3600;
|
||||||
|
int minutes = seconds / 60;
|
||||||
|
seconds = seconds % 60;
|
||||||
|
if ( days > 3650 ) {
|
||||||
|
return { "Starting up" };
|
||||||
|
} else if ( days ) {
|
||||||
|
return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( hours ) {
|
||||||
|
return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( minutes ) {
|
||||||
|
return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else {
|
||||||
|
return { (String(seconds) +"s").c_str() };
|
||||||
|
}
|
||||||
|
icon: mdi:clock-start
|
||||||
|
|
||||||
|
time:
|
||||||
|
- platform: sntp
|
||||||
|
id: sntp_time
|
||||||
|
# Define the timezone of the device
|
||||||
|
timezone: "${timezone}"
|
||||||
|
# Change sync interval from default 5min to 6 hours (or as set in substitutions)
|
||||||
|
update_interval: ${sntp_update_interval}
|
||||||
|
# Set specific sntp servers to use
|
||||||
|
servers:
|
||||||
|
- "${sntp_server_1}"
|
||||||
|
- "${sntp_server_2}"
|
||||||
|
- "${sntp_server_3}"
|
||||||
|
# Publish the time the device was last restarted
|
||||||
|
on_time_sync:
|
||||||
|
then:
|
||||||
|
# Update last restart time, but only once.
|
||||||
|
- if:
|
||||||
|
condition:
|
||||||
|
lambda: 'return id(device_last_restart).state == "";'
|
||||||
|
then:
|
||||||
|
- text_sensor.template.publish:
|
||||||
|
id: device_last_restart
|
||||||
|
state: !lambda 'return id(sntp_time).now().strftime("%a %d %b %Y - %I:%M:%S %p");'
|
||||||
@@ -1,24 +1,49 @@
|
|||||||
substitutions:
|
substitutions:
|
||||||
device_name: "livingroom-bulb-6"
|
name: "livingroom-bulb-6"
|
||||||
friendly_name: "Living Room Bulb 6"
|
friendly_name: "Living Room Bulb 6"
|
||||||
|
room: "Living Room"
|
||||||
|
device_description: "athom 7w rgbcw light bulb"
|
||||||
|
project_name: "Athom Technology.Athom RGBCW Bulb"
|
||||||
|
dns_domain: ".cloonar.smart"
|
||||||
|
timezone: ""
|
||||||
|
sntp_update_interval: 6h
|
||||||
|
sntp_server_1: "0.pool.ntp.org"
|
||||||
|
sntp_server_2: "1.pool.ntp.org"
|
||||||
|
sntp_server_3: "2.pool.ntp.org"
|
||||||
|
log_level: "WARN"
|
||||||
|
|
||||||
|
globals:
|
||||||
|
- id: fast_boot
|
||||||
|
type: int
|
||||||
|
restore_value: yes
|
||||||
|
initial_value: '0'
|
||||||
|
|
||||||
|
- id: restore_mode
|
||||||
|
type: int
|
||||||
|
restore_value: yes
|
||||||
|
initial_value: "1"
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: ${device_name}
|
name: "${name}"
|
||||||
comment: ${friendly_name}
|
friendly_name: "${friendly_name}"
|
||||||
platform: ESP8266
|
comment: "${device_description}"
|
||||||
board: esp01_1m
|
area: "${room}"
|
||||||
|
name_add_mac_suffix: false
|
||||||
|
min_version: 2024.6.0
|
||||||
|
project:
|
||||||
|
name: "${project_name}"
|
||||||
|
version: "${project_version}"
|
||||||
on_boot:
|
on_boot:
|
||||||
priority: 300
|
|
||||||
then:
|
then:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 20%
|
brightness: 20%
|
||||||
- delay: 100ms
|
- delay: 100ms
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
red: 100%
|
red: 100%
|
||||||
green: 50%
|
green: 50%
|
||||||
blue: 0%
|
blue: 0%
|
||||||
@@ -32,16 +57,25 @@ interval:
|
|||||||
api.connected: # check if api connected
|
api.connected: # check if api connected
|
||||||
else:
|
else:
|
||||||
- light.turn_on:
|
- light.turn_on:
|
||||||
id: my_light
|
id: rgbww_light
|
||||||
brightness: 100%
|
brightness: 100%
|
||||||
|
|
||||||
# Enable Home Assistant API
|
esp8266:
|
||||||
|
board: esp8285
|
||||||
|
restore_from_flash: true
|
||||||
|
|
||||||
|
preferences:
|
||||||
|
flash_write_interval: 1min
|
||||||
|
|
||||||
api:
|
api:
|
||||||
|
|
||||||
|
ota:
|
||||||
|
- platform: esphome
|
||||||
|
|
||||||
logger:
|
logger:
|
||||||
|
|
||||||
ota:
|
mdns:
|
||||||
platform: esphome
|
disabled: false
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
ssid: !secret wifi_ssid
|
ssid: !secret wifi_ssid
|
||||||
@@ -49,32 +83,158 @@ wifi:
|
|||||||
fast_connect: True
|
fast_connect: True
|
||||||
domain: .cloonar.smart
|
domain: .cloonar.smart
|
||||||
|
|
||||||
light:
|
captive_portal:
|
||||||
- platform: rgbw
|
|
||||||
id: my_light
|
dashboard_import:
|
||||||
name: ${friendly_name}
|
package_import_url: github://athom-tech/athom-configs/athom-rgbww-light.yaml
|
||||||
red: pwm_r
|
|
||||||
green: pwm_g
|
binary_sensor:
|
||||||
blue: pwm_b
|
- platform: status
|
||||||
white: pwm_w
|
name: "Status"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: uptime
|
||||||
|
name: "Uptime Sensor"
|
||||||
|
id: uptime_sensor
|
||||||
|
entity_category: diagnostic
|
||||||
|
internal: true
|
||||||
|
|
||||||
|
- platform: wifi_signal
|
||||||
|
name: "WiFi Signal dB"
|
||||||
|
id: wifi_signal_db
|
||||||
|
update_interval: 60s
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
|
||||||
|
- platform: copy
|
||||||
|
source_id: wifi_signal_db
|
||||||
|
name: "WiFi Signal Percent"
|
||||||
|
filters:
|
||||||
|
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
|
||||||
|
unit_of_measurement: "Signal %"
|
||||||
|
entity_category: "diagnostic"
|
||||||
|
device_class: ""
|
||||||
|
|
||||||
|
button:
|
||||||
|
- platform: restart
|
||||||
|
name: "Restart"
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: factory_reset
|
||||||
|
name: "Factory Reset"
|
||||||
|
id: Reset
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
|
- platform: safe_mode
|
||||||
|
name: "Safe Mode"
|
||||||
|
internal: false
|
||||||
|
entity_category: config
|
||||||
|
|
||||||
output:
|
output:
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
pin: GPIO13
|
id: red_output
|
||||||
frequency: 1000 Hz
|
pin: GPIO4
|
||||||
id: pwm_r
|
min_power: 0.000499
|
||||||
|
max_power: 1
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: green_output
|
||||||
pin: GPIO12
|
pin: GPIO12
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_g
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: blue_output
|
||||||
pin: GPIO14
|
pin: GPIO14
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_b
|
max_power: 1
|
||||||
|
|
||||||
- platform: esp8266_pwm
|
- platform: esp8266_pwm
|
||||||
|
id: warm_white_output
|
||||||
|
pin: GPIO13
|
||||||
|
min_power: 0.000499
|
||||||
|
max_power: 0.9
|
||||||
|
- platform: esp8266_pwm
|
||||||
|
id: white_output
|
||||||
pin: GPIO5
|
pin: GPIO5
|
||||||
frequency: 1000 Hz
|
min_power: 0.000499
|
||||||
id: pwm_w
|
max_power: 0.9
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: rgbww
|
||||||
|
id: rgbww_light
|
||||||
|
name: "RGBCW_Bulb"
|
||||||
|
red: red_output
|
||||||
|
green: green_output
|
||||||
|
blue: blue_output
|
||||||
|
warm_white: warm_white_output
|
||||||
|
cold_white: white_output
|
||||||
|
cold_white_color_temperature: 6000 K
|
||||||
|
warm_white_color_temperature: 3000 K
|
||||||
|
color_interlock: true
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: wifi_info
|
||||||
|
ip_address:
|
||||||
|
name: "IP Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
ssid:
|
||||||
|
name: "Connected SSID"
|
||||||
|
entity_category: diagnostic
|
||||||
|
mac_address:
|
||||||
|
name: "Mac Address"
|
||||||
|
entity_category: diagnostic
|
||||||
|
|
||||||
|
# Creates a sensor showing when the device was last restarted
|
||||||
|
- platform: template
|
||||||
|
name: 'Last Restart'
|
||||||
|
id: device_last_restart
|
||||||
|
icon: mdi:clock
|
||||||
|
entity_category: diagnostic
|
||||||
|
# device_class: timestamp
|
||||||
|
|
||||||
|
# Creates a sensor of the uptime of the device, in formatted days, hours, minutes and seconds
|
||||||
|
- platform: template
|
||||||
|
name: "Uptime"
|
||||||
|
entity_category: diagnostic
|
||||||
|
lambda: |-
|
||||||
|
int seconds = (id(uptime_sensor).state);
|
||||||
|
int days = seconds / (24 * 3600);
|
||||||
|
seconds = seconds % (24 * 3600);
|
||||||
|
int hours = seconds / 3600;
|
||||||
|
seconds = seconds % 3600;
|
||||||
|
int minutes = seconds / 60;
|
||||||
|
seconds = seconds % 60;
|
||||||
|
if ( days > 3650 ) {
|
||||||
|
return { "Starting up" };
|
||||||
|
} else if ( days ) {
|
||||||
|
return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( hours ) {
|
||||||
|
return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else if ( minutes ) {
|
||||||
|
return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
|
||||||
|
} else {
|
||||||
|
return { (String(seconds) +"s").c_str() };
|
||||||
|
}
|
||||||
|
icon: mdi:clock-start
|
||||||
|
|
||||||
|
time:
|
||||||
|
- platform: sntp
|
||||||
|
id: sntp_time
|
||||||
|
# Define the timezone of the device
|
||||||
|
timezone: "${timezone}"
|
||||||
|
# Change sync interval from default 5min to 6 hours (or as set in substitutions)
|
||||||
|
update_interval: ${sntp_update_interval}
|
||||||
|
# Set specific sntp servers to use
|
||||||
|
servers:
|
||||||
|
- "${sntp_server_1}"
|
||||||
|
- "${sntp_server_2}"
|
||||||
|
- "${sntp_server_3}"
|
||||||
|
# Publish the time the device was last restarted
|
||||||
|
on_time_sync:
|
||||||
|
then:
|
||||||
|
# Update last restart time, but only once.
|
||||||
|
- if:
|
||||||
|
condition:
|
||||||
|
lambda: 'return id(device_last_restart).state == "";'
|
||||||
|
then:
|
||||||
|
- text_sensor.template.publish:
|
||||||
|
id: device_last_restart
|
||||||
|
state: !lambda 'return id(sntp_time).now().strftime("%a %d %b %Y - %I:%M:%S %p");'
|
||||||
57
gpd-win-4.md
Normal file
57
gpd-win-4.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
I want a wall-mounted docking solution for my GPD Win 4, designed in OpenSCAD 2021.1. Here are the requirements and clarifications:
|
||||||
|
|
||||||
|
Orientation & Fit
|
||||||
|
|
||||||
|
The GPD Win 4 should be inserted upside down (top facing down), with the screen facing the wall.
|
||||||
|
It slides in from the top and is guided by side rails.
|
||||||
|
There should be a small clearance so the GPD Win 4 can be easily inserted/removed without excessive friction.
|
||||||
|
Front Rail (Lip)
|
||||||
|
|
||||||
|
Side Rails:
|
||||||
|
The dock should have two side rails that run from top to bottom, guiding the GPD Win 4.
|
||||||
|
|
||||||
|
The front is open for airflow.
|
||||||
|
However, there should be a small lip (front rail) on each side, running from top to bottom and connected to the side rails. This lip prevents the GPD Win 4 from falling out forward.
|
||||||
|
Back Plate / Wall Mount
|
||||||
|
|
||||||
|
The dock has a solid back plate that mounts to the wall with two countersunk screws.
|
||||||
|
The default spacing and size of these screws can be parameterized (e.g., an M4 or M3 countersunk hole).
|
||||||
|
The back plate thickness should be sufficient for strength (e.g., 3–4 mm).
|
||||||
|
No special side or back vents are needed.
|
||||||
|
Cable Brackets
|
||||||
|
|
||||||
|
At the bottom, back, inside the dock, there are two brackets, one for a 90° USB-C cable (standard USB-C power) and one for a 90° Oculink flat cable.
|
||||||
|
The back plate should be open where these two brackets are, so the cables can exit the dock.
|
||||||
|
Each bracket should have:
|
||||||
|
An opening on the side facing the wall, to allow the cable to pass behind (i.e., into or through the wall).
|
||||||
|
A hole for an M3 screw that presses against the cable from the side to lock it in place.
|
||||||
|
Enough space to seat a 90° connector so it points upwards to plug into the GPD Win 4.
|
||||||
|
Parametric Design
|
||||||
|
|
||||||
|
The design should be fully parameterized in OpenSCAD, including (but not limited to) the following parameters:
|
||||||
|
device_width, device_thickness, device_length (for the GPD Win 4)
|
||||||
|
clearance_x, clearance_y, clearance_z (how much extra space around the device)
|
||||||
|
wall_plate_thickness
|
||||||
|
rail_thickness
|
||||||
|
front_rail_lip_width or front_rail_lip_thickness
|
||||||
|
wall_mount_screw_hole_diameter, wall_mount_screw_spacing (for countersunk screws)
|
||||||
|
bracket_inner_width_usbC, bracket_inner_height_usbC (for the USB-C connector dimensions)
|
||||||
|
bracket_inner_width_oculink, bracket_inner_height_oculink (for the Oculink connector dimensions)
|
||||||
|
m3_side_screw_hole_diameter (the hole that lets an M3 screw clamp the cable from the side)
|
||||||
|
Any other geometry parameters (openings for cables, bracket thickness, etc.)
|
||||||
|
Defaults
|
||||||
|
|
||||||
|
Please choose default dimensions that accurately reflect:
|
||||||
|
Approximate GPD Win 4 size (if not exact, then close estimates).
|
||||||
|
Standard 90° USB-C and 90° Oculink connector sizes.
|
||||||
|
Typical M3 screws for cable clamps.
|
||||||
|
Countersunk holes for M3 or M4 wall screws (whichever you prefer).
|
||||||
|
Version
|
||||||
|
|
||||||
|
This must render successfully in OpenSCAD 2021.1.
|
||||||
|
Summary
|
||||||
|
|
||||||
|
The final output should be an OpenSCAD file that, when the parameters are set to their defaults, produces the described wall-mounted docking station for the GPD Win 4 with side rails, minimal front lip, bracket cutouts for cables, and properly sized holes for screws.
|
||||||
|
|
||||||
|
If any additional measurements or details are needed, please ask.
|
||||||
|
|
||||||
@@ -37,6 +37,9 @@
|
|||||||
./modules/gitea.nix
|
./modules/gitea.nix
|
||||||
./modules/fwmetrics.nix
|
./modules/fwmetrics.nix
|
||||||
|
|
||||||
|
# ha customers
|
||||||
|
./modules/ha-customers
|
||||||
|
|
||||||
# ./modules/firefox-sync.nix
|
# ./modules/firefox-sync.nix
|
||||||
|
|
||||||
# home assistant
|
# home assistant
|
||||||
|
|||||||
@@ -84,6 +84,9 @@ in
|
|||||||
HTTP_PORT = 3001;
|
HTTP_PORT = 3001;
|
||||||
DOMAIN = domain;
|
DOMAIN = domain;
|
||||||
};
|
};
|
||||||
|
repository = {
|
||||||
|
DEFAULT_BRANCH = "main";
|
||||||
|
};
|
||||||
openid = {
|
openid = {
|
||||||
ENABLE_OPENID_SIGNIN = false;
|
ENABLE_OPENID_SIGNIN = false;
|
||||||
ENABLE_OPENID_SIGNUP = true;
|
ENABLE_OPENID_SIGNUP = true;
|
||||||
|
|||||||
6
hosts/fw/modules/ha-customers/default.nix
Normal file
6
hosts/fw/modules/ha-customers/default.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./ghetto.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
29
hosts/fw/modules/ha-customers/ghetto.nix
Normal file
29
hosts/fw/modules/ha-customers/ghetto.nix
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
create_users = host: {
|
||||||
|
users.users."${host.username}.ghetto.at" = {
|
||||||
|
createHome = true;
|
||||||
|
home = "/home/customers/ghetto/" + host.username;
|
||||||
|
isNormalUser = false;
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "sftp_users";
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
host.key
|
||||||
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDN/2SAFm50kraB1fepAizox/QRXxB7WbqVbH+5OPalDT47VIJGNKOKhixQoqhABHxEoLxdf/C83wxlCVlPV9poLfDgVkA3Lyt5r3tSFQ6QjjOJAgchWamMsxxyGBedhKvhiEzcr/Lxytnoz3kjDG8fqQJwEpdqMmJoMUfyL2Rqp16u+FQ7d5aJtwO8EUqovhMaNO7rggjPpV/uMOg+tBxxmscliN7DLuP4EMTA/FwXVzcFNbOx3K9BdpMRAaSJt4SWcJO2cS2KHA5n/H+PQI7nz5KN3Yr/upJN5fROhi/SHvK39QOx12Pv7FCuWlc+oR68vLaoCKYhnkl3DnCfc7A7"
|
||||||
|
];
|
||||||
|
shell = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users = [
|
||||||
|
{
|
||||||
|
username = "fw";
|
||||||
|
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGzJRWe8hsqAVnGSjPrcheloteWMzORoQ5Gj4IfhCROF";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
imports = builtins.map create_users users;
|
||||||
|
}
|
||||||
@@ -140,8 +140,8 @@
|
|||||||
entity_id = "{{ trigger.entity_id }}";
|
entity_id = "{{ trigger.entity_id }}";
|
||||||
};
|
};
|
||||||
data = {
|
data = {
|
||||||
brightness_pct = 20;
|
brightness_pct = 30;
|
||||||
rgbw_color = [ 255 126 0 255 ];
|
color_temp = 450;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -372,12 +372,12 @@
|
|||||||
all = true;
|
all = true;
|
||||||
entities = [
|
entities = [
|
||||||
"light.livingroom_switch"
|
"light.livingroom_switch"
|
||||||
"light.living_room_bulb_1"
|
"light.livingroom_bulb_1_rgbcw_bulb"
|
||||||
"light.living_room_bulb_2"
|
"light.livingroom_bulb_2_rgbcw_bulb"
|
||||||
"light.living_room_bulb_3"
|
"light.livingroom_bulb_3_rgbcw_bulb"
|
||||||
"light.living_room_bulb_4"
|
"light.livingroom_bulb_4_rgbcw_bulb"
|
||||||
"light.living_room_bulb_5"
|
"light.livingroom_bulb_5_rgbcw_bulb"
|
||||||
"light.living_room_bulb_6"
|
"light.livingroom_bulb_6_rgbcw_bulb"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,21 +1,89 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
{
|
let
|
||||||
|
unstable = import (fetchTarball https://nixos.org/channels/nixos-unstable/nixexprs.tar.xz) {
|
||||||
|
config = { allowUnfree = true; };
|
||||||
|
};
|
||||||
|
|
||||||
|
impermanence = builtins.fetchTarball "https://github.com/nix-community/impermanence/archive/master.tar.gz";
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
|
"${impermanence}/nixos.nix"
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./sway/sway.nix
|
# (Optional) comment out if you don’t want Sway as default:
|
||||||
./nvim/default.nix
|
# ./modules/sway/sway.nix
|
||||||
|
|
||||||
|
./modules/nvim/default.nix
|
||||||
./utils/bento.nix
|
./utils/bento.nix
|
||||||
./utils/modules/sops.nix
|
./utils/modules/sops.nix
|
||||||
./utils/modules/nur.nix
|
./utils/modules/nur.nix
|
||||||
./utils/modules/autoupgrade.nix
|
./utils/modules/autoupgrade.nix
|
||||||
./users
|
./users
|
||||||
|
|
||||||
# Import our new steam-deck-mode module
|
|
||||||
./modules/steam-deck-mode.nix
|
./modules/steam-deck-mode.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(import ./utils/overlays/packages.nix)
|
||||||
|
];
|
||||||
|
|
||||||
|
services.gvfs.enable = true;
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
git
|
||||||
|
git-lfs
|
||||||
|
open-sans
|
||||||
|
nix-prefetch
|
||||||
|
jq
|
||||||
|
oh-my-zsh
|
||||||
|
zsh-autosuggestions
|
||||||
|
zsh-completions
|
||||||
|
zsh-syntax-highlighting
|
||||||
|
zsh-history-substring-search
|
||||||
|
creality-print
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
ohMyZsh = {
|
||||||
|
enable = true; # Enable Oh My Zsh
|
||||||
|
theme = "steeef"; # Set theme
|
||||||
|
plugins = [ "git" ]; # Add plugins
|
||||||
|
};
|
||||||
|
};
|
||||||
|
users.defaultUserShell = pkgs.zsh;
|
||||||
|
|
||||||
|
services.fwupd.enable = true;
|
||||||
|
|
||||||
|
environment.persistence."/nix/persist" = {
|
||||||
|
hideMounts = true;
|
||||||
|
directories = [
|
||||||
|
"/home"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
environment.persistence."/nix/persist/system" = {
|
||||||
|
hideMounts = true;
|
||||||
|
directories = [
|
||||||
|
"/etc/nixos"
|
||||||
|
"/root/.ssh"
|
||||||
|
"/var/bento"
|
||||||
|
"/var/log"
|
||||||
|
"/var/lib/bluetooth"
|
||||||
|
"/var/lib/docker"
|
||||||
|
"/var/lib/nixos"
|
||||||
|
"/etc/NetworkManager/system-connections"
|
||||||
|
];
|
||||||
|
files = [
|
||||||
|
"/etc/machine-id"
|
||||||
|
{ file = "/etc/ssh/ssh_host_ed25519_key"; parentDirectory = { mode = "u=rwx,g=,o="; }; }
|
||||||
|
{ file = "/etc/ssh/ssh_host_ed25519_key.pub"; parentDirectory = { mode = "u=rwx,g=,o="; }; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
|
||||||
|
sops.defaultSopsFile = ./secrets.yaml;
|
||||||
|
|
||||||
networking.hostName = "gpd-win4";
|
networking.hostName = "gpd-win4";
|
||||||
time.timeZone = "Europe/Vienna";
|
time.timeZone = "Europe/Vienna";
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
nixpkgs.config.allowBroken = true;
|
nixpkgs.config.allowBroken = true;
|
||||||
console.keyMap = "de";
|
console.keyMap = "de";
|
||||||
@@ -26,19 +94,89 @@
|
|||||||
|
|
||||||
users.users.dominik = {
|
users.users.dominik = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
hashedPassword = ""; # Replace with real hash
|
hashedPassword = "$y$j9T$btz9xel62NjCyLdQRm5ck1$iCm6R7u4wiMeSVfrB6Y.3UwoQJ/rfkXiYSrXI2RTYm/";
|
||||||
extraGroups = [ "wheel" "video" "audio" "input" ];
|
extraGroups = [ "wheel" "disk" "video" "audio" "mysql" "docker" "vboxusers" "networkmanager" "onepassword" "onepassword-cli" "dialout" ]; # Enable ‘sudo’ for the user.
|
||||||
};
|
};
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = "powersave";
|
powerManagement.cpuFreqGovernor = "powersave";
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
# In case you want a persistent /home or other directories:
|
sops.secrets.epicenter_vpn_ca = {};
|
||||||
# environment.persistence."/nix/persist" = {
|
sops.secrets.epicenter_vpn_cert = {};
|
||||||
# hideMounts = true;
|
sops.secrets.epicenter_vpn_key = {};
|
||||||
# directories = [ "/home" ];
|
sops.secrets.wg-cloonar-key = {};
|
||||||
# };
|
|
||||||
|
|
||||||
# This system tries to unify the "Steam Deck Mode" and "Sway" approach
|
environment.systemPackages = with pkgs; [
|
||||||
# with toggling via systemd user services.
|
bento
|
||||||
system.stateVersion = "24.05";
|
docker-compose
|
||||||
|
drone-cli
|
||||||
|
git-filter-repo
|
||||||
|
nix-prefetch-git
|
||||||
|
vim
|
||||||
|
wget
|
||||||
|
wireguard-tools
|
||||||
|
# Fingerprint packages for normal system (enrollment, management)
|
||||||
|
fprintd
|
||||||
|
libfprint-2-tod1-goodix
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.variables = {
|
||||||
|
TERMINAL_COMMAND = "alacritty";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.blueman.enable = true;
|
||||||
|
|
||||||
|
networking.wireguard.interfaces = {
|
||||||
|
wg0 = {
|
||||||
|
ips = [ "10.42.98.203/32" ];
|
||||||
|
privateKeyFile = config.sops.secrets.wg-cloonar-key.path;
|
||||||
|
peers = [
|
||||||
|
{
|
||||||
|
publicKey = "TKQVDmBnf9av46kQxLQSBDhAeaK8r1zh8zpU64zuc1Q=";
|
||||||
|
allowedIPs = [
|
||||||
|
"10.42.96.0/20"
|
||||||
|
"10.254.240.0/24"
|
||||||
|
"10.254.235.0/24"
|
||||||
|
"10.14.0.0/16"
|
||||||
|
"10.25.0.0/16"
|
||||||
|
];
|
||||||
|
endpoint = "vpn.cloonar.com:51820";
|
||||||
|
persistentKeepalive = 25;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
postSetup = ''
|
||||||
|
printf "nameserver 10.42.97.1\nsearch cloonar.com" | ${pkgs.openresolv}/bin/resolvconf -a wg0 -m 0 -x
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
settings.auto-optimise-store = true;
|
||||||
|
settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 30d";
|
||||||
|
};
|
||||||
|
extraOptions = ''
|
||||||
|
min-free = 104857600
|
||||||
|
max-free = 1073741824
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.xserver.enable = true;
|
||||||
|
services.xserver.displayManager.gdm.enable = true;
|
||||||
|
services.xserver.desktopManager.gnome.enable = true;
|
||||||
|
services.displayManager.defaultSession = "gnome";
|
||||||
|
|
||||||
|
# Enable fprintd for fingerprint authentication in the OS
|
||||||
|
services.fprintd.enable = true;
|
||||||
|
|
||||||
|
# In some NixOS releases, GDM forcibly sets fprintAuth = false.
|
||||||
|
# We'll override them with mkForce. Also note that the display manager’s
|
||||||
|
# PAM config might be "gdm-password" rather than just "gdm".
|
||||||
|
security.pam.services."login".fprintAuth = lib.mkForce true;
|
||||||
|
security.pam.services."gdm-password".fprintAuth = lib.mkForce true;
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,40 +4,55 @@
|
|||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
configurationLimit = 5;
|
||||||
|
};
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
boot.initrd.kernelModules = [ "amdgpu" "kvm-amd" ];
|
# Use systemd in the initrd
|
||||||
|
boot.initrd.systemd.enable = true;
|
||||||
|
|
||||||
|
# Include fingerprint packages in the initrd so you can unlock LUKS with fingerprint
|
||||||
|
boot.initrd.systemd.packages = [
|
||||||
|
pkgs.fprintd
|
||||||
|
pkgs.libfprint-2-tod1-goodix
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"nvme"
|
||||||
|
"xhci_pci"
|
||||||
|
"thunderbolt"
|
||||||
|
"usbhid"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [];
|
||||||
|
boot.kernelModules = [ "amdgpu" "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [];
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault true;
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault true;
|
||||||
|
|
||||||
fileSystems."/" =
|
# Ephemeral root on tmpfs
|
||||||
{
|
fileSystems."/" = {
|
||||||
device = "none";
|
device = "none";
|
||||||
fsType = "tmpfs";
|
fsType = "tmpfs";
|
||||||
options = [ "size=16G" "mode=755" ];
|
options = [ "size=16G" "mode=755" ];
|
||||||
};
|
};
|
||||||
fileSystems."/nix" =
|
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/856e1ebe-832f-422d-8d91-d43a5d852abb";
|
|
||||||
fsType = "f2fs";
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.initrd = {
|
fileSystems."/boot" = {
|
||||||
luks.devices."enc" = {
|
device = "/dev/disk/by-uuid/8BC1-69F5";
|
||||||
crypttabExtraOpts = [ "fido2-device=auto" ];
|
|
||||||
device = "/dev/disk/by-uuid/08897ecb-23ce-4352-a1fc-fa442b9e0f72";
|
|
||||||
};
|
|
||||||
systemd.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
fileSystems."/boot" =
|
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/1521-B173";
|
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [ "fmask=0022" "dmask=0022" ];
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems."/nix" = {
|
||||||
|
device = "/dev/disk/by-uuid/7530231d-afe3-4571-934b-826d7b1702b2";
|
||||||
|
fsType = "f2fs";
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.luks.devices."luks-1506e138-e941-43e1-a133-06ae3299b62b".device =
|
||||||
|
"/dev/disk/by-uuid/1506e138-e941-43e1-a133-06ae3299b62b";
|
||||||
|
|
||||||
hardware.graphics = {
|
hardware.graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
|
|||||||
@@ -2,77 +2,59 @@
|
|||||||
let
|
let
|
||||||
cfgUser = "dominik"; # Adjust to your username
|
cfgUser = "dominik"; # Adjust to your username
|
||||||
in {
|
in {
|
||||||
#### 1) Provide two scripts:
|
|
||||||
#### - `steam-deck-mode.sh`: Runs Steam Big Picture with Gamescope (Wayland).
|
|
||||||
#### - `sway-session.sh`: Starts Sway.
|
|
||||||
environment.etc."steam-deck-mode.sh".text = ''
|
environment.etc."steam-deck-mode.sh".text = ''
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# Launches Steam in Big Picture with Gamescope.
|
||||||
# This script launches Steam in Big Picture mode under Gamescope (Wayland).
|
# On exit, user service stops, triggering ExecStopPost to start GNOME.
|
||||||
# Once Steam (or Gamescope) exits, the systemd user service stops.
|
|
||||||
# The ExecStopPost hook in the user service will then start Sway automatically.
|
|
||||||
|
|
||||||
# For safety, kill any existing Steam instance
|
|
||||||
pgrep steam && steam -shutdown || true
|
pgrep steam && steam -shutdown || true
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
# Use Gamescope in fullscreen mode, exit on Steam exit, run Steam in Gamepad UI
|
|
||||||
exec gamescope -W 1280 -H 800 -f -e -- steam -gamepadui
|
exec gamescope -W 1280 -H 800 -f -e -- steam -gamepadui
|
||||||
'';
|
'';
|
||||||
|
|
||||||
environment.etc."sway-session.sh".text = ''
|
environment.etc."gnome-session.sh".text = ''
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# Start a GNOME session
|
||||||
# This script starts a Sway session. When Sway exits, the user service stops,
|
exec gnome-session
|
||||||
# which triggers ExecStopPost to start Steam Big Picture again.
|
|
||||||
|
|
||||||
exec sway
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
#### Make these scripts executable via a simple systemd service:
|
|
||||||
systemd.services."make-scripts-executable" = {
|
systemd.services."make-scripts-executable" = {
|
||||||
description = "Make steam-deck-mode.sh and sway-session.sh executable";
|
description = "Make steam-deck-mode and gnome-session scripts executable";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig.ExecStart = [
|
serviceConfig.ExecStart = [
|
||||||
"${pkgs.coreutils}/bin/chmod +x /etc/steam-deck-mode.sh"
|
"${pkgs.coreutils}/bin/chmod +x /etc/steam-deck-mode.sh"
|
||||||
"${pkgs.coreutils}/bin/chmod +x /etc/sway-session.sh"
|
"${pkgs.coreutils}/bin/chmod +x /etc/gnome-session.sh"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
#### 2) Create two systemd *user* services:
|
# Steam Deck Mode service
|
||||||
#### - steam-deck-mode: On stop, automatically start sway
|
|
||||||
#### - sway: On stop, automatically start steam-deck-mode
|
|
||||||
systemd.user.services."steam-deck-mode" = {
|
systemd.user.services."steam-deck-mode" = {
|
||||||
description = "Steam Deck Mode (Wayland Gamescope + Steam Big Picture)";
|
description = "Steam Deck Mode (Gamescope + Steam Big Picture)";
|
||||||
wantedBy = [ "default.target" ]; # So we can enable it for the user
|
wantedBy = [ "default.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
ExecStart = "/etc/steam-deck-mode.sh";
|
ExecStart = "/etc/steam-deck-mode.sh";
|
||||||
# On exit, automatically trigger Sway
|
ExecStopPost = "${pkgs.systemd}/bin/systemctl --user start gnome-session";
|
||||||
ExecStopPost = "${pkgs.systemd}/bin/systemctl --user start sway";
|
Restart = "no";
|
||||||
Restart = "no"; # If Steam crashes, you can change to 'on-failure' if desired
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services."sway" = {
|
# GNOME Session (Wayland) service
|
||||||
description = "Sway WM Session";
|
systemd.user.services."gnome-session" = {
|
||||||
wantedBy = [ ]; # We won't start this on login by default, but from steam or a script
|
description = "GNOME Session (Wayland)";
|
||||||
|
wantedBy = [ ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
ExecStart = "/etc/sway-session.sh";
|
ExecStart = "/etc/gnome-session.sh";
|
||||||
# On exit, automatically trigger Steam Deck Mode
|
|
||||||
ExecStopPost = "${pkgs.systemd}/bin/systemctl --user start steam-deck-mode";
|
ExecStopPost = "${pkgs.systemd}/bin/systemctl --user start steam-deck-mode";
|
||||||
Restart = "no";
|
Restart = "no";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#### 3) Provide a script & desktop entry to let you switch from Sway to Game Mode easily
|
# Quick script to switch from GNOME to Steam Big Picture
|
||||||
#### (i.e., stop the 'sway' service, which triggers Steam).
|
|
||||||
environment.etc."switch-to-game-mode.sh".text = ''
|
environment.etc."switch-to-game-mode.sh".text = ''
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# This script stops Sway, causing the user service to exit
|
# Stop GNOME => triggers Steam in ExecStopPost
|
||||||
# The ExecStopPost of that service will start steam-deck-mode automatically.
|
${pkgs.systemd}/bin/systemctl --user stop gnome-session
|
||||||
${pkgs.systemd}/bin/systemctl --user stop sway
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
systemd.services."make-switch-to-game-mode-executable" = {
|
systemd.services."make-switch-to-game-mode-executable" = {
|
||||||
@@ -86,21 +68,24 @@ in {
|
|||||||
environment.etc."xdg/applications/switch-to-game-mode.desktop".text = ''
|
environment.etc."xdg/applications/switch-to-game-mode.desktop".text = ''
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Switch to Game Mode
|
Name=Switch to Game Mode
|
||||||
Comment=Stop Sway and start Steam Big Picture (Gamescope)
|
Comment=Stop GNOME and start Steam (Gamescope)
|
||||||
Exec=/etc/switch-to-game-mode.sh
|
Exec=/etc/switch-to-game-mode.sh
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Categories=Game;
|
Categories=Game;
|
||||||
'';
|
'';
|
||||||
|
|
||||||
#### 4) If you want to start directly in Steam Deck Mode on boot (no display manager),
|
# Update to new hardware.graphics.* options
|
||||||
#### enable auto-login on TTY and run the user service for "dominik".
|
hardware.graphics.enable = true;
|
||||||
#### For example (uncomment if you want an immediate console login):
|
hardware.graphics.enable32Bit = true;
|
||||||
# services.getty.autologinUser = cfgUser;
|
|
||||||
# systemd.user.services."steam-deck-mode".wantedBy = [ "default.target" ]; # already set
|
|
||||||
# You'd do 'systemctl --user enable steam-deck-mode' as that user to start it on login.
|
|
||||||
|
|
||||||
#### 5) Additional recommended gaming packages if not set elsewhere:
|
# Include AMD Vulkan for 64bit & 32bit
|
||||||
|
hardware.graphics.extraPackages = [
|
||||||
|
pkgs.amdvlk
|
||||||
|
pkgs.driversi686Linux.amdvlk
|
||||||
|
];
|
||||||
|
|
||||||
|
# A recommended set of gaming packages
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
steam
|
steam
|
||||||
gamemode
|
gamemode
|
||||||
@@ -108,22 +93,11 @@ in {
|
|||||||
vulkan-tools
|
vulkan-tools
|
||||||
vulkan-loader
|
vulkan-loader
|
||||||
vulkan-headers
|
vulkan-headers
|
||||||
# ...
|
|
||||||
];
|
];
|
||||||
|
|
||||||
#### 6) Enable 32-bit support for Steam
|
# Move the Steam Deck controller rules to services.udev.extraRules
|
||||||
hardware.opengl.enable = true;
|
# services.udev.extraRules = ''
|
||||||
hardware.opengl.driSupport32Bit = true;
|
# SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666"
|
||||||
hardware.graphics.enable = true;
|
# KERNEL=="uinput", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput"
|
||||||
hardware.graphics.enable32Bit = true;
|
# '';
|
||||||
hardware.graphics.extraPackages = [
|
|
||||||
pkgs.amdvlk
|
|
||||||
pkgs.driversi686Linux.amdvlk
|
|
||||||
];
|
|
||||||
|
|
||||||
#### 7) Optionally handle udev rules for Steam/Controllers if needed
|
|
||||||
environment.etc."udev/rules.d/99-steamdeck-controller.rules".text = ''
|
|
||||||
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666"
|
|
||||||
KERNEL=="uinput", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput"
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
42
hosts/gpd-win4/secrets.yaml
Normal file
42
hosts/gpd-win4/secrets.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
epicenter_vpn_ca: ENC[AES256_GCM,data:DUvpuL92zpQkK0auXGdHDw+f5gzjMARMroBknmgR+eq1LV5aISdA0XOCw7d3VFpMtHY+tPM4pDEWlnGJDoHDJBSFAUdmbLkDq2DvoDR1RBbsidmlXpvu7UnL4OyCgrN9G3I65HQmCh64/453T0Y5MZKUiFZXn9SZJgOU3h0qOnAiIKTQADXmUo6imhLuUdPxjwiLkNp8zHNystbfUuZkF15J+TXV9yndy/E8E4sFs4uysK9E+VM84v0q75zTf48cheE+cBGI9xOP5QMvSND6MloyGYUTPZOiQyz8M9AmJObvQFryysKf5Q1W1GBiTz9FVuSsr1IM7meljdBYwfxQaA5MurdsXVFYfdRgL6NyL5x7WOd367pgtBBwuVyT+cygg5ITIBc6YTuT8thp/q0BsJkq1OdVQrLa4PK12Tg2IOUg2Za/tLJxxiNWqs1gAmTWEIGAeJWmNgCZAjJIISwTGcdbpdWqhjAEgaaLf9ZD0hUXQ5MmSO+KXzP7lIGgqCXoMEc7W7rn3R2VkIrvaVgCBK3psTg6+CxoPQwnYbUKgPLG7ys54eECJyRfc8YPH1957Q67pYkVD166ZP/sDJfplOGH19QyFnaaSLRLoXCAfWuO72NwO/fSljN4+pmB6Ev1cRCe4mXicz7TTqGG740VOam/JW4OJCrnHVs67cs9/MsVSNZOsI+x44TKJjaFph4onaodDh5P7e52IkfRnHnjK6FjEvYPasUr9YDqUR3ucHxhD9UqvINDwhp3L/zyFb2HRuO1KzEQLzmG96xiJpJxBVl8GOTeNrK2owOf6cCuh6o3iPaAFjFok26gI1ujX/mPbBigOxB6S0cLOLoA7oA+E6L22nsoYdIwjU4b6Y/DQvndgsZFnycLsSA4TRYHUH1Q51fGU3S/zAlB66rYchsw3JqODD51axxEdo5uu/2a6K9c8BSDo+stHBPmGvty6IorhM+17IGwSVrnxBFbSICja/Mi9eHmkUuUQWaXe5iWiNGYOIe0Xsbu4PQANhDE0f4U1LboVdI46uVhBV36zLSRJ5hUYARdmaz+aUSfNSE20xwCQiqd4U1cb2W6ZRER5WOfNFa8LCjk1YyhDY1yKCbo5tZrYZtmo4T47EuH/2uyW9vPtDlAhpZWmJJ0LEbZMhl9hIEAgGYmhnxPIVItJWHgq4O+YavYWvu1qgbdBC/FZJ8xx0uSy48oKCbuTUbIBUHQ37/6wp+IC+FAoYc2CDgCKzYvYjGrjMr+l/bhWE6KqI2DE/8yG4sOZIyrKNOYRq/aqDRkaeu96bLSYZECoLpohEKRNLTFQ+J8btjGX+xak0HRNEX9bxx8Zs3ml8mDKfh11uy05zPMVU4jaLrc5VtvmNdCg1EffbtEIRhi88aP5K2flRLxvSsYODd8iisqJ3CEqa8/C/FoHhWqgs7vk9UeRs46CJjGQ2Nx7UeQhAK8ey8FwqqSPQ6hp6jFnAv5ha583GZm3G8CsapajioHOpNcyYRhUW/ekdQ1E7DafOLRRO0hdWws8fsP/96uuWJ1Ir1ec2pepmh8s9zCZl/CKSU6+PUjX03Y9buZDnAYao5nDFsF5hgi2nLCTRbHnCh/S5C4NL/Lss2gi/9HdQUWr3KNONgoGbdRNS4MHtK/t9MtxQT8FOS54fM76XLygYZhQEQuDHUr3vaihOPKXncPNx+M4IGd+tsOoGADfpZk7W4OLd5jl8OiCulKvmRXzGCrmyofifh6XBE/EDa97j4eXt/fZPhUh+kv7i39mLKiccPUqpq9WYA/pqlMc84PAsewRerk3Z7jygFb2oX8LwYX2vDer565q+74n/y+oqz/CQ7jypoGBC8f9a16h2e2ZuvjQZ2sUdBB0xKwmLHC5mXLRkJYZ8Myt0Bzp0iVnC8P,iv:0GfL3sG36nsg/4BPw32kKMB78TmbN+mLq/mqEFp0yas=,tag:x+kxJsS+Fn7VO3MlOmqgwQ==,type:str]
|
||||||
|
epicenter_vpn_cert: ENC[AES256_GCM,data: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,iv:MVId1jgmyhY/iUxnjca5IpYwlzUAsa6Nwchg52AKgRc=,tag:1RASj3dFAYVNphJ4zjXxtA==,type:str]
|
||||||
|
epicenter_vpn_key: ENC[AES256_GCM,data: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,iv:pB/cNgmHi14ugi6kd+J6poWXX79LMHiiakNa03ibZ0Q=,tag:nLfjOesXDm5/QtwHznJROw==,type:str]
|
||||||
|
wg-cloonar-key: ENC[AES256_GCM,data:raK+FXMb2EBzLEYQzDQ9TZSz5v1X+CGV9ghZuA/NoVwn4OnTWWhY9x/wTZA=,iv:kq2qdYAgoHogRoOzUaOc64uJF0ji/XuaLaO0HEp0l4A=,tag:1fKSyzv/FqxLl6Uv3DQv7Q==,type:str]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age14grjcxaq4h55yfnjxvnqhtswxhj9sfdcvyas4lwvpa8py27pjy2sv3g6v7
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBGUG5oZ1BPL1hiRm5zQ3FO
|
||||||
|
Zks2RWg1ODZGYm4rY05wT2dWTHFCN1FhcEY4ClB5N29SclVxWUpGaHF1V0o1cHVK
|
||||||
|
TWtoTGFsRHVERWgxczlqdysrRmVDM3cKLS0tIFNISWhUbmV5dERHSXV3ZW5Gd0l3
|
||||||
|
bHZHdy9jUHhLSTFUWHBxUTcrT3FoaHcKpKjzC3KDD6TXpbPm/ObztJQzkNnnTnvH
|
||||||
|
uWzRhQg7lHAKiiz4szzT64WCuisxFAOJP1KrSK9qP5DLBm8aKIDcPA==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age16veg3fmvpfm7a89a9fc8dvvsxmsthlm70nfxqspr6t8vnf9wkcwsvdq38d
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4VU1JZ3FkQ2lPVE9KeGMw
|
||||||
|
c1lRWGlPU1BKbXlJc0lnVURNNjN4bDRNWFZ3CnQyRUE0MXllajgySHRkSTNRZ2U4
|
||||||
|
K2w3bWEzNmxrZHRybXdFdnZCTmYySW8KLS0tIFduVUdYdDdVOS83QUxveG5lMDRi
|
||||||
|
M3E3bDhrM1FvMERESmI2RTdBTVNUMlkKoKhTGUYULeQvqMjwMCanDxD4yflGURgE
|
||||||
|
ROZe6d8R5Sya+RsS4uzNMs5KkjGeC/xjbNO22uSRennIwCqBaHNmgg==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1v6p8dan2t3w9h94fz4flldl32082j3s9x6zqq7u5j66keth9aphsd6pvch
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBMW1zeU5ubDloazBKNFR5
|
||||||
|
M0xnbXQySWptOHFEQmQ0VHdvTWVieitYK1drCmI0VW5PVUFaTFo3STF2MUxSOXhC
|
||||||
|
T1YxY2lFMitKM29rS1FKQWRweStxUlUKLS0tIEFnQTlHcFJEcTAxem5QK2xrTm8r
|
||||||
|
L21ncjlQdGVDUjI2eXFIb3U2dW13bWsKuEwATNEUWtjuLsH7DQAt6J2l4blTId1W
|
||||||
|
A1kQ+0dfUKrZ0dsbvUA5L9+haUiK8f5RvapaKW+L2JEn7gW5wJSJEw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-01-26T17:32:33Z"
|
||||||
|
mac: ENC[AES256_GCM,data:tYmCofgoeDlb1FI8dWNh9hy9tS/H3X4r2HzboKTRnTQqSz6M+nc4g/Gt7eb2OHcRzLqbg9WxanFeDrlOz5jIxKIDV+7PfNlPSPqXIQg/79u3g/qDiwbnSRa3s+2mVIK5GEN+5M5f11KfwHbtHn+bEUALGHPP1gpW6deKBUIITg4=,iv:xQBmQjsNuaTzUGXFrsqiXcKL79nN8nvaLDrnGYwR7rI=,tag:vmA465d7M19c1lc5X1qTqg==,type:str]
|
||||||
|
pgp: []
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.9.2
|
||||||
@@ -18,6 +18,7 @@ in {
|
|||||||
imports =
|
imports =
|
||||||
[ # Include the results of the hardware scan.
|
[ # Include the results of the hardware scan.
|
||||||
"${impermanence}/nixos.nix"
|
"${impermanence}/nixos.nix"
|
||||||
|
(import <nix-snapd>).nixosModules.default
|
||||||
./utils/bento.nix
|
./utils/bento.nix
|
||||||
|
|
||||||
./utils/modules/sops.nix
|
./utils/modules/sops.nix
|
||||||
@@ -25,9 +26,10 @@ in {
|
|||||||
./modules/appimage.nix
|
./modules/appimage.nix
|
||||||
./modules/sway/sway.nix
|
./modules/sway/sway.nix
|
||||||
./modules/printer.nix
|
./modules/printer.nix
|
||||||
./modules/cyberghost.nix
|
# ./modules/cyberghost.nix
|
||||||
./modules/nvim/default.nix
|
./modules/nvim/default.nix
|
||||||
./utils/modules/autoupgrade.nix
|
./utils/modules/autoupgrade.nix
|
||||||
|
./modules/puppeteer.nix
|
||||||
|
|
||||||
./cachix.nix
|
./cachix.nix
|
||||||
./users
|
./users
|
||||||
@@ -38,6 +40,8 @@ in {
|
|||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
services.snap.enable = true;
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(import ./utils/overlays/packages.nix)
|
(import ./utils/overlays/packages.nix)
|
||||||
];
|
];
|
||||||
@@ -72,24 +76,6 @@ in {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
services.postgresql= {
|
|
||||||
enable = true;
|
|
||||||
ensureDatabases = ["dominik" "flowuser"];
|
|
||||||
authentication = pkgs.lib.mkOverride 10 ''
|
|
||||||
local all all trust
|
|
||||||
host all all 127.0.0.1/32 trust
|
|
||||||
host all all ::1/128 trust
|
|
||||||
'';
|
|
||||||
enableTCPIP = true;
|
|
||||||
ensureUsers = [
|
|
||||||
{
|
|
||||||
name = "dominik"; # Replace with your actual Unix username
|
|
||||||
ensureClauses.superuser = true;
|
|
||||||
ensureClauses.login = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
ohMyZsh = {
|
ohMyZsh = {
|
||||||
@@ -344,4 +330,3 @@ in {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ self: super: {
|
|||||||
version = "1.0.0";
|
version = "1.0.0";
|
||||||
src = super.fetchgit {
|
src = super.fetchgit {
|
||||||
url = "https://git.cloonar.com/Cloonar/chatgpt.vim.git";
|
url = "https://git.cloonar.com/Cloonar/chatgpt.vim.git";
|
||||||
rev = "aa12bca3abc868b4ebacbd22b6fde83deb656869";
|
rev = "7fb8671840181ca5166fcf7b8a8d5f5e10a5efa7";
|
||||||
sha256 = "sha256-eK7GQNHR03fQ7j2ExX9QSA+AIW5c1b8fsat3kbS6f9k=";
|
sha256 = "sha256-g4sEUoZqxlliKHj1TAxwNXN400yLN+QB4wV3drmvf9w=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -41,5 +41,14 @@ lspc.yamlls.setup({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
-- autoformat json files with jq
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = "json",
|
||||||
|
callback = function(ev)
|
||||||
|
vim.bo[ev.buf].formatprg = “jq”
|
||||||
|
print("It's a json file")
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
-- lspc.intelephense.setup()
|
-- lspc.intelephense.setup()
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = import (fetchTarball https://nixos.org/channels/nixos-unstable/nixexprs.tar.xz) {
|
||||||
|
config = { allowUnfree = true; };
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
environment.variables = { EDITOR = "vim"; };
|
environment.variables = { EDITOR = "vim"; };
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
@@ -9,6 +14,7 @@
|
|||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
nodePackages.typescript-language-server
|
nodePackages.typescript-language-server
|
||||||
sumneko-lua-language-server
|
sumneko-lua-language-server
|
||||||
|
nest
|
||||||
nodePackages.intelephense
|
nodePackages.intelephense
|
||||||
nodePackages.vscode-langservers-extracted
|
nodePackages.vscode-langservers-extracted
|
||||||
nodePackages.yaml-language-server
|
nodePackages.yaml-language-server
|
||||||
@@ -17,6 +23,7 @@
|
|||||||
ripgrep
|
ripgrep
|
||||||
lua
|
lua
|
||||||
luaPackages.lyaml
|
luaPackages.lyaml
|
||||||
|
unstable.aider-chat
|
||||||
(neovim.override {
|
(neovim.override {
|
||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
configure = {
|
configure = {
|
||||||
@@ -41,6 +48,7 @@
|
|||||||
dracula-vim
|
dracula-vim
|
||||||
friendly-snippets
|
friendly-snippets
|
||||||
gitsigns-nvim
|
gitsigns-nvim
|
||||||
|
jq
|
||||||
lightline-vim
|
lightline-vim
|
||||||
lspkind-nvim
|
lspkind-nvim
|
||||||
mini-icons
|
mini-icons
|
||||||
@@ -67,7 +75,8 @@
|
|||||||
vim-sneak
|
vim-sneak
|
||||||
vim-vsnip
|
vim-vsnip
|
||||||
which-key-nvim
|
which-key-nvim
|
||||||
rest-nvim
|
unstable.pkgs.vimPlugins.rest-nvim
|
||||||
|
aider-nvim
|
||||||
];
|
];
|
||||||
opt = [];
|
opt = [];
|
||||||
};
|
};
|
||||||
|
|||||||
35
hosts/nb/modules/puppeteer.nix
Normal file
35
hosts/nb/modules/puppeteer.nix
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{ config, pkgs, ... }: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
chromium
|
||||||
|
nodejs
|
||||||
|
# Graphics and font dependencies
|
||||||
|
freetype
|
||||||
|
fontconfig
|
||||||
|
# Additional runtime dependencies
|
||||||
|
alsa-lib
|
||||||
|
atk
|
||||||
|
cairo
|
||||||
|
cups
|
||||||
|
dbus
|
||||||
|
expat
|
||||||
|
gdk-pixbuf
|
||||||
|
glib
|
||||||
|
gtk3
|
||||||
|
libdrm
|
||||||
|
libxkbcommon
|
||||||
|
mesa
|
||||||
|
nspr
|
||||||
|
nss
|
||||||
|
pango
|
||||||
|
xorg.libX11
|
||||||
|
xorg.libXcomposite
|
||||||
|
xorg.libXdamage
|
||||||
|
xorg.libXext
|
||||||
|
xorg.libXfixes
|
||||||
|
xorg.libXrandr
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.variables = {
|
||||||
|
PUPPETEER_EXECUTABLE_PATH = "${pkgs.chromium}/bin/chromium";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -36,6 +36,7 @@ in {
|
|||||||
# ./rustdesk.nix
|
# ./rustdesk.nix
|
||||||
./thunderbird.nix
|
./thunderbird.nix
|
||||||
./bitwarden.nix
|
./bitwarden.nix
|
||||||
|
# ./vscode.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.variables.XCURSOR_SIZE = "24";
|
environment.variables.XCURSOR_SIZE = "24";
|
||||||
@@ -82,8 +83,8 @@ in {
|
|||||||
fontforge
|
fontforge
|
||||||
hypnotix
|
hypnotix
|
||||||
|
|
||||||
code-cursor
|
unstable.code-cursor
|
||||||
vscode-fhs
|
# unstable.vscode-fhs
|
||||||
|
|
||||||
quickemu
|
quickemu
|
||||||
|
|
||||||
@@ -132,6 +133,7 @@ in {
|
|||||||
mako
|
mako
|
||||||
mqttui
|
mqttui
|
||||||
moonlight-qt
|
moonlight-qt
|
||||||
|
nautilus
|
||||||
netflix
|
netflix
|
||||||
networkmanagerapplet
|
networkmanagerapplet
|
||||||
nextcloud-client
|
nextcloud-client
|
||||||
@@ -142,7 +144,8 @@ in {
|
|||||||
pinentry
|
pinentry
|
||||||
rbw
|
rbw
|
||||||
rofi-rbw
|
rofi-rbw
|
||||||
rustdesk
|
# unstable.rustdesk
|
||||||
|
unstable.rustdesk-flutter
|
||||||
slurp
|
slurp
|
||||||
sway
|
sway
|
||||||
swaybg
|
swaybg
|
||||||
@@ -197,5 +200,18 @@ in {
|
|||||||
"xdg/waybar/config".text = builtins.readFile ./waybar.conf;
|
"xdg/waybar/config".text = builtins.readFile ./waybar.conf;
|
||||||
"xdg/waybar/style.css".text = builtins.readFile ./waybar.css;
|
"xdg/waybar/style.css".text = builtins.readFile ./waybar.css;
|
||||||
"xdg/foot/foot.ini".text = builtins.readFile ./foot.ini;
|
"xdg/foot/foot.ini".text = builtins.readFile ./foot.ini;
|
||||||
|
|
||||||
|
# dark mode
|
||||||
|
"xdg/gtk-2.0/gtkrc".text = "gtk-error-bell=0";
|
||||||
|
"xdg/gtk-3.0/settings.ini".text = ''
|
||||||
|
[Settings]
|
||||||
|
gtk-error-bell=false
|
||||||
|
gtk-application-prefer-dark-theme=1
|
||||||
|
'';
|
||||||
|
"xdg/gtk-4.0/settings.ini".text = ''
|
||||||
|
[Settings]
|
||||||
|
gtk-error-bell=false
|
||||||
|
gtk-application-prefer-dark-theme=1
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
16
hosts/nb/modules/sway/vscode.nix
Normal file
16
hosts/nb/modules/sway/vscode.nix
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{ pkgs, ... }: let
|
||||||
|
unstable = import (fetchTarball https://nixos.org/channels/nixos-unstable/nixexprs.tar.xz) {
|
||||||
|
config = { allowUnfree = true; };
|
||||||
|
};
|
||||||
|
vscode-insiders = (unstable.vscode.override { isInsiders = true; }).overrideAttrs (oldAttrs: rec {
|
||||||
|
src = (builtins.fetchTarball {
|
||||||
|
url = "https://update.code.visualstudio.com/1.98.0-insider/linux-x64/insider";
|
||||||
|
sha256 = "sha256-tV0VxDLJJPD4jfNEgVh3wMXg899VJxCS5a3putdetkA=";
|
||||||
|
});
|
||||||
|
version = "1.98.0";
|
||||||
|
});
|
||||||
|
in {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vscode-insiders
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -4,10 +4,11 @@ epicenter_vpn_key: ENC[AES256_GCM,data:Kt33OLiauTrkzSwib2px/rZoQO6tlCzsy2exxIrZb
|
|||||||
wg_private_key: ENC[AES256_GCM,data:A80vGf9aMxowC2xME4FIVTmKpSRLNB2tWiUQeP1v8vCRk6Gt8BKYOuXYt04=,iv:vr7qvfr78syrI5pIytjLouPwZcw4xvBTvEUzzv7ibnQ=,tag:qjALlFkd8JocLJqMKFERaw==,type:str]
|
wg_private_key: ENC[AES256_GCM,data:A80vGf9aMxowC2xME4FIVTmKpSRLNB2tWiUQeP1v8vCRk6Gt8BKYOuXYt04=,iv:vr7qvfr78syrI5pIytjLouPwZcw4xvBTvEUzzv7ibnQ=,tag:qjALlFkd8JocLJqMKFERaw==,type:str]
|
||||||
wg_preshared_key: ENC[AES256_GCM,data:bhXoD95ahDRawoHd5Z35FY0G6Xv0PHwWJf300fHQ5jNsGN1TQKHsIswx8YI=,iv:fBsIWkVZUt8pahuO9daaRBIEEIWsSnFW5Velj9uP2ZY=,tag:RvbCYhnRv0OrjTxjsNFW6g==,type:str]
|
wg_preshared_key: ENC[AES256_GCM,data:bhXoD95ahDRawoHd5Z35FY0G6Xv0PHwWJf300fHQ5jNsGN1TQKHsIswx8YI=,iv:fBsIWkVZUt8pahuO9daaRBIEEIWsSnFW5Velj9uP2ZY=,tag:RvbCYhnRv0OrjTxjsNFW6g==,type:str]
|
||||||
wg-cloonar-key: ENC[AES256_GCM,data:ZMEeIZApOD0ij3nPMZeQRwJ4MwVx0sHu08F+m/u6IMHBGid5YwMgxZ7qbLk=,iv:OfIZ9TqBLjToIQi7zRUBATrynBtu0bzXeGVI/EAUPhQ=,tag:mJICT/ak5U76JE/IxJsCKw==,type:str]
|
wg-cloonar-key: ENC[AES256_GCM,data:ZMEeIZApOD0ij3nPMZeQRwJ4MwVx0sHu08F+m/u6IMHBGid5YwMgxZ7qbLk=,iv:OfIZ9TqBLjToIQi7zRUBATrynBtu0bzXeGVI/EAUPhQ=,tag:mJICT/ak5U76JE/IxJsCKw==,type:str]
|
||||||
wireguard_user_pass: ENC[AES256_GCM,data:pGs/Kx/j8bgVQ2MtnpnvPI+dBrUFew==,iv:oLYuxjbe88RqygmVTAVnwLUmpRyQLdWrLX/kMIK0MHE=,tag:CBOK/rpuJplurt6VKux0Kg==,type:str]
|
cyberghost_user_pass: ENC[AES256_GCM,data:Eaz8iEV9vNZh/bJePmacQ06zU8FfIA==,iv:GcnU10VLVJsoeIU6t6eVjopLsBamvk12DpMbM9BsBv0=,tag:rLYoghkD8O9JepnopJfiuw==,type:str]
|
||||||
cyberghost_ca: ENC[AES256_GCM,data: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,iv:8uQbG4ObsDSS0DeKx24lt1vpfeSms2v7KGRQrKoWwds=,tag:2RoiW5VWLXfMgXA4cbnKBg==,type:str]
|
cyberghost_ca: ENC[AES256_GCM,data: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,iv:8uQbG4ObsDSS0DeKx24lt1vpfeSms2v7KGRQrKoWwds=,tag:2RoiW5VWLXfMgXA4cbnKBg==,type:str]
|
||||||
cyberghost_cert: ENC[AES256_GCM,data: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,iv:vYJer+NYyRo/jcpGb66askFA42T+TmSfWTm3DKOIIt4=,tag:RlvqzLfvtJN0HloJZTJb1Q==,type:str]
|
cyberghost_cert: ENC[AES256_GCM,data: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,iv:vYJer+NYyRo/jcpGb66askFA42T+TmSfWTm3DKOIIt4=,tag:RlvqzLfvtJN0HloJZTJb1Q==,type:str]
|
||||||
cyberghost_key: ENC[AES256_GCM,data:qfPwy1DSooR6eo9O7j6h43wILh4PzxE2X0pdbzh3gw1D98rR8GWEj8sukK/L0TzfGYqYWDPy15OeymaGdm6p1WtevBOlkZtQcXmo7jg3+k0TFUnUctNDm2cOjuKck7CGDFtwbMsOHtCxwhwYouCmes9sQ6KSfolVkutVcvEfI1qhjOvJabsZt4O0P5wB4dQUMQfcPwXYKLuW3xlP2MvIn+Q6XZzfLOqoHnAwQhyxfGsOeMkPV2GXzMsqcCuDhfItU7d1GHzMCOLQsWspwNr1jJd0a56YhY+oPHs+yRSEvzFeL08ZyQjPr7YX/p5w84aJrY7THDlBcAK3d35EQOPvAEghrbmas/aKSxDXPL2W3GKKhok9ztpX6QDywkgwUbetXs+oVUF3sHK+UlyiW4RLPsKoQQPtHYBvgIwtT9ym21PJvgFy4dOJF+XW3CfpZcAOONB2L2mxrhB04CV0is3i+SnQE4tVIqGfQBVrDeuGB/+7Pjy2cW0zkEOAHrwGbdlqG0kgdHFOdbDp2fJl5zTRd9hBhYeXT9mbFtlJ+50KyGOAkJZf9a3O0BwgYRR0sdaEWfOLDMsz5L1DlvzidrChGBwFbHAyuFkjE/hkhddAH+1xiCfRCb+mGqs03rDhIpJbEMZLRZFsLWu+hlXKZ4AXamkuOvkk9KvrYL8KVjkVk1GIIeQqVFE1tiSCtlGeODYblA/5HPTCH1wPrLBNCRS6xkxEwHs/qZx6J0qN6j94lWDWa/Q83g7L3OKL8JTlsyr+D9100veMUVhvo8RiJy85Z7tTqXXEckEWKgnC53dZ1ruILNzupytUYa9rYjNcQ1KXy0dwYbMDQ4kvLCpJtO47pXo1i9V9bDFrYCLipCtyg+s2RUzYOnW4GXpn+de9MDEJ5oOp0pMZ25HG3fpnZDvaIyPyytpyj7apx3VDf62Eq5Rodd49uKuDjlbWDezaaU6MjRqhmpv8dbs7c/7pogZmaztxKTbs+EZ/6l66cek24GS7GjQj0e+N32vY1ACcQUCjg9smCGvhKs0H5kL1YOJkopN9ZWVV9p32p0IsbQHsRebSOHablHT8q6tyYfP6ctHH6BNfoUlfZjHtR52VEiY0OstmnjsJxE2hYPX+l4tpUGNGv18nQ4C2ez3baMWHNXzRTXo+g4zjVkW0Ggi0ecd7I5vR5vUNNA74Hv5Mrd+oAYkf/65XGlTJu5VIM0f7IvlSintmmM0pLB1rmCgnZenlhhbY+0862xS2j1YcZIapox8JT/W2IRUYKnJ7j7B3bc/57JWDzaBM/AukhZvERqdm12fhh9jNrNDjK25HmNwdh4Bsf7IyVqXh/nSsH5MtTCASonn/DG+6pGLwOCxKiQdNmlYD8yiZ2RkSfFs14glr0frUYcgCEOFb18IeF/e6srzKSocRVJqKAoCQhnu4qNMy7YDXpmucnzhWuwcFeKC6gaTKBPj6pxM8OSXM7uqe27So4flZIbNU8yvDp0Ub0LYco/EJGUEL9lwitMydSV0F3gjc8zvEbYMs7qlYg9dD1jxJd5vaPkx59DHCpEMOHn1CjVxazZNvexJLG7j4FBkM6PhF131/C7C4cly8ASLQd5E6nZb54GZdKqDp6MVgipeKJ1Z8A/onBC/Glal1bl6ASeAO2Mkfq7PBJ54CKXaxiQ+TFpCfy7DrOArQzaBJ9s/Gy14EoGfb/o0VuXhj4vwChig16x7vu5MnEFdItPjkfRa638KkILeS4OXm0ae+KKxBUchCwXdRyGK+wn7Kz9E9xOjcKMI/kiDnAB/mTkLC+IA5wRuXgtVyFk3BuvrJaYIHsJVZofP5lYz0JLmXXtPyytI3r/IwSL3B0jupo/KHUZx6MBwjBYG/fKJgTQvvbGDePNFHfk5y/At96P7QZIVO+QlmQg1em0pRpYbO30GVhcDko9LvNG5rLPB7a6SNB/pllOgBjbEKWoNPVwFVe17ILzA2Hl/egkW+wxiJM39bG7Ll1bMN5Q32yNZlUAzWBHDSd4DhM14ock9irRGtLqrhHH0QyMr1WlVoMRXTGT7aMLUBc4IEY7kXnx4Sw/RILqOFZsML6Kz5EEroTR/gzDpr1xYxcIRrRmaBS2YMc6wgfIRstsspMT2kUUT5n3MBJlur2CpyNEpqh5o0oRpACQyqdc9P35BVc5NYdAIg6zYKHtiTpl3I/Py+XDSDT/wC1OrKRJjuw0ES/wgDoygbPxieqdUGCqDkEjuM/UZqmIILAHBBvqniMVB5QLO53NO4lhrTbhmBWDXzw9dpJ77O6In8DmQ6cmuBsOAC1JqlGhFHpp1YMKtlQlOpwsORZSdwc/sfMkai/dXjhoh9Ptpk1fUKH+3AHzd+Ulb6Y7daInVgutnO/XFj832l8WwHzyZPLBTpbRbHeeSQevIHM/x/jLDZlUGVktrN04Dj4CJJstyeETIegzILTrXUhIq/W9cEd9vEdlSRRwTn5Z/E8zfET5fxLWSrMRTTQWOh1jIh7FI+P9d3x0K0fk0CR+vclyvVm506zAgF8KCBPjljDZYgeXyPMJ/icU9QhA72++IGo/XoT81fpB34Zt513PQk4WGmUGhAgiQP1EObnQ/YNaTcdUU8fhvq7YcyUlRA+vfaKMS1S18a8RKfYs0yWxCG4CuCb9pWhRK2ALjNeqYS70dFeeiAHI7UKjV+I5CbtLdIt0/oGDFKokH5xRVl6JkLq8iVPCaCyCOc0FCfBVyPBF3Qaisvh3GyIpCPbx0mp8fDRsiXLJShyqaqC6hpD88PnTDE2mvMyB/bH8Quzh5OrLp2CTDeOvWtg1GxYowiL0CC77ogUQhfM1ut8g+tvjgsmuiXU1uEzpHCsIXnSnUvwJW6tV37S0YUePoVAi6hVJTr60M2s4+0J2IxDnb9h2GVZqmusyQU74cKXJrEOC6r5apkhH2GG2jdVQGn2ETY/b/cbFtI38EtT4IbOa/OQDLf9F0UJPuYi5Ne0mII4asEmWdfco9P5oU4Ssr39WmTfmrBLvEQ0IhPSwKmtZlA1x85FSv5+wKauBYw3GTZa/tsp7E2MHhkyRWG1eMMziceCOrTD7NgRRLQIgN+ejm43i+OdMzi9vjzf1vg+barXOOd34yjY6zqpX9hEAJuxYgT2s8fGj59ljZsqp/qSICBIiImOyjxgKou1nh+AJY0Qs4fIGVTstf7aG540IiOGNTy41sVWdtKBeeahez9FB2lxMZ+A/83IRtmlnMcqXKhIgS7c3ajaRrgjesO/fbHnE557Ocz2A6SdoOn9rqVXD6VGvM2fkbj8no0ooCnvNtQ8JEMu6hyVipSqgRxcZlnW05NGOTtWxV3xRI3RK5tNguYgqqLIQvSARDDgm/HtJoJgom8lqSkLXswGjbxpJ1GP9lWpyov+muy9viwLQZQgEma7w2M0gIB84s3FOuYMIz7pKEDntUO7jRUl5+T8gJoJ9ex32InELTLWgksB8mb4ZuSCOmoISEEaBsPYtSG9wo5bWg5uz0/ToudFf+WRA9JT/MesSzVhehqFx1eMGAKHoRd02oMOtwIzQuc0Xp0DuYBTWOk/aHyRDxfluaFSIyAR/KBkO7fc9jKTu1JJifPCXZWInRXvPogmafCyYicC3gc2ITNumezK+oD8fjbWHW0gDIvk9qQjxhQJz99N0XYiRLTl1SssGMKADMzauPWSMDwn1VQ8t9Yc+NvT9i+9TB5YL7E3XhD3aqqwLbLOlIjvlaEhWeMjoaGlaVaz7u2n6g4zAGcVG5/uocZ2QI7byppVE/8rpjBAs1zQr3A/ajvcgCQ3+3g+sy+3w6C1KmYJj3kyF14FhTDLWekAyX1VlEQCB1BUeB7lc3CuPftTDSRKLU/vOygvIdzLMJdsQu/98qjOawsKwEVSXtSrrLXTcyhHRKvkRhUOOD6z1WRl0UTmSrqnzGraEV737vDQrMzMyq06r3mlV6xnho19F4aH2pHgI0uJcFB7efPz7nxOKtlhoc1BiAb88+sDksRJd7/+4+32hSkFQ/2MfC+wwlryo9NXtgSbUnMBYZqQIW0PfoArFTY6La9mrhPpAZ5HLmj3H6xRGhSyLJGBoW+jDltI6pic6G7oBODfUOmUei+CeQ2JKYGfjMcXmndU1qmR2Wj8ytS7yK/J2SxWRGAgmUiGI0gv5nnoe+aHa20yOL54k9XZLSMin5sghcXzTxtLcNz5sfBUIF3sQzhwYUGR9UfNYx3OkeL0HOXQlcICC6cUFan/zIc+8GXHhxLd6NabTiZiTXdYRuAoJeIt1qNUeK0xvLNm08fHiT3eGXbS7NVjtPTw/nYUx6Ca8LaM9eZBfgNowfn47LvoAuliQP2vLAjuatyjlcC/hFfu9Surfcb9LUM/ZsyMFM=,iv:EgSXZvyWmcBxBkAe6asJ2B12FKaLQPy4tRAtCvkys3M=,tag:B0lyX7IRNHX1CqlvBZaSpg==,type:str]
|
cyberghost_key: ENC[AES256_GCM,data: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,iv:EgSXZvyWmcBxBkAe6asJ2B12FKaLQPy4tRAtCvkys3M=,tag:B0lyX7IRNHX1CqlvBZaSpg==,type:str]
|
||||||
|
openai_api_key: ENC[AES256_GCM,data:lH5Jf/xvtRRwuGYPM3g39J5DTQJowSKVqLtObgXRo+GOfpY/BKb46/R25rkWrOUv5pYK8PXmSm7obEkVBfoaYG0WufR6SzGH+R7hjrNgCzBA6g5pxmlE7CWPlPy6C6XqVgblL8aP2vD9qxJmIw8FYCLRgFHt5hK4d+Gd23BeBnkmPWIH23xyRFhCcb891CoiEEdXL5p1LNAOAW5ePmAyavc/Dlk=,iv:lWXy8/LlWeRVSect87/qsG2nOkmL5W7jpw/DVSnAbEs=,tag:n3pWUJ5uEMXtgt/kHG8J8w==,type:str]
|
||||||
sops:
|
sops:
|
||||||
kms: []
|
kms: []
|
||||||
gcp_kms: []
|
gcp_kms: []
|
||||||
@@ -41,8 +42,8 @@ sops:
|
|||||||
L21ncjlQdGVDUjI2eXFIb3U2dW13bWsKuEwATNEUWtjuLsH7DQAt6J2l4blTId1W
|
L21ncjlQdGVDUjI2eXFIb3U2dW13bWsKuEwATNEUWtjuLsH7DQAt6J2l4blTId1W
|
||||||
A1kQ+0dfUKrZ0dsbvUA5L9+haUiK8f5RvapaKW+L2JEn7gW5wJSJEw==
|
A1kQ+0dfUKrZ0dsbvUA5L9+haUiK8f5RvapaKW+L2JEn7gW5wJSJEw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-02-03T12:21:26Z"
|
lastmodified: "2025-02-05T16:19:21Z"
|
||||||
mac: ENC[AES256_GCM,data:VvYYibPesUGh5LpR5dXUbJy0mwN9NkBn9CNx+SmWPR+wsaRMGR0Nkhmjmv+WpRGatL+Ka5cGezFFjdOd6urWpcSmL32zcPumVo/CRsZi4JEiuT3qHJkrKM38IPV5WSv1RxQaYwsN4/e5rMdRqeHCLatHbD28LAZxGz1bENCdYbw=,iv:zntGu7xokETUufEK/63ukM+voCEhyuA+hyhVrTNHvrA=,tag:lg2S+e9QL56A/Jaw1Ha0ug==,type:str]
|
mac: ENC[AES256_GCM,data:ERVdP6Nk+o7DAVsN24EFr23R/9eF98Vq8O9ov9tiUyKdFcE/N5N0rQg1IyESuVujpOKOp4/WF488/Ez3S9dM0gNfqIctLT5Qw4EmNV+gs1SbtXdFE0eU3KbmFHxFsWRftQSpz0xalXBAAUHMUJfMQf1lyV7+TgGccIkvQB12QDM=,iv:Nsn1ohLkh3NSMbaWnl3UHDKG1lhTSUxNB8M7CIYxwvM=,tag:6PQ7VCb+enUnbRVAKYNR2g==,type:str]
|
||||||
pgp: []
|
pgp: []
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.9.4
|
version: 3.9.4
|
||||||
|
|||||||
@@ -5,10 +5,18 @@
|
|||||||
/home/dominik/projects/cloonar/phishguard
|
/home/dominik/projects/cloonar/phishguard
|
||||||
/home/dominik/projects/cloonar/phishguard-frontend
|
/home/dominik/projects/cloonar/phishguard-frontend
|
||||||
/home/dominik/projects/cloonar/gitapi
|
/home/dominik/projects/cloonar/gitapi
|
||||||
/home/dominik/projects/cloonar/flow
|
|
||||||
/home/dominik/projects/cloonar/flow-docs
|
/home/dominik/projects/cloonar/flow/flow-docs
|
||||||
/home/dominik/projects/cloonar/flow-api
|
/home/dominik/projects/cloonar/flow/flow-user-service
|
||||||
/home/dominik/projects/cloonar/flow-frontend
|
/home/dominik/projects/cloonar/flow/flow-billing-service
|
||||||
|
/home/dominik/projects/cloonar/flow/flow-workflow-orchestration-service
|
||||||
|
/home/dominik/projects/cloonar/flow/flow-module-registry
|
||||||
|
/home/dominik/projects/cloonar/flow/flow-workflow-definition
|
||||||
|
/home/dominik/projects/cloonar/flow/flow-api-gateway
|
||||||
|
|
||||||
|
/home/dominik/projects/home-automation/lego-hetzner-bridge
|
||||||
|
/home/dominik/projects/home-automation/ghetto-nixos
|
||||||
|
|
||||||
/home/dominik/projects/cloonar/typo3-basic
|
/home/dominik/projects/cloonar/typo3-basic
|
||||||
/home/dominik/projects/cloonar/renovate-config
|
/home/dominik/projects/cloonar/renovate-config
|
||||||
/home/dominik/projects/cloonar/bento
|
/home/dominik/projects/cloonar/bento
|
||||||
|
|||||||
@@ -143,8 +143,17 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
|
sops.secrets.openai_api_key = {
|
||||||
|
owner = "dominik";
|
||||||
|
};
|
||||||
programs.fuse.userAllowOther = true;
|
programs.fuse.userAllowOther = true;
|
||||||
|
|
||||||
|
programs.zsh = {
|
||||||
|
shellInit = ''
|
||||||
|
export OPENAI_API_KEY=$(cat ${config.sops.secrets.openai_api_key.path})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
home-manager.users.dominik = { lib, pkgs, ... }: {
|
home-manager.users.dominik = { lib, pkgs, ... }: {
|
||||||
# imports = [ "${impermanence}/home-manager.nix" ];
|
# imports = [ "${impermanence}/home-manager.nix" ];
|
||||||
/* The home.stateVersion option does not have a default and must be set */
|
/* The home.stateVersion option does not have a default and must be set */
|
||||||
@@ -163,6 +172,7 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Here goes the rest of your home-manager config, e.g. home.packages = [ pkgs.foo ]; */
|
/* Here goes the rest of your home-manager config, e.g. home.packages = [ pkgs.foo ]; */
|
||||||
# home.persistence."/nix/persist/user/dominik" = {
|
# home.persistence."/nix/persist/user/dominik" = {
|
||||||
# allowOther = true;
|
# allowOther = true;
|
||||||
@@ -207,6 +217,16 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dconf = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
"org/gnome/desktop/interface" = {
|
||||||
|
color-scheme = "prefer-dark";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
systemd.user.services = {
|
systemd.user.services = {
|
||||||
signald = {
|
signald = {
|
||||||
Unit = {
|
Unit = {
|
||||||
@@ -419,7 +439,7 @@ in
|
|||||||
<p><font color="#666666"><Signature<br></font>
|
<p><font color="#666666"><Signature<br></font>
|
||||||
<font color="#666666"> </font><span style="color: inherit; font-size: 1.1em;">firstName="</span><span style="font-size: 1.1em; color: rgb(237, 92, 87);">Dominik</span><span style="color: inherit; font-size: 1.1em;">"<br></span>
|
<font color="#666666"> </font><span style="color: inherit; font-size: 1.1em;">firstName="</span><span style="font-size: 1.1em; color: rgb(237, 92, 87);">Dominik</span><span style="color: inherit; font-size: 1.1em;">"<br></span>
|
||||||
<span style="color: inherit; font-size: 1.1em;"> lastName="</span><span style="font-size: 1.1em; color: rgb(237, 92, 87);">Polakovics</span><span style="color: inherit; font-size: 1.1em;">"<br></span>
|
<span style="color: inherit; font-size: 1.1em;"> lastName="</span><span style="font-size: 1.1em; color: rgb(237, 92, 87);">Polakovics</span><span style="color: inherit; font-size: 1.1em;">"<br></span>
|
||||||
<span style="color: inherit; font-size: 1.1em;"> company="</span><span style="font-size: 1.1em; color: rgb(81, 167, 249);">Cloonar e.U.</span><span style="color: inherit; font-size: 1.1em;">"<br></span>
|
<span style="color: inherit; font-size: 1.1em;"> company="</span><span style="font-size: 1.1em; color: rgb(81, 167, 249);">Cloonar Technologies GmbH</span><span style="color: inherit; font-size: 1.1em;">"<br></span>
|
||||||
<span style="color: inherit; font-size: 1.1em;"> scope="</span><span style="font-size: 1.1em; color: rgb(81, 167, 249);">IT Solutions</span><span style="color: inherit; font-size: 1.1em;">"<br></span><span style="color: inherit; font-size: 1.1em;"> phone="</span><span style="font-size: 1.1em; color: rgb(81, 167, 249);">+436688700600</span><span style="color: inherit; font-size: 1.1em;">"<br></span>
|
<span style="color: inherit; font-size: 1.1em;"> scope="</span><span style="font-size: 1.1em; color: rgb(81, 167, 249);">IT Solutions</span><span style="color: inherit; font-size: 1.1em;">"<br></span><span style="color: inherit; font-size: 1.1em;"> phone="</span><span style="font-size: 1.1em; color: rgb(81, 167, 249);">+436688700600</span><span style="color: inherit; font-size: 1.1em;">"<br></span>
|
||||||
<span style="color: inherit; font-size: 1.1em;"> email="</span><span style="font-size: 1.1em; color: rgb(81, 167, 249);">dominik.polakovics@cloonar.com</span><span style="font-size: 1.1em;">"<br></span>
|
<span style="color: inherit; font-size: 1.1em;"> email="</span><span style="font-size: 1.1em; color: rgb(81, 167, 249);">dominik.polakovics@cloonar.com</span><span style="font-size: 1.1em;">"<br></span>
|
||||||
<span style="color: rgb(102, 102, 102); font-size: 1.1em;">/></span></p>
|
<span style="color: rgb(102, 102, 102); font-size: 1.1em;">/></span></p>
|
||||||
@@ -528,10 +548,10 @@ in
|
|||||||
home.activation.symlinks = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
home.activation.symlinks = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||||
PATH="${pkgs.git}/bin:${pkgs.openssh}/bin:$PATH"
|
PATH="${pkgs.git}/bin:${pkgs.openssh}/bin:$PATH"
|
||||||
set +eu
|
set +eu
|
||||||
if [ ! -L ~/Documents ]; then
|
if [ ! -L ~/Documents/Documents ]; then
|
||||||
ln -s /home/dominik/.local/share/Cryptomator/mnt/Documents ~/Documents
|
ln -s /home/dominik/.local/share/Cryptomator/mnt/Documents ~/Documents
|
||||||
fi
|
fi
|
||||||
if [ ! -L ~/Downloads ]; then
|
if [ ! -L ~/Downloads/Downloads ]; then
|
||||||
ln -s /home/dominik/.local/share/Cryptomator/mnt/Downloads ~/Downloads
|
ln -s /home/dominik/.local/share/Cryptomator/mnt/Downloads ~/Downloads
|
||||||
fi
|
fi
|
||||||
set -eu
|
set -eu
|
||||||
@@ -553,10 +573,13 @@ in
|
|||||||
git clone gitea@git.cloonar.com:Cloonar/phishguard-frontend.git ${persistHome}/projects/cloonar/phishguard-frontend 2>/dev/null
|
git clone gitea@git.cloonar.com:Cloonar/phishguard-frontend.git ${persistHome}/projects/cloonar/phishguard-frontend 2>/dev/null
|
||||||
git clone gitea@git.cloonar.com:Cloonar/gitapi.git ${persistHome}/projects/cloonar/gitapi 2>/dev/null
|
git clone gitea@git.cloonar.com:Cloonar/gitapi.git ${persistHome}/projects/cloonar/gitapi 2>/dev/null
|
||||||
git clone gitea@git.cloonar.com:Cloonar/ai.nvim.git ${persistHome}/cloonar/ai.nvim 2>/dev/null
|
git clone gitea@git.cloonar.com:Cloonar/ai.nvim.git ${persistHome}/cloonar/ai.nvim 2>/dev/null
|
||||||
git clone gitea@git.cloonar.com:Cloonar/flow.git ${persistHome}/projects/cloonar/flow 2>/dev/null
|
|
||||||
git clone gitea@git.cloonar.com:Cloonar/flow-docs.git ${persistHome}/projects/cloonar/flow-docs 2>/dev/null
|
git clone gitea@git.cloonar.com:Cloonar/flow-docs.git ${persistHome}/projects/cloonar/flow/flow-docs 2>/dev/null
|
||||||
git clone gitea@git.cloonar.com:Cloonar/flow-api.git ${persistHome}/projects/cloonar/flow-api 2>/dev/null
|
git clone gitea@git.cloonar.com:Cloonar/flow-user-service.git ${persistHome}/projects/cloonar/flow/flow-user-service 2>/dev/null
|
||||||
git clone gitea@git.cloonar.com:Cloonar/flow-frontend.git ${persistHome}/projects/cloonar/flow-frontend 2>/dev/null
|
git clone gitea@git.cloonar.com:Cloonar/flow-billing-service.git ${persistHome}/projects/cloonar/flow/flow-billing-service 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Cloonar/flow-module-registry.git ${persistHome}/projects/cloonar/flow/flow-module-registry 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Cloonar/flow-workflow-definition.git ${persistHome}/projects/cloonar/flow/flow-workflow-definition 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:dominik.polakovics/flow-api-gateway.git ${persistHome}/projects/cloonar/flow/flow-api-gateway 2>/dev/null
|
||||||
|
|
||||||
git clone gitea@git.cloonar.com:dominik.polakovics/typo3-basic.git ${persistHome}/cloonar/typo3-basic 2>/dev/null
|
git clone gitea@git.cloonar.com:dominik.polakovics/typo3-basic.git ${persistHome}/cloonar/typo3-basic 2>/dev/null
|
||||||
git clone gitea@git.cloonar.com:renovate/renovate-config.git ${persistHome}/cloonar/renovate-config 2>/dev/null
|
git clone gitea@git.cloonar.com:renovate/renovate-config.git ${persistHome}/cloonar/renovate-config 2>/dev/null
|
||||||
@@ -579,6 +602,9 @@ in
|
|||||||
git clone gitea@git.cloonar.com:Cloonar/lena-schilling-website.git ${persistHome}/projects/cloonar/lena-schilling-website 2>/dev/null
|
git clone gitea@git.cloonar.com:Cloonar/lena-schilling-website.git ${persistHome}/projects/cloonar/lena-schilling-website 2>/dev/null
|
||||||
git clone gitea@git.cloonar.com:Cloonar/imperfect-perfect.com.git ${persistHome}/projects/cloonar/imperfect-perfect.com 2>/dev/null
|
git clone gitea@git.cloonar.com:Cloonar/imperfect-perfect.com.git ${persistHome}/projects/cloonar/imperfect-perfect.com 2>/dev/null
|
||||||
|
|
||||||
|
git clone gitea@git.cloonar.com:Cloonar/lego-hetzner-bridge.git ${persistHome}/projects/home-automation/lego-hetzner-bridge 2>/dev/null
|
||||||
|
git clone gitea@git.cloonar.com:Cloonar/ghetto-nixos.git ${persistHome}/projects/home-automation/ghetto-nixos 2>/dev/null
|
||||||
|
|
||||||
|
|
||||||
git clone gitea@git.cloonar.com:socialgrow.tech/sgt-api.git ${persistHome}/projects/socialgrow.tech/sgt-api 2>/dev/null
|
git clone gitea@git.cloonar.com:socialgrow.tech/sgt-api.git ${persistHome}/projects/socialgrow.tech/sgt-api 2>/dev/null
|
||||||
|
|
||||||
|
|||||||
@@ -3,4 +3,6 @@ self: super: {
|
|||||||
ykfde = (super.callPackage ../pkgs/ykfde { });
|
ykfde = (super.callPackage ../pkgs/ykfde { });
|
||||||
creality-print = (super.callPackage ../pkgs/creality-print.nix { });
|
creality-print = (super.callPackage ../pkgs/creality-print.nix { });
|
||||||
openaudible = (super.callPackage ../pkgs/openaudible.nix { });
|
openaudible = (super.callPackage ../pkgs/openaudible.nix { });
|
||||||
|
|
||||||
|
# vscode-insiders = (super.callPackage ../pkgs/vscode-insiders.nix { });
|
||||||
}
|
}
|
||||||
|
|||||||
97
utils/pkgs/vscode-insiders.nix
Normal file
97
utils/pkgs/vscode-insiders.nix
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
{ lib, stdenv, makeDesktopItem, makeWrapper, fetchurl
|
||||||
|
, atomEnv, at-spi2-atk, at-spi2-core, autoPatchelfHook, alsa-lib
|
||||||
|
, mesa, nss, nspr, systemd, libdrm, libxkbcommon, libX11, libXcomposite
|
||||||
|
, libXdamage, libXext, libXfixes, libXrandr, expat, libxcb
|
||||||
|
, libXScrnSaver, libXi, libxshmfence, libGL, libglvnd
|
||||||
|
, gtk3, pango, cairo, gdk-pixbuf, glib, dbus, cups, SDL2
|
||||||
|
, libav_0_8, openssl, bash, findutils, xdg-utils, coreutils
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "vscode-insiders";
|
||||||
|
version = "1.87.0-1708777035";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://az764295.vo.msecnd.net/insider/9319989589821514c6d3dea07e90292d59431d35/code-insider-${version}-linux-x64.tar.gz";
|
||||||
|
hash = "sha256-Mm34T2/laoqxN8MR+H0rHxxA0WAKgc5d/ZvGGC+ETok=";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
atomEnv.packages
|
||||||
|
at-spi2-atk
|
||||||
|
at-spi2-core
|
||||||
|
alsa-lib
|
||||||
|
mesa
|
||||||
|
nss
|
||||||
|
nspr
|
||||||
|
systemd
|
||||||
|
libdrm
|
||||||
|
libxkbcommon
|
||||||
|
libX11
|
||||||
|
libXcomposite
|
||||||
|
libXdamage
|
||||||
|
libXext
|
||||||
|
libXfixes
|
||||||
|
libXrandr
|
||||||
|
expat
|
||||||
|
libxcb
|
||||||
|
libXScrnSaver
|
||||||
|
libXi
|
||||||
|
libxshmfence
|
||||||
|
libGL
|
||||||
|
libglvnd
|
||||||
|
gtk3
|
||||||
|
pango
|
||||||
|
cairo
|
||||||
|
gdk-pixbuf
|
||||||
|
glib
|
||||||
|
dbus
|
||||||
|
cups
|
||||||
|
SDL2
|
||||||
|
libav_0_8
|
||||||
|
openssl
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/lib/vscode-insiders
|
||||||
|
cp -r . $out/lib/vscode-insiders
|
||||||
|
|
||||||
|
mkdir -p $out/bin
|
||||||
|
ln -s $out/lib/vscode-insiders/bin/code-insiders $out/bin/code-insiders
|
||||||
|
|
||||||
|
mkdir -p $out/share/applications
|
||||||
|
cp ${makeDesktopItem {
|
||||||
|
name = "code-insiders";
|
||||||
|
desktopName = "Visual Studio Code - Insiders";
|
||||||
|
comment = "Code Editing. Redefined.";
|
||||||
|
exec = "code-insiders %F";
|
||||||
|
icon = "code-insiders";
|
||||||
|
categories = [ "Utility" "TextEditor" "Development" "IDE" ];
|
||||||
|
mimeTypes = [ "text/plain" "inode/directory" ];
|
||||||
|
startupNotify = true;
|
||||||
|
startupWMClass = "Code - Insiders";
|
||||||
|
}}/share/applications/code-insiders.desktop $out/share/applications/
|
||||||
|
|
||||||
|
mkdir -p $out/share/pixmaps
|
||||||
|
cp $out/lib/vscode-insiders/resources/app/resources/linux/code-insiders.png $out/share/pixmaps/
|
||||||
|
'';
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
wrapProgram $out/bin/code-insiders \
|
||||||
|
--prefix PATH : ${lib.makeBinPath [ xdg-utils ]} \
|
||||||
|
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath buildInputs}
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Visual Studio Code Insiders - Open Source IDE by Microsoft";
|
||||||
|
longDescription = ''
|
||||||
|
Visual Studio Code Insiders is a new choice of tool that combines the simplicity of a code editor with what developers need for the core edit-build-debug cycle. This is the insiders version, updated daily with the latest changes.
|
||||||
|
'';
|
||||||
|
homepage = "https://code.visualstudio.com/insiders";
|
||||||
|
license = licenses.unfree;
|
||||||
|
maintainers = with maintainers; [ ];
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user