mirror of
https://codeberg.org/PLG-Development/PLG-MuDiCS
synced 2026-07-05 16:37:09 +00:00
feat: nixos config (#1)
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
## System Config
|
||||
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "de_DE.UTF-8";
|
||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
||||
LC_MONETARY = "de_DE.UTF-8";
|
||||
LC_NAME = "de_DE.UTF-8";
|
||||
LC_NUMERIC = "de_DE.UTF-8";
|
||||
LC_PAPER = "de_DE.UTF-8";
|
||||
LC_TELEPHONE = "de_DE.UTF-8";
|
||||
LC_TIME = "de_DE.UTF-8";
|
||||
};
|
||||
|
||||
services.xserver.enable = true;
|
||||
|
||||
services.xserver.displayManager.lightdm.enable = true;
|
||||
services.xserver.desktopManager.xfce.enable = true;
|
||||
|
||||
services.xserver.xkb = {
|
||||
layout = "de";
|
||||
variant = "";
|
||||
};
|
||||
|
||||
console.keyMap = "de";
|
||||
|
||||
services.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
users.users.mudics = {
|
||||
isNormalUser = true;
|
||||
description = "mudics";
|
||||
extraGroups = ["networkmanager" "wheel"];
|
||||
};
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
system.stateVersion = "25.05"; # Don't change
|
||||
|
||||
## User Config
|
||||
|
||||
programs.nix-ld = {
|
||||
enable = true;
|
||||
libraries = with pkgs; [
|
||||
stdenv.cc.cc
|
||||
zlib
|
||||
];
|
||||
};
|
||||
|
||||
services.displayManager.autoLogin = {
|
||||
enable = true;
|
||||
user = "mudics";
|
||||
};
|
||||
|
||||
networking.hostName = "plg-mudics";
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Programs
|
||||
libreoffice
|
||||
#rustdesk
|
||||
ungoogled-chromium
|
||||
xfce.thunar-archive-plugin
|
||||
git
|
||||
nushell
|
||||
|
||||
# Libraries
|
||||
imagemagick
|
||||
ffmpeg
|
||||
ghostscript
|
||||
];
|
||||
|
||||
systemd.services.update-mudics = {
|
||||
wantedBy = ["multi-user.target"];
|
||||
after = ["network-online.target"];
|
||||
wants = ["network-online.target"];
|
||||
path = with pkgs; [nushell unzip];
|
||||
script = "nu ${./update.sh}";
|
||||
serviceConfig = {
|
||||
WorkingDirectory = "/home/mudics/plg-mudics";
|
||||
User = "mudics";
|
||||
Type = "oneshot";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.run-mudics = {
|
||||
wantedBy = ["default.target"];
|
||||
after = ["update-mudics.service" "graphical.target"];
|
||||
wants = ["graphical.target"];
|
||||
path = with pkgs; [ungoogled-chromium];
|
||||
script = "./plg-mudics-display";
|
||||
serviceConfig = {
|
||||
WorkingDirectory = "/home/mudics/plg-mudics";
|
||||
User = "mudics";
|
||||
Type = "simple";
|
||||
};
|
||||
environment = {
|
||||
DISPLAY = ":0";
|
||||
XDG_RUNTIME_DIR = "/run/user/1000";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.build-mudics-system = {
|
||||
wantedBy = ["default.target"];
|
||||
after = ["update-mudics.service"];
|
||||
path = with pkgs; [nixos-rebuild];
|
||||
script = "nixos-rebuild boot --flake .#plg-mudics";
|
||||
serviceConfig = {
|
||||
WorkingDirectory = "/home/mudics/plg-mudics/nixos";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /home/mudics/plg-mudics 0755 mudics - -"
|
||||
];
|
||||
}
|
||||
Generated
+27
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1761999846,
|
||||
"narHash": "sha256-IYlYnp4O4dzEpL77BD/lj5NnJy2J8qbHkNSFiPBCbqo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3de8f8d73e35724bf9abef41f1bdbedda1e14a31",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
...
|
||||
} @ inputs: {
|
||||
nixosConfigurations.plg-mudics = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
};
|
||||
modules = [
|
||||
./configuration.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env nu
|
||||
|
||||
print "Checking for new version of PLG-MuDiCS ..."
|
||||
if (new_version_available) {
|
||||
print "New version available. Trying to update ..."
|
||||
|
||||
get_new_display_file
|
||||
get_new_nixos_config
|
||||
}
|
||||
|
||||
print "Done"
|
||||
|
||||
def get_new_nixos_config [] {
|
||||
let temp_folder_path = (mktemp -d "nixos-temp-XXXXXX")
|
||||
let temp_file_path = (mktemp "nixos-temp-XXXXXX")
|
||||
let nixos_config_path = "nixos"
|
||||
|
||||
http get https://github.com/PLG-Development/PLG-MuDiCS/releases/latest/download/nixos.zip --max-time 5sec | save -p -f $temp_file_path
|
||||
|
||||
unzip $temp_file_path -d $temp_folder_path
|
||||
rm -rf $nixos_config_path
|
||||
mv $temp_folder_path $nixos_config_path
|
||||
|
||||
rm $temp_file_path
|
||||
|
||||
cp /etc/nixos/hardware-configuration.nix $"($nixos_config_path)/hardware-configuration.nix"
|
||||
}
|
||||
|
||||
def get_new_display_file [] {
|
||||
let temp_file_path = (mktemp "display-temp-XXXXXX")
|
||||
|
||||
http get https://github.com/PLG-Development/PLG-MuDiCS/releases/latest/download/plg-mudics-display --max-time 5sec | save -p -f $temp_file_path
|
||||
|
||||
chmod +x $temp_file_path
|
||||
mv $temp_file_path plg-mudics-display
|
||||
}
|
||||
|
||||
def new_version_available [] {
|
||||
let file_path = "version.json"
|
||||
if not ($file_path | path exists) {
|
||||
{ "version": ""} | to json | save version.json
|
||||
}
|
||||
|
||||
let current_version = open $file_path | get version
|
||||
|
||||
let new_version = http get https://api.github.com/repos/PLG-Development/PLG-MuDiCS/releases/latest --max-time 5sec | get tag_name
|
||||
# TODO: only write when all operations were successful
|
||||
{ "version": $new_version} | to json | save version.json -f
|
||||
|
||||
if $current_version == $new_version {
|
||||
false
|
||||
} else {
|
||||
true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user