Compare commits

..

6 Commits

Author SHA1 Message Date
glennigen 3d1aefb931 rettet configs i home.nix 2026-07-15 14:55:15 +02:00
glennigen 64aa569510 deleted: configs/fish/conf.d/uv.env.fish
modified:   home.nix
2026-07-14 22:51:22 +02:00
glennigen 2750f6d54e configs upload 2026-07-14 22:32:06 +02:00
glennigen 08c71dfb6e modified: home.nix
modified:   hosts/nixos-x260/default.nix
	modified:   modules/apps/native.nix
	modified:   modules/desktop/kde.nix
2026-07-14 21:16:03 +02:00
glennigen a963159fff modified: .gitignore 2026-07-14 17:38:15 +02:00
glennigen a675411c51 x260 hardware configuration 2026-07-14 17:37:57 +02:00
51 changed files with 9390 additions and 48 deletions
+2
View File
@@ -1,3 +1,5 @@
result
.direnv
*.swp
flake.lock
stow_me
+10
View File
@@ -0,0 +1,10 @@
{
"editor.selectionClipboard": false,
"claudeCode.preferredLocation": "panel",
"terminal.integrated.fontFamily": "JetBrainsMono Nerd Font Mono"
"git.autofetch": true
"powershell.powerShellDefaultVersion": "PowerShell",
"powershell.powerShellAdditionalExePaths": {
"PowerShell": "/run/current-system/sw/bin/pwsh"
}
}
+235
View File
@@ -0,0 +1,235 @@
# fish completion for jotta-cli -*- shell-script -*-
function __jotta_cli_debug
set -l file "$BASH_COMP_DEBUG_FILE"
if test -n "$file"
echo "$argv" >> $file
end
end
function __jotta_cli_perform_completion
__jotta_cli_debug "Starting __jotta_cli_perform_completion"
# Extract all args except the last one
set -l args (commandline -opc)
# Extract the last arg and escape it in case it is a space
set -l lastArg (string escape -- (commandline -ct))
__jotta_cli_debug "args: $args"
__jotta_cli_debug "last arg: $lastArg"
# Disable ActiveHelp which is not supported for fish shell
set -l requestComp "JOTTA_CLI_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
__jotta_cli_debug "Calling $requestComp"
set -l results (eval $requestComp 2> /dev/null)
# Some programs may output extra empty lines after the directive.
# Let's ignore them or else it will break completion.
# Ref: https://github.com/spf13/cobra/issues/1279
for line in $results[-1..1]
if test (string trim -- $line) = ""
# Found an empty line, remove it
set results $results[1..-2]
else
# Found non-empty line, we have our proper output
break
end
end
set -l comps $results[1..-2]
set -l directiveLine $results[-1]
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
# completions must be prefixed with the flag
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
__jotta_cli_debug "Comps: $comps"
__jotta_cli_debug "DirectiveLine: $directiveLine"
__jotta_cli_debug "flagPrefix: $flagPrefix"
for comp in $comps
printf "%s%s\n" "$flagPrefix" "$comp"
end
printf "%s\n" "$directiveLine"
end
# this function limits calls to __jotta_cli_perform_completion, by caching the result behind $__jotta_cli_perform_completion_once_result
function __jotta_cli_perform_completion_once
__jotta_cli_debug "Starting __jotta_cli_perform_completion_once"
if test -n "$__jotta_cli_perform_completion_once_result"
__jotta_cli_debug "Seems like a valid result already exists, skipping __jotta_cli_perform_completion"
return 0
end
set --global __jotta_cli_perform_completion_once_result (__jotta_cli_perform_completion)
if test -z "$__jotta_cli_perform_completion_once_result"
__jotta_cli_debug "No completions, probably due to a failure"
return 1
end
__jotta_cli_debug "Performed completions and set __jotta_cli_perform_completion_once_result"
return 0
end
# this function is used to clear the $__jotta_cli_perform_completion_once_result variable after completions are run
function __jotta_cli_clear_perform_completion_once_result
__jotta_cli_debug ""
__jotta_cli_debug "========= clearing previously set __jotta_cli_perform_completion_once_result variable =========="
set --erase __jotta_cli_perform_completion_once_result
__jotta_cli_debug "Successfully erased the variable __jotta_cli_perform_completion_once_result"
end
function __jotta_cli_requires_order_preservation
__jotta_cli_debug ""
__jotta_cli_debug "========= checking if order preservation is required =========="
__jotta_cli_perform_completion_once
if test -z "$__jotta_cli_perform_completion_once_result"
__jotta_cli_debug "Error determining if order preservation is required"
return 1
end
set -l directive (string sub --start 2 $__jotta_cli_perform_completion_once_result[-1])
__jotta_cli_debug "Directive is: $directive"
set -l shellCompDirectiveKeepOrder 32
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
__jotta_cli_debug "Keeporder is: $keeporder"
if test $keeporder -ne 0
__jotta_cli_debug "This does require order preservation"
return 0
end
__jotta_cli_debug "This doesn't require order preservation"
return 1
end
# This function does two things:
# - Obtain the completions and store them in the global __jotta_cli_comp_results
# - Return false if file completion should be performed
function __jotta_cli_prepare_completions
__jotta_cli_debug ""
__jotta_cli_debug "========= starting completion logic =========="
# Start fresh
set --erase __jotta_cli_comp_results
__jotta_cli_perform_completion_once
__jotta_cli_debug "Completion results: $__jotta_cli_perform_completion_once_result"
if test -z "$__jotta_cli_perform_completion_once_result"
__jotta_cli_debug "No completion, probably due to a failure"
# Might as well do file completion, in case it helps
return 1
end
set -l directive (string sub --start 2 $__jotta_cli_perform_completion_once_result[-1])
set --global __jotta_cli_comp_results $__jotta_cli_perform_completion_once_result[1..-2]
__jotta_cli_debug "Completions are: $__jotta_cli_comp_results"
__jotta_cli_debug "Directive is: $directive"
set -l shellCompDirectiveError 1
set -l shellCompDirectiveNoSpace 2
set -l shellCompDirectiveNoFileComp 4
set -l shellCompDirectiveFilterFileExt 8
set -l shellCompDirectiveFilterDirs 16
if test -z "$directive"
set directive 0
end
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
if test $compErr -eq 1
__jotta_cli_debug "Received error directive: aborting."
# Might as well do file completion, in case it helps
return 1
end
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
if test $filefilter -eq 1; or test $dirfilter -eq 1
__jotta_cli_debug "File extension filtering or directory filtering not supported"
# Do full file completion instead
return 1
end
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
__jotta_cli_debug "nospace: $nospace, nofiles: $nofiles"
# If we want to prevent a space, or if file completion is NOT disabled,
# we need to count the number of valid completions.
# To do so, we will filter on prefix as the completions we have received
# may not already be filtered so as to allow fish to match on different
# criteria than the prefix.
if test $nospace -ne 0; or test $nofiles -eq 0
set -l prefix (commandline -t | string escape --style=regex)
__jotta_cli_debug "prefix: $prefix"
set -l completions (string match -r -- "^$prefix.*" $__jotta_cli_comp_results)
set --global __jotta_cli_comp_results $completions
__jotta_cli_debug "Filtered completions are: $__jotta_cli_comp_results"
# Important not to quote the variable for count to work
set -l numComps (count $__jotta_cli_comp_results)
__jotta_cli_debug "numComps: $numComps"
if test $numComps -eq 1; and test $nospace -ne 0
# We must first split on \t to get rid of the descriptions to be
# able to check what the actual completion will be.
# We don't need descriptions anyway since there is only a single
# real completion which the shell will expand immediately.
set -l split (string split --max 1 \t $__jotta_cli_comp_results[1])
# Fish won't add a space if the completion ends with any
# of the following characters: @=/:.,
set -l lastChar (string sub -s -1 -- $split)
if not string match -r -q "[@=/:.,]" -- "$lastChar"
# In other cases, to support the "nospace" directive we trick the shell
# by outputting an extra, longer completion.
__jotta_cli_debug "Adding second completion to perform nospace directive"
set --global __jotta_cli_comp_results $split[1] $split[1].
__jotta_cli_debug "Completions are now: $__jotta_cli_comp_results"
end
end
if test $numComps -eq 0; and test $nofiles -eq 0
# To be consistent with bash and zsh, we only trigger file
# completion when there are no other completions
__jotta_cli_debug "Requesting file completion"
return 1
end
end
return 0
end
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
# so we can properly delete any completions provided by another script.
# Only do this if the program can be found, or else fish may print some errors; besides,
# the existing completions will only be loaded if the program can be found.
if type -q "jotta-cli"
# The space after the program name is essential to trigger completion for the program
# and not completion of the program name itself.
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
complete --do-complete "jotta-cli " > /dev/null 2>&1
end
# Remove any pre-existing completions for the program since we will be handling all of them.
complete -c jotta-cli -e
# this will get called after the two calls below and clear the $__jotta_cli_perform_completion_once_result global
complete -c jotta-cli -n '__jotta_cli_clear_perform_completion_once_result'
# The call to __jotta_cli_prepare_completions will setup __jotta_cli_comp_results
# which provides the program's completion choices.
# If this doesn't require order preservation, we don't use the -k flag
complete -c jotta-cli -n 'not __jotta_cli_requires_order_preservation && __jotta_cli_prepare_completions' -f -a '$__jotta_cli_comp_results'
# otherwise we use the -k flag
complete -k -c jotta-cli -n '__jotta_cli_requires_order_preservation && __jotta_cli_prepare_completions' -f -a '$__jotta_cli_comp_results'
@@ -0,0 +1,14 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# the 'fish_key_bindings' variable from its old default scope (universal)
# to its new default scope (global). We recommend you delete this file
# and configure key bindings in ~/.config/fish/config.fish if needed.
# set --global fish_key_bindings fish_default_key_bindings
# Prior to version 4.3, fish shipped an event handler that runs
# `set --universal fish_key_bindings fish_default_key_bindings`
# whenever the fish_key_bindings variable is erased.
# This means that as long as any fish < 4.3 is still running on this system,
# we cannot complete the migration.
# As a workaround, erase the universal variable at every shell startup.
set --erase --universal fish_key_bindings
@@ -0,0 +1,37 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# theme variables from universal to global scope.
# Don't edit this file, as it will be written by the web-config tool (`fish_config`).
# To customize your theme, delete this file and see
# help interactive#syntax-highlighting
# or
# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING
# for appropriate commands to add to ~/.config/fish/config.fish instead.
# See also the release notes for fish 4.3.0 (run `help relnotes`).
set --global fish_color_autosuggestion brblack
set --global fish_color_cancel -r
set --global fish_color_command normal
set --global fish_color_comment red
set --global fish_color_cwd green
set --global fish_color_cwd_root red
set --global fish_color_end green
set --global fish_color_error brred
set --global fish_color_escape brcyan
set --global fish_color_history_current --bold
set --global fish_color_host normal
set --global fish_color_host_remote yellow
set --global fish_color_normal normal
set --global fish_color_operator brcyan
set --global fish_color_param cyan
set --global fish_color_quote yellow
set --global fish_color_redirection cyan --bold
set --global fish_color_search_match white --background=brblack
set --global fish_color_selection white --bold --background=brblack
set --global fish_color_status red
set --global fish_color_user brgreen
set --global fish_color_valid_path --underline
set --global fish_pager_color_completion normal
set --global fish_pager_color_description yellow -i
set --global fish_pager_color_prefix normal --bold --underline
set --global fish_pager_color_progress brwhite --background=cyan
set --global fish_pager_color_selected_background -r
+7
View File
@@ -0,0 +1,7 @@
if status is-interactive
# Commands to run in interactive sessions can go here
fastfetch
end
# Hermes Agent — ensure ~/.local/bin is on PATH
#fish_add_path "$HOME/.local/bin"
+5
View File
@@ -0,0 +1,5 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:4300
SETUVAR fish_greeting:
SETUVAR fish_user_paths:/home/glennigen/\x2enpm\x2dglobal/bin
+3
View File
@@ -0,0 +1,3 @@
function dup --wraps='sudo dnf upgrade' --description 'alias dup=sudo dnf upgrade'
sudo dnf upgrade $argv
end
+3
View File
@@ -0,0 +1,3 @@
function ll --wraps='ls -l' --wraps='lsd -Alh --group-dirs first' --description 'alias ll=lsd -Alh --group-dirs first'
lsd -Alh --group-dirs first $argv
end
+4
View File
@@ -0,0 +1,4 @@
function sll --wraps='sudo ls -l' --wraps='sudo lsd -Alh --group-dirs first' --description 'alias sll sudo lsd -Alh --group-dirs first'
sudo lsd -Alh --group-dirs first $argv
end
+3
View File
@@ -0,0 +1,3 @@
function sudo!!
eval sudo $history[1]
end
+4
View File
@@ -0,0 +1,4 @@
function zup --wraps='sudo zypper ref;sudo zypper dup' --description 'alias zup sudo zypper ref;sudo zypper dup'
sudo zypper ref;sudo zypper dup $argv
end
+80
View File
@@ -0,0 +1,80 @@
# vim:ft=kitty
## name: Catppuccin-Macchiato
## author: Pocco81 (https://github.com/Pocco81)
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/macchiato.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #CAD3F5
background #24273A
selection_foreground #24273A
selection_background #F4DBD6
# Cursor colors
cursor #F4DBD6
cursor_text_color #24273A
# URL underline color when hovering with mouse
url_color #F4DBD6
# Kitty window border colors
active_border_color #B7BDF8
inactive_border_color #6E738D
bell_border_color #EED49F
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #181926
active_tab_background #C6A0F6
inactive_tab_foreground #CAD3F5
inactive_tab_background #1E2030
tab_bar_background #181926
# Colors for marks (marked text in the terminal)
mark1_foreground #24273A
mark1_background #B7BDF8
mark2_foreground #24273A
mark2_background #C6A0F6
mark3_foreground #24273A
mark3_background #7DC4E4
# The 16 terminal colors
# black
color0 #494D64
color8 #5B6078
# red
color1 #ED8796
color9 #ED8796
# green
color2 #A6DA95
color10 #A6DA95
# yellow
color3 #EED49F
color11 #EED49F
# blue
color4 #8AADF4
color12 #8AADF4
# magenta
color5 #F5BDE6
color13 #F5BDE6
# cyan
color6 #8BD5CA
color14 #8BD5CA
# white
color7 #B8C0E0
color15 #A5ADCB
+80
View File
@@ -0,0 +1,80 @@
# vim:ft=kitty
## name: Catppuccin-Macchiato
## author: Pocco81 (https://github.com/Pocco81)
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/macchiato.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #CAD3F5
background #24273A
selection_foreground #24273A
selection_background #F4DBD6
# Cursor colors
cursor #F4DBD6
cursor_text_color #24273A
# URL underline color when hovering with mouse
url_color #F4DBD6
# Kitty window border colors
active_border_color #B7BDF8
inactive_border_color #6E738D
bell_border_color #EED49F
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #181926
active_tab_background #C6A0F6
inactive_tab_foreground #CAD3F5
inactive_tab_background #1E2030
tab_bar_background #181926
# Colors for marks (marked text in the terminal)
mark1_foreground #24273A
mark1_background #B7BDF8
mark2_foreground #24273A
mark2_background #C6A0F6
mark3_foreground #24273A
mark3_background #7DC4E4
# The 16 terminal colors
# black
color0 #494D64
color8 #5B6078
# red
color1 #ED8796
color9 #ED8796
# green
color2 #A6DA95
color10 #A6DA95
# yellow
color3 #EED49F
color11 #EED49F
# blue
color4 #8AADF4
color12 #8AADF4
# magenta
color5 #F5BDE6
color13 #F5BDE6
# cyan
color6 #8BD5CA
color14 #8BD5CA
# white
color7 #B8C0E0
color15 #A5ADCB
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,119 @@
[General]
Name=GlennIgen
[Output]
Mode=Advanced
FilenameFormatting=%CCYY-%MM-%DD %hh-%mm-%ss
DelayEnable=false
DelaySec=20
DelayPreserve=true
Reconnect=true
RetryDelay=2
MaxRetries=25
BindIP=default
IPFamily=IPv4+IPv6
NewSocketLoopEnable=false
LowLatencyEnable=false
[Stream1]
IgnoreRecommended=false
EnableMultitrackVideo=false
MultitrackVideoMaximumAggregateBitrateAuto=true
MultitrackVideoMaximumVideoTracksAuto=true
[SimpleOutput]
FilePath=/home/glennigen
RecFormat2=hybrid_mp4
VBitrate=6000
ABitrate=160
UseAdvanced=false
Preset=veryfast
NVENCPreset2=p5
RecQuality=Stream
RecRB=false
RecRBTime=20
RecRBSize=512
RecRBPrefix=Replay
StreamAudioEncoder=aac
RecAudioEncoder=aac
RecTracks=1
StreamEncoder=x264
RecEncoder=x264
[AdvOut]
ApplyServiceSettings=true
UseRescale=false
TrackIndex=1
VodTrackIndex=2
Encoder=obs_x264
RecType=Standard
RecFilePath=/home/glennigen/Videos/obs-replay
RecFormat2=hybrid_mp4
RecUseRescale=false
RecTracks=15
RecEncoder=ffmpeg_vaapi_tex
FLVTrack=1
StreamMultiTrackAudioMixes=1
FFOutputToFile=true
FFFilePath=/home/glennigen
FFVBitrate=6000
FFVGOPSize=250
FFUseRescale=false
FFIgnoreCompat=false
FFABitrate=160
FFAudioMixes=1
Track1Bitrate=160
Track2Bitrate=160
Track3Bitrate=160
Track4Bitrate=160
Track5Bitrate=160
Track6Bitrate=160
RecSplitFileTime=15
RecSplitFileSize=2048
RecRB=true
RecRBTime=300
RecRBSize=512
AudioEncoder=libfdk_aac
RecAudioEncoder=libfdk_aac
RescaleRes=1920x1080
RecRescaleRes=1920x1080
RecSplitFileType=Time
FFFormat=
FFFormatMimeType=
FFRescaleRes=1920x1080
FFVEncoderId=0
FFVEncoder=
FFAEncoderId=0
FFAEncoder=
RecFileNameWithoutSpace=true
[Video]
BaseCX=3440
BaseCY=1440
OutputCX=3440
OutputCY=1440
FPSType=0
FPSCommon=60
FPSInt=30
FPSNum=30
FPSDen=1
ScaleType=bicubic
ColorFormat=NV12
ColorSpace=709
ColorRange=Partial
SdrWhiteLevel=300
HdrNominalPeakLevel=1000
[Audio]
MonitoringDeviceId=default
MonitoringDeviceName=Default
SampleRate=48000
ChannelSetup=Stereo
MeterDecayRate=23.53
PeakMeterType=0
[Panels]
CookieId=DA4A06F434AD0D1B
[Hotkeys]
ReplayBuffer={"ReplayBuffer.Save":[{"shift":true,"command":true,"key":"OBS_KEY_S"}]}
@@ -0,0 +1 @@
{"vaapi_device":"/dev/dri/by-path/pci-0000:03:00.0-render","bitrate":50000}
@@ -0,0 +1 @@
{"vaapi_device":"/dev/dri/by-path/pci-0000:03:00.0-render","bitrate":35000}
@@ -0,0 +1,119 @@
[General]
Name=GlennIgen
[Output]
Mode=Advanced
FilenameFormatting=%CCYY-%MM-%DD %hh-%mm-%ss
DelayEnable=false
DelaySec=20
DelayPreserve=true
Reconnect=true
RetryDelay=2
MaxRetries=25
BindIP=default
IPFamily=IPv4+IPv6
NewSocketLoopEnable=false
LowLatencyEnable=false
[Stream1]
IgnoreRecommended=false
EnableMultitrackVideo=false
MultitrackVideoMaximumAggregateBitrateAuto=true
MultitrackVideoMaximumVideoTracksAuto=true
[SimpleOutput]
FilePath=/home/glennigen
RecFormat2=hybrid_mp4
VBitrate=6000
ABitrate=160
UseAdvanced=false
Preset=veryfast
NVENCPreset2=p5
RecQuality=Stream
RecRB=false
RecRBTime=20
RecRBSize=512
RecRBPrefix=Replay
StreamAudioEncoder=aac
RecAudioEncoder=aac
RecTracks=1
StreamEncoder=x264
RecEncoder=x264
[AdvOut]
ApplyServiceSettings=true
UseRescale=false
TrackIndex=1
VodTrackIndex=2
Encoder=obs_x264
RecType=Standard
RecFilePath=/home/glennigen/Videos/obs-replay
RecFormat2=hybrid_mp4
RecUseRescale=false
RecTracks=15
RecEncoder=ffmpeg_vaapi_tex
FLVTrack=1
StreamMultiTrackAudioMixes=1
FFOutputToFile=true
FFFilePath=/home/glennigen
FFVBitrate=6000
FFVGOPSize=250
FFUseRescale=false
FFIgnoreCompat=false
FFABitrate=160
FFAudioMixes=1
Track1Bitrate=160
Track2Bitrate=160
Track3Bitrate=160
Track4Bitrate=160
Track5Bitrate=160
Track6Bitrate=160
RecSplitFileTime=15
RecSplitFileSize=2048
RecRB=true
RecRBTime=300
RecRBSize=512
AudioEncoder=libfdk_aac
RecAudioEncoder=libfdk_aac
RescaleRes=1920x1080
RecRescaleRes=1920x1080
RecSplitFileType=Time
FFFormat=
FFFormatMimeType=
FFRescaleRes=1920x1080
FFVEncoderId=0
FFVEncoder=
FFAEncoderId=0
FFAEncoder=
RecFileNameWithoutSpace=true
[Video]
BaseCX=3440
BaseCY=1440
OutputCX=3440
OutputCY=1440
FPSType=0
FPSCommon=60
FPSInt=30
FPSNum=30
FPSDen=1
ScaleType=bicubic
ColorFormat=NV12
ColorSpace=709
ColorRange=Partial
SdrWhiteLevel=300
HdrNominalPeakLevel=1000
[Audio]
MonitoringDeviceId=default
MonitoringDeviceName=Default
SampleRate=48000
ChannelSetup=Stereo
MeterDecayRate=23.53
PeakMeterType=0
[Panels]
CookieId=DA4A06F434AD0D1B
[Hotkeys]
ReplayBuffer={"ReplayBuffer.Save":[{"shift":true,"command":true,"key":"OBS_KEY_S"}]}
@@ -0,0 +1 @@
{"vaapi_device":"/dev/dri/by-path/pci-0000:03:00.0-render","bitrate":50000}
@@ -0,0 +1 @@
{"vaapi_device":"/dev/dri/by-path/pci-0000:03:00.0-render","bitrate":35000}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,20 @@
[General]
MaxLogs=10
InfoIncrement=-1
ProcessPriority=Normal
EnableAutoUpdates=true
BrowserHWAccel=true
LastVersion=536870914
[Video]
Renderer=OpenGL
[Locations]
Configuration=/home/glennigen/.var/app/com.obsproject.Studio/config
SceneCollections=/home/glennigen/.var/app/com.obsproject.Studio/config
Profiles=/home/glennigen/.var/app/com.obsproject.Studio/config
PluginManagerSettings=/home/glennigen/.var/app/com.obsproject.Studio/config
[PropertiesWindow]
cx=720
cy=580
@@ -0,0 +1,8 @@
{
"alerts_enabled": false,
"auth_required": true,
"first_load": false,
"server_enabled": false,
"server_password": "YyCzJZoUvBCcYN4M",
"server_port": 4455
}
@@ -0,0 +1,130 @@
{
"ingests": [
{
"_id": 0,
"availability": 1.0,
"default": false,
"name": "Default",
"url_template": "rtmp://ingest.global-contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://ingest.global-contribute.live-video.net/app/{stream_key}",
"priority": 0
},
{
"_id": 1,
"availability": 1.0,
"default": false,
"name": "Europe: Frankfurt (10)",
"url_template": "rtmp://euc10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://euc10.contribute.live-video.net/app/{stream_key}",
"priority": 1
},
{
"_id": 2,
"availability": 1.0,
"default": false,
"name": "Europe: Sweden, Stockholm (10)",
"url_template": "rtmp://eun10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://eun10.contribute.live-video.net/app/{stream_key}",
"priority": 2
},
{
"_id": 3,
"availability": 1.0,
"default": false,
"name": "Europe: France, Paris (30)",
"url_template": "rtmp://euw30.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://euw30.contribute.live-video.net/app/{stream_key}",
"priority": 3
},
{
"_id": 4,
"availability": 1.0,
"default": false,
"name": "Europe West: Ireland (10)",
"url_template": "rtmp://euw10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://euw10.contribute.live-video.net/app/{stream_key}",
"priority": 4
},
{
"_id": 5,
"availability": 1.0,
"default": false,
"name": "US East: Ashburn, VA (10)",
"url_template": "rtmp://use10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://use10.contribute.live-video.net/app/{stream_key}",
"priority": 5
},
{
"_id": 6,
"availability": 1.0,
"default": false,
"name": "US East: Ohio (20)",
"url_template": "rtmp://use20.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://use20.contribute.live-video.net/app/{stream_key}",
"priority": 6
},
{
"_id": 7,
"availability": 1.0,
"default": false,
"name": "Asia: India, Mumbai (30)",
"url_template": "rtmp://aps30.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://aps30.contribute.live-video.net/app/{stream_key}",
"priority": 7
},
{
"_id": 8,
"availability": 1.0,
"default": false,
"name": "US West: Portland, OR (us-west-2)",
"url_template": "rtmp://usw20.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://usw20.contribute.live-video.net/app/{stream_key}",
"priority": 8
},
{
"_id": 9,
"availability": 1.0,
"default": false,
"name": "Asia: South Korea, Seoul (20)",
"url_template": "rtmp://apn20.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://apn20.contribute.live-video.net/app/{stream_key}",
"priority": 9
},
{
"_id": 10,
"availability": 1.0,
"default": false,
"name": "Asia: Japan, Narita (10)",
"url_template": "rtmp://apn10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://apn10.contribute.live-video.net/app/{stream_key}",
"priority": 10
},
{
"_id": 11,
"availability": 1.0,
"default": false,
"name": "Asia Southeast: Singapore (10)",
"url_template": "rtmp://aps10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://aps10.contribute.live-video.net/app/{stream_key}",
"priority": 11
},
{
"_id": 12,
"availability": 1.0,
"default": false,
"name": "South America: Brazil, Sao Paulo (10)",
"url_template": "rtmp://sae10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://sae10.contribute.live-video.net/app/{stream_key}",
"priority": 12
},
{
"_id": 13,
"availability": 1.0,
"default": false,
"name": "Asia Southeast: Sydney (20)",
"url_template": "rtmp://aps20.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://aps20.contribute.live-video.net/app/{stream_key}",
"priority": 13
}
]
}
@@ -0,0 +1 @@
{"$schema":"schema/package-schema.json","url":"https://obsproject.com/obs2_update/rtmp-services/v5","version":281,"files":[{"name":"services.json","version":281}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,130 @@
{
"ingests": [
{
"_id": 0,
"availability": 1.0,
"default": false,
"name": "Default",
"url_template": "rtmp://ingest.global-contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://ingest.global-contribute.live-video.net/app/{stream_key}",
"priority": 0
},
{
"_id": 1,
"availability": 1.0,
"default": false,
"name": "Europe: Frankfurt (10)",
"url_template": "rtmp://euc10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://euc10.contribute.live-video.net/app/{stream_key}",
"priority": 1
},
{
"_id": 2,
"availability": 1.0,
"default": false,
"name": "Europe: Sweden, Stockholm (10)",
"url_template": "rtmp://eun10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://eun10.contribute.live-video.net/app/{stream_key}",
"priority": 2
},
{
"_id": 3,
"availability": 1.0,
"default": false,
"name": "Europe: France, Paris (30)",
"url_template": "rtmp://euw30.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://euw30.contribute.live-video.net/app/{stream_key}",
"priority": 3
},
{
"_id": 4,
"availability": 1.0,
"default": false,
"name": "Europe West: Ireland (10)",
"url_template": "rtmp://euw10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://euw10.contribute.live-video.net/app/{stream_key}",
"priority": 4
},
{
"_id": 5,
"availability": 1.0,
"default": false,
"name": "US East: Ashburn, VA (10)",
"url_template": "rtmp://use10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://use10.contribute.live-video.net/app/{stream_key}",
"priority": 5
},
{
"_id": 6,
"availability": 1.0,
"default": false,
"name": "US East: Ohio (20)",
"url_template": "rtmp://use20.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://use20.contribute.live-video.net/app/{stream_key}",
"priority": 6
},
{
"_id": 7,
"availability": 1.0,
"default": false,
"name": "Asia: India, Mumbai (30)",
"url_template": "rtmp://aps30.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://aps30.contribute.live-video.net/app/{stream_key}",
"priority": 7
},
{
"_id": 8,
"availability": 1.0,
"default": false,
"name": "US West: Portland, OR (us-west-2)",
"url_template": "rtmp://usw20.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://usw20.contribute.live-video.net/app/{stream_key}",
"priority": 8
},
{
"_id": 9,
"availability": 1.0,
"default": false,
"name": "Asia: South Korea, Seoul (20)",
"url_template": "rtmp://apn20.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://apn20.contribute.live-video.net/app/{stream_key}",
"priority": 9
},
{
"_id": 10,
"availability": 1.0,
"default": false,
"name": "Asia: Japan, Narita (10)",
"url_template": "rtmp://apn10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://apn10.contribute.live-video.net/app/{stream_key}",
"priority": 10
},
{
"_id": 11,
"availability": 1.0,
"default": false,
"name": "Asia Southeast: Singapore (10)",
"url_template": "rtmp://aps10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://aps10.contribute.live-video.net/app/{stream_key}",
"priority": 11
},
{
"_id": 12,
"availability": 1.0,
"default": false,
"name": "South America: Brazil, Sao Paulo (10)",
"url_template": "rtmp://sae10.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://sae10.contribute.live-video.net/app/{stream_key}",
"priority": 12
},
{
"_id": 13,
"availability": 1.0,
"default": false,
"name": "Asia Southeast: Sydney (20)",
"url_template": "rtmp://aps20.contribute.live-video.net/app/{stream_key}",
"url_template_secure": "rtmps://aps20.contribute.live-video.net/app/{stream_key}",
"priority": 13
}
]
}
@@ -0,0 +1,53 @@
[
{
"display_name": "Source Clone",
"enabled": true,
"encoders": [],
"id": "",
"module_name": "source-clone",
"outputs": [],
"services": [],
"sources": [
"source-clone",
"source_clone_audio_wrapper_source"
],
"version": ""
},
{
"display_name": "linux-vkcapture",
"enabled": true,
"encoders": [],
"id": "",
"module_name": "linux-vkcapture",
"outputs": [],
"services": [],
"sources": [
"vkcapture-source"
],
"version": ""
},
{
"display_name": "",
"enabled": true,
"encoders": [],
"id": "",
"module_name": "obs-wayland-hotkeys",
"outputs": [],
"services": [],
"sources": [],
"version": ""
},
{
"display_name": "",
"enabled": true,
"encoders": [],
"id": "",
"module_name": "source-record",
"outputs": [],
"services": [],
"sources": [
"source_record_filter"
],
"version": ""
}
]
@@ -0,0 +1,67 @@
[General]
Pre19Defaults=false
Pre21Defaults=false
Pre23Defaults=false
Pre24.1Defaults=false
ConfirmOnExit=true
HotkeyFocusType=NeverDisableHotkeys
FirstRun=true
[BasicWindow]
PreviewEnabled=true
PreviewProgramMode=false
SceneDuplicationMode=true
SwapScenesMode=true
SnappingEnabled=true
ScreenSnapping=true
SourceSnapping=true
CenterSnapping=false
SnapDistance=10
SpacingHelpersEnabled=true
RecordWhenStreaming=false
KeepRecordingWhenStreamStops=false
SysTrayEnabled=true
SysTrayWhenStarted=false
SaveProjectors=false
ShowTransitions=true
ShowListboxToolbars=true
ShowStatusBar=true
ShowSourceIcons=true
ShowContextToolbars=true
StudioModeLabels=true
VerticalVolControl=true
MultiviewMouseSwitch=true
MultiviewDrawNames=true
MultiviewDrawAreas=true
MediaControlsCountdownTimer=true
geometry=AdnQywADAAAAAA1l////zwAAEj4AAALVAAANcAAAAAAAABIzAAACygAAAAEAAAAAB4AAAA1wAAAAAAAAEjMAAALK
DockState=AAAA/wAAAAD9AAAAAQAAAAMAAATEAAAB4vwBAAAABvsAAAAUAHMAYwBlAG4AZQBzAEQAbwBjAGsBAAAAAAAAAOsAAACYAP////sAAAAWAHMAbwB1AHIAYwBlAHMARABvAGMAawEAAADvAAAAnwAAAJgA////+wAAABIAbQBpAHgAZQByAEQAbwBjAGsBAAABkgAAAXEAAAC2AP////sAAAAeAHQAcgBhAG4AcwBpAHQAaQBvAG4AcwBEAG8AYwBrAQAAAwcAAADfAAAAggD////7AAAAGABjAG8AbgB0AHIAbwBsAHMARABvAGMAawEAAAPqAAAA2gAAAKIA////+wAAABIAcwB0AGEAdABzAEQAbwBjAGsCAAAFWgAAAmwAAAK8AAAAyAAABMQAAACpAAAABAAAAAQAAAAIAAAACPwAAAAA
AlwaysOnTop=false
EditPropertiesMode=false
DocksLocked=false
SideDocks=false
[Appearance]
FontScale=10
Density=1
[Basic]
Profile=GlennIgen
ProfileDir=GlennIgen
SceneCollection=Untitled
SceneCollectionFile=Untitled.json
ConfigOnNewProfile=true
[Accessibility]
SelectRed=255
SelectGreen=65280
SelectBlue=16744192
MixerGreen=2522918
MixerYellow=2523007
MixerRed=2500223
MixerGreenActive=5046092
MixerYellowActive=5046271
MixerRedActive=5000447
[ScriptLogWindow]
geometry=AdnQywADAAAAAAABAAAAGQAAAlgAAAGoAAAAAQAAABkAAAJYAAABqAAAAAAAAAAADXAAAAABAAAAGQAAAlgAAAGo
@@ -0,0 +1,47 @@
context.modules = [
{ name = libpipewire-module-loopback
args = {
audio.position = [ FL FR ]
capture.props = {
media.class = Audio/Sink
node.name = DiscordSink
node.description = "Discord Sink"
}
playback.props = {
node.name = "DiscordSink.output"
node.passive = true
target.object = "Default playback device"
}
}
},
{ name = libpipewire-module-loopback
args = {
audio.position = [ FL FR ]
capture.props = {
media.class = Audio/Sink
node.name = MusicSink
node.description = "Music Sink"
}
playback.props = {
node.name = "MusicSink.output"
node.passive = true
target.object = "Default playback device"
}
}
},
{ name = libpipewire-module-loopback
args = {
audio.position = [ FL FR ]
capture.props = {
media.class = Audio/Sink
node.name = GameSink
node.description = "Game Sink"
}
playback.props = {
node.name = "GameSink.output"
node.passive = true
target.object = "Default playback device"
}
}
}
]
+76
View File
@@ -0,0 +1,76 @@
#!/bin/bash
# Function for Flatpak apps
close_flatpak() {
local app="$1"
flatpak kill "$app"
for i in $(seq 1 5); do
sleep 1
if ! pgrep -f "$app" > /dev/null; then
echo "$app closed (attempt $i)"
return
fi
echo "$app still running, retrying ($i/5)..."
flatpak kill "$app"
done
echo "$app force closing (KILL)..."
pkill -KILL -f "$app"
pkill -KILL -f bwrap 2>/dev/null # kill sandbox container
}
# Function for native apps
close_app() {
local app="$1"
pkill -TERM -f "$app"
for i in $(seq 1 5); do
sleep 1
if ! pgrep -f "$app" > /dev/null; then
echo "$app closed (attempt $i)"
return
fi
echo "$app still running, retrying ($i/5)..."
pkill -TERM -f "$app"
done
echo "$app force closing (KILL)..."
pkill -KILL -f "$app"
}
# Prompt
read -r -p "Close all programs and reboot? [Y/n]: " response
response="${response:-Y}"
if [[ ! "$response" =~ ^[Yy]$ ]]; then
echo "Cancelled."
exit 0
fi
# Close apps
close_flatpak "io.github.lullabyX.sone"
close_flatpak "rocks.shy.VacuumTube"
close_app "firefox"
close_app "equibop"
close_app "1password"
# Close Steam
if pgrep -f steam > /dev/null; then
steam -shutdown
for i in $(seq 1 5); do
sleep 1
if ! pgrep -f steam > /dev/null; then
echo "Steam closed (attempt $i)"
break
fi
echo "Steam still running ($i/5)..."
done
pkill -KILL -f steam 2>/dev/null
else
echo "Steam not running, skipping..."
fi
# Countdown Ctrl+C to cancel
echo "All programs closed. Rebooting in:"
for i in 3 2 1; do
echo " $i..."
sleep 1
done
sudo shutdown -r now
+75
View File
@@ -0,0 +1,75 @@
#!/bin/bash
# Function for Flatpak apps
close_flatpak() {
local app="$1"
flatpak kill "$app"
for i in $(seq 1 5); do
sleep 1
if ! pgrep -f "$app" > /dev/null; then
echo "$app closed (attempt $i)"
return
fi
echo "$app still running, retrying ($i/5)..."
flatpak kill "$app"
done
echo "$app force closing (KILL)..."
pkill -KILL -f "$app"
pkill -KILL -f bwrap 2>/dev/null # kill sandbox container
}
# Function for native apps
close_app() {
local app="$1"
pkill -TERM -f "$app"
for i in $(seq 1 5); do
sleep 1
if ! pgrep -f "$app" > /dev/null; then
echo "$app closed (attempt $i)"
return
fi
echo "$app still running, retrying ($i/5)..."
pkill -TERM -f "$app"
done
echo "$app force closing (KILL)..."
pkill -KILL -f "$app"
}
# Prompt
read -r -p "Close all programs and shut down? [Y/n]: " response
response="${response:-Y}"
if [[ ! "$response" =~ ^[Yy]$ ]]; then
echo "Cancelled."
exit 0
fi
# Close apps
close_flatpak "io.github.lullabyX.sone"
close_flatpak "rocks.shy.VacuumTube"
close_app "firefox"
close_app "equibop"
close_app "1password"
# Close Steam
if pgrep -f steam > /dev/null; then
steam -shutdown
for i in $(seq 1 5); do
sleep 1
if ! pgrep -f steam > /dev/null; then
echo "Steam closed (attempt $i)"
break
fi
echo "Steam still running ($i/5)..."
done
pkill -KILL -f steam 2>/dev/null
else
echo "Steam not running, skipping..."
fi
# Countdown Ctrl+C to cancel
echo "All programs closed. Shutting down in:"
for i in 3 2 1; do
echo " $i..."
sleep 1
done
sudo shutdown -h now
+22 -2
View File
@@ -1,17 +1,36 @@
{ config, pkgs, ... }: {
home.username = "glennigen";
home.homeDirectory = "/home/glennigen";
home.keyboard.layout = "dk";
home.keyboard.variant = "winkeys";
home.stateVersion = "26.05";
#home.file = {
# ".config/fish" = {
# source = ./configs/fish;
# #recursive = true;
# };
#};
home.file.".config/fish".source =
config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nix/configs/fish";
home.file.".config/kitty".source =
config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nix/configs/kitty";
home.file.".config/pipewire".source =
config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nix/configs/pipewire";
home.file.".config/VSCodium".source =
config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nix/configs/VSCodium";
# Bruger-specifikke pakker — kun til glennigen
home.packages = with pkgs; [
# Editorer (personlige valg)
vscodium
powershell
# sublime4 #insecure OpenSSL?
# Media
sone # musikafspiller
obs-studio # streaming/optagelse
sone # musikafspiller
obs-studio # streaming/optagelse
# Discord (Equibop)
equibop
@@ -21,6 +40,7 @@
# Browser
firefox
teams-for-linux
];
programs.bash.enable = true;
+29 -24
View File
@@ -2,47 +2,52 @@
imports = [
../../modules/apps
../../modules/desktop
./hardware-configuration.nix # genereres på maskinen
./hardware-configuration.nix # genereres på maskinen
];
# System
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
boot = {
plymouth = {
enable = true;
theme = "connect";
themePackages = with pkgs; [
(adi1090x-plymouth-themes.override {
selected_themes = [ "connect" ];
})
];
};
consoleLogLevel = 3;
initrd.verbose = false;
kernelParams = [
"quiet"
"rd.udev.log_level=3"
"rd.systemd.show_status=auto"
];
loader.timeout = 0;
};
networking.hostName = "nixos-x260";
networking.networkmanager.enable = true;
time.timeZone = "Europe/Copenhagen";
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "da_DK.UTF-8";
LC_IDENTIFICATION = "da_DK.UTF-8";
LC_MEASUREMENT = "da_DK.UTF-8";
LC_MONETARY = "da_DK.UTF-8";
LC_NAME = "da_DK.UTF-8";
LC_NUMERIC = "da_DK.UTF-8";
LC_PAPER = "da_DK.UTF-8";
LC_TELEPHONE = "da_DK.UTF-8";
LC_TIME = "da_DK.UTF-8";
};
console.keyMap = "dk-latin1";
services.xserver.xkb = {
layout = "dk";
variant = "";
};
# Bruger
users.users.glennigen = {
isNormalUser = true;
description = "glennigen";
extraGroups = [ "wheel" "networkmanager" ];
extraGroups = [
"wheel"
"networkmanager"
];
shell = pkgs.fish;
};
# Nix
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# Tillad unfree packages (Steam, 1Password, mfl.)
nixpkgs.config.allowUnfree = true;
@@ -51,4 +56,4 @@
hardware.graphics.enable = true;
system.stateVersion = "26.05";
}
}
@@ -0,0 +1,45 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/3e36f50b-d5b9-4ed4-8b38-ebb5496e4648";
fsType = "btrfs";
};
fileSystems."/nix" =
{ device = "/dev/disk/by-uuid/3e36f50b-d5b9-4ed4-8b38-ebb5496e4648";
fsType = "btrfs";
options = [ "subvol=nix" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/3e36f50b-d5b9-4ed4-8b38-ebb5496e4648";
fsType = "btrfs";
options = [ "subvol=home" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/3919-89C3";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/a6254343-a647-49cc-ac56-ad95050138fb"; }
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+13 -3
View File
@@ -9,7 +9,10 @@
btop
tldr
neovim
#powershell
#vscodium
#powershell-editor-services
#teams-for-linux
# Git
git
gh
@@ -20,13 +23,20 @@
# Utility
stow
nixfmt
];
# Fish installeret via programs.fish — shell for glennigen
programs.fish.enable = true;
# Steam
programs.steam.enable = true;
programs.steam = {
enable = true;
extraPackages = with pkgs;[
kdePackages.breeze
];
};
# Tailscale (service, ikke package)
services.tailscale.enable = true;
@@ -35,4 +45,4 @@
security.polkit.enable = true;
programs._1password.enable = true;
programs._1password-gui.enable = true;
}
}
+42 -19
View File
@@ -1,23 +1,46 @@
{ ... }: {
{ pkgs, ... }: {
# KDE Plasma — desktop environment
services.xserver.enable = true;
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
services = {
xserver = {
enable = true;
xkb = {
layout = "dk";
variant = "winkeys";
};
};
displayManager = {
sddm.enable = true;
};
desktopManager = {
plasma6.enable = true;
};
};
# SDDM tastaturlayout — drop-in config for at sikre dk uanset backend
# environment.etc."sddm.conf.d/99-keyboard.conf".text = ''
# [Input]
# Keyboard.layout=dk
# Keyboard.variant=
# '';
environment.etc."X11/xorg.conf.d/00-keyboard.conf".text = ''
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "dk"
Option "XkbModel" "pc105"
EndSection
'';
environment.systemPackages = with pkgs.kdePackages; [
filelight
partitionmanager
plasma-vault
plasma-firewall
];
console.keyMap = "dk-latin1";
time.timeZone = "Europe/Copenhagen";
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
#LC_ALL = "da_DK.UTF-8";
#LC_CTYPE = "da_DK.UTF-8";
LC_ADDRESS = "da_DK.UTF-8";
LC_IDENTIFICATION = "da_DK.UTF-8";
LC_MEASUREMENT = "da_DK.UTF-8";
#LC_MESSAGES = "da_DK.UTF-8";
LC_MONETARY = "da_DK.UTF-8";
LC_NAME = "da_DK.UTF-8";
LC_NUMERIC = "da_DK.UTF-8";
LC_PAPER = "da_DK.UTF-8";
LC_TELEPHONE = "da_DK.UTF-8";
LC_TIME = "da_DK.UTF-8";
#LC_COLLATE = "da_DK.UTF-8";
};
# Lyd
services.pulseaudio.enable = false;
@@ -31,4 +54,4 @@
# Printing
services.printing.enable = true;
}
}