You did nothing wrong, this is just maven being maven, paired with a grain of “this is how fixed output derivations work”.
Maybe basing the expression on maven.buildMavenPackage might be more succesfull, maybe the way how the maven project is written, simply doesn’t allow for using a FOD without patching.
If you don’t need a build from source, then here’s another option which I let the clankers clank out. It launches and seems to be functional. But this just takes the easy way out and packages the .deb (as does DBeaver for instance).
I can’t verify further though as hyprland/wayland/something-with-NixOS has issues rendering eclipse SWT which means I can’t properly see the UI elements (same happens with DBeaver though and afaik it works fine with other DEs).
Benefit being that updates should be much more stable (as we sidestep maven!)
By the way @randomizedcoder I think nix flake update won’t bump the version there. It should only change the pinned version in the flake.lock.
17:39:35,299 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
17:39:35,299 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
17:39:35,299 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
17:39:35,300 |-INFO in ch.qos.logback.classic.BasicConfigurator@7c8f9c2e - Setting up default configuration.
17:39:35,323 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
17:39:35,325 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [LOGFILE]
17:39:35,330 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@159860059 - setting totalSizeCap to 1 GB
17:39:35,332 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@159860059 - Archive files will be limited to [50 MB] each.
17:39:35,335 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@159860059 - No compression will be used
17:39:35,336 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@159860059 - Will use the pattern /home/lukas/.modelio/5.4/modelio-%d{yyyy-MM-dd}-%i.log for the active file
17:39:35,337 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@782be4eb - The date pattern is 'yyyy-MM-dd' from file name pattern '/home/lukas/.modelio/5.4/modelio-%d{yyyy-MM-dd}-%i.log'.
17:39:35,337 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@782be4eb - Roll-over at midnight.
17:39:35,346 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@782be4eb - Setting initial period to Tue Mar 24 17:39:35 CET 2026
17:39:35,347 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
17:39:35,352 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[LOGFILE] - Active log file name: /home/lukas/.modelio/5.4/modelio-2026-03-24-0.log
17:39:35,352 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[LOGFILE] - File property is set to [null]
17:39:35,353 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
17:39:35,353 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
17:39:35,353 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
17:39:35,354 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to TRACE
17:39:35,354 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
17:39:35,354 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [LOGFILE] to Logger[ROOT]
17:39:35,354 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
17:39:35,354 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@7903d448 - Registering current configuration as safe fallback point
17:39:35.669 INFO o.m.p.u.log.writers.PluginLogger Changing log level from ERROR to DEBUG
17:39:35.671 DEBUG org.modelio.platform.preferences Initializing 'org.modelio.platform.preferences' plugin preferences ...
17:39:35.674 DEBUG org.modelio.platform.preferences - Initializing default values from 'org.modelio.app.admtool'...
17:39:35.674 DEBUG org.modelio.platform.preferences - default pref value 'Log.LogLevel'='3'
17:39:35.675 DEBUG org.modelio.platform.preferences - default pref value 'AdmTools.Show'='false'
17:39:35.675 DEBUG org.modelio.platform.preferences - Initializing default values from 'org.modelio.app.diagram.editor'...
17:39:35.675 DEBUG org.modelio.platform.preferences - default pref value 'DeleteMode'='DELETE'
17:39:35.675 DEBUG org.modelio.platform.preferences - Initializing default values from 'org.modelio.app.module.catalog'...
17:39:35.675 DEBUG org.modelio.platform.preferences - default pref value 'ModuleCatalog.ShowCompatible'='true'
17:39:35.675 DEBUG org.modelio.platform.preferences - default pref value 'ModuleCatalog.ShowLatest'='true'
17:39:35.675 DEBUG org.modelio.platform.preferences - Initializing default values from 'org.modelio.app.update.ext_org'...
17:39:35.675 DEBUG org.modelio.platform.preferences - default pref value 'Update.Site'='https://www.modelio.org/updates'
17:39:35.675 INFO o.m.p.u.log.writers.PluginLogger Changing log level from DEBUG to ERROR
17:39:35.675 INFO o.m.p.u.log.writers.PluginLogger Changing log level from ERROR to INFO
17:39:35.704 INFO org.modelio.app.ui Modelio by modelio.org
17:39:35.708 INFO org.modelio.app.ui Modelio version : '5.4.01'
17:39:35.708 INFO org.modelio.app.ui Modelio runtime data path : '/home/lukas/.modelio/5.4'
17:39:35.708 INFO org.modelio.app.ui Modelio module catalog path: '/home/lukas/.modelio/5.4/modules'
17:39:35.708 INFO org.modelio.app.ui Modelio macro catalog path: '/home/lukas/.modelio/5.4/macros'
17:39:35.708 INFO org.modelio.app.ui Instance location: file:/home/lukas/.modelio/5.4/opensource-cache/data/
17:39:35.708 INFO org.modelio.app.ui Command line arguments = '-clearPersistedState '
17:39:35.810 INFO org.modelio.app.ui Trusted server certificates store is '/home/lukas/.modelio/5.4/servercerts.db'
17:39:37.313 INFO org.modelio.app.ui SWAP is ENABLED
17:39:37.848 INFO org.modelio.app.project.ui Changing workspace to: /home/lukas/modelio/workspace
2026-03-24 17:39:38.307:INFO::Start Help Server: Logging initialized @4869ms to org.eclipse.jetty.util.log.StdErrLog
2026-03-24 17:39:38.434:INFO:oejs.session:Start Help Server: DefaultSessionIdManager workerName=node0
2026-03-24 17:39:38.434:INFO:oejs.session:Start Help Server: No SessionScavenger set, using defaults
2026-03-24 17:39:38.435:INFO:oejs.session:Start Help Server: node0 Scavenging every 600000ms
2026-03-24 17:39:38.468:INFO:oejs.session:Start Help Server: node0 Scavenging every 660000ms
17:39:39.306 INFO org.modelio.platform.project Running batch: project=null create=false workspace=null
Gdk-Message: 17:39:39.626: Error 71 (Protocol error) dispatching to Wayland display.
Also if anybody wants to go the extra mile and upstream it, then you are more than welcome to.
(as technically the bounty is still unfulfilled going by original wording )
Heh yeah, flakes are a bit of a contentious topic.
But they are a fair bit easier to use standalone, and are “purer” and “more reproducible”. If you check the directory where you placed the flake.nix, then alongside it you will see a flake.lock. That file pins all of the input versions, so in theory even less can change (with legacy Nix the easiest example to give is the channel changing and breaking something). Usually the flake.lock would also be version controlled.
Upstreaming to nixpkgs isn’t too bad, but it’s a bit more involved than I could care for right now
One just has to open a pull request and go through the review cycle. LLMs can probably guide one through the entire process from here on: to convert the flake into the correct format, place it in the correct location, test the build, etc.