mirror of
https://github.com/tuxdotrs/nix-config.git
synced 2026-06-21 03:36:32 +05:30
Compare commits
7 Commits
841f2ca4fb
...
8d3e740614
| Author | SHA1 | Date | |
|---|---|---|---|
|
8d3e740614
|
|||
|
dfd7789987
|
|||
|
376f5d053e
|
|||
|
28d46e7dec
|
|||
|
ef74ba2494
|
|||
|
9988f0a6cc
|
|||
|
c9df2483ec
|
79
flake.lock
generated
79
flake.lock
generated
@@ -271,6 +271,27 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-parts_4": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733312601,
|
||||||
|
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_4"
|
"systems": "systems_4"
|
||||||
@@ -912,6 +933,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_10": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770107345,
|
||||||
|
"narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1743014863,
|
"lastModified": 1743014863,
|
||||||
@@ -1009,6 +1046,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_8": {
|
"nixpkgs_8": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1777954456,
|
||||||
|
"narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_9": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777918403,
|
"lastModified": 1777918403,
|
||||||
"narHash": "sha256-7QiZv0LcW1yIOLo2LNuCQjWon1Z1r99FwK24hbtBOF4=",
|
"narHash": "sha256-7QiZv0LcW1yIOLo2LNuCQjWon1Z1r99FwK24hbtBOF4=",
|
||||||
@@ -1024,19 +1077,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_9": {
|
"nur": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts_4",
|
||||||
|
"nixpkgs": "nixpkgs_8"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770107345,
|
"lastModified": 1778156530,
|
||||||
"narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=",
|
"narHash": "sha256-4VhPk2NQKyYptNw1x/HG23sFmR4iYTOTZhGhzzYDQOs=",
|
||||||
"owner": "nixos",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs",
|
"repo": "nur",
|
||||||
"rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4",
|
"rev": "1b24f43e7f25d9c297a2ed45c654a72fc68d3d29",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nix-community",
|
||||||
"ref": "nixpkgs-unstable",
|
"repo": "nur",
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1079,6 +1135,7 @@
|
|||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_7",
|
"nixpkgs": "nixpkgs_7",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
|
"nur": "nur",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"tnvim": "tnvim",
|
"tnvim": "tnvim",
|
||||||
"tpanel": "tpanel",
|
"tpanel": "tpanel",
|
||||||
@@ -1173,7 +1230,7 @@
|
|||||||
},
|
},
|
||||||
"sops-nix": {
|
"sops-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_8"
|
"nixpkgs": "nixpkgs_9"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777944972,
|
"lastModified": 1777944972,
|
||||||
@@ -1292,7 +1349,7 @@
|
|||||||
},
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_9"
|
"nixpkgs": "nixpkgs_10"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775636079,
|
"lastModified": 1775636079,
|
||||||
|
|||||||
@@ -56,5 +56,6 @@
|
|||||||
hyprland.url = "github:hyprwm/Hyprland";
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
awww.url = "git+https://codeberg.org/LGFae/awww";
|
awww.url = "git+https://codeberg.org/LGFae/awww";
|
||||||
nixcord.url = "github:kaylorben/nixcord";
|
nixcord.url = "github:kaylorben/nixcord";
|
||||||
|
nur.url = "github:nix-community/nur";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nur = inputs.nur.overlays.default;
|
||||||
};
|
};
|
||||||
|
|
||||||
perSystem =
|
perSystem =
|
||||||
|
|||||||
75
modules/hm/desktop/firefox.nix
Normal file
75
modules/hm/desktop/firefox.nix
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
flake.modules.homeManager.desktop =
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
userName,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.firefox.override {
|
||||||
|
extraPolicies = {
|
||||||
|
CaptivePortal = false;
|
||||||
|
DisableFirefoxStudies = true;
|
||||||
|
DisablePocket = true;
|
||||||
|
DisableTelemetry = true;
|
||||||
|
DisableFirefoxAccounts = false;
|
||||||
|
NoDefaultBookmarks = true;
|
||||||
|
OfferToSaveLogins = false;
|
||||||
|
OfferToSaveLoginsDefault = false;
|
||||||
|
PasswordManagerEnabled = false;
|
||||||
|
FirefoxHome = {
|
||||||
|
Search = true;
|
||||||
|
Pocket = false;
|
||||||
|
Snippets = false;
|
||||||
|
TopSites = false;
|
||||||
|
Highlights = false;
|
||||||
|
};
|
||||||
|
UserMessaging = {
|
||||||
|
ExtensionRecommendations = false;
|
||||||
|
SkipOnboarding = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
profiles = {
|
||||||
|
${userName} = {
|
||||||
|
id = 0;
|
||||||
|
name = "tux";
|
||||||
|
search = {
|
||||||
|
force = true;
|
||||||
|
default = "google";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
"general.smoothScroll" = true;
|
||||||
|
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
|
||||||
|
"layout.css.prefers-color-scheme.content-override" = 0;
|
||||||
|
"browser.compactmode.show" = true;
|
||||||
|
"browser.tabs.firefox-view" = false;
|
||||||
|
"browser.bookmarks.addedImportButton" = false;
|
||||||
|
"extensions.pocket.enabled" = false;
|
||||||
|
"browser.fullscreen.autohide" = false;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
|
||||||
|
user_pref("full-screen-api.ignore-widgets", true);
|
||||||
|
user_pref("media.ffmpeg.vaapi.enabled", true);
|
||||||
|
user_pref("media.rdd-vpx.enabled", true);
|
||||||
|
'';
|
||||||
|
|
||||||
|
extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
|
ublock-origin
|
||||||
|
facebook-container
|
||||||
|
metamask
|
||||||
|
darkreader
|
||||||
|
bitwarden
|
||||||
|
wappalyzer
|
||||||
|
clearurls
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -17,6 +17,9 @@
|
|||||||
"name:DP-1, width:1080, height:1920, refresh:144, x:4000, y:0, vrr:0, rr:3"
|
"name:DP-1, width:1080, height:1920, refresh:144, x:4000, y:0, vrr:0, rr:3"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
focus_cross_monitor = 1;
|
||||||
|
exchange_cross_monitor = 1;
|
||||||
|
|
||||||
# Keyboard
|
# Keyboard
|
||||||
repeat_rate = 25;
|
repeat_rate = 25;
|
||||||
repeat_delay = 600;
|
repeat_delay = 600;
|
||||||
@@ -100,6 +103,7 @@
|
|||||||
# apps
|
# apps
|
||||||
"SUPER, Return, spawn, wezterm"
|
"SUPER, Return, spawn, wezterm"
|
||||||
"SUPER, Space, spawn, vicinae toggle"
|
"SUPER, Space, spawn, vicinae toggle"
|
||||||
|
"SUPER, D, spawn, vesktop"
|
||||||
"SUPER, B, spawn, brave"
|
"SUPER, B, spawn, brave"
|
||||||
"SUPER, V, spawn, vicinae vicinae://extensions/vicinae/clipboard/history"
|
"SUPER, V, spawn, vicinae vicinae://extensions/vicinae/clipboard/history"
|
||||||
"SUPER+SHIFT, W, spawn, vicinae vicinae://extensions/sovereign/awww-switcher/wpgrid"
|
"SUPER+SHIFT, W, spawn, vicinae vicinae://extensions/sovereign/awww-switcher/wpgrid"
|
||||||
@@ -140,25 +144,25 @@
|
|||||||
"SUPER, Down, focusdir, down"
|
"SUPER, Down, focusdir, down"
|
||||||
|
|
||||||
# switch view
|
# switch view
|
||||||
"SUPER, 1, view, 1, 0"
|
"SUPER, 1, view, 1, 1"
|
||||||
"SUPER, 2, view, 2, 0"
|
"SUPER, 2, view, 2, 1"
|
||||||
"SUPER, 3, view, 3, 0"
|
"SUPER, 3, view, 3, 1"
|
||||||
"SUPER, 4, view, 4, 0"
|
"SUPER, 4, view, 4, 1"
|
||||||
"SUPER, 5, view, 5, 0"
|
"SUPER, 5, view, 5, 1"
|
||||||
|
|
||||||
# move client to the tag with focus
|
# move client to the tag with focus
|
||||||
"SUPER+SHIFT, 1, tagsilent, 1, 0"
|
"SUPER+SHIFT, 1, tagsilent, 1, 1"
|
||||||
"SUPER+SHIFT, 2, tagsilent, 2, 0"
|
"SUPER+SHIFT, 2, tagsilent, 2, 1"
|
||||||
"SUPER+SHIFT, 3, tagsilent, 3, 0"
|
"SUPER+SHIFT, 3, tagsilent, 3, 1"
|
||||||
"SUPER+SHIFT, 4, tagsilent, 4, 0"
|
"SUPER+SHIFT, 4, tagsilent, 4, 1"
|
||||||
"SUPER+SHIFT, 5, tagsilent, 5, 0"
|
"SUPER+SHIFT, 5, tagsilent, 5, 1"
|
||||||
|
|
||||||
# move client to the tag without focus
|
# move client to the tag without focus
|
||||||
"SUPER+ALT, 1, tag, 1, 0"
|
"SUPER+ALT, 1, tag, 1, 1"
|
||||||
"SUPER+ALT, 2, tag, 2, 0"
|
"SUPER+ALT, 2, tag, 2, 1"
|
||||||
"SUPER+ALT, 3, tag, 3, 0"
|
"SUPER+ALT, 3, tag, 3, 1"
|
||||||
"SUPER+ALT, 4, tag, 4, 0"
|
"SUPER+ALT, 4, tag, 4, 1"
|
||||||
"SUPER+ALT, 5, tag, 5, 0"
|
"SUPER+ALT, 5, tag, 5, 1"
|
||||||
];
|
];
|
||||||
|
|
||||||
# Window effect
|
# Window effect
|
||||||
|
|||||||
@@ -7,16 +7,16 @@
|
|||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
provider = {
|
provider = {
|
||||||
google = {
|
|
||||||
options = {
|
|
||||||
apiKey = "{file:/run/secrets/gemini_api_key}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
openrouter = {
|
openrouter = {
|
||||||
options = {
|
options = {
|
||||||
apiKey = "{file:/run/secrets/open_router_api_key}";
|
apiKey = "{file:/run/secrets/open_router_api_key}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
opencode-go = {
|
||||||
|
options = {
|
||||||
|
apiKey = "{file:/run/secrets/open_code_go_api_key}";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
hostName,
|
hostName,
|
||||||
|
userName,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
@@ -22,12 +23,30 @@
|
|||||||
docker.nvidia.enable = true;
|
docker.nvidia.enable = true;
|
||||||
qemu.enable = true;
|
qemu.enable = true;
|
||||||
waydroid.enable = true;
|
waydroid.enable = true;
|
||||||
|
distrobox.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets.tux-password = {
|
sops.secrets = {
|
||||||
sopsFile = ./secrets.yaml;
|
tux-password = {
|
||||||
neededForUsers = true;
|
sopsFile = ./secrets.yaml;
|
||||||
|
neededForUsers = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
openrouter_api_key = {
|
||||||
|
sopsFile = ./secrets.yaml;
|
||||||
|
owner = userName;
|
||||||
|
};
|
||||||
|
|
||||||
|
opencode_go_api_key = {
|
||||||
|
sopsFile = ./secrets.yaml;
|
||||||
|
owner = userName;
|
||||||
|
};
|
||||||
|
|
||||||
|
"vicinae.json" = {
|
||||||
|
sopsFile = ./secrets.yaml;
|
||||||
|
owner = userName;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# --- Boot ---
|
# --- Boot ---
|
||||||
@@ -63,24 +82,15 @@
|
|||||||
|
|
||||||
# --- Hardware / GPU ---
|
# --- Hardware / GPU ---
|
||||||
hardware = {
|
hardware = {
|
||||||
graphics = {
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = true;
|
|
||||||
};
|
|
||||||
nvidia = {
|
nvidia = {
|
||||||
modesetting.enable = true;
|
modesetting.enable = true;
|
||||||
open = false;
|
open = false;
|
||||||
nvidiaSettings = true;
|
nvidiaSettings = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
enableAllFirmware = true;
|
|
||||||
usb-modeswitch.enable = true;
|
|
||||||
};
|
};
|
||||||
|
nixpkgs.config.cudaSupport = true;
|
||||||
services.xserver.videoDrivers = [ "nvidia" ];
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
environment.systemPackages = with pkgs; [ nvtopPackages.full ];
|
||||||
# --- Programs ---
|
|
||||||
programs.firefox.enable = true;
|
|
||||||
|
|
||||||
# !!! DO NOT CHANGE THIS !!!
|
# !!! DO NOT CHANGE THIS !!!
|
||||||
# This should match the version used at initial install.
|
# This should match the version used at initial install.
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
tux-password: ENC[AES256_GCM,data:EJFFMc0W1YvCLINg4kETlUbqMYSfRTsiRuoB5MybaVwl7bbBXyPFo/MspFFMXpAqSPrzRAPaM8Lxk9ndbjt7gZpSu1dPThq36Q==,iv:zn3UUMOcW09u6KTz87tDr1wfmsLMKIRBDpLfQhg0p14=,tag:AOs7NASXeo98mNKqsYP3Ww==,type:str]
|
tux-password: ENC[AES256_GCM,data:EJFFMc0W1YvCLINg4kETlUbqMYSfRTsiRuoB5MybaVwl7bbBXyPFo/MspFFMXpAqSPrzRAPaM8Lxk9ndbjt7gZpSu1dPThq36Q==,iv:zn3UUMOcW09u6KTz87tDr1wfmsLMKIRBDpLfQhg0p14=,tag:AOs7NASXeo98mNKqsYP3Ww==,type:str]
|
||||||
|
gemini_api_key: ENC[AES256_GCM,data:agH39C8hXX1jKYq03Z70aHHfrKSbNnHJfndMB53YJgWEzban7uMA,iv:fnYOySXisW1n6Moad9xBoRQFtRa/J6zTcp0lAMEtguw=,tag:0ENL4uu+8OpNc9X+hy7SiQ==,type:str]
|
||||||
|
openrouter_api_key: ENC[AES256_GCM,data:VBhV4NcR+7O7X2/OpN2yAGnfcSS2o3Zbvr5g3LHjdUixNSq8OZupsT9SVJDGE/RJp6nunPnYo4K8qQP2+m3K3aeQYKIyT5KNTg==,iv:CVLnloUsobanpHOuP31eIGpGoJOODukGaEmQRF+RPGw=,tag:DdEtCHMPwIIbdwZis4lQgg==,type:str]
|
||||||
|
opencode_go_api_key: ENC[AES256_GCM,data:F7WXUHDX+pESqQJ4Sg5lNXqHLvsCd1bDFPZOutuacDFu3wLHs8i0kD/rLZ+m78OmRBRv2P3kf/gJsggtkvLC/PADYQ==,iv:23soYOeKC+CvLqwvP0M+uXICBKLsOs3z8g6iUhxzrpY=,tag:2EhgRFUaHsyNJ6TqYXJYzw==,type:str]
|
||||||
|
vicinae.json: ENC[AES256_GCM,data:qRv0EUwtS6bK9memOG3BqLf1uE5YNlpSC/p/05sb8Fw6skESaiymo584n5N8vkvGCn2Qjv/6ioJzwP4TieGtPoR1pHXkwTTGdzsnbRoU0bMuTUhD+NUBkjo2men7Yy3ljoNoopmgz9UFfps+EWuZSMmsNgIu/4sMXsNKcpDKcd8vLpXlPogwqUtbzuKw+u4RRzox0GB0QNEGcQ/F6dVKxJ2StDI8Bfy6qovEDUnK0snoCLhvAULwYwTKef8GpkCWVQRWxXk+dA4GjtgPuiABesv82gCsmsvzmfE3LLUqw+SfYgyQIXBL0IxFiULnkYZR7wmpUeWer3VCS1D8mv/0lvmcdvMqILgkV3UqXTrPqA==,iv:v7zh1tae6TFWOYms/7ihBdoJmw3z4jhcq9aV5y46aXc=,tag:2IKxst4I1XpAHp1wkOMYNA==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4
|
- recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4
|
||||||
@@ -19,7 +23,7 @@ sops:
|
|||||||
UGpKTHZTT2JZU0xaTHhhRjk2bEhaU1EKutUEk+TMTATHEoM9+MOdkUnIoBMeeDfu
|
UGpKTHZTT2JZU0xaTHhhRjk2bEhaU1EKutUEk+TMTATHEoM9+MOdkUnIoBMeeDfu
|
||||||
+GGKvInVKkAOtujBtSMj+xM8AEcfaHAFtwTgP/HEk3Hu6v7gp14oew==
|
+GGKvInVKkAOtujBtSMj+xM8AEcfaHAFtwTgP/HEk3Hu6v7gp14oew==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-05-07T02:30:17Z"
|
lastmodified: "2026-05-07T13:21:48Z"
|
||||||
mac: ENC[AES256_GCM,data:tF/Nr1iTuV52xQNxgil6I0TMwCiJ1oyz2OLgb2DVWVjTMfKT0wlOMK/Rm62bTjRvXFZnGtmS0YoVLkIjFzJ3hjt+626P69e7rdRkwpSz0rbZX9Tb+jxvGKfSwqiGocPA/rlMXTy/vPIM9/gg4b8rhjMnTiNH9bkODcKwF5LIjc0=,iv:uWiQrav4scz2iz3ZmuXfgMdg+228wNNmZ/LDtU11D/o=,tag:rhHrbu1a3Ph7pnqLsfm6nQ==,type:str]
|
mac: ENC[AES256_GCM,data:VWNmixzidftm4u0lUt5yL9rlvQXOXVT1+A6b/6IyO9WsWi5aM67t9l9phwRxLYad1lLL/epDmJyIJQ0ck01CzQ/hFm2mnMk87ofrwbph3GVdvrYj+2dDkzIBCwDUe/p4rkrTSo87FVJZ8NvrndbBLX3pq7Axjeo92b3Zxfxg+L8=,iv:IqCOBV5EICtO1hRO07Df0fgobO+/biS8O/4lva7NfEg=,tag:vPltr8g61OdKK4XXFyJdgQ==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.12.2
|
version: 3.12.2
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
"https://nix-on-droid.cachix.org"
|
"https://nix-on-droid.cachix.org"
|
||||||
"https://lan-mouse.cachix.org"
|
"https://lan-mouse.cachix.org"
|
||||||
"https://wezterm.cachix.org"
|
"https://wezterm.cachix.org"
|
||||||
|
"https://cache.nixos-cuda.org"
|
||||||
];
|
];
|
||||||
trusted-substituters = [
|
trusted-substituters = [
|
||||||
"https://nix-on-droid.cachix.org"
|
"https://nix-on-droid.cachix.org"
|
||||||
@@ -30,6 +31,7 @@
|
|||||||
"nix-on-droid.cachix.org-1:56snoMJTXmDRC1Ei24CmKoUqvHJ9XCp+nidK7qkMQrU="
|
"nix-on-droid.cachix.org-1:56snoMJTXmDRC1Ei24CmKoUqvHJ9XCp+nidK7qkMQrU="
|
||||||
"lan-mouse.cachix.org-1:KlE2AEZUgkzNKM7BIzMQo8w9yJYqUpor1CAUNRY6OyM="
|
"lan-mouse.cachix.org-1:KlE2AEZUgkzNKM7BIzMQo8w9yJYqUpor1CAUNRY6OyM="
|
||||||
"wezterm.cachix.org-1:kAbhjYUC9qvblTE+s7S+kl5XM1zVa4skO+E/1IDWdH0="
|
"wezterm.cachix.org-1:kAbhjYUC9qvblTE+s7S+kl5XM1zVa4skO+E/1IDWdH0="
|
||||||
|
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
13
modules/nixos/desktop/graphics.nix
Normal file
13
modules/nixos/desktop/graphics.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
flake.modules.nixos.desktop = {
|
||||||
|
hardware = {
|
||||||
|
graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
enableAllFirmware = true;
|
||||||
|
usb-modeswitch.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
15
modules/nixos/desktop/obs-studio.nix
Normal file
15
modules/nixos/desktop/obs-studio.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
flake.modules.nixos.desktop =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.obs-studio = {
|
||||||
|
enable = true;
|
||||||
|
enableVirtualCamera = true;
|
||||||
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
|
obs-vaapi
|
||||||
|
wlrobs
|
||||||
|
obs-source-record
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
118
modules/nixos/virtualisation/distrobox.nix
Normal file
118
modules/nixos/virtualisation/distrobox.nix
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
flake.modules.nixos.virtualisation =
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.tnix.virtualisation;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.tnix.virtualisation.distrobox = {
|
||||||
|
enable = lib.mkEnableOption "Enable DistroBox";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.distrobox.enable {
|
||||||
|
virtualisation.waydroid.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
distrobox
|
||||||
|
|
||||||
|
(writeShellScriptBin "dbox-create" ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# 1. Initialize variables
|
||||||
|
IMAGE=""
|
||||||
|
NAME=""
|
||||||
|
|
||||||
|
# Array to hold optional arguments (like volumes)
|
||||||
|
declare -a EXTRA_ARGS
|
||||||
|
|
||||||
|
# 2. Parse arguments
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
-i|--image)
|
||||||
|
IMAGE="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-n|--name)
|
||||||
|
NAME="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-p|--profile)
|
||||||
|
echo ":: Profile mode enabled: Mounting Nix store and user profiles (Read-Only)"
|
||||||
|
# Add volume flags to the array
|
||||||
|
EXTRA_ARGS+=( "--volume" "/nix/store:/nix/store:ro" )
|
||||||
|
EXTRA_ARGS+=( "--volume" "/etc/profiles/per-user:/etc/profiles/per-user:ro" )
|
||||||
|
EXTRA_ARGS+=( "--volume" "/etc/static/profiles/per-user:/etc/static/profiles/per-user:ro" )
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option $1"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$IMAGE" ] || [ -z "$NAME" ]; then
|
||||||
|
echo "Usage: dbox-create -i <image> -n <name> [-p]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Define the custom home path
|
||||||
|
CUSTOM_HOME="$HOME/Distrobox/$NAME"
|
||||||
|
|
||||||
|
echo "------------------------------------------------"
|
||||||
|
echo "Creating Distrobox: $NAME"
|
||||||
|
echo "Location: $CUSTOM_HOME"
|
||||||
|
echo "------------------------------------------------"
|
||||||
|
|
||||||
|
# 4. Run Distrobox Create
|
||||||
|
# We expand "''${EXTRA_ARGS[@]}" to properly pass the volume arguments
|
||||||
|
${pkgs.distrobox}/bin/distrobox create \
|
||||||
|
--image "$IMAGE" \
|
||||||
|
--name "$NAME" \
|
||||||
|
--home "$CUSTOM_HOME" \
|
||||||
|
"''${EXTRA_ARGS[@]}"
|
||||||
|
|
||||||
|
# Check exit code
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error: Distrobox creation failed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 5. Post-Creation: Symlink Config Files
|
||||||
|
echo "--> Linking configurations to $NAME..."
|
||||||
|
|
||||||
|
# Helper function to symlink
|
||||||
|
link_config() {
|
||||||
|
SRC="$1"
|
||||||
|
DEST="$2"
|
||||||
|
DEST_DIR=$(dirname "$DEST")
|
||||||
|
|
||||||
|
# Create parent directory if it doesn't exist
|
||||||
|
mkdir -p "$DEST_DIR"
|
||||||
|
|
||||||
|
if [ -e "$SRC" ]; then
|
||||||
|
# ln -sf: symbolic link, force overwrite
|
||||||
|
ln -sf "$SRC" "$DEST"
|
||||||
|
echo " [LINK] $DEST -> $SRC"
|
||||||
|
else
|
||||||
|
echo " [SKIP] $SRC not found on host"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create Symlinks
|
||||||
|
link_config "$HOME/.zshrc" "$CUSTOM_HOME/.zshrc"
|
||||||
|
link_config "$HOME/.zshenv" "$CUSTOM_HOME/.zshenv"
|
||||||
|
link_config "$HOME/.config/fastfetch" "$CUSTOM_HOME/.config/fastfetch"
|
||||||
|
link_config "$HOME/.config/starship.toml" "$CUSTOM_HOME/.config/starship.toml"
|
||||||
|
|
||||||
|
echo "--> Done! Enter via: distrobox enter $NAME"
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user