Compare commits
1 Commits
nix-deck-s
...
6fe51baa67
| Author | SHA1 | Date | |
|---|---|---|---|
| 6fe51baa67 |
80
flake.lock
generated
80
flake.lock
generated
@@ -57,32 +57,11 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"home-manager-unstable": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-unstable"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1763416652,
|
|
||||||
"narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"jovian": {
|
"jovian": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nix-github-actions": "nix-github-actions",
|
"nix-github-actions": "nix-github-actions",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs-unstable"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -106,11 +85,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762912391,
|
"lastModified": 1759509947,
|
||||||
"narHash": "sha256-4hpBE7bGd24SfD28rzMdUGXsLsNEYxCCrTipFdoqoNM=",
|
"narHash": "sha256-4XifSIHfpJKcCf5bZZRhj8C4aCpjNBaE3kXr02s4rHU=",
|
||||||
"owner": "nix-darwin",
|
"owner": "nix-darwin",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "d76299b2cd01837c4c271a7b5186e3d5d8ebd126",
|
"rev": "000eadb231812ad6ea6aebd7526974aaf4e79355",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -148,11 +127,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763385941,
|
"lastModified": 1762251193,
|
||||||
"narHash": "sha256-99CBNgyMvg3Zu/hxqixtShevrF4Kfr/qjtizQ6oseVI=",
|
"narHash": "sha256-CmSddz8e2kM+ITbYutluhKZyXXwI9Sg2lf7XXSvc8oY=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "cc6483354b236c2fc95cc1d4ba1f0f40b7345e69",
|
"rev": "e001844d4553aef268f97b32d3a825b6370eed91",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -164,11 +143,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762977756,
|
"lastModified": 1761907660,
|
||||||
"narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=",
|
"narHash": "sha256-kJ8lIZsiPOmbkJypG+B5sReDXSD1KGu2VEPNqhRa/ew=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55",
|
"rev": "2fb006b87f04c4d3bdf08cfdbc7fab9c13d94a15",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -180,11 +159,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763283776,
|
"lastModified": 1762596750,
|
||||||
"narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=",
|
"narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a",
|
"rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -196,11 +175,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1763049705,
|
"lastModified": 1762498405,
|
||||||
"narHash": "sha256-A5LS0AJZ1yDPTa2fHxufZN++n8MCmtgrJDtxFxrH4S8=",
|
"narHash": "sha256-Zg/SCgCaAioc0/SVZQJxuECGPJy+OAeBcGeA5okdYDc=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3acb677ea67d4c6218f33de0db0955f116b7588c",
|
"rev": "6faeb062ee4cf4f105989d490831713cc5a43ee1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -233,41 +212,16 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"plasma-manager-unstable": {
|
|
||||||
"inputs": {
|
|
||||||
"home-manager": [
|
|
||||||
"home-manager-unstable"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs-unstable"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1762784320,
|
|
||||||
"narHash": "sha256-odsk96Erywk5hs0dhArF38zb7Oe0q6LZ70gXbxAPKno=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "plasma-manager",
|
|
||||||
"rev": "7911a0f8a44c7e8b29d031be3149ee8943144321",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "plasma-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"google-cookie-retrieval": "google-cookie-retrieval",
|
"google-cookie-retrieval": "google-cookie-retrieval",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"home-manager-unstable": "home-manager-unstable",
|
|
||||||
"jovian": "jovian",
|
"jovian": "jovian",
|
||||||
"nix-darwin": "nix-darwin",
|
"nix-darwin": "nix-darwin",
|
||||||
"nixos-wsl": "nixos-wsl",
|
"nixos-wsl": "nixos-wsl",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"plasma-manager": "plasma-manager",
|
"plasma-manager": "plasma-manager"
|
||||||
"plasma-manager-unstable": "plasma-manager-unstable"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
54
flake.nix
54
flake.nix
@@ -16,23 +16,12 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager-unstable = {
|
|
||||||
url = "github:nix-community/home-manager/master";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
|
||||||
};
|
|
||||||
|
|
||||||
plasma-manager = {
|
plasma-manager = {
|
||||||
url = "github:nix-community/plasma-manager";
|
url = "github:nix-community/plasma-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.home-manager.follows = "home-manager";
|
inputs.home-manager.follows = "home-manager";
|
||||||
};
|
};
|
||||||
|
|
||||||
plasma-manager-unstable = {
|
|
||||||
url = "github:nix-community/plasma-manager";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
|
||||||
inputs.home-manager.follows = "home-manager-unstable";
|
|
||||||
};
|
|
||||||
|
|
||||||
google-cookie-retrieval = {
|
google-cookie-retrieval = {
|
||||||
url = "git+https://git.johnogle.info/johno/google-cookie-retrieval.git";
|
url = "git+https://git.johnogle.info/johno/google-cookie-retrieval.git";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -40,7 +29,7 @@
|
|||||||
|
|
||||||
jovian = {
|
jovian = {
|
||||||
url = "github:Jovian-Experiments/Jovian-NixOS";
|
url = "github:Jovian-Experiments/Jovian-NixOS";
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -48,35 +37,8 @@
|
|||||||
nixosModules = [
|
nixosModules = [
|
||||||
./roles
|
./roles
|
||||||
] ++ [
|
] ++ [
|
||||||
./roles/jovian-compat.nix
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
{
|
./roles/jovian-compat.nix # Compatibility shim for Jovian on stable NixOS
|
||||||
nixpkgs.overlays = [
|
|
||||||
(final: prev: {
|
|
||||||
unstable = import nixpkgs-unstable {
|
|
||||||
system = prev.system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
custom = prev.callPackage ./packages {};
|
|
||||||
# Compatibility: bitwarden renamed to bitwarden-desktop in unstable
|
|
||||||
bitwarden-desktop = prev.bitwarden-desktop or prev.bitwarden;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
home-manager.sharedModules = [
|
|
||||||
inputs.plasma-manager.homeModules.plasma-manager
|
|
||||||
];
|
|
||||||
home-manager.extraSpecialArgs = {
|
|
||||||
globalInputs = inputs;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
# Modules for unstable-based systems (like nix-deck)
|
|
||||||
nixosModulesUnstable = [
|
|
||||||
./roles
|
|
||||||
] ++ [
|
|
||||||
inputs.home-manager-unstable.nixosModules.home-manager
|
|
||||||
inputs.jovian.nixosModules.jovian
|
inputs.jovian.nixosModules.jovian
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
@@ -86,14 +48,12 @@
|
|||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
custom = prev.callPackage ./packages {};
|
custom = prev.callPackage ./packages {};
|
||||||
# Compatibility: bitwarden renamed to bitwarden-desktop in unstable
|
|
||||||
bitwarden-desktop = prev.bitwarden-desktop or prev.bitwarden;
|
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.sharedModules = [
|
home-manager.sharedModules = [
|
||||||
inputs.plasma-manager-unstable.homeModules.plasma-manager
|
inputs.plasma-manager.homeModules.plasma-manager
|
||||||
];
|
];
|
||||||
home-manager.extraSpecialArgs = {
|
home-manager.extraSpecialArgs = {
|
||||||
globalInputs = inputs;
|
globalInputs = inputs;
|
||||||
@@ -112,8 +72,6 @@
|
|||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
custom = prev.callPackage ./packages {};
|
custom = prev.callPackage ./packages {};
|
||||||
# Compatibility: bitwarden renamed to bitwarden-desktop in unstable
|
|
||||||
bitwarden-desktop = prev.bitwarden-desktop or prev.bitwarden;
|
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
@@ -191,10 +149,10 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Steam Deck configuration (using unstable for better Jovian compatibility)
|
# Steam Deck configuration
|
||||||
nixosConfigurations.nix-deck = nixpkgs-unstable.lib.nixosSystem rec {
|
nixosConfigurations.nix-deck = nixpkgs.lib.nixosSystem rec {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = nixosModulesUnstable ++ [
|
modules = nixosModules ++ [
|
||||||
./machines/nix-deck/configuration.nix
|
./machines/nix-deck/configuration.nix
|
||||||
{
|
{
|
||||||
home-manager.users.johno = import ./home/home-desktop.nix;
|
home-manager.users.johno = import ./home/home-desktop.nix;
|
||||||
|
|||||||
@@ -87,8 +87,8 @@ let
|
|||||||
|
|
||||||
"${shared_config.modifier}+r" = "mode resize";
|
"${shared_config.modifier}+r" = "mode resize";
|
||||||
|
|
||||||
"XF86MonBrightnessUp" = "exec ddcutil setvcp 10 + 5";
|
"XF86MonBrightnessUp" = "exec brightnessctl s +5%";
|
||||||
"XF86MonBrightnessDown" = "exec ddcutil setvcp 10 - 5";
|
"XF86MonBrightnessDown" = "exec brightnessctl s 5%-";
|
||||||
};
|
};
|
||||||
} cfg.extraSharedConfig;
|
} cfg.extraSharedConfig;
|
||||||
in {
|
in {
|
||||||
@@ -105,144 +105,12 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
# i3blocks configuration file
|
|
||||||
home.file.".config/i3blocks/config".text = ''
|
|
||||||
# i3blocks config - replicating waybar setup
|
|
||||||
separator_block_width=15
|
|
||||||
markup=pango
|
|
||||||
|
|
||||||
[disk]
|
|
||||||
command=df -h / | awk 'NR==2 {print "💾 " $5}'
|
|
||||||
interval=30
|
|
||||||
separator=true
|
|
||||||
|
|
||||||
[cpu]
|
|
||||||
command=top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print "🧠 " int(100 - $1) "%"}'
|
|
||||||
interval=2
|
|
||||||
separator=true
|
|
||||||
|
|
||||||
[memory]
|
|
||||||
command=free | awk 'NR==2 {printf "🐏 %.0f%%\n", $3*100/$2}'
|
|
||||||
interval=5
|
|
||||||
separator=true
|
|
||||||
|
|
||||||
[pulseaudio]
|
|
||||||
command=${pkgs.writeShellScript "i3blocks-pulseaudio" ''
|
|
||||||
volume=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '\d+%' | head -1)
|
|
||||||
muted=$(pactl get-sink-mute @DEFAULT_SINK@ | grep -o 'yes')
|
|
||||||
if [ "$muted" = "yes" ]; then
|
|
||||||
echo "🔇"
|
|
||||||
else
|
|
||||||
vol_num=''${volume%\%}
|
|
||||||
if [ $vol_num -le 33 ]; then
|
|
||||||
echo "🔈 $volume"
|
|
||||||
elif [ $vol_num -le 66 ]; then
|
|
||||||
echo "🔉 $volume"
|
|
||||||
else
|
|
||||||
echo "🔊 $volume"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
''}
|
|
||||||
interval=1
|
|
||||||
signal=10
|
|
||||||
separator=true
|
|
||||||
|
|
||||||
[backlight]
|
|
||||||
command=${pkgs.writeShellScript "i3blocks-backlight" ''
|
|
||||||
if command -v ddcutil &>/dev/null; then
|
|
||||||
# Handle mouse scroll events
|
|
||||||
case $BLOCK_BUTTON in
|
|
||||||
4) ddcutil setvcp 10 + 5 ;; # Scroll up - increase brightness
|
|
||||||
5) ddcutil setvcp 10 - 5 ;; # Scroll down - decrease brightness
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Display current brightness
|
|
||||||
brightness=$(ddcutil getvcp 10 2>/dev/null | grep -oP 'current value =\s*\K\d+')
|
|
||||||
if [ -n "$brightness" ]; then
|
|
||||||
echo "☀️ $brightness%"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
''}
|
|
||||||
interval=5
|
|
||||||
separator=true
|
|
||||||
|
|
||||||
[network]
|
|
||||||
command=${pkgs.writeShellScript "i3blocks-network" ''
|
|
||||||
if iwgetid -r &>/dev/null; then
|
|
||||||
ssid=$(iwgetid -r)
|
|
||||||
signal=$(grep "^\s*w" /proc/net/wireless | awk '{print int($3 * 100 / 70)}')
|
|
||||||
echo "📶 $ssid ($signal%)"
|
|
||||||
else
|
|
||||||
ip=$(ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v '127.0.0.1' | head -1)
|
|
||||||
if [ -n "$ip" ]; then
|
|
||||||
echo "🔌 $ip"
|
|
||||||
else
|
|
||||||
echo "❌"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
''}
|
|
||||||
interval=5
|
|
||||||
separator=true
|
|
||||||
|
|
||||||
[battery]
|
|
||||||
command=${pkgs.writeShellScript "i3blocks-battery" ''
|
|
||||||
if [ -d /sys/class/power_supply/BAT0 ]; then
|
|
||||||
capacity=$(cat /sys/class/power_supply/BAT0/capacity)
|
|
||||||
status=$(cat /sys/class/power_supply/BAT0/status)
|
|
||||||
|
|
||||||
if [ "$status" = "Charging" ]; then
|
|
||||||
echo "⚡ $capacity%"
|
|
||||||
else
|
|
||||||
echo "🔋 $capacity%"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
''}
|
|
||||||
interval=10
|
|
||||||
separator=true
|
|
||||||
|
|
||||||
[time]
|
|
||||||
command=date '+%Y-%m-%d %H:%M'
|
|
||||||
interval=1
|
|
||||||
separator=false
|
|
||||||
'';
|
|
||||||
|
|
||||||
xsession.windowManager.i3 = let
|
xsession.windowManager.i3 = let
|
||||||
base_i3_config = recursiveUpdate shared_config {
|
base_i3_config = recursiveUpdate shared_config {
|
||||||
bars = [{
|
bars = [{
|
||||||
position = "bottom";
|
position = "bottom";
|
||||||
statusCommand = "${pkgs.i3blocks}/bin/i3blocks";
|
statusCommand = "${pkgs.i3status}/bin/i3status";
|
||||||
trayOutput = "primary"; # Enable system tray on primary output
|
trayOutput = "primary"; # Enable system tray on primary output
|
||||||
fonts = {
|
|
||||||
names = [ "Fira Code" "monospace" ];
|
|
||||||
size = 11.0;
|
|
||||||
};
|
|
||||||
colors = {
|
|
||||||
background = "#000000";
|
|
||||||
statusline = "#ffffff";
|
|
||||||
separator = "#666666";
|
|
||||||
|
|
||||||
# Workspace button colors (matching waybar)
|
|
||||||
focusedWorkspace = {
|
|
||||||
border = "#285577";
|
|
||||||
background = "#285577";
|
|
||||||
text = "#ffffff";
|
|
||||||
};
|
|
||||||
activeWorkspace = {
|
|
||||||
border = "#5f676a";
|
|
||||||
background = "#5f676a";
|
|
||||||
text = "#ffffff";
|
|
||||||
};
|
|
||||||
inactiveWorkspace = {
|
|
||||||
border = "#222222";
|
|
||||||
background = "#222222";
|
|
||||||
text = "#888888";
|
|
||||||
};
|
|
||||||
urgentWorkspace = {
|
|
||||||
border = "#900000";
|
|
||||||
background = "#900000";
|
|
||||||
text = "#ffffff";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}];
|
}];
|
||||||
keybindings = shared_config.keybindings // {
|
keybindings = shared_config.keybindings // {
|
||||||
"${shared_config.modifier}+d" = "exec rofi -show drun";
|
"${shared_config.modifier}+d" = "exec rofi -show drun";
|
||||||
@@ -306,13 +174,6 @@ in {
|
|||||||
bg = "${../../wallpapers/metroid-samus-returns-kz-3440x1440.jpg} fill";
|
bg = "${../../wallpapers/metroid-samus-returns-kz-3440x1440.jpg} fill";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
startup = [
|
|
||||||
# Launch waybar status bar
|
|
||||||
{
|
|
||||||
command = "waybar";
|
|
||||||
always = false;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -321,7 +182,7 @@ in {
|
|||||||
|
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = false; # Don't auto-start via systemd - only launch in sway
|
systemd.enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
mainBar = {
|
mainBar = {
|
||||||
layer = "top";
|
layer = "top";
|
||||||
@@ -454,5 +315,7 @@ in {
|
|||||||
sidebar-mode = true;
|
sidebar-mode = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.i3status.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ in
|
|||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# Desktop applications
|
# Desktop applications
|
||||||
bitwarden-desktop
|
bitwarden
|
||||||
dunst
|
dunst
|
||||||
keepassxc
|
keepassxc
|
||||||
unstable.ghostty
|
unstable.ghostty
|
||||||
|
|||||||
@@ -12,10 +12,11 @@
|
|||||||
wayland = true;
|
wayland = true;
|
||||||
gaming.enable = true;
|
gaming.enable = true;
|
||||||
kde = true;
|
kde = true;
|
||||||
|
sddm = true;
|
||||||
steamos = {
|
steamos = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autoStart = true;
|
autoStart = false;
|
||||||
desktopSession = "plasma";
|
desktopSession = "plasmawayland";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
remote-build.builders = [{
|
remote-build.builders = [{
|
||||||
|
|||||||
@@ -1,35 +1,26 @@
|
|||||||
# Hardware configuration for Steam Deck (nix-deck)
|
# This is a placeholder hardware configuration for the Steam Deck.
|
||||||
# Generated from nixos-generate-config on 2025-11-17
|
# Run `nixos-generate-config --show-hardware-config` on the actual device
|
||||||
|
# to generate the real hardware configuration, then merge the jovian settings below.
|
||||||
|
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [ ];
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
# Steam Deck specific hardware configuration (Jovian)
|
# Steam Deck specific hardware configuration
|
||||||
jovian.devices.steamdeck = {
|
jovian.devices.steamdeck = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autoUpdate = false; # Set to true if you want automatic firmware updates
|
autoUpdate = false; # Set to true if you want automatic firmware updates
|
||||||
};
|
};
|
||||||
|
|
||||||
# Kernel modules detected by nixos-generate-config
|
# TODO: Replace this with actual hardware configuration from the Steam Deck
|
||||||
boot.initrd.availableKernelModules = [
|
# Run `nixos-generate-config --show-hardware-config` on the device and merge it here
|
||||||
"nvme"
|
|
||||||
"xhci_pci"
|
# Minimal placeholder configuration to allow flake to build
|
||||||
"usb_storage"
|
boot.initrd.availableKernelModules = [ ];
|
||||||
"uas"
|
boot.initrd.kernelModules = [ ];
|
||||||
"usbhid"
|
boot.kernelModules = [ ];
|
||||||
"sd_mod"
|
|
||||||
"sdhci_pci"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
# IMPORTANT: Update these filesystem configurations based on your actual partition layout
|
|
||||||
# The configuration below is a placeholder - adjust according to how you partitioned the disk
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-label/nixos";
|
device = "/dev/disk/by-label/nixos";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
@@ -40,12 +31,7 @@
|
|||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [{
|
swapDevices = [ ];
|
||||||
device = "/swapfile";
|
|
||||||
size = 8192; # 8GB swap file
|
|
||||||
}];
|
|
||||||
|
|
||||||
# AMD CPU microcode updates
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ with lib;
|
|||||||
enable = true;
|
enable = true;
|
||||||
gaming = {
|
gaming = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
emulation = true;
|
||||||
};
|
};
|
||||||
kde = true;
|
kde = true;
|
||||||
sddm = true;
|
sddm = true;
|
||||||
@@ -58,9 +59,18 @@ with lib;
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
hardware.nvidia = {
|
hardware.nvidia = {
|
||||||
|
# Modesetting is required.
|
||||||
modesetting.enable = true;
|
modesetting.enable = true;
|
||||||
|
|
||||||
|
# Enable the Nvidia settings menu,
|
||||||
|
# accessible via `nvidia-settings`.
|
||||||
nvidiaSettings = true;
|
nvidiaSettings = true;
|
||||||
|
|
||||||
|
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||||
package = pkgs.linuxPackages.nvidiaPackages.stable;
|
package = pkgs.linuxPackages.nvidiaPackages.stable;
|
||||||
|
|
||||||
|
# Use open source kernel modules (recommended for RTX/GTX 16xx and newer)
|
||||||
|
# Set to false if you have an older GPU
|
||||||
open = true;
|
open = true;
|
||||||
|
|
||||||
# For gaming performance
|
# For gaming performance
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ with lib;
|
|||||||
kde = mkOption { type = types.bool; default = false; description = "Enable KDE."; };
|
kde = mkOption { type = types.bool; default = false; description = "Enable KDE."; };
|
||||||
gaming = {
|
gaming = {
|
||||||
enable = mkOption { type = types.bool; default = false; description = "Enable gaming support."; };
|
enable = mkOption { type = types.bool; default = false; description = "Enable gaming support."; };
|
||||||
|
emulation = mkOption { type = types.bool; default = false; description = "Enable emulation support."; };
|
||||||
};
|
};
|
||||||
sddm = mkOption { type = types.bool; default = false; description = "Enable SDDM greeter."; };
|
sddm = mkOption { type = types.bool; default = false; description = "Enable SDDM greeter."; };
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,12 +12,15 @@ in
|
|||||||
steam
|
steam
|
||||||
lutris
|
lutris
|
||||||
moonlight
|
moonlight
|
||||||
|
];
|
||||||
|
|
||||||
# Emulators
|
# Possibly other gaming specific services or settings
|
||||||
dolphin-emu
|
})
|
||||||
dolphin-emu-primehack
|
|
||||||
retroarch-full
|
(mkIf (cfg.enable && cfg.gaming.emulation) {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
ryubing
|
ryubing
|
||||||
|
dolphin-emu
|
||||||
];
|
];
|
||||||
# TODO: Remove me once dolphin-emu and dolphin-emu-primehack update
|
# TODO: Remove me once dolphin-emu and dolphin-emu-primehack update
|
||||||
# dependencies to mbedtls from mbedtls_2 (which is currently)
|
# dependencies to mbedtls from mbedtls_2 (which is currently)
|
||||||
|
|||||||
@@ -43,9 +43,5 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
jovian.decky-loader.enable = cfg.steamos.enableDeckyLoader;
|
jovian.decky-loader.enable = cfg.steamos.enableDeckyLoader;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
maliit-keyboard
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,20 +19,8 @@ in
|
|||||||
polkit_gnome # GNOME polkit authentication agent (more stable with i3)
|
polkit_gnome # GNOME polkit authentication agent (more stable with i3)
|
||||||
picom # Compositor for smooth rendering (important for Nvidia)
|
picom # Compositor for smooth rendering (important for Nvidia)
|
||||||
networkmanagerapplet # NetworkManager system tray applet
|
networkmanagerapplet # NetworkManager system tray applet
|
||||||
ddcutil # DDC/CI monitor control for brightness
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable DDC/CI support for monitor brightness control
|
|
||||||
boot.kernelModules = [ "i2c-dev" ];
|
|
||||||
|
|
||||||
# Add ddcutil udev rules and user permissions
|
|
||||||
hardware.i2c.enable = true;
|
|
||||||
|
|
||||||
# Install ddcutil system-wide
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
ddcutil
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
{ lib, config, ... }:
|
{ lib, config, ... }:
|
||||||
|
|
||||||
# Minimal Jovian compatibility layer for NixOS stable (25.05)
|
# Compatibility shim to provide services.logind.settings for NixOS 25.05
|
||||||
# Defines only the Jovian options used by roles/desktop/steamos.nix
|
# This allows Jovian-NixOS to work with stable NixOS
|
||||||
# No actual implementation - just option definitions to prevent evaluation errors
|
# REMOVE THIS FILE when upgrading to NixOS 25.11 or later
|
||||||
# REMOVE THIS FILE when all systems are on NixOS 25.11+ or unstable
|
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
@@ -12,32 +11,10 @@ let
|
|||||||
isCompatibleVersion = versionOlder nixosVersion "25.11";
|
isCompatibleVersion = versionOlder nixosVersion "25.11";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.jovian = {
|
options.services.logind.settings = mkOption {
|
||||||
steam = {
|
type = types.attrsOf (types.attrsOf types.anything);
|
||||||
enable = mkEnableOption "Steam (jovian-compat stub)";
|
default = {};
|
||||||
|
description = "systemd-logind configuration. See logind.conf(5) for available options.";
|
||||||
autoStart = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Auto-start Steam (jovian-compat stub)";
|
|
||||||
};
|
|
||||||
|
|
||||||
user = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "user";
|
|
||||||
description = "Steam user (jovian-compat stub)";
|
|
||||||
};
|
|
||||||
|
|
||||||
desktopSession = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = null;
|
|
||||||
description = "Desktop session (jovian-compat stub)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
decky-loader = {
|
|
||||||
enable = mkEnableOption "Decky Loader (jovian-compat stub)";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkMerge [
|
config = mkMerge [
|
||||||
@@ -48,17 +25,19 @@ in
|
|||||||
message = ''
|
message = ''
|
||||||
The Jovian compatibility shim (roles/jovian-compat.nix) is only needed for NixOS 25.05 and earlier.
|
The Jovian compatibility shim (roles/jovian-compat.nix) is only needed for NixOS 25.05 and earlier.
|
||||||
You are running NixOS ${nixosVersion}.
|
You are running NixOS ${nixosVersion}.
|
||||||
Please remove 'roles/jovian-compat.nix' from your flake.nix nixosModules list.
|
Please remove 'roles/jovian-compat.nix' from your flake.nix imports.
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
# No config implementation - these options do nothing on stable systems
|
(mkIf (config.services.logind.settings != {}) {
|
||||||
# steamos role is only enabled on nix-deck which uses unstable anyway
|
# Convert the settings to extraConfig format for older NixOS
|
||||||
(mkIf config.jovian.steam.enable {
|
services.logind.extraConfig = let
|
||||||
warnings = [
|
mkSection = section: settings:
|
||||||
"Jovian is enabled but you're using the compatibility stub. This won't work correctly. Use NixOS unstable for Jovian support."
|
"[${section}]\n" +
|
||||||
];
|
(concatStringsSep "\n" (mapAttrsToList (k: v: "${k}=${toString v}") settings));
|
||||||
|
in
|
||||||
|
concatStringsSep "\n\n" (mapAttrsToList mkSection config.services.logind.settings);
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,11 +91,6 @@ in
|
|||||||
|
|
||||||
users.groups.${cfg.builderUser} = {};
|
users.groups.${cfg.builderUser} = {};
|
||||||
|
|
||||||
# Ensure home directory has correct permissions
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d /var/lib/${cfg.builderUser} 0700 ${cfg.builderUser} ${cfg.builderUser} -"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Allow builder user to perform builds
|
# Allow builder user to perform builds
|
||||||
nix.settings.trusted-users = [ cfg.builderUser ];
|
nix.settings.trusted-users = [ cfg.builderUser ];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user