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:
@@ -5,6 +5,7 @@ on:
|
|||||||
paths-ignore:
|
paths-ignore:
|
||||||
- "**/*.md"
|
- "**/*.md"
|
||||||
- "**/*.yml"
|
- "**/*.yml"
|
||||||
|
- "**/*.sh"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
@@ -17,11 +17,15 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Zip NixOS Config
|
||||||
|
run: zip -rj nixos.zip nixos/
|
||||||
|
|
||||||
- name: Release
|
- name: Release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
name: PLG-MuDiCS ${{ github.ref_name }}
|
name: PLG-MuDiCS ${{ github.ref_name }}
|
||||||
body_path: CHANGELOG.md
|
body_path: CHANGELOG.md
|
||||||
|
files: nixos.zip
|
||||||
|
|
||||||
build:
|
build:
|
||||||
name: Build and Upload Assets
|
name: Build and Upload Assets
|
||||||
|
|||||||
@@ -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