/nix/store/dlwqlnbaj5vfm9aw20r1yxk8y56lmgif-repo/header.tmpl
7 changed files with
82 additions and
130 deletions
@ -5,15 +5,12 @@
. . .
} :
let
inherit ( lib . lists ) elem singleton ;
inherit ( lib . lists ) elem ;
inherit ( lib . meta ) getExe ;
inherit ( lib . attrsets ) mapAttrsToList ;
inherit ( lib . strings ) concatStringsSep ;
inherit ( lib . modules ) mkIf ;
inherit ( lib ) getFlakePkg ;
inherit ( osConfig . meta . system ) isGraphical ;
inherit ( osConfig . meta . mainUser . defaultShell ) name package ;
ghostty = ( getFlakePkg inputs . ghostty ) . override {
@ -70,10 +67,11 @@ let
} ;
in
{
config = mkIf isGraphical {
packages = singleton ghostty ;
files . " . c o n f i g / g h o s t t y / c o n f i g " . text =
concatStringsSep " \n "
< | mapAttrsToList ( name : value : " ${ name } = ${ toString value } " ) ghostty-settings ;
packages = builtins . attrValues {
inherit ghostty ;
} ;
files . " . c o n f i g / g h o s t t y / c o n f i g " . text =
concatStringsSep " \n "
< | mapAttrsToList ( name : value : " ${ name } = ${ toString value } " ) ghostty-settings ;
}
@ -6,14 +6,14 @@
} :
let
inherit ( lib . meta ) getExe ;
inherit ( lib . lists ) singleton ;
inherit ( lib . strings ) optionalString ;
inherit ( builtins ) attrValues readFile ;
inherit ( config . meta . mainUser ) username ;
inherit ( config . meta . system ) isWorkstation ;
organizationScope = config . sops . secrets . organization_scope . path ;
uniScope = config . sops . secrets . uni_scope . path ;
realName = readFile config . sops . secrets . real_name . path ;
universityEmail = readFile config . sops . secrets . university_email . path ;
organizationEmail = readFile config . sops . secrets . organization_email . path ;
organizationShortName = readFile config . sops . secrets . organization_short_name . path ;
toml = pkgs . formats . toml { } ;
jj-config = toml . generate " c o n f i g . t o m l " {
@ -21,6 +21,24 @@ let
email = " f a u @ f a u k a h . c o m " ;
name = " f a u k a h " ;
} ;
" - - s c o p e " = [
{
" - - w h e n " . repositories = [ " ~ / r e p o s / p r o j e c t s / u n i " ] ;
user = {
email = universityEmail ;
name = realName ;
} ;
}
{
" - - w h e n " . repositories = [ " ~ / r e p o s / p r o j e c t s / ${ organizationShortName } " ] ;
user = {
email = organizationEmail ;
name = realName ;
} ;
}
] ;
aliases = {
c = [ " c o m m i t " ] ;
ci = [
@ -105,17 +123,8 @@ let
} ;
} ;
jj-wrapped = pkgs . symlinkJoin {
name = " j j - w r a p p e d " ;
paths = [ pkgs . jujutsu ] ;
nativeBuildInputs = [ pkgs . makeWrapper ] ;
postBuild = optionalString isWorkstation ''
wrapProgram $ out/bin/jj - - add-flags " - - c o n f i g - f i l e ${ uniScope } - - c o n f i g - f i l e ${ organizationScope } "
'' ;
} ;
in
{
hjem . users . ${ username } . xdg . config . files . " j j / c o n f i g . t o m l " . source = jj-config ;
environment . systemPackages = singleton jj-wrapped ;
environment . systemPackages = attrValues { inherit ( pkgs ) jujutsu ; } ;
}
@ -6,17 +6,29 @@
. . .
} :
let
inherit ( lib . modules ) mkIf ;
inherit ( lib . lists ) singleton ;
inherit ( builtins ) attrValues ;
inherit ( config . meta . system ) isLaptop ;
inherit ( lib . modules ) mkDefault mkForce ;
in
{
imports = [
inputs . watt . nixosModules . default
] ;
config = mkIf isLaptop {
config = {
environment . systemPackages = builtins . attrValues {
inherit ( pkgs )
acpi
powertop
;
} ;
boot = {
kernelModules = [ " a c p i _ c a l l " ] ;
extraModulePackages = with config . boot . kernelPackages ; [
acpi_call
cpupower
] ;
} ;
hardware . acpilight . enable = false ;
services = {
watt . enable = true ;
thermald . enable = true ;
@ -25,19 +37,32 @@ in
percentageLow = 15 ;
percentageCritical = 5 ;
} ;
} ;
services . acpid = {
enable = true ;
logEvents = true ;
} ;
environment . systemPackages = attrValues {
inherit ( pkgs ) acpi ;
} ;
boot = {
kernelModules = singleton " a c p i _ c a l l " ;
extraModulePackages = attrValues {
inherit ( config . boot . kernelPackages ) acpi_call cpupower ;
acpid = {
enable = true ;
logEvents = true ;
} ;
power-profiles-daemon . enable = mkForce false ;
auto-cpufreq = {
enable = false ;
settings = {
charger = {
governor = " p e r f o r m a n c e " ;
energy_performance_preference = " p e r f o r m a n c e " ;
scaling_min_freq = mkDefault 1800000 ;
scaling_max_freq = mkDefault 3800000 ;
turbo = " a u t o " ;
} ;
battery = {
governor = " p o w e r s a v e " ;
energy_performance_preference = " p o w e r " ;
scaling_min_freq = mkDefault 1200000 ;
scaling_max_freq = mkDefault 1800000 ;
turbo = " n e v e r " ;
} ;
} ;
} ;
} ;
} ;
}
@ -1,19 +0,0 @@
{
"data" : "ENC[AES256_GCM,data:vwfjHpLbHG8g79CpMpsDzYAk0vlfwKuWUTSZnKzGwCZW5rrFFBLamQoZLt5HpvvsGqBrqRditj+GSsHsZAzxz25Vfv7dcyvz1AdaFI56zmU1NzSK+RAyucPZfnjV98vJUqFgVmOFQBkv0o1ThrzXmE8jd1Osz7qKIoy/+rHCzqsBw8wFD3tMe4UjGtkI9DYFSJUh1Ym9PjBE,iv:JeLgCfQXvjWNk8BypNbqJw1+OHawEDQSCdamq0C+lis=,tag:XZUy4g3W4O9L/c1PXlooKA==,type:str]" ,
"sops" : {
"age" : [
{
"recipient" : "age1a4jv2avdlj5zzq9p7ss9958t4wt3an95c3j86eclge7q2qc6n3wq4ucymc" ,
"enc" : "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQRE5xR1RISy9rM3FkOGpu\ncGRCL2ZYOU5PeXNhaUtXSWxRWXN5bWNkSmlnCjB1Q0VlNDhmNmVCME5IMTU5SzVV\nSUt3RVFGRFJMc21TTXFGTzJSYkpjRTgKLS0tIHVZZnh4cG1FendxSENNRmhVY1gv\ndG55UVdhN2Nka2hJS0NwbTBud1V0L28KxHGZdIQUQ3/fG5q4rFiBrXpISdqgXsIc\n05vEYEkO0PSOeFSAkOZiSgPPVmcCQMMHj4RyeHc/BdzUDZbGA/rGtw==\n-----END AGE ENCRYPTED FILE-----\n"
} ,
{
"recipient" : "age12neldqxts6h3zstmk5hvmn2pq8s9qfhkt7cjcdd9wygekqrmparq6djsff" ,
"enc" : "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWeVFxRGhvSm1lTW5VeDlX\nbXlIS0JOZGpjTmd0U3NWMFY3aFdra3ZiazFRCjdpT0k2d0dyUXQwUjhEaWsvd2lp\nU1FvNFc3cVNKdXdGWFdjUGd4a2hrQzQKLS0tIFhtMkhCUFdoVzVIOFFEelNJMG1Q\nMk0wNXg0ekxNU0RzREJicHFvUzFkajgKe+2lC/eUPYfzdNNDEuOheXO7EioBg6HM\nJ25diaPvFSUypux76SdFHAXqd75gMcWbhpeFcOlhXMMQ01UPeXNlYA==\n-----END AGE ENCRYPTED FILE-----\n"
}
] ,
"lastmodified" : "2025-09-03T16:39:42Z" ,
"mac" : "ENC[AES256_GCM,data:DkWLyVJQIhQDOqUD2W61E+dxQVgxwqqJAVuKh6LPMOihj1MbjFDgU1YEf+CJG3sN5iQt9LtshqFZMOpy8NYMBT+8korofuaa3DeAulg3UAb29lkiXNAkrysMFUmtWUEjvKzWNuo7fGzJj0IUzIGi+HRdZXrK8y25XnVv+6bxcmE=,iv:fJjHxGmBvSPMTqwRuP2JJUEdzVPfEvnNbSZgYHTy47E=,tag:HxA6t69e/l7xYBbEiDJ0Xw==,type:str]" ,
"unencrypted_suffix" : "_unencrypted" ,
"version" : "3.10.2"
}
}
@ -41,7 +41,6 @@ let
postBuild = ''
wrapProgram $ out/bin/sops - - add-flags " - - c o n f i g ${ sopsConfig } "
'' ;
# --age ${keys}
} ;
mkRecipients = list : [ { age = list ; } ] ;
@ -74,20 +73,6 @@ let
tower_host_key
] ;
}
{
path_regex = " u n i _ s c o p e . t o m l " ;
key_groups = mkRecipients [
master_key
hermit_host_key
] ;
}
{
path_regex = " o r g a n i z a t i o n _ s c o p e . t o m l " ;
key_groups = mkRecipients [
master_key
hermit_host_key
] ;
}
] ;
} ;
@ -119,18 +104,7 @@ in
defaultSopsFile = ./secrets.json ;
defaultSopsFormat = " j s o n " ;
age . sshKeyPaths = [ " / e t c / s s h / s s h _ h o s t _ e d 2 5 5 1 9 _ k e y " ] ;
secrets = ( listToAttrs < | filter ( x : x != [ ] ) < | flatten < | map generateSecrets secretFiles ) // {
uni_scope = {
sopsFile = ./uni_scope.toml ;
format = " b i n a r y " ;
mode = " 0 4 4 4 " ;
} ;
organization_scope = {
sopsFile = ./organization_scope.toml ;
format = " b i n a r y " ;
mode = " 0 4 4 4 " ;
} ;
} ;
secrets = listToAttrs < | filter ( x : x != [ ] ) < | flatten < | map generateSecrets secretFiles ;
} ;
environment . systemPackages = attrValues {
inherit sops ;
@ -1,19 +0,0 @@
{
"data" : "ENC[AES256_GCM,data:l4IvlpDrDVnlArtnixJqwI0Ai3xG5jF5clhLGWOrqywd0lnKFjNDuEMcHlKN6cGmeFwX6i/6qkXcKT//pKNQDUvALzDY8PNp9AKV9/NmnQ7ZWzpyScXNqMnNwgs9+TA5SpKAZseVpEk3Nle29Jbene9BTYL614tlkL/uXO5KLLQAPZ4GGQ==,iv:qmrKAfdaDh3dVY95oKo666Knw7F29hi3O7zDIZFyYbc=,tag:Db54A+7rW7Amctx9lL9yBA==,type:str]" ,
"sops" : {
"age" : [
{
"recipient" : "age1a4jv2avdlj5zzq9p7ss9958t4wt3an95c3j86eclge7q2qc6n3wq4ucymc" ,
"enc" : "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzYTJaa1RETEFOdENzQXl6\nakg0bk1icTllRHdkb0Q1WGFxMWE5RXdGTVhzCmhsRkVVUC80Um5CcUtrY2NQVmJv\nYzZCVUllSi9hamdKemduME9BdGJjM0UKLS0tIC8zS3RaUUpBSm4xK1ozeXFHQzdz\nYmd2Z3V3ODkvQjcvdnliVVNPdmY2azAKA/2YkNAjwbTWdoQLV8qM012EzAx8yM8l\nH1cSLyfXfulUA3DGTeSck8MJmd/c5kTSkH6TqGs2XxnGSI8W92c/Uw==\n-----END AGE ENCRYPTED FILE-----\n"
} ,
{
"recipient" : "age12neldqxts6h3zstmk5hvmn2pq8s9qfhkt7cjcdd9wygekqrmparq6djsff" ,
"enc" : "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiQk9ZU3JXYXFNZm5pdCtz\nQis4TFlqanRlY3lHdVA3S1FyQTFsTmI2MzBnCk80K041NDZmMnBUUURrZFcyMzR2\nSitjY2xLeE40V1pTckdpNHZQNjBPOEUKLS0tIGpQVnB3MUd5b0FZOUlqNzlvWFZt\nb2RMZGJVbk1ZOHpqV0dOZ0ZudXNQNWcKg5v6dzKUPR5W1B8FM5hnsLA+HjcAObES\nc+Ff371ERAFfA8S9z4kxUmjRpdp+5AORakyf4PrtlUeEx7Ah9uARug==\n-----END AGE ENCRYPTED FILE-----\n"
}
] ,
"lastmodified" : "2025-09-03T16:39:27Z" ,
"mac" : "ENC[AES256_GCM,data:awRHWYorrKxyF1qUIXO6JZ6mVI3iCOSK9eVbltvaO2xCqdlyDEzRR5gvj2IZuK+I9rubPmlgB3/VfIeK/Kn1VbHGuKfRoHId9mwL27VgnOeD6UPQFMkqs0n/vYBydZUcy/U6QUnQnrqTt6V28yzgaqRaj2pR/ipPm7NMDjj1JkI=,iv:6+dmOJOMfkQu44b4T7oYQxh/NnpBTEtgXGnBh+3CpxI=,tag:jdzLQ+74sH6s/Lc2iT5V9g==,type:str]" ,
"unencrypted_suffix" : "_unencrypted" ,
"version" : "3.10.2"
}
}
@ -1,29 +1,13 @@
{ config , lib , . . . }:
{ config , . . . }:
let
inherit ( lib . options ) mkEnableOption ;
machine-id = builtins . substring 0 32 ( builtins . hashString " s h a 2 5 6 " config . networking . hostName ) ;
cfg = config . meta . system ;
in
{
options . meta . system = {
isWorkstation = mkEnableOption " W o r k s t a t i o n s y s t e m " // {
default = cfg . isLaptop ;
} ;
isBatteryPowered = mkEnableOption " B a t t e r y - p o w e r e d s y s t e m " // {
default = cfg . isLaptop ;
} ;
isGraphical = mkEnableOption " S y s t e m w i t h g r a p h i c a l o u t p u t " // {
default = cfg . isLaptop ;
} ;
isLaptop = mkEnableOption " S y s t e m i s a l a p t o p " ;
} ;
config = {
system = {
# My state version.
stateVersion = " 2 3 . 1 1 " ;
disableInstallerTools = true ;
tools . nixos-option . enable = false ;
} ;
environment . etc . " m a c h i n e - i d " . text = " ${ machine-id } \n " ;
system = {
# My state version.
stateVersion = " 2 3 . 1 1 " ;
disableInstallerTools = true ;
tools . nixos-option . enable = false ;
} ;
environment . etc . " m a c h i n e - i d " . text = " ${ machine-id } \n " ;
}